From ce69644d53104fb59128497f6e196ebf31c5c199 Mon Sep 17 00:00:00 2001 From: sriramveeraghanta Date: Fri, 12 Dec 2025 13:41:17 +0530 Subject: [PATCH 01/62] chore(deps): upgrade next themes package --- apps/admin/package.json | 2 +- apps/space/package.json | 2 +- apps/web/package.json | 2 +- package.json | 3 +- pnpm-lock.yaml | 248 ++-------------------------------------- 5 files changed, 15 insertions(+), 242 deletions(-) diff --git a/apps/admin/package.json b/apps/admin/package.json index e81a3e073d0..5f0f7f306bc 100644 --- a/apps/admin/package.json +++ b/apps/admin/package.json @@ -37,7 +37,7 @@ "lucide-react": "catalog:", "mobx": "catalog:", "mobx-react": "catalog:", - "next-themes": "^0.2.1", + "next-themes": "0.4.6", "react": "catalog:", "react-dom": "catalog:", "react-hook-form": "7.51.5", diff --git a/apps/space/package.json b/apps/space/package.json index 73101a7f686..1fe1fbd37f1 100644 --- a/apps/space/package.json +++ b/apps/space/package.json @@ -40,7 +40,7 @@ "mobx": "catalog:", "mobx-react": "catalog:", "mobx-utils": "catalog:", - "next-themes": "^0.2.1", + "next-themes": "0.4.6", "react": "catalog:", "react-dom": "catalog:", "react-dropzone": "^14.2.3", diff --git a/apps/web/package.json b/apps/web/package.json index ed9730543e2..858c332d1a1 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -52,7 +52,7 @@ "mobx": "catalog:", "mobx-react": "catalog:", "mobx-utils": "catalog:", - "next-themes": "^0.2.1", + "next-themes": "0.4.6", "posthog-js": "^1.255.1", "react": "catalog:", "react-color": "^2.19.3", diff --git a/package.json b/package.json index b73f0acc856..fc531f82795 100644 --- a/package.json +++ b/package.json @@ -68,8 +68,7 @@ "prosemirror-view": "1.40.0", "@types/express": "4.17.23", "typescript": "catalog:", - "vite": "catalog:", - "next": "16.0.7" + "vite": "catalog:" }, "onlyBuiltDependencies": [ "@sentry/cli", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 81c799fe173..65d7bdd976d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -115,7 +115,6 @@ overrides: '@types/express': 4.17.23 typescript: 5.8.3 vite: 7.1.11 - next: 16.0.7 importers: @@ -245,8 +244,8 @@ importers: specifier: 'catalog:' version: 9.1.1(mobx@6.12.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) next-themes: - specifier: ^0.2.1 - version: 0.2.1(next@14.2.32(@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))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: 0.4.6 + version: 0.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: specifier: 'catalog:' version: 18.3.1 @@ -490,8 +489,8 @@ importers: specifier: 'catalog:' version: 6.0.8(mobx@6.12.0) next-themes: - specifier: ^0.2.1 - version: 0.2.1(next@14.2.32(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: 0.4.6 + version: 0.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: specifier: 'catalog:' version: 18.3.1 @@ -662,8 +661,8 @@ importers: specifier: 'catalog:' version: 6.0.8(mobx@6.12.0) next-themes: - specifier: ^0.2.1 - version: 0.2.1(next@14.2.32(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + specifier: 0.4.6 + version: 0.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) posthog-js: specifier: ^1.255.1 version: 1.255.1 @@ -2281,63 +2280,6 @@ packages: '@napi-rs/wasm-runtime@1.1.0': resolution: {integrity: sha512-Fq6DJW+Bb5jaWE69/qOE0D1TUN9+6uWhCeZpdnSBk14pjLcCWR7Q8n49PTSPHazM37JqrsdpEthXy2xn6jWWiA==} - '@next/env@14.2.32': - resolution: {integrity: sha512-n9mQdigI6iZ/DF6pCTwMKeWgF2e8lg7qgt5M7HXMLtyhZYMnf/u905M18sSpPmHL9MKp9JHo56C6jrD2EvWxng==} - - '@next/swc-darwin-arm64@14.2.32': - resolution: {integrity: sha512-osHXveM70zC+ilfuFa/2W6a1XQxJTvEhzEycnjUaVE8kpUS09lDpiDDX2YLdyFCzoUbvbo5r0X1Kp4MllIOShw==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [darwin] - - '@next/swc-darwin-x64@14.2.32': - resolution: {integrity: sha512-P9NpCAJuOiaHHpqtrCNncjqtSBi1f6QUdHK/+dNabBIXB2RUFWL19TY1Hkhu74OvyNQEYEzzMJCMQk5agjw1Qg==} - engines: {node: '>= 10'} - cpu: [x64] - os: [darwin] - - '@next/swc-linux-arm64-gnu@14.2.32': - resolution: {integrity: sha512-v7JaO0oXXt6d+cFjrrKqYnR2ubrD+JYP7nQVRZgeo5uNE5hkCpWnHmXm9vy3g6foMO8SPwL0P3MPw1c+BjbAzA==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - - '@next/swc-linux-arm64-musl@14.2.32': - resolution: {integrity: sha512-tA6sIKShXtSJBTH88i0DRd6I9n3ZTirmwpwAqH5zdJoQF7/wlJXR8DkPmKwYl5mFWhEKr5IIa3LfpMW9RRwKmQ==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [linux] - - '@next/swc-linux-x64-gnu@14.2.32': - resolution: {integrity: sha512-7S1GY4TdnlGVIdeXXKQdDkfDysoIVFMD0lJuVVMeb3eoVjrknQ0JNN7wFlhCvea0hEk0Sd4D1hedVChDKfV2jw==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - '@next/swc-linux-x64-musl@14.2.32': - resolution: {integrity: sha512-OHHC81P4tirVa6Awk6eCQ6RBfWl8HpFsZtfEkMpJ5GjPsJ3nhPe6wKAJUZ/piC8sszUkAgv3fLflgzPStIwfWg==} - engines: {node: '>= 10'} - cpu: [x64] - os: [linux] - - '@next/swc-win32-arm64-msvc@14.2.32': - resolution: {integrity: sha512-rORQjXsAFeX6TLYJrCG5yoIDj+NKq31Rqwn8Wpn/bkPNy5rTHvOXkW8mLFonItS7QC6M+1JIIcLe+vOCTOYpvg==} - engines: {node: '>= 10'} - cpu: [arm64] - os: [win32] - - '@next/swc-win32-ia32-msvc@14.2.32': - resolution: {integrity: sha512-jHUeDPVHrgFltqoAqDB6g6OStNnFxnc7Aks3p0KE0FbwAvRg6qWKYF5mSTdCTxA3axoSAUwxYdILzXJfUwlHhA==} - engines: {node: '>= 10'} - cpu: [ia32] - os: [win32] - - '@next/swc-win32-x64-msvc@14.2.32': - resolution: {integrity: sha512-2N0lSoU4GjfLSO50wvKpMQgKd4HdI2UHEhQPPPnlgfBJlOgJxkjpkYBqzk08f1gItBB6xF/n+ykso2hgxuydsA==} - engines: {node: '>= 10'} - cpu: [x64] - os: [win32] - '@noble/ciphers@1.3.0': resolution: {integrity: sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==} engines: {node: ^14.21.3 || >=16} @@ -3681,9 +3623,6 @@ packages: '@swc/helpers@0.5.17': resolution: {integrity: sha512-5IKx/Y13RsYd+sauPb2x+U/xZikHjolzfuDgTAl/Tdf3Q8rslRvC19NKDLgAJQ6wsqADk10ntlv08nPFw/gO/A==} - '@swc/helpers@0.5.5': - resolution: {integrity: sha512-KGYxvIOXcceOAbEk4bi/dVLEK9z8sZ0uBB3Il5b1rhfClSpcX0yfRO0KmTkqR2cnQDymwLB+25ZyMzICg/cm/A==} - '@swc/types@0.1.24': resolution: {integrity: sha512-tjTMh3V4vAORHtdTprLlfoMptu1WfTZG9Rsca6yOKyNYsRr+MUXutKmliB17orgSZk5DpnDxs8GUdd/qwYxOng==} @@ -4832,10 +4771,6 @@ packages: buffer@6.0.3: resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} - busboy@1.6.0: - resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==} - engines: {node: '>=10.16.0'} - bytes@3.0.0: resolution: {integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==} engines: {node: '>= 0.8'} @@ -7254,30 +7189,11 @@ packages: neo-async@2.6.2: resolution: {integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==} - next-themes@0.2.1: - resolution: {integrity: sha512-B+AKNfYNIzh0vqQQKqQItTS8evEouKD7H5Hj3kmuPERwddR2TxvDSFZuTj6T7Jfn1oyeUyJMydPl1Bkxkh0W7A==} + next-themes@0.4.6: + resolution: {integrity: sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==} peerDependencies: - next: 16.0.7 - react: '*' - react-dom: '*' - - next@14.2.32: - resolution: {integrity: sha512-fg5g0GZ7/nFc09X8wLe6pNSU8cLWbLRG3TZzPJ1BJvi2s9m7eF991se67wliM9kR5yLHRkyGKU49MMx58s3LJg==} - engines: {node: '>=18.17.0'} - hasBin: true - peerDependencies: - '@opentelemetry/api': ^1.1.0 - '@playwright/test': ^1.41.2 - react: ^18.2.0 - react-dom: ^18.2.0 - sass: ^1.3.0 - peerDependenciesMeta: - '@opentelemetry/api': - optional: true - '@playwright/test': - optional: true - sass: - optional: true + react: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc + react-dom: ^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc no-case@3.0.4: resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} @@ -7727,10 +7643,6 @@ packages: postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - postcss@8.4.31: - resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} - engines: {node: ^10 || ^12 || >=14} - postcss@8.5.6: resolution: {integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==} engines: {node: ^10 || ^12 || >=14} @@ -8524,10 +8436,6 @@ packages: prettier: optional: true - streamsearch@1.1.0: - resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==} - engines: {node: '>=10.0.0'} - string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} @@ -8626,19 +8534,6 @@ packages: style-to-object@0.4.4: resolution: {integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==} - styled-jsx@5.1.1: - resolution: {integrity: sha512-pW7uC1l4mBZ8ugbiZrcIsiIvVx1UmTfw7UkC3Um2tmfUq9Bhk8IiyEIPl6F8agHgjzku6j0xQEZbfA5uSgSaCw==} - engines: {node: '>= 12.0.0'} - peerDependencies: - '@babel/core': '*' - babel-plugin-macros: '*' - react: '>= 16.8.0 || 17.x.x || ^18.0.0-0' - peerDependenciesMeta: - '@babel/core': - optional: true - babel-plugin-macros: - optional: true - sucrase@3.35.0: resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} engines: {node: '>=16 || 14 >=14.17'} @@ -10440,35 +10335,6 @@ snapshots: '@tybys/wasm-util': 0.10.1 optional: true - '@next/env@14.2.32': {} - - '@next/swc-darwin-arm64@14.2.32': - optional: true - - '@next/swc-darwin-x64@14.2.32': - optional: true - - '@next/swc-linux-arm64-gnu@14.2.32': - optional: true - - '@next/swc-linux-arm64-musl@14.2.32': - optional: true - - '@next/swc-linux-x64-gnu@14.2.32': - optional: true - - '@next/swc-linux-x64-musl@14.2.32': - optional: true - - '@next/swc-win32-arm64-msvc@14.2.32': - optional: true - - '@next/swc-win32-ia32-msvc@14.2.32': - optional: true - - '@next/swc-win32-x64-msvc@14.2.32': - optional: true - '@noble/ciphers@1.3.0': {} '@noble/curves@1.9.7': @@ -11985,11 +11851,6 @@ snapshots: dependencies: tslib: 2.8.1 - '@swc/helpers@0.5.5': - dependencies: - '@swc/counter': 0.1.3 - tslib: 2.8.1 - '@swc/types@0.1.24': dependencies: '@swc/counter': 0.1.3 @@ -13333,10 +13194,6 @@ snapshots: base64-js: 1.5.1 ieee754: 1.2.1 - busboy@1.6.0: - dependencies: - streamsearch: 1.1.0 - bytes@3.0.0: {} bytes@3.1.2: {} @@ -16228,70 +16085,11 @@ snapshots: neo-async@2.6.2: {} - next-themes@0.2.1(next@14.2.32(@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))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): - dependencies: - next: 14.2.32(@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) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - - next-themes@0.2.1(next@14.2.32(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(react-dom@18.3.1(react@18.3.1))(react@18.3.1): + next-themes@0.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1): dependencies: - next: 14.2.32(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - next@14.2.32(@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): - dependencies: - '@next/env': 14.2.32 - '@swc/helpers': 0.5.5 - busboy: 1.6.0 - caniuse-lite: 1.0.30001759 - graceful-fs: 4.2.11 - postcss: 8.4.31 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - styled-jsx: 5.1.1(@babel/core@7.28.3)(babel-plugin-macros@3.1.0)(react@18.3.1) - optionalDependencies: - '@next/swc-darwin-arm64': 14.2.32 - '@next/swc-darwin-x64': 14.2.32 - '@next/swc-linux-arm64-gnu': 14.2.32 - '@next/swc-linux-arm64-musl': 14.2.32 - '@next/swc-linux-x64-gnu': 14.2.32 - '@next/swc-linux-x64-musl': 14.2.32 - '@next/swc-win32-arm64-msvc': 14.2.32 - '@next/swc-win32-ia32-msvc': 14.2.32 - '@next/swc-win32-x64-msvc': 14.2.32 - '@opentelemetry/api': 1.9.0 - transitivePeerDependencies: - - '@babel/core' - - babel-plugin-macros - - next@14.2.32(@babel/core@7.28.4)(@opentelemetry/api@1.9.0)(babel-plugin-macros@3.1.0)(react-dom@18.3.1(react@18.3.1))(react@18.3.1): - dependencies: - '@next/env': 14.2.32 - '@swc/helpers': 0.5.5 - busboy: 1.6.0 - caniuse-lite: 1.0.30001759 - graceful-fs: 4.2.11 - postcss: 8.4.31 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - styled-jsx: 5.1.1(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react@18.3.1) - optionalDependencies: - '@next/swc-darwin-arm64': 14.2.32 - '@next/swc-darwin-x64': 14.2.32 - '@next/swc-linux-arm64-gnu': 14.2.32 - '@next/swc-linux-arm64-musl': 14.2.32 - '@next/swc-linux-x64-gnu': 14.2.32 - '@next/swc-linux-x64-musl': 14.2.32 - '@next/swc-win32-arm64-msvc': 14.2.32 - '@next/swc-win32-ia32-msvc': 14.2.32 - '@next/swc-win32-x64-msvc': 14.2.32 - '@opentelemetry/api': 1.9.0 - transitivePeerDependencies: - - '@babel/core' - - babel-plugin-macros - no-case@3.0.4: dependencies: lower-case: 2.0.2 @@ -16731,12 +16529,6 @@ snapshots: postcss-value-parser@4.2.0: {} - postcss@8.4.31: - dependencies: - nanoid: 3.3.8 - picocolors: 1.1.1 - source-map-js: 1.2.1 - postcss@8.5.6: dependencies: nanoid: 3.3.8 @@ -17762,8 +17554,6 @@ snapshots: - utf-8-validate - vite - streamsearch@1.1.0: {} - string-argv@0.3.2: {} string-width@4.2.3: @@ -17886,22 +17676,6 @@ snapshots: dependencies: inline-style-parser: 0.1.1 - styled-jsx@5.1.1(@babel/core@7.28.3)(babel-plugin-macros@3.1.0)(react@18.3.1): - dependencies: - client-only: 0.0.1 - react: 18.3.1 - optionalDependencies: - '@babel/core': 7.28.3 - babel-plugin-macros: 3.1.0 - - styled-jsx@5.1.1(@babel/core@7.28.4)(babel-plugin-macros@3.1.0)(react@18.3.1): - dependencies: - client-only: 0.0.1 - react: 18.3.1 - optionalDependencies: - '@babel/core': 7.28.4 - babel-plugin-macros: 3.1.0 - sucrase@3.35.0: dependencies: '@jridgewell/gen-mapping': 0.3.13 From 07f269e7f3e25d247a362025a8b9602786caf925 Mon Sep 17 00:00:00 2001 From: sriramveeraghanta Date: Fri, 12 Dec 2025 15:09:53 +0530 Subject: [PATCH 02/62] chore: version bump --- apps/admin/package.json | 2 +- apps/api/package.json | 2 +- apps/live/package.json | 2 +- apps/space/package.json | 2 +- apps/web/package.json | 2 +- package.json | 2 +- packages/codemods/package.json | 2 +- packages/constants/package.json | 2 +- packages/editor/package.json | 2 +- packages/hooks/package.json | 2 +- packages/i18n/package.json | 2 +- packages/logger/package.json | 2 +- packages/propel/package.json | 2 +- packages/services/package.json | 2 +- packages/shared-state/package.json | 2 +- packages/tailwind-config/package.json | 2 +- packages/types/package.json | 2 +- packages/typescript-config/package.json | 2 +- packages/ui/package.json | 2 +- packages/utils/package.json | 2 +- 20 files changed, 20 insertions(+), 20 deletions(-) diff --git a/apps/admin/package.json b/apps/admin/package.json index 5f0f7f306bc..07f0b51d39f 100644 --- a/apps/admin/package.json +++ b/apps/admin/package.json @@ -1,7 +1,7 @@ { "name": "admin", "description": "Admin UI for Plane", - "version": "1.2.0", + "version": "1.2.1", "license": "AGPL-3.0", "private": true, "type": "module", diff --git a/apps/api/package.json b/apps/api/package.json index 6e62f2bd114..4767d0cb461 100644 --- a/apps/api/package.json +++ b/apps/api/package.json @@ -1,6 +1,6 @@ { "name": "plane-api", - "version": "1.2.0", + "version": "1.2.1", "license": "AGPL-3.0", "private": true, "description": "API server powering Plane's backend" diff --git a/apps/live/package.json b/apps/live/package.json index b773efb4444..7115af53a4e 100644 --- a/apps/live/package.json +++ b/apps/live/package.json @@ -1,6 +1,6 @@ { "name": "live", - "version": "1.2.0", + "version": "1.2.1", "license": "AGPL-3.0", "description": "A realtime collaborative server powers Plane's rich text editor", "main": "./dist/start.mjs", diff --git a/apps/space/package.json b/apps/space/package.json index 1fe1fbd37f1..c3e6f3dbf42 100644 --- a/apps/space/package.json +++ b/apps/space/package.json @@ -1,6 +1,6 @@ { "name": "space", - "version": "1.2.0", + "version": "1.2.1", "private": true, "license": "AGPL-3.0", "type": "module", diff --git a/apps/web/package.json b/apps/web/package.json index 858c332d1a1..fbf921ff76e 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -1,6 +1,6 @@ { "name": "web", - "version": "1.2.0", + "version": "1.2.1", "private": true, "license": "AGPL-3.0", "type": "module", diff --git a/package.json b/package.json index fc531f82795..1229aa3c9c2 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "plane", "description": "Open-source project management that unlocks customer value", "repository": "https://github.com/makeplane/plane.git", - "version": "1.2.0", + "version": "1.2.1", "license": "AGPL-3.0", "private": true, "scripts": { diff --git a/packages/codemods/package.json b/packages/codemods/package.json index e2bac61cd84..8b7104d818e 100644 --- a/packages/codemods/package.json +++ b/packages/codemods/package.json @@ -1,6 +1,6 @@ { "name": "@plane/codemods", - "version": "1.2.0", + "version": "1.2.1", "private": true, "scripts": { "test": "vitest run", diff --git a/packages/constants/package.json b/packages/constants/package.json index 9e1a2ca699f..05b5e8e85a6 100644 --- a/packages/constants/package.json +++ b/packages/constants/package.json @@ -1,6 +1,6 @@ { "name": "@plane/constants", - "version": "1.2.0", + "version": "1.2.1", "private": true, "license": "AGPL-3.0", "type": "module", diff --git a/packages/editor/package.json b/packages/editor/package.json index f1e79781cbe..930e9f4b61d 100644 --- a/packages/editor/package.json +++ b/packages/editor/package.json @@ -1,6 +1,6 @@ { "name": "@plane/editor", - "version": "1.2.0", + "version": "1.2.1", "description": "Core Editor that powers Plane", "license": "AGPL-3.0", "private": true, diff --git a/packages/hooks/package.json b/packages/hooks/package.json index c78d17b3cc2..5fa0cd6377a 100644 --- a/packages/hooks/package.json +++ b/packages/hooks/package.json @@ -1,6 +1,6 @@ { "name": "@plane/hooks", - "version": "1.2.0", + "version": "1.2.1", "license": "AGPL-3.0", "description": "React hooks that are shared across multiple apps internally", "private": true, diff --git a/packages/i18n/package.json b/packages/i18n/package.json index 21fac2cbde3..2cf34926d16 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -1,6 +1,6 @@ { "name": "@plane/i18n", - "version": "1.2.0", + "version": "1.2.1", "license": "AGPL-3.0", "description": "I18n shared across multiple apps internally", "private": true, diff --git a/packages/logger/package.json b/packages/logger/package.json index 339a4c2f1c2..a4a57328b13 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -1,6 +1,6 @@ { "name": "@plane/logger", - "version": "1.2.0", + "version": "1.2.1", "license": "AGPL-3.0", "description": "Logger shared across multiple apps internally", "private": true, diff --git a/packages/propel/package.json b/packages/propel/package.json index 74ca9036d62..230c7b07649 100644 --- a/packages/propel/package.json +++ b/packages/propel/package.json @@ -1,6 +1,6 @@ { "name": "@plane/propel", - "version": "1.2.0", + "version": "1.2.1", "private": true, "license": "AGPL-3.0", "type": "module", diff --git a/packages/services/package.json b/packages/services/package.json index 4972157479e..981b86df318 100644 --- a/packages/services/package.json +++ b/packages/services/package.json @@ -1,6 +1,6 @@ { "name": "@plane/services", - "version": "1.2.0", + "version": "1.2.1", "license": "AGPL-3.0", "private": true, "type": "module", diff --git a/packages/shared-state/package.json b/packages/shared-state/package.json index b3f7c250608..effd12ef641 100644 --- a/packages/shared-state/package.json +++ b/packages/shared-state/package.json @@ -1,6 +1,6 @@ { "name": "@plane/shared-state", - "version": "1.2.0", + "version": "1.2.1", "license": "AGPL-3.0", "description": "Shared state shared across multiple apps internally", "private": true, diff --git a/packages/tailwind-config/package.json b/packages/tailwind-config/package.json index 9deb622cca1..ece3b586ae7 100644 --- a/packages/tailwind-config/package.json +++ b/packages/tailwind-config/package.json @@ -1,6 +1,6 @@ { "name": "@plane/tailwind-config", - "version": "1.2.0", + "version": "1.2.1", "license": "AGPL-3.0", "description": "common tailwind configuration across monorepo", "main": "tailwind.config.js", diff --git a/packages/types/package.json b/packages/types/package.json index 020b98bbe47..47be226847a 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@plane/types", - "version": "1.2.0", + "version": "1.2.1", "license": "AGPL-3.0", "private": true, "type": "module", diff --git a/packages/typescript-config/package.json b/packages/typescript-config/package.json index c8d21d9ae5f..b8190c40dbb 100644 --- a/packages/typescript-config/package.json +++ b/packages/typescript-config/package.json @@ -1,6 +1,6 @@ { "name": "@plane/typescript-config", - "version": "1.2.0", + "version": "1.2.1", "license": "AGPL-3.0", "private": true, "files": [ diff --git a/packages/ui/package.json b/packages/ui/package.json index 51fb33f6cfd..ffed74cdeb5 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -2,7 +2,7 @@ "name": "@plane/ui", "description": "UI components shared across multiple apps internally", "private": true, - "version": "1.2.0", + "version": "1.2.1", "sideEffects": false, "license": "AGPL-3.0", "type": "module", diff --git a/packages/utils/package.json b/packages/utils/package.json index c6294ff0712..4e60cac8cb2 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@plane/utils", - "version": "1.2.0", + "version": "1.2.1", "description": "Helper functions shared across multiple apps internally", "license": "AGPL-3.0", "private": true, From 1548288e95722ccfa310046079ab3fe9c323282d Mon Sep 17 00:00:00 2001 From: sriram veeraghanta Date: Fri, 20 Feb 2026 18:02:12 +0530 Subject: [PATCH 03/62] fix: IDOR Vulnerabilities in Asset & Attachment Endpoints (#8644) * fix: idor issues in project assets and issue attachements * fix: comments --- apps/api/plane/app/views/asset/v2.py | 2 +- apps/api/plane/app/views/issue/attachment.py | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/apps/api/plane/app/views/asset/v2.py b/apps/api/plane/app/views/asset/v2.py index c0580c1149b..3677537bb1e 100644 --- a/apps/api/plane/app/views/asset/v2.py +++ b/apps/api/plane/app/views/asset/v2.py @@ -603,7 +603,7 @@ def post(self, request, slug, project_id): @allow_permission([ROLE.ADMIN, ROLE.MEMBER, ROLE.GUEST]) def patch(self, request, slug, project_id, pk): # get the asset id - asset = FileAsset.objects.get(id=pk) + asset = FileAsset.objects.get(id=pk, workspace__slug=slug, project_id=project_id) # get the storage metadata asset.is_uploaded = True # get the storage metadata diff --git a/apps/api/plane/app/views/issue/attachment.py b/apps/api/plane/app/views/issue/attachment.py index 7b7ecf378b5..3600a0766ef 100644 --- a/apps/api/plane/app/views/issue/attachment.py +++ b/apps/api/plane/app/views/issue/attachment.py @@ -56,7 +56,11 @@ def post(self, request, slug, project_id, issue_id): @allow_permission([ROLE.ADMIN], creator=True, model=FileAsset) def delete(self, request, slug, project_id, issue_id, pk): - issue_attachment = FileAsset.objects.get(pk=pk) + issue_attachment = FileAsset.objects.filter( + pk=pk, workspace__slug=slug, project_id=project_id, issue_id=issue_id + ).first() + if not issue_attachment: + return Response(status=status.HTTP_404_NOT_FOUND) issue_attachment.asset.delete(save=False) issue_attachment.delete() issue_activity.delay( From ec44b63027cfd96974c1c964aa3ca615ebbc52fd Mon Sep 17 00:00:00 2001 From: sriramveeraghanta Date: Fri, 20 Feb 2026 18:05:15 +0530 Subject: [PATCH 04/62] chore: pacakge version --- apps/admin/package.json | 2 +- apps/api/package.json | 2 +- apps/live/package.json | 2 +- apps/space/package.json | 2 +- apps/web/package.json | 2 +- package.json | 2 +- packages/codemods/package.json | 2 +- packages/constants/package.json | 2 +- packages/editor/package.json | 2 +- packages/hooks/package.json | 2 +- packages/i18n/package.json | 2 +- packages/logger/package.json | 2 +- packages/propel/package.json | 2 +- packages/services/package.json | 2 +- packages/shared-state/package.json | 2 +- packages/tailwind-config/package.json | 2 +- packages/types/package.json | 2 +- packages/typescript-config/package.json | 2 +- packages/ui/package.json | 2 +- packages/utils/package.json | 2 +- 20 files changed, 20 insertions(+), 20 deletions(-) diff --git a/apps/admin/package.json b/apps/admin/package.json index 07f0b51d39f..d2fa5a4c261 100644 --- a/apps/admin/package.json +++ b/apps/admin/package.json @@ -1,7 +1,7 @@ { "name": "admin", "description": "Admin UI for Plane", - "version": "1.2.1", + "version": "1.2.2", "license": "AGPL-3.0", "private": true, "type": "module", diff --git a/apps/api/package.json b/apps/api/package.json index 4767d0cb461..46fb0dd47e0 100644 --- a/apps/api/package.json +++ b/apps/api/package.json @@ -1,6 +1,6 @@ { "name": "plane-api", - "version": "1.2.1", + "version": "1.2.2", "license": "AGPL-3.0", "private": true, "description": "API server powering Plane's backend" diff --git a/apps/live/package.json b/apps/live/package.json index 7115af53a4e..bd09ce14203 100644 --- a/apps/live/package.json +++ b/apps/live/package.json @@ -1,6 +1,6 @@ { "name": "live", - "version": "1.2.1", + "version": "1.2.2", "license": "AGPL-3.0", "description": "A realtime collaborative server powers Plane's rich text editor", "main": "./dist/start.mjs", diff --git a/apps/space/package.json b/apps/space/package.json index c3e6f3dbf42..e40f6092774 100644 --- a/apps/space/package.json +++ b/apps/space/package.json @@ -1,6 +1,6 @@ { "name": "space", - "version": "1.2.1", + "version": "1.2.2", "private": true, "license": "AGPL-3.0", "type": "module", diff --git a/apps/web/package.json b/apps/web/package.json index fbf921ff76e..3a116f6e07e 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -1,6 +1,6 @@ { "name": "web", - "version": "1.2.1", + "version": "1.2.2", "private": true, "license": "AGPL-3.0", "type": "module", diff --git a/package.json b/package.json index 1229aa3c9c2..eef3f0ca615 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "plane", "description": "Open-source project management that unlocks customer value", "repository": "https://github.com/makeplane/plane.git", - "version": "1.2.1", + "version": "1.2.2", "license": "AGPL-3.0", "private": true, "scripts": { diff --git a/packages/codemods/package.json b/packages/codemods/package.json index 8b7104d818e..218bc986b22 100644 --- a/packages/codemods/package.json +++ b/packages/codemods/package.json @@ -1,6 +1,6 @@ { "name": "@plane/codemods", - "version": "1.2.1", + "version": "1.2.2", "private": true, "scripts": { "test": "vitest run", diff --git a/packages/constants/package.json b/packages/constants/package.json index 05b5e8e85a6..ecb8d1c5b56 100644 --- a/packages/constants/package.json +++ b/packages/constants/package.json @@ -1,6 +1,6 @@ { "name": "@plane/constants", - "version": "1.2.1", + "version": "1.2.2", "private": true, "license": "AGPL-3.0", "type": "module", diff --git a/packages/editor/package.json b/packages/editor/package.json index 930e9f4b61d..ac4f67e11a8 100644 --- a/packages/editor/package.json +++ b/packages/editor/package.json @@ -1,6 +1,6 @@ { "name": "@plane/editor", - "version": "1.2.1", + "version": "1.2.2", "description": "Core Editor that powers Plane", "license": "AGPL-3.0", "private": true, diff --git a/packages/hooks/package.json b/packages/hooks/package.json index 5fa0cd6377a..e63a99d72a2 100644 --- a/packages/hooks/package.json +++ b/packages/hooks/package.json @@ -1,6 +1,6 @@ { "name": "@plane/hooks", - "version": "1.2.1", + "version": "1.2.2", "license": "AGPL-3.0", "description": "React hooks that are shared across multiple apps internally", "private": true, diff --git a/packages/i18n/package.json b/packages/i18n/package.json index 2cf34926d16..046c75cbb31 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -1,6 +1,6 @@ { "name": "@plane/i18n", - "version": "1.2.1", + "version": "1.2.2", "license": "AGPL-3.0", "description": "I18n shared across multiple apps internally", "private": true, diff --git a/packages/logger/package.json b/packages/logger/package.json index a4a57328b13..5f9de0fc3f7 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -1,6 +1,6 @@ { "name": "@plane/logger", - "version": "1.2.1", + "version": "1.2.2", "license": "AGPL-3.0", "description": "Logger shared across multiple apps internally", "private": true, diff --git a/packages/propel/package.json b/packages/propel/package.json index 230c7b07649..97d67c8db53 100644 --- a/packages/propel/package.json +++ b/packages/propel/package.json @@ -1,6 +1,6 @@ { "name": "@plane/propel", - "version": "1.2.1", + "version": "1.2.2", "private": true, "license": "AGPL-3.0", "type": "module", diff --git a/packages/services/package.json b/packages/services/package.json index 981b86df318..cf0bec6eedb 100644 --- a/packages/services/package.json +++ b/packages/services/package.json @@ -1,6 +1,6 @@ { "name": "@plane/services", - "version": "1.2.1", + "version": "1.2.2", "license": "AGPL-3.0", "private": true, "type": "module", diff --git a/packages/shared-state/package.json b/packages/shared-state/package.json index effd12ef641..af792136c77 100644 --- a/packages/shared-state/package.json +++ b/packages/shared-state/package.json @@ -1,6 +1,6 @@ { "name": "@plane/shared-state", - "version": "1.2.1", + "version": "1.2.2", "license": "AGPL-3.0", "description": "Shared state shared across multiple apps internally", "private": true, diff --git a/packages/tailwind-config/package.json b/packages/tailwind-config/package.json index ece3b586ae7..61b73daecf9 100644 --- a/packages/tailwind-config/package.json +++ b/packages/tailwind-config/package.json @@ -1,6 +1,6 @@ { "name": "@plane/tailwind-config", - "version": "1.2.1", + "version": "1.2.2", "license": "AGPL-3.0", "description": "common tailwind configuration across monorepo", "main": "tailwind.config.js", diff --git a/packages/types/package.json b/packages/types/package.json index 47be226847a..e37e9b877de 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@plane/types", - "version": "1.2.1", + "version": "1.2.2", "license": "AGPL-3.0", "private": true, "type": "module", diff --git a/packages/typescript-config/package.json b/packages/typescript-config/package.json index b8190c40dbb..f7f44b2039c 100644 --- a/packages/typescript-config/package.json +++ b/packages/typescript-config/package.json @@ -1,6 +1,6 @@ { "name": "@plane/typescript-config", - "version": "1.2.1", + "version": "1.2.2", "license": "AGPL-3.0", "private": true, "files": [ diff --git a/packages/ui/package.json b/packages/ui/package.json index ffed74cdeb5..f84e6bddd7f 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -2,7 +2,7 @@ "name": "@plane/ui", "description": "UI components shared across multiple apps internally", "private": true, - "version": "1.2.1", + "version": "1.2.2", "sideEffects": false, "license": "AGPL-3.0", "type": "module", diff --git a/packages/utils/package.json b/packages/utils/package.json index 4e60cac8cb2..71a9b442970 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@plane/utils", - "version": "1.2.1", + "version": "1.2.2", "description": "Helper functions shared across multiple apps internally", "license": "AGPL-3.0", "private": true, From 6c984e18ae8d63617ad51836a88fd397b9b2d31f Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 11 Feb 2026 13:06:42 +0530 Subject: [PATCH 05/62] chore(deps): bump cryptography (#8625) Bumps the pip group with 1 update in the /apps/api/requirements directory: [cryptography](https://github.com/pyca/cryptography). Updates `cryptography` from 44.0.1 to 46.0.5 - [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pyca/cryptography/compare/44.0.1...46.0.5) --- updated-dependencies: - dependency-name: cryptography dependency-version: 46.0.5 dependency-type: direct:production dependency-group: pip ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- apps/api/requirements/base.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/api/requirements/base.txt b/apps/api/requirements/base.txt index 7f2c64be478..4a707a7182d 100644 --- a/apps/api/requirements/base.txt +++ b/apps/api/requirements/base.txt @@ -51,7 +51,7 @@ beautifulsoup4==4.12.3 # analytics posthog==3.5.0 # crypto -cryptography==44.0.1 +cryptography==46.0.5 # html validator lxml==6.0.0 # s3 From 318c9930821a2d15b2d4e844de089e1cdf4e426d Mon Sep 17 00:00:00 2001 From: Sangeetha Date: Mon, 9 Feb 2026 14:50:29 +0530 Subject: [PATCH 06/62] [SECUR-104] fix: Arbitrary Modification of API Token Rate Limits#8612 --- apps/api/plane/app/serializers/api.py | 3 + .../tests/contract/app/test_api_token.py | 78 +++++++++++++++---- 2 files changed, 67 insertions(+), 14 deletions(-) diff --git a/apps/api/plane/app/serializers/api.py b/apps/api/plane/app/serializers/api.py index 009f7a611f5..d14dcacffc6 100644 --- a/apps/api/plane/app/serializers/api.py +++ b/apps/api/plane/app/serializers/api.py @@ -15,6 +15,9 @@ class Meta: "updated_at", "workspace", "user", + "is_active", + "last_used", + "user_type", ] diff --git a/apps/api/plane/tests/contract/app/test_api_token.py b/apps/api/plane/tests/contract/app/test_api_token.py index 35d92b11e17..24fac7bb42e 100644 --- a/apps/api/plane/tests/contract/app/test_api_token.py +++ b/apps/api/plane/tests/contract/app/test_api_token.py @@ -138,7 +138,7 @@ def test_get_specific_api_token(self, session_client, create_user, create_api_to """Test retrieving a specific API token""" # Arrange session_client.force_authenticate(user=create_user) - url = reverse("api-tokens", kwargs={"pk": create_api_token_for_user.pk}) + url = reverse("api-tokens-details", kwargs={"pk": create_api_token_for_user.pk}) # Act response = session_client.get(url) @@ -155,7 +155,7 @@ def test_get_nonexistent_api_token(self, session_client, create_user): # Arrange session_client.force_authenticate(user=create_user) fake_pk = uuid4() - url = reverse("api-tokens", kwargs={"pk": fake_pk}) + url = reverse("api-tokens-details", kwargs={"pk": fake_pk}) # Act response = session_client.get(url) @@ -174,7 +174,7 @@ def test_get_other_users_api_token(self, session_client, create_user, db): other_user = User.objects.create(email=unique_email, username=unique_username) other_token = APIToken.objects.create(label="Other Token", user=other_user, user_type=0) session_client.force_authenticate(user=create_user) - url = reverse("api-tokens", kwargs={"pk": other_token.pk}) + url = reverse("api-tokens-details", kwargs={"pk": other_token.pk}) # Act response = session_client.get(url) @@ -188,7 +188,7 @@ def test_delete_api_token_success(self, session_client, create_user, create_api_ """Test successful API token deletion""" # Arrange session_client.force_authenticate(user=create_user) - url = reverse("api-tokens", kwargs={"pk": create_api_token_for_user.pk}) + url = reverse("api-tokens-details", kwargs={"pk": create_api_token_for_user.pk}) # Act response = session_client.delete(url) @@ -203,7 +203,7 @@ def test_delete_nonexistent_api_token(self, session_client, create_user): # Arrange session_client.force_authenticate(user=create_user) fake_pk = uuid4() - url = reverse("api-tokens", kwargs={"pk": fake_pk}) + url = reverse("api-tokens-details", kwargs={"pk": fake_pk}) # Act response = session_client.delete(url) @@ -222,7 +222,7 @@ def test_delete_other_users_api_token(self, session_client, create_user, db): other_user = User.objects.create(email=unique_email, username=unique_username) other_token = APIToken.objects.create(label="Other Token", user=other_user, user_type=0) session_client.force_authenticate(user=create_user) - url = reverse("api-tokens", kwargs={"pk": other_token.pk}) + url = reverse("api-tokens-details", kwargs={"pk": other_token.pk}) # Act response = session_client.delete(url) @@ -238,7 +238,7 @@ def test_delete_service_api_token_forbidden(self, session_client, create_user): # Arrange service_token = APIToken.objects.create(label="Service Token", user=create_user, user_type=0, is_service=True) session_client.force_authenticate(user=create_user) - url = reverse("api-tokens", kwargs={"pk": service_token.pk}) + url = reverse("api-tokens-details", kwargs={"pk": service_token.pk}) # Act response = session_client.delete(url) @@ -254,7 +254,7 @@ def test_patch_api_token_success(self, session_client, create_user, create_api_t """Test successful API token update""" # Arrange session_client.force_authenticate(user=create_user) - url = reverse("api-tokens", kwargs={"pk": create_api_token_for_user.pk}) + url = reverse("api-tokens-details", kwargs={"pk": create_api_token_for_user.pk}) update_data = { "label": "Updated Token Label", "description": "Updated description", @@ -278,7 +278,7 @@ def test_patch_api_token_partial_update(self, session_client, create_user, creat """Test partial API token update""" # Arrange session_client.force_authenticate(user=create_user) - url = reverse("api-tokens", kwargs={"pk": create_api_token_for_user.pk}) + url = reverse("api-tokens-details", kwargs={"pk": create_api_token_for_user.pk}) original_description = create_api_token_for_user.description update_data = {"label": "Only Label Updated"} @@ -296,7 +296,7 @@ def test_patch_nonexistent_api_token(self, session_client, create_user): # Arrange session_client.force_authenticate(user=create_user) fake_pk = uuid4() - url = reverse("api-tokens", kwargs={"pk": fake_pk}) + url = reverse("api-tokens-details", kwargs={"pk": fake_pk}) update_data = {"label": "New Label"} # Act @@ -316,7 +316,7 @@ def test_patch_other_users_api_token(self, session_client, create_user, db): other_user = User.objects.create(email=unique_email, username=unique_username) other_token = APIToken.objects.create(label="Other Token", user=other_user, user_type=0) session_client.force_authenticate(user=create_user) - url = reverse("api-tokens", kwargs={"pk": other_token.pk}) + url = reverse("api-tokens-details", kwargs={"pk": other_token.pk}) update_data = {"label": "Hacked Label"} # Act @@ -329,6 +329,56 @@ def test_patch_other_users_api_token(self, session_client, create_user, db): other_token.refresh_from_db() assert other_token.label == "Other Token" + @pytest.mark.django_db + def test_patch_cannot_modify_token(self, session_client, create_user, create_api_token_for_user): + """Test that token value cannot be modified via PATCH""" + # Arrange + session_client.force_authenticate(user=create_user) + url = reverse("api-tokens-details", kwargs={"pk": create_api_token_for_user.pk}) + original_token = create_api_token_for_user.token + update_data = {"token": "plane_api_malicious_token_value"} + + # Act + response = session_client.patch(url, update_data, format="json") + + # Assert + assert response.status_code == status.HTTP_200_OK + create_api_token_for_user.refresh_from_db() + assert create_api_token_for_user.token == original_token + + @pytest.mark.django_db + def test_patch_cannot_modify_user_type(self, session_client, create_user, create_api_token_for_user): + """Test that user_type cannot be modified via PATCH""" + # Arrange + session_client.force_authenticate(user=create_user) + url = reverse("api-tokens-details", kwargs={"pk": create_api_token_for_user.pk}) + update_data = {"user_type": 1} + + # Act + response = session_client.patch(url, update_data, format="json") + + # Assert + assert response.status_code == status.HTTP_200_OK + create_api_token_for_user.refresh_from_db() + assert create_api_token_for_user.user_type == 0 + + @pytest.mark.django_db + def test_patch_cannot_modify_service_token(self, session_client, create_user): + """Test that service tokens cannot be modified through user token endpoint""" + # Arrange + service_token = APIToken.objects.create(label="Service Token", user=create_user, user_type=0, is_service=True) + session_client.force_authenticate(user=create_user) + url = reverse("api-tokens-details", kwargs={"pk": service_token.pk}) + update_data = {"label": "Hacked Service Token"} + + # Act + response = session_client.patch(url, update_data, format="json") + + # Assert + assert response.status_code == status.HTTP_404_NOT_FOUND + service_token.refresh_from_db() + assert service_token.label == "Service Token" + # Authentication tests @pytest.mark.django_db def test_all_endpoints_require_authentication(self, api_client): @@ -337,9 +387,9 @@ def test_all_endpoints_require_authentication(self, api_client): endpoints = [ (reverse("api-tokens"), "get"), (reverse("api-tokens"), "post"), - (reverse("api-tokens", kwargs={"pk": uuid4()}), "get"), - (reverse("api-tokens", kwargs={"pk": uuid4()}), "patch"), - (reverse("api-tokens", kwargs={"pk": uuid4()}), "delete"), + (reverse("api-tokens-details", kwargs={"pk": uuid4()}), "get"), + (reverse("api-tokens-details", kwargs={"pk": uuid4()}), "patch"), + (reverse("api-tokens-details", kwargs={"pk": uuid4()}), "delete"), ] # Act & Assert From 95d121ce3867f1edc61b627a840c37cbd7a36be5 Mon Sep 17 00:00:00 2001 From: sriramveeraghanta Date: Mon, 9 Feb 2026 14:51:53 +0530 Subject: [PATCH 07/62] chore(deps): upgrade django version --- apps/api/requirements/base.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/api/requirements/base.txt b/apps/api/requirements/base.txt index 4a707a7182d..b0ffb54e836 100644 --- a/apps/api/requirements/base.txt +++ b/apps/api/requirements/base.txt @@ -1,7 +1,7 @@ # base requirements # django -Django==4.2.27 +Django==4.2.28 # rest framework djangorestframework==3.15.2 # postgres From b783f25bfacd6c2b10ec639889266f6eb28e567e Mon Sep 17 00:00:00 2001 From: Sangeetha Date: Thu, 5 Feb 2026 15:03:43 +0530 Subject: [PATCH 08/62] [SECUR-113] fix: ssrf for work item links (#8607) --- apps/api/plane/bgtasks/work_item_link_task.py | 94 +++++++++++++++---- 1 file changed, 77 insertions(+), 17 deletions(-) diff --git a/apps/api/plane/bgtasks/work_item_link_task.py b/apps/api/plane/bgtasks/work_item_link_task.py index 7ceaacaf5ad..442396c7f02 100644 --- a/apps/api/plane/bgtasks/work_item_link_task.py +++ b/apps/api/plane/bgtasks/work_item_link_task.py @@ -1,6 +1,10 @@ +# Copyright (c) 2023-present Plane Software, Inc. and contributors +# SPDX-License-Identifier: AGPL-3.0-only +# See the LICENSE file for details. + # Python imports import logging - +import socket # Third party imports from celery import shared_task @@ -20,6 +24,48 @@ DEFAULT_FAVICON = "PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJub25lIiBzdHJva2U9ImN1cnJlbnRDb2xvciIgc3Ryb2tlLXdpZHRoPSIyIiBzdHJva2UtbGluZWNhcD0icm91bmQiIHN0cm9rZS1saW5lam9pbj0icm91bmQiIGNsYXNzPSJsdWNpZGUgbHVjaWRlLWxpbmstaWNvbiBsdWNpZGUtbGluayI+PHBhdGggZD0iTTEwIDEzYTUgNSAwIDAgMCA3LjU0LjU0bDMtM2E1IDUgMCAwIDAtNy4wNy03LjA3bC0xLjcyIDEuNzEiLz48cGF0aCBkPSJNMTQgMTFhNSA1IDAgMCAwLTcuNTQtLjU0bC0zIDNhNSA1IDAgMCAwIDcuMDcgNy4wN2wxLjcxLTEuNzEiLz48L3N2Zz4=" # noqa: E501 +def validate_url_ip(url: str) -> None: + """ + Validate that a URL doesn't point to a private/internal IP address. + Resolves hostnames to IPs before checking. + + Args: + url: The URL to validate + + Raises: + ValueError: If the URL points to a private/internal IP + """ + parsed = urlparse(url) + hostname = parsed.hostname + + if not hostname: + raise ValueError("Invalid URL: No hostname found") + + # Only allow HTTP and HTTPS to prevent file://, gopher://, etc. + if parsed.scheme not in ("http", "https"): + raise ValueError("Invalid URL scheme. Only HTTP and HTTPS are allowed") + + # Resolve hostname to IP addresses — this catches domain names that + # point to internal IPs (e.g. attacker.com -> 169.254.169.254) + + try: + addr_info = socket.getaddrinfo(hostname, None) + except socket.gaierror: + raise ValueError("Hostname could not be resolved") + + if not addr_info: + raise ValueError("No IP addresses found for the hostname") + + # Check every resolved IP against blocked ranges to prevent SSRF + for addr in addr_info: + ip = ipaddress.ip_address(addr[4][0]) + if ip.is_private or ip.is_loopback or ip.is_reserved or ip.is_link_local: + raise ValueError("Access to private/internal networks is not allowed") + + +MAX_REDIRECTS = 5 + + def crawl_work_item_link_title_and_favicon(url: str) -> Dict[str, Any]: """ Crawls a URL to extract the title and favicon. @@ -31,17 +77,6 @@ def crawl_work_item_link_title_and_favicon(url: str) -> Dict[str, Any]: str: JSON string containing title and base64-encoded favicon """ try: - # Prevent access to private IP ranges - parsed = urlparse(url) - - try: - ip = ipaddress.ip_address(parsed.hostname) - if ip.is_private or ip.is_loopback or ip.is_reserved: - raise ValueError("Access to private/internal networks is not allowed") - except ValueError: - # Not an IP address, continue with domain validation - pass - # Set up headers to mimic a real browser headers = { "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36" # noqa: E501 @@ -49,9 +84,28 @@ def crawl_work_item_link_title_and_favicon(url: str) -> Dict[str, Any]: soup = None title = None + final_url = url + + validate_url_ip(final_url) try: - response = requests.get(url, headers=headers, timeout=1) + # Manually follow redirects to validate each URL before requesting + redirect_count = 0 + response = requests.get(final_url, headers=headers, timeout=1, allow_redirects=False) + + while response.is_redirect and redirect_count < MAX_REDIRECTS: + redirect_url = response.headers.get("Location") + if not redirect_url: + break + # Resolve relative redirects against current URL + final_url = urljoin(final_url, redirect_url) + # Validate the redirect target BEFORE making the request + validate_url_ip(final_url) + redirect_count += 1 + response = requests.get(final_url, headers=headers, timeout=1, allow_redirects=False) + + if redirect_count >= MAX_REDIRECTS: + logger.warning(f"Too many redirects for URL: {url}") soup = BeautifulSoup(response.content, "html.parser") title_tag = soup.find("title") @@ -60,8 +114,8 @@ def crawl_work_item_link_title_and_favicon(url: str) -> Dict[str, Any]: except requests.RequestException as e: logger.warning(f"Failed to fetch HTML for title: {str(e)}") - # Fetch and encode favicon - favicon_base64 = fetch_and_encode_favicon(headers, soup, url) + # Fetch and encode favicon using final URL (after redirects) + favicon_base64 = fetch_and_encode_favicon(headers, soup, final_url) # Prepare result result = { @@ -107,7 +161,9 @@ def find_favicon_url(soup: Optional[BeautifulSoup], base_url: str) -> Optional[s for selector in favicon_selectors: favicon_tag = soup.select_one(selector) if favicon_tag and favicon_tag.get("href"): - return urljoin(base_url, favicon_tag["href"]) + favicon_href = urljoin(base_url, favicon_tag["href"]) + validate_url_ip(favicon_href) + return favicon_href # Fallback to /favicon.ico parsed_url = urlparse(base_url) @@ -115,7 +171,9 @@ def find_favicon_url(soup: Optional[BeautifulSoup], base_url: str) -> Optional[s # Check if fallback exists try: - response = requests.head(fallback_url, timeout=2) + validate_url_ip(fallback_url) + response = requests.head(fallback_url, timeout=2, allow_redirects=False) + if response.status_code == 200: return fallback_url except requests.RequestException as e: @@ -146,6 +204,8 @@ def fetch_and_encode_favicon( "favicon_base64": f"data:image/svg+xml;base64,{DEFAULT_FAVICON}", } + validate_url_ip(favicon_url) + response = requests.get(favicon_url, headers=headers, timeout=1) # Get content type From a77af4e67ee8032f5c17fd22d3b7aeef660f01f6 Mon Sep 17 00:00:00 2001 From: sriram veeraghanta Date: Fri, 20 Feb 2026 18:33:09 +0530 Subject: [PATCH 09/62] Update apps/api/plane/app/views/issue/attachment.py Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- apps/api/plane/app/views/issue/attachment.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/apps/api/plane/app/views/issue/attachment.py b/apps/api/plane/app/views/issue/attachment.py index 3600a0766ef..2207d241929 100644 --- a/apps/api/plane/app/views/issue/attachment.py +++ b/apps/api/plane/app/views/issue/attachment.py @@ -60,7 +60,10 @@ def delete(self, request, slug, project_id, issue_id, pk): pk=pk, workspace__slug=slug, project_id=project_id, issue_id=issue_id ).first() if not issue_attachment: - return Response(status=status.HTTP_404_NOT_FOUND) + return Response( + {"error": "Issue attachment not found."}, + status=status.HTTP_404_NOT_FOUND, + ) issue_attachment.asset.delete(save=False) issue_attachment.delete() issue_activity.delay( From 8c23fdd1d865f9bf3fd7edc7c7f2a60828523216 Mon Sep 17 00:00:00 2001 From: sriram veeraghanta Date: Fri, 20 Feb 2026 18:33:45 +0530 Subject: [PATCH 10/62] fix: Member Information Disclosure via Public Endpoint #8646 --- apps/api/plane/space/views/project.py | 10 ++++++---- apps/space/core/types/member.d.ts | 6 +----- packages/types/src/users.ts | 6 +----- 3 files changed, 8 insertions(+), 14 deletions(-) diff --git a/apps/api/plane/space/views/project.py b/apps/api/plane/space/views/project.py index 6f332781ff3..0e19085a03d 100644 --- a/apps/api/plane/space/views/project.py +++ b/apps/api/plane/space/views/project.py @@ -63,6 +63,11 @@ class ProjectMembersEndpoint(BaseAPIView): def get(self, request, anchor): deploy_board = DeployBoard.objects.filter(anchor=anchor).first() + if not deploy_board: + return Response( + {"error": "Invalid anchor"}, + status=status.HTTP_404_NOT_FOUND, + ) members = ProjectMember.objects.filter( project=deploy_board.project, @@ -71,10 +76,7 @@ def get(self, request, anchor): ).values( "id", "member", - "member__first_name", - "member__last_name", "member__display_name", - "project", - "workspace", + "member__avatar", ) return Response(members, status=status.HTTP_200_OK) diff --git a/apps/space/core/types/member.d.ts b/apps/space/core/types/member.d.ts index 721ccd98fc5..34c95daf688 100644 --- a/apps/space/core/types/member.d.ts +++ b/apps/space/core/types/member.d.ts @@ -1,10 +1,6 @@ export type TPublicMember = { id: string; member: string; - member__avatar: string; - member__first_name: string; - member__last_name: string; member__display_name: string; - project: string; - workspace: string; + member__avatar: string; }; diff --git a/packages/types/src/users.ts b/packages/types/src/users.ts index 9278996a7ab..7760a0a8c03 100644 --- a/packages/types/src/users.ts +++ b/packages/types/src/users.ts @@ -196,12 +196,8 @@ export type TProfileViews = "assigned" | "created" | "subscribed"; export type TPublicMember = { id: string; member: string; - member__avatar: string; - member__first_name: string; - member__last_name: string; member__display_name: string; - project: string; - workspace: string; + member__avatar: string; }; // export interface ICurrentUser { From 9a7696acac92c68280f6efc2173e2ea9a4e1bb14 Mon Sep 17 00:00:00 2001 From: sriramveeraghanta Date: Thu, 5 Mar 2026 17:25:22 +0530 Subject: [PATCH 11/62] chore: version upgrade --- apps/admin/package.json | 2 +- apps/api/package.json | 2 +- apps/live/package.json | 2 +- apps/space/package.json | 2 +- apps/web/package.json | 2 +- package.json | 2 +- packages/codemods/package.json | 2 +- packages/constants/package.json | 2 +- packages/editor/package.json | 2 +- packages/hooks/package.json | 2 +- packages/i18n/package.json | 2 +- packages/logger/package.json | 2 +- packages/propel/package.json | 2 +- packages/services/package.json | 2 +- packages/shared-state/package.json | 2 +- packages/tailwind-config/package.json | 2 +- packages/types/package.json | 2 +- packages/typescript-config/package.json | 2 +- packages/ui/package.json | 2 +- packages/utils/package.json | 2 +- 20 files changed, 20 insertions(+), 20 deletions(-) diff --git a/apps/admin/package.json b/apps/admin/package.json index d2fa5a4c261..573a3ddfe31 100644 --- a/apps/admin/package.json +++ b/apps/admin/package.json @@ -1,7 +1,7 @@ { "name": "admin", "description": "Admin UI for Plane", - "version": "1.2.2", + "version": "1.2.3", "license": "AGPL-3.0", "private": true, "type": "module", diff --git a/apps/api/package.json b/apps/api/package.json index 46fb0dd47e0..9f4b7879c11 100644 --- a/apps/api/package.json +++ b/apps/api/package.json @@ -1,6 +1,6 @@ { "name": "plane-api", - "version": "1.2.2", + "version": "1.2.3", "license": "AGPL-3.0", "private": true, "description": "API server powering Plane's backend" diff --git a/apps/live/package.json b/apps/live/package.json index bd09ce14203..2130f9d8612 100644 --- a/apps/live/package.json +++ b/apps/live/package.json @@ -1,6 +1,6 @@ { "name": "live", - "version": "1.2.2", + "version": "1.2.3", "license": "AGPL-3.0", "description": "A realtime collaborative server powers Plane's rich text editor", "main": "./dist/start.mjs", diff --git a/apps/space/package.json b/apps/space/package.json index e40f6092774..5442a46bcc1 100644 --- a/apps/space/package.json +++ b/apps/space/package.json @@ -1,6 +1,6 @@ { "name": "space", - "version": "1.2.2", + "version": "1.2.3", "private": true, "license": "AGPL-3.0", "type": "module", diff --git a/apps/web/package.json b/apps/web/package.json index 3a116f6e07e..2d474e00c72 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -1,6 +1,6 @@ { "name": "web", - "version": "1.2.2", + "version": "1.2.3", "private": true, "license": "AGPL-3.0", "type": "module", diff --git a/package.json b/package.json index eef3f0ca615..999e414114a 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "plane", "description": "Open-source project management that unlocks customer value", "repository": "https://github.com/makeplane/plane.git", - "version": "1.2.2", + "version": "1.2.3", "license": "AGPL-3.0", "private": true, "scripts": { diff --git a/packages/codemods/package.json b/packages/codemods/package.json index 218bc986b22..31b481c34f4 100644 --- a/packages/codemods/package.json +++ b/packages/codemods/package.json @@ -1,6 +1,6 @@ { "name": "@plane/codemods", - "version": "1.2.2", + "version": "1.2.3", "private": true, "scripts": { "test": "vitest run", diff --git a/packages/constants/package.json b/packages/constants/package.json index ecb8d1c5b56..4ac4d295d29 100644 --- a/packages/constants/package.json +++ b/packages/constants/package.json @@ -1,6 +1,6 @@ { "name": "@plane/constants", - "version": "1.2.2", + "version": "1.2.3", "private": true, "license": "AGPL-3.0", "type": "module", diff --git a/packages/editor/package.json b/packages/editor/package.json index ac4f67e11a8..e346b8ba110 100644 --- a/packages/editor/package.json +++ b/packages/editor/package.json @@ -1,6 +1,6 @@ { "name": "@plane/editor", - "version": "1.2.2", + "version": "1.2.3", "description": "Core Editor that powers Plane", "license": "AGPL-3.0", "private": true, diff --git a/packages/hooks/package.json b/packages/hooks/package.json index e63a99d72a2..5a706120bfd 100644 --- a/packages/hooks/package.json +++ b/packages/hooks/package.json @@ -1,6 +1,6 @@ { "name": "@plane/hooks", - "version": "1.2.2", + "version": "1.2.3", "license": "AGPL-3.0", "description": "React hooks that are shared across multiple apps internally", "private": true, diff --git a/packages/i18n/package.json b/packages/i18n/package.json index 046c75cbb31..e11bdcd54cb 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -1,6 +1,6 @@ { "name": "@plane/i18n", - "version": "1.2.2", + "version": "1.2.3", "license": "AGPL-3.0", "description": "I18n shared across multiple apps internally", "private": true, diff --git a/packages/logger/package.json b/packages/logger/package.json index 5f9de0fc3f7..2d9d6af4268 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -1,6 +1,6 @@ { "name": "@plane/logger", - "version": "1.2.2", + "version": "1.2.3", "license": "AGPL-3.0", "description": "Logger shared across multiple apps internally", "private": true, diff --git a/packages/propel/package.json b/packages/propel/package.json index 97d67c8db53..b12950f37ee 100644 --- a/packages/propel/package.json +++ b/packages/propel/package.json @@ -1,6 +1,6 @@ { "name": "@plane/propel", - "version": "1.2.2", + "version": "1.2.3", "private": true, "license": "AGPL-3.0", "type": "module", diff --git a/packages/services/package.json b/packages/services/package.json index cf0bec6eedb..3e42079ba9d 100644 --- a/packages/services/package.json +++ b/packages/services/package.json @@ -1,6 +1,6 @@ { "name": "@plane/services", - "version": "1.2.2", + "version": "1.2.3", "license": "AGPL-3.0", "private": true, "type": "module", diff --git a/packages/shared-state/package.json b/packages/shared-state/package.json index af792136c77..a98d5eaedbd 100644 --- a/packages/shared-state/package.json +++ b/packages/shared-state/package.json @@ -1,6 +1,6 @@ { "name": "@plane/shared-state", - "version": "1.2.2", + "version": "1.2.3", "license": "AGPL-3.0", "description": "Shared state shared across multiple apps internally", "private": true, diff --git a/packages/tailwind-config/package.json b/packages/tailwind-config/package.json index 61b73daecf9..73858f9cfe0 100644 --- a/packages/tailwind-config/package.json +++ b/packages/tailwind-config/package.json @@ -1,6 +1,6 @@ { "name": "@plane/tailwind-config", - "version": "1.2.2", + "version": "1.2.3", "license": "AGPL-3.0", "description": "common tailwind configuration across monorepo", "main": "tailwind.config.js", diff --git a/packages/types/package.json b/packages/types/package.json index e37e9b877de..fe4a0954b44 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@plane/types", - "version": "1.2.2", + "version": "1.2.3", "license": "AGPL-3.0", "private": true, "type": "module", diff --git a/packages/typescript-config/package.json b/packages/typescript-config/package.json index f7f44b2039c..30aa8ea7c58 100644 --- a/packages/typescript-config/package.json +++ b/packages/typescript-config/package.json @@ -1,6 +1,6 @@ { "name": "@plane/typescript-config", - "version": "1.2.2", + "version": "1.2.3", "license": "AGPL-3.0", "private": true, "files": [ diff --git a/packages/ui/package.json b/packages/ui/package.json index f84e6bddd7f..cc799f5bcc9 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -2,7 +2,7 @@ "name": "@plane/ui", "description": "UI components shared across multiple apps internally", "private": true, - "version": "1.2.2", + "version": "1.2.3", "sideEffects": false, "license": "AGPL-3.0", "type": "module", diff --git a/packages/utils/package.json b/packages/utils/package.json index 71a9b442970..573118f2459 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@plane/utils", - "version": "1.2.2", + "version": "1.2.3", "description": "Helper functions shared across multiple apps internally", "license": "AGPL-3.0", "private": true, From 7b1f5a47f56072f24a3fdcf7198c940020c469ec Mon Sep 17 00:00:00 2001 From: sriram veeraghanta Date: Thu, 5 Mar 2026 17:26:06 +0530 Subject: [PATCH 12/62] [SECUR-116] fix: ssrf webhook url for ip address #8716 --- apps/api/plane/app/serializers/webhook.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/apps/api/plane/app/serializers/webhook.py b/apps/api/plane/app/serializers/webhook.py index ef193e24da1..2aecebcdec0 100644 --- a/apps/api/plane/app/serializers/webhook.py +++ b/apps/api/plane/app/serializers/webhook.py @@ -34,7 +34,7 @@ def create(self, validated_data): for addr in ip_addresses: ip = ipaddress.ip_address(addr[4][0]) - if ip.is_loopback: + if ip.is_private or ip.is_loopback or ip.is_reserved or ip.is_link_local: raise serializers.ValidationError({"url": "URL resolves to a blocked IP address."}) # Additional validation for multiple request domains and their subdomains @@ -69,7 +69,7 @@ def update(self, instance, validated_data): for addr in ip_addresses: ip = ipaddress.ip_address(addr[4][0]) - if ip.is_loopback: + if ip.is_private or ip.is_loopback or ip.is_reserved or ip.is_link_local: raise serializers.ValidationError({"url": "URL resolves to a blocked IP address."}) # Additional validation for multiple request domains and their subdomains From 588dc2927e45f3aa57a4d862e91ca6ad0a22d85e Mon Sep 17 00:00:00 2001 From: Anmol Singh Bhatia <121005188+anmolsinghbhatia@users.noreply.github.com> Date: Mon, 16 Mar 2026 14:29:33 +0530 Subject: [PATCH 13/62] [WEB-6599] feat: instance not ready ui revamp (#8755) * feat: instance not ready ui revamp * chore: code refactoring * chore: code refactoring --- .../web/app/assets/auth/gradient-bg-logo.webp | Bin 0 -> 8598 bytes apps/web/app/assets/auth/gradient-logo.webp | Bin 0 -> 18208 bytes .../components/instance/not-ready-view.tsx | 76 +++++++++--------- 3 files changed, 37 insertions(+), 39 deletions(-) create mode 100644 apps/web/app/assets/auth/gradient-bg-logo.webp create mode 100644 apps/web/app/assets/auth/gradient-logo.webp diff --git a/apps/web/app/assets/auth/gradient-bg-logo.webp b/apps/web/app/assets/auth/gradient-bg-logo.webp new file mode 100644 index 0000000000000000000000000000000000000000..47202e562cb1b5106348a339770ee398070a005a GIT binary patch literal 8598 zcmaKRWmr{R@b3l=2apsH@lc2Elx~oYLx+Sk0*4eNB}D|`kkTOChejHt1nKTZx=}hW zzW@8&dq3R|`&nzvp82hr*)wbASzA+4PA-xf0Q6*~)pgYc^`8I$K=AkofPf5CKuSej zA@7lddz|6mlc7IWn@%AGr_rC5QU8XiE)P5lJix?xN-7J;1W-sxf!KMDznE%2jnIA4 z;-?kB8SaVNAi?Et@F9*wN-p`Kj^d{Hp3bHH9 z$aMH7pS5n*tqCJ6UG4T*;%XjpU1ahiVQrMlkxbN?llr&v#2HX zN2N4%E1O~@>uS$)G&Zhv@7-_lyEkGX>idq&iWYQ%{kom!>vdG|M7RCUKDn~A-57e6SoG4MMI+3 z#B_rL_|=gC>p*qWs#>sv=g3Wgc7X7)d;hEq1%m+}P*dq&+jkf&<}J_*eU^#1bG16m zB7*d8@-`v($LgEnU^aBAT5wyGN7Rl*H|a-PjFcbe%?1BnjN26A_!7v-k2Njz1U-z`rflwq0N*e@-$vj5}(vrj5 zYO7yhc0i)HdcmU=-CW=RcLF2NM!dh0OF<{Ls4n84GS9J4Yh|CbKRpaXMOeOkp-nIq z0GQ$i$g5*awT(6r2W5Wx51#rT{CuE|J{kig8jKTAfJ^*t3?CVIHg=JVQbgkVB9to^ z<*&>v6cdg^3rwIDd@Q$9G$*~wbTcl#EY6P|*HEE!S~B>aPFPhG{kVY6aD4a@psf_B zRF(XM1rshw*xMT^mlI=OymF$81(IW&)$ZM45?2k;cpO+jMQg$Od{zGWQ7~TC=}NFc z>YeOn+4AQ}uB4d6BP6IPk7?p}2GC$agGAeax@o-`X3M{yAL8=7NuPL+dI zF9|7}8*-6DnU58WTy}SkVcz{*&Q!x;f~NKLYBk=Us3$sHc%(Z<+YvlfUtQ-n3^6>Q zal$##lpjmdJ79(5aP|n7^Tf%@c0#JNqVZe18xRdl0>~5fi(MioQTfduV(@_*Unqjd zshQhTk!&7W`4-V|U~7?TJP5%ywA3!+VVp{eO8o`V)2VTZ+f*SFuoXa7>dUH;;ZwTQ zxZwXPU`s)Bz*(bpXkMTB#;@x$rJrQ(ZebxZ;An4jj?|#3sjNJ!CM&_LIayC4f=~Pz zfau^P&3ihka1S_$zO!`6Lf|J!l9g1Gkv(xhHh=gwe~BSYrZXa!Jd21|tI>GKMqI}U zmJQ{pbXCUQmGApoJ+R)G%s%wp>z)6odWir3lTw(T;krx=bQ4=TT5R-ZG*`wdH+VB` z^6L^j63*_%7rG^u#=0502OQWq!W$5{7-k6kE=jWRzp;F~HQ5OHNJ)K*!~O<@e41DC zqW%HPT)j($D_IGnGTAU7i?qhGIc%n)9NSa8wZ{WAoAtO;0qt6gy!?+6Y^xvniJ%L??X4_6;A5ZShtwL5^45B zs=z&g5g+p8^UA>%E!=2l?~7o_LIRR|{X8mx&v8O1^{&SzyN=!#>Xx`KAxOxsk2Y{3 z)1>^rL-bSm91Q?zm+2AQcm>tALhXtwz*bm%zJ15sSHGs0=yA^U^2( z#HT*5ORwiM)3`$MK?n^LhW`5(1uBe`tDK~%`a_L2SL;el+{B|6RcC!iA{Ml?onjc{#k_rHi{VTMCwT zipMBqsLr&n?7{PXFU5UAdbGteoi&^VCfHTRb8g+6~THLS~oBdB1AR)@USY5`}X*G<2IbP zXV7jc$lc)RcMEL`chKSstb92m{7Irk)g+Ru&KDq#^`M)vtrNRfhnA(<=50f^q~Jo2 zUgKN;VH|9GGmYwcmLjz3-tNu8so!rYA#PFrRVAk_!nD$LHz!MqQb<9k>(EV-`z+~jduZ1Vt2u|4_t)~V*y48YzZCXCilA+(AIEwOVu|AR5sQ(aqwo2Rn%*NRyw z#=s+Uw$zA9xQcwgIts!>RxYmCt!*<>+nBFFpR|#^^g7B|hRzKg&MIF*`FidYGv#6b z7wR~;75zBfh-OcI%1j2i6lKt37Dig`+xR_~-&jkQ{ON zMDqSMzh+z0vr`Rs{+606C}O6y|)+ftv%^3izkL6zU-g?_JQ&)tc zM3H+%Sl%!8AtQl>ZFkM^6qSF@=jrL5CMml=q0`G2yE?^KcU9d@-w&vJAwSg}zq$G+ zxG$2kppfGodnD{%OQ4B}uar>!o>mk$(TqFPeR+5NSO0 z`JuD0Kk)8%U|zy)eTp!u#hz5~N>*w+dW7w)9+kfIu~l1G{LDB^*c@7!u}<8Uq>@uAhnr`Eu-{b zD;sr6N$z&SHLFl;WQ@PJ;TLP4Oz1|x;>4}ZlN@8gyi z90rwIWa3|1{hEb_may5O@yO81oyKz_`!Sd{Ud0Hh$PGtNSKsb4l5u^bKJNt#f!)ph zYSZ3hIssMzDk2Hd$r~aMxmP(Xs5(msR*nia>r=hC5E9;$?7(d-8kf0a7txj0-GD(K zI>ZYnb$&@$BR*5-Yd&h*%>n;SWQT)dWk)Lnhj~}lmHmZzJ!hpa%bDrzH_8iLCooY5 zZ&b+~h8AVG{9o4udVmv9CM&uwUO+nZ}3h!i+G3*JNKw_KD?pscl;@u5Mi3 z9+(YX7b@q1Cu%lJlaT(P`aOv&%!}m{^~)KxkAW7gr^WH6o`SfTq_A4&d|@%lil)Xl z&MiG}c~G>z)MXw7)lYcvkGX%h&%V>VQRN<<4QjfSIAnR{b@`g|G=n*$s#Q|LobEGv zm$c$++)L`hL#J8d?{Uu$$0gq0d`~E`B|J_4_DTfWdetR`+e`~b)v!pnZ41JTyDYJO zrLnN`X2crBPG-ysJMbiO5p!xpJ0ImpbZYOjY*s2_DCGKZ++x+>W9Zw^;HMC{?%=zO zj%FX`JIYDI)jOrMQPX3G>hJJv#yX!;i1S`w&{l#<<)y{ z-xsV=_0Vt5n!TMXJ}EtsqB=_+@Ly!P`PzdQWb4#%+tkbSj$zDiuYX(C40VNu4bw+x z={+*T^_Ft9XLrM1r>}a9yg6nwIW^S#{lpXh0FetXj4vjn$NtnHx|VXoC@#eHhP+jQ zY|03@c+`nYuBR+iW&Y2ONd^4uM64V>sT8>dQJdj@WO9bj;Wl(m|0%vzLVLe1c9%0n z<+POqBcauE<)3BD6kh18jUASJEd(XXGCRdA-URYa1<6z&pcvBz0P%V$lNXGPy z)=3fAqQKvaAg{PB+06}eMKGR3O*GpiR=IymFpGq9e`XSwI!&knE=w);XVhi88gff_ zw4XHadx)l{;BZex-rP56EOLEAacA?fK95xXXe;3re5&oF5nA=?39&A(9z~jGB9vv4 zxyV(5WkdiD0@b>p;bOLEXxcGB)=NZUWt>Hqqipo$XPMZ=xm&8PEe^k_+`G%`#&g(m zoj~CRFh-3q1ntEaRnFJ-#RjGCX5L^2aD~qmb|)>wl)+HWBNd2G)8(@aXbm~1rDv#y z9#2|le95gEiSTZ}Hk3BBi=)i)*D73 zGuZ3z8DLbH_LA4VM+WqH`+x5T$4*q~-!TNVd;Nm2{_%>O9*ShFOj;(=B49i}wHVm@4ZRdjSKMNv#Y2kI_hRN(?W5a(`Sk5GE+u_+R<_*SkpMJ>d+ZRZ0-md>rj=umZQ`;32{_P5DZ?s$U3r7=({HWBmM34$M5BYLkSu| z0C2xAau>mt|NOze1xjc_PP$T+cs+daJ*jIT$c&i4JD9Q6HNWM+s$c%bA z&(Y0&@v)aW&i(p+j7PMSpc54>DNpQN%hME|?z+N^MhTwKco0V7Yo+Tx zy(!JsDkoF6cMUQ&o<&61?RlGZm76G_(}(gQwajzHw&c4~_0=oe8{HNEgo z3i~NL$Qh*?!FN0t!nU)kn`1p0{djGR0`fW@3{JM(Gbc+={yqKRrH z9QHeM$1#gvnpMBw%XrNr>I%mlb6D;?o`w1lbKAr}Ntekn1_165kC+$*0imZ=FM*v; z(D*!S--{E@>;c|$I1P`O0!`&DMXgHZcK7tP>{aSV!Mm_+RU$B~kGxxV+si8VDscJss8#Lwv1FPTUM8YZf zBD3bT-=WV1sXId?e`NhYQ~|-JGZj3vz4-^B04OY+h;W&*#}N%}E$O4hp^~4>x&wK- zyC@;4KzsX-&L_hKw{`VFpi`B18@kjqwNe>bV;cbyRP$pSN? zFb`*3V$y{GpiX8+!5ib(?4TW%;({+c8_?89JK~09*^`T@7SA zo5h*NzP)(`6i*}`Rfw9Z^Y)*v=LQ~$pS!2P^*5;oeu#3uyZk_{y4||2EJaGYOP{7 z)}dMzVuurV7UhnS-PcUcHX0G9mFx1e^BK2T@74HyALe&`;g-s#fxi z?KTB*DdDw#%D+-Q@w7a+G;B;#guL^>gZDc;JYWBsaRHp0H+l&jD|Mf|V>c85nF~V? zRXannbayK*J4dBn_!Ye%?p8q{tS5!&jSw5INEg=V*{)WyaQ^V(d)`E+RHIBj*}aT@a(YHXq%1GsqJDpcoOqq0Xj@-a4L>EzMSo+TP_Alf(1XvLRdO8n=*u zIb;Sp**A8qZR+oC=_)RDjxb^T8_V;f=okBD*hH~K|Fvz@(}o;~uF|hwHZ^i%=cfX8wm(e&vr%>=VS(IM{MKKQXM^X0U~#% z`m*C|<~o;oajo81)+#%bg+R14sc+8KrORy$q{fCxq+)JvTZABwKJc!X3)KL593<)><)L0%^_{B4t|s6x|#476zPWPXJclKtto?AjJU9q z6@<^{5JXR~Ef6johvm8xx`vJ)bsO3`nM|A2IAqXoBkr8c0GOP$cZ?x-gcA>wb~`iF z!^lCkv7;-(fwr=)1p6XMlfUuEE(}+xY39{C6_Xp1YkGk|xw@(z`&`^(;Ng!v6I|Y4 zReX^d%5-G(ne?imcBUou{K}?FBjK3;54tyRSBYutkP{Sx8F~3qW#MW_JPqtg_7wI! zN2u%wovLeu(dPDau|E)nifGnYgSW=Q_>&1m5lq((Ma_1f*DhXrKmJ{CCR2#Ury2FCAu#HC7dOTy70a}sh5~)esZ}#thr6^o{~lrmeiGH zs3>Q)?Ba?X#_bg-d3f;ja);NSI`cHYrZaNLIx^v_D>&HQ_A3MVfA zLklJ9prxO49w$s$7$DddbDYUX_F{h`sldw<7T#Q6+ioY;2z%1>V6IzYL0Sd0K-pIH z!Q$nQ}$ z&}Y*7<5Bc}&1b1wbpH}R-_7MZ!;~k%9O-(2f_8p5*4z(XLQ|~NGwSLp=$MvmZ;epL&j?4i76#ZGyQ~IL( zU?~~=`_oUpB$s>Zc>HwSJNKyEF&H|l4XVtM4&6|)M=6D9TjRFQ%twiE(K>|!5+K`r z1(igMK~1(K|ED7XfZAn}@3RuCfR=x@l7XtOs^@~@hv4$?=6u%S`m(28c1(a71Aky9 zg(A+1IKMiTkb1S4&@`S|gIq57@hAUipR7;v#yaZUf?k+9x)-GWVvJ!jL2!d6eZ!#l zGw*vGK@za&m0nfxjJDlycTT2H1?qV@`7SUXyh;s)0f0lKCR?MA+in({xF@TOed25^ zH$FU60ZFzoaG)Gfy>OW+9ku^kDMKnGRk^N@d@{;!Le$lBnSYEacNC<#g^MH zWtwh0PAD7MTC_SZ^|4P6rRyFcc}cLUXpR0BnGI#o8PX?LuCJ?q!Atbw>N`P>pOxM< zh%V^bhRM6AL-p?$JuR>1%;V*>+t#v>%EWc~B#Lw$>#_KA4Kdg8t!dO+C`+^h!2bfG Cif#P> literal 0 HcmV?d00001 diff --git a/apps/web/app/assets/auth/gradient-logo.webp b/apps/web/app/assets/auth/gradient-logo.webp new file mode 100644 index 0000000000000000000000000000000000000000..674434ceef7fd566ceaeaee04cdb93e4bc0985d1 GIT binary patch literal 18208 zcmV)OK(@b9Nk&E(M*sjpD?~lKJT|NJ||NXdY z%m3R?U;c~y`gYUfAwB%p?U!}ydVAonAK%u_zjea%-@pCmsO$at-~1nKrDtna9uLI< zBdweNVk`gkpJeg%gSwIvvS@4m2f=+mX**2Y$Wo-!K0e{t=%~ls&Q?Ry$twoC~@PCzjO?nZMk7>xP5; zH&|TmTPMVwp+>DWB0nBHpDu$IEA8+TIMW!8F()?B5P2zcHxs&_`9rq* z*!%Fr|If!Ky!egI``8x*5RmBHXO(Y*l!M8TjK|r|dsexQy%S44*?qo?zoId`tCs|w zGOQpt?c$Gib`1jn08Ta#e~LQm;@8)`Qzgb{yZB*U@Rs-`1A(5DrZ}3;xwz%YD^j)- zE+H`3ITwHI;vEmD&v=J_AFA5j{UiF37)AngXI%V$$Xs8kWaj5}UC}ug|F?&CmXZcO z(?y&qWY^0O6th4K)Sciv5;m&yZKBvAlo_=EJPALDy6f1QGGAjgjLRHgo9+~ z+TpgVcaWh^bqDBpf9An2UfX`odAj*=Ip;~8O$6r>=G?MW85L%fHD z0MTc6H-qDt+mh;`J252f3BngA+9g8zJIVDVrlJ8nCG#mp|~7hIER>9nT?&fKPmVY|ud&CLKQ_w}ZS71bt>ZsP@}9YBLB-Wqg=UhcE6C zZ`Ss*d-K588`1G2@_)y9=Q8$BYtilxDDp(H5fB+dDo_#T;J5DXp6A7XMo1i8c1ApW zhue|feM>$bpVWd}OZajHacq1Nz#B1`7CH8z-X-G%za68`nqtJaui)aY9o@Dzr0D?~< zRK-03c(mroJA!}^Bcd@-8Xya5H{S#vmj8CR_jmw;)Tgtcf68sejhFv|_5f)eu0%bi zHFpa^J(fKE{H$9C6w=G#bzJ`2(cTk_c|M!Pqdm8T`8u@&lC48L9mL{{N3`Z{#N;3- zW)c*GNNGikJWt2uzn#Q;KYl)yg*AOL5sAa*C4xg384pc#n0m8p|iLD2K0E9z5yr@KV1t-~w=m+q*S)3KHpB_$;L%LoCHaaQb`f zp8s|V?+llGpUA?^Hs8#VnuSkM29@Ig)f=>TYwokSWeE9psw5V);4;L%`ETd)t`^{v zSh&p6hNe1DoDP_xYMXL?f_dN8+_TN1jt@d5ih~)VfyyTa$nCZ9QH$HTyyvgaWwF^c zslyj0wINY31`=Q;gt%|Jw&os~#Q?tuq3eAtH>C01FgOI*E&uI&-Zw=K=g7C~C-Nz| zi>%Wj{Br_>+ogV(D?lQsZL!xb-fLseQGDgihK;MjSjxQKuoz^w{I@fD&m0P*+x6{V z&1wsUF)6pnf&;<50zyT@fOMx3xwjS<3Uw3}z7mr4RjQrx-%jT}7_n^ed2IT`&PZH3 z;^4s>R7U1dLGf|f_Lc~&O@>h z8Q>rSk=j$key?5bZ5}WikHN#;4DvcpQV!=>do6CK^#&@75R+GKMa`%ly1<$~8 zKj0IM$Q~u0LQ$UJ00sj=53G*_6p+MzHUI65-p4xht{0)tHN!#JW}&w%0KI~b;Q&vW zV~-KJQ*aB`dyJJ7ex+~|k93Xvcl0vlN6-Xs6*wBGCVZu9%D7x>m%TIPclJ|B(;FodMT79<13 zh#K^4JR-Nt zMu`RhN`Xw=?&Nvl`+XA(NQXPzF(@FHRuhDc0aY1I6&zuL5$I@fTf=(*1Ic?`2vuUg zV-A)8284;J(c-p3H(~2Oc`Sm6)YymZSLA0DDs4#bWSB$R-_C?ntyN{jv& z@B~p?+}845dM>@mMTm6i!}r&)%hZlSgT5Urj^Ctes>U=;TVF`cQ#2o{6##l25Q z8!yCx)Ip~XJeU{RcH57TM|Aeq-EBqhY6{-o-OSGy!B9+!2$F7N>0L<_;^A^Mo&;Om zGpSK0x{O*N1FDJwvO3x^Cu7Kz3qa2ixvl8EC6(>)?l$1o#kSj_LL(!b>~w&XE^>~< ziR;_zipYJtaZBApFhD0Ar8&US8Kg#@=4T^rtO`=y|6J8O0XW$^Ta;s~J0GY7*9hkf zfTLh3y-Xg2Px83k<$6=HX1_WeB-jW6rRT|6XHq02oC@xA*UO(PdUuNE{e3O+`67L> zUb~$DDH#CEc;r+MBng;APrN4#v~Dm=m-wr)15l0}0ddCA0CE{{K0p};z3@4KBX#f3 z*KwCWSM(kUgUk{Bep3%eit%>7-?+t!);bwCJGopngKa3myx}>#-_B^Cg?|~p5>Jqo z?L0U%ctS46HWjHPwc&U;So3bRE!Oj18H40KEuv-I2~Z~{aRzh_C_8-Y*M}h*SpwVp zK)FK#avUW=m%(@{U_`>qDiq!O^L-#+EazREG6D6L?nW+)+)y)&gcV1J64Y@VP|&yAUT|uwSp1ockclFcfUw_#c^I;gjRMG63DB=@aynN4^v! zq0Alt#Q}qi36Pz>-~(|T4}gW+$uHztB}XCx3=%|qV*`9l5;%a%00L!Y>XY`$`Iqu8 z7FWE#orRl2WAOmg8Rr4Jsk9%9GDro0a|A5X0J)(No)@20jIvH)Nt;p%6k80s*l+$s zRY;$kmVY7d8%b6Wk(l?gc=Y4j<@Kfrt`GGhlu6G50J@(8q@c+C2z0wpM!?`CiCa{a$Y^}hLVESMPFg9F93(_7T*sKPN zATJI)Rmb-NCJLlL6*?*i38lE*b&`Jx@AUyfmEO}150RJ$-xJ#-iC~bZMAF3*Fl2=` zcq1V*Red@Ch48*!l^Pk;2IS~?C5$fYz+)ZfF zv~|#!ViQ@7N!Sm%^iVR6GAU>Q1FAn9Bo_sbOa#6G6c8k6OvD*OP?4_l{HOPBfI(6E zjNaeGTZpCa_1vpK0<8izKpV6U2^?^GrjNLZLiNgPmzGd&WH5%ICK;JdKyA=SA^?h- z-Ob6p8>5&Qpn+QNVTbzaV&SHPR`VTB>>UY(Sf*|Od;jI~26jPn;)9a+BLu@@dE#aZo5Nu8GJq__16aK_B8iTf z{GP&3Fa%tJF-3pWrX;|uUR#{kyCVcJFbexG#JqpMtX$xgZwF?kAN!@p!jq_krU$?c zdi!v$e&MwzB4-!JtivKBDDjd8c;j?|Gh1X_U(bI^@8c)SMwQ;zUw{g*7#L3yELCj< z>QUh3TmTa^g~b?!4cRt(j0jMo4hU&jlT!@Q00tJAD4SPzIHz}x4n*|t2DbP@as{LV zg%zGb&l~LMC>H?e={EJFjmmNQ|*?xB0X?vwv)-XTL{1kM2o{YByH zUX7ASuBZ#80}Y~Z_7I5~G>pJVlGUCgBG0rH@npi-5++#+0He1$30G<<|YWnJ;7d<1fayxx#1 zs$*sCxdXsIN-~wXaHyq@Ava~SATgCU_w1A*9ZYVR$6#ul;IRI29PQC zH=uA}3eY(~Y-07E?pggCHvyhfZd(Y4L4k1eaUI}owfo{E-kDtv5WmZO0?`8*S6f7G zaHcdnZ|VRfl-6TX#4uo0wu7*#_I)@DfcTEFWnv}IZQ*dvfUVxQI$&|Ucffb=xKlIIW;Xx5ne1#9sUFK;w`)xU~ur2Y3j{d@i~Rt3&dC zzaQzHh?$wMN48E|z5l;87VJRGP$i}rftcXQYZ4^*lAuk7B3enCH#=q#^pGv0dC0hJ z$zQcK16hacaJ=^<3^wL-$PVkts`n*!;G`)C)g)F|ve7xo1W!z7Pz6beglx7sZlQpe zK$%KTwE+c+kXLY?b=cxa@0C~vv(2twU$~MNfY|#Qi((=S5(L@|2tZ4UI=)_VG6^sp zqp<>qUaXxy4ow-6v*g{jR%3~EbKv4w?+-$9+8GO21l8bfp@#!egR_)|vxox0Q$V^! z#wp~gEGoS^)b8bvd&yF|%R%vY^6I!=hc1ru9wghAxD0{09-8Ess6G9HO$bYysnIQ8 z8w19k9CLmC-gYL;S_7O@7MA_;T3#EpBI*lua^3|E8(xhbZKT9s=&EA(S`{u+=#h>QCGe*prW*EUWjePO#Y9 zduyG+0a1dyVoJuo`;KkB1Hl6+8?;II?-ZZ?v8b%5{$0?1^!aJu~ac_$YkC!7#dQXwY{ zhyX`{+Pt4?0rnW6Sc~K;A_56Cu}?#x3l9Y?$xDp9-Zv*4kw*zXvKt^wbUk7Im%Z2S z8A1X%FhQ0FNPLxZjFi~q-FG0=Iz#-TU>V`S zXJa9Cz=dJhob;@Mwm<>(xO(?G>kc)4TvGj)0R>tG6EsreAt4H=!hDK_o@pW-0)!Ct z{QY2KsEsoigiN&u7|dAY486|u#l1^lO#{0GqGz4;*YE$l<~_V5kuml0bIj2!25K-m zGtpP?Cs=qah-v0L8WK$eJ-YIwCdN;-LZnI8ljvr|J{-45BVwwAAnZ&e#2B@_iVrH)emWqr555eLUoAdvkdVgegyxnxr zH0U>>^Cg;J2dLhU`|XbKdPoNVt+2rWxK%v`5}$y4fR!L#3oHem$Yk@r)dIhV-XG0H zC<;gNOG#BYC8z`rROca%=KZ+k@co>@LDxqUU!x+D+JGV`!%NWtPO;Sj%gLQ|k~Qkf zuQTt8Ryqi^xN?*S7=Pvb*+Fm!Et5NA)){3LPUfR5IqW1 z^?t-Y5$K`u2n7|9I7(!OVq>j*S~6x;=201qtp{lBeZ@LDd?m4FtTj;JwSf5}JO^P$B=>(rN9c#h!Y zJ!+x+@MNrW1suNL0e3iwoDm~z-Op*776B1qHC_M+OqF!o z11wZm55D!VT3W5H#k++c5;$JaIfWz13n&XT!W$#nt=|9L{U(Dmk*a{<>*_vy15g>C z17VopR-gr~Zmvj?zK|>;$4q6fkF@`U`E38S(E{QKLiv2G#=vk{eX>SR`37p{jUe5 z!Piy%z}+#vzmNcz|d zQ~q|;XIPjOb3nG-Pgr5f832;72CwpJ2j~G7tKVN!y;NO`eSPhf9F22 zr8_8XTYw@Y8BhVN-v8M9{h#3H%n1VuyCpSH>N9|f8G@pt5RMkBZ|J6bU#qU@ef&%Z zU;?Q6v||93n;DQo6-t5i&jD{3Hgb^=zck5Dq!mgAO5CprsTTqro&5c7iY>pw^UJN4y1;u{6oz2Lu2mp2T>KTOwlOQ;;Ox%=lvUM{hP5 z(PH&0O-z4)0g$Gj3RVV@OJboRXfp$hx4k!6G-YjpAeuXsD)3{Dss>=m*4z9n=zRCS zSp5Xvy$x(5Fj5K?a>_Bd|IS)QBFW^d0p8yK!J``Wz)|G#2jGkqBee`qvmUGw5l$w0 z)@uJDofYp^i~Wc2PHn)W2YB#yaZd?bxdMuU1cWvaWL5LN^LP9KH^zvS<1i6&5rJ`& zAGI}KUohM8uv&e&_anwJ7OWq6K5z&19A*TQUiEv(2M|z9pEW7k;EeIhzIPPBfN!cg zOfmpV&pO~z98?J<;!6q<_;U3Z9(E{T!TJF2bfkj^Gs1K0jDbe2G@=a(pbMZgIvR5^ z<{!In1bJFI*zcjPa@z(aks$R8U%&$*b4sh#pCF@pU#@;n@6kgVQ0kyq(DVsr+Y$tH zbubnJtm^&akdGvkiZTl^^mqaQqEJDr3t z&Zd>u4%8H1VEfroGS@i?j6xX!A^}nb#C_*#$?7S2{HhH-nM+`0H-*;mdX!~1-#`v~ zU$L$*c-%E)kjxBR8n#scUY}M0PQj(*sNVnG|4&@vSaK9#v3Z0CfViwQxd0UDl_bLl zl@{DwK~(d;UR}~VH={EQMvOS?7;XeY!1Q6FdUfXvCcv`~rLTzVk;CeD+jcnsO+TmFcYyP)Nj1 zCeR7C;0DBX@5^n{J38Q&sI{yB5r%`j{3&DFb>QlK*YYe0KRr4uB>NmbfSc+$3AUP)7`svoR788(TmT3Stn2#;4C+FQ9`-mb4^@JHkV516A{jsKBLe zYSlswaytuN-J0jkDgBMnjr}Sn*~@kVjgnPrb{RN{_AR5%A~A4J@eh=es#8h~JohhV z4N|RHVpA(udLQ=ek@J<~mXaDBfk&wzF)++e^S*ca)f>8z3 zdb=nUH17*u0PppiM6rL|bnINh3{V58{2(>sWA5(#h}hJ8Kq5P0Z7PRi_}sIWI~n& z3lui*i(VbE6@BO}muS+arvax^0Rh-Vmru@s%c=Ih8T3jmKoA*HCNAPo4%4}kiBl0l zfzgUJd-7Pb(tGRA;-iWH3x>9>0V^oh{Lm9TRPXB*c&84`zD_r&9X|FPpAsWd*{>n&{|+vKA37 zAt?@NZ~&&40lPYofN0fks}Secng!mmA%y@(FfR4+E0X~TOg>B`gxI-+4xC)#IPy!5 z22u*dNL}y)l*=R1K_k}PRPXD(|5FBW%k2o+pw>)B0xUuZ^h7M!4x~p0bBykN_gx^6 z=BH4MSLjrp+c%2&hbqD5@P>el3l?N%?@JcnMn;Ox#0mV0}Kx0 z(cbU>0PUm1$n({MZJ>pM5-c0)@GFPVR|0U-Mc@B14M`CB7yXpn9rTV6K#m+U_4e-e zv1hUiZ@2#ipP=17_S8gGhtWW7rE!SHwC;uOebrCNy%aV|%YkDsxCqwYYY9+0qf!ZLNL}o}-;G__1ejiRaVXv#c|C8BOTEtqs<4PDY9MaOWOCu7d zA?WIT-!}|7I}TBQk`~63I|qU?P<@q5g>zk{;Zxlm}XCp%5wO^#Rl%y zP=pnX5Fuq4LK4zz_dl(mjn$ARLsnA3I1*gNdf{sVVS+Ak%{vN#)%$vt-suDz`_;ar zB!tnVyEzwu2aJy7G=21hRo&@LZ)23YZa#QQ(AUmZVDm{bFREorbhKV8pBX57l#t@&*gU=8cEebFpI=!;OJy#j%>k6*oHeRE?Ad0-2y;#3-6gb!-L1Y`PBkNFu2Rb5x?})wj4!AZ!MRhUaXyUr+$!%I`3D z?~7ibW{o?>6dOm!1a-b;ETff5Byi=nz7ZbM!*u=Osap6Y$kZ>vyk z$qO%{(h&d_CcdZn2_g3@-uJ&cM{FFjiK2w zJ#;MM*Vhn8lK=|FI)iv=wlP3wCa|4rlK|{wp+>B>gyZ?B4WGXZG+c-8oLcqjN4Qhk z(!w8lW*3#M!I>((4M~GCNJ7VP0i=?kd*A<#BBPPV)=AibQE^y+VkUw!7G;60=^QWj zCoaKa@xJf|ESL}P&!CeI1Feh7t%9R;J^+%JXsY*J>t7&8K|w*W#8cH7oH$)cLp;FG z+cDGHS6A=f*4zayxsKXa0SZWB+Cr6(d`>_(1)Qq)UF$A6zqW1hGo4E{3I=)MD+h1` zhy#h&b+4}8mn-mY!4(#ue>*LeUB!TQIZ)%&jX1Cb+{oPR!#fM5hoG0+ao z4#wSB9d4^%R{NB^$V-Op((fz2|HJ;}y&8V`TYCs_fDx~72^6nao960$*IoYf0rN{O zRQDkbfs|hG0hkbo3S#&6>x%C%`}NiP$CA77$ZQ;?J8GQ*t^`u6LNNZ434*iYoaSKfbjTamgGfm8pDGDG0d4ka~cU$jf4;51>{O{FvN$(kZYc4ixgJ=zGr-Fe# zB@AHK$&taS0`FQsJrG$Cpbz16ydrlXJBag4huztNvnBa=%}>esb}8@cVpSSU`!$s4 zmHc)|ra@!#o~)(gL_yZQ@9OHGU{$1uXyu4OJI>XpPV%wmWyKFYeOtZ%yy7M@4^KO- z``)|2atfnNFlu%|pO6JbknCJHKPeeE<_QilP0=toXk6LGnrH|K2+me%7W_K;ipNj& z{>O5=lolvWl&6;0kM+iteShT%N(0t?>wBi~h(OU&?)b51FbT~xa>~;7`+qBLTubx5 z+KaeLk*{r=68cHWpu{l5pd^VCUGa&E9e*44?){ja>3KW2)%BSd-il@0AE+V+B#M`(@z8LMZKfR=uk=`W>C;kgzkM`S^q>LmCzn%@QeXiIc_s) z>gPpda`?g-+v{34qvOO(So#3@wpNjMHxLShopFZVN+Qx=*u^-&U1+-Z{r_i3j8?%f z-+B9P*0!L8E_yC3Y^LGP# zFy(UC;(hnJ5{IFi#O&*!RXySOv8s^!>`2h_lW#CD3S!)vcCv*TpWd6VJVQ*$}=jccI89 zAr7F{)Y?8xP6dSC>ExHJy7!&yx5(x>G8rK-QU@#kHZ~>ggmm3rO?`I&dg;_RAlh5k_u(@Xgx)U2e(Vfk@tB${yT+{m ztPp&x`k|+q!nIDZ7w*8Ir(%R?`c|q;v|p!fw__?H(E;`KpNC*5{hlV{6)%8_IiBgt zNerrTR9K4D%W@Yoy{h-?qVNAeH^n5g$zznl#lrxMwqIrL-go!)8+oCX$V78ck2e`m z5ICK)kGK;tF*Z_Uysfp19wexGUnu{jc^CIvd^?8QoWT%iG6}wQvz5A>KA7l`|Bn{| ze59jr2=yRCJjj&@U?yD%_yR=tbX})>AW1;={@a4@|CAs4y5pa^+_0xzt}vqUHuUcO zs1E@xN)qJlJYWr8bkJ-@s|TPD#!+A@X%Otb*q>GqnXKOb`MS&| zwb7LBGAE-FcLl1 z>{7i~2`XN=qoRE)reXq!NOcp4h5ra;KRG+mGX;teVrgJuFwHGVV!iY;wC`V6`#zi$ zW!BKZzn3*{X8C0z5(Tk&Xc;ePKSZ{P4b9L{BIQtD#$+kvNYRd{WyrB7LN)duy zNh&DYJ$)?o<6gz7tM?yY*Qu)Ce3+E+t0RS+LL|c(aZ-Q+<=f=j>X3cl04Vxk+&o(3 zE^L5GHwD5%2^ogxXwUY2m78r5N!mtHy??B+8F_~m1p{l5Ro+uT44)xT;p~jky&q)l zW~tSpIspa7iA)We%hgq%{ke*4^`%(4v2cSPVB+F7mB1RZP6|NvscWRWAV9xi;LO<@c9`Dur_eI}fo}ZN* zsnKY(KcBN|B*d@SUk>{%sfFUC5ppJ~dKo||(G~bffT%#S#P4hMR{x?Tt@Hab@@@bG z!vM)cWYldTR<~NC2#7>=*fQhI4*5V*k}zO7gUR`rEsMa_4_hWa|L?(PD zmS!l``}fn=*n2s_YVvGXob?8(K0rbNtV=KKN2>ch@^Sj%1V&~sf(EvlP%8+HjZqV^ zzXfnyC@Kb5AgleyS(C^wRA^31>B(y&orq<8Kkef3lJ}xS z8%XoQ$m$&yA-?b!LX0yQ{1Z~-14M8*YzzV=8R&4Hn;ST;GL^U=N*E`-bcH=&a# zibkC{|K(Nhef%1V@v4+up<~VNyFdcjRwr3VQ028n;tY@iXfmKIIMIiY8@rQP#M6$* zH6x0wcvcZn^M2C&mmR!&`tXw!1eJ{2JtdUjwMUspwbmoNvd(ZfHCu`74DDDkr(~0^ z7vf6|xR86p2n%%lN&4P{#(BTJ- zv#^0Su>;49sM$@rQp7yr;u=pjkPQ_278M8|;Dq@v`*;tGK7oD4Ssa=Z-4llB-p^$6 zqo~l-D_(L11jjXSt0yBf06}5(5jo+_nmi=}5Dg9AzkNN~)%$pFM@>QnXJJcaN@^KP zNmK2X%?a-YEDWMk?tajqkKmMZmLVyJt&t>T;@p2Z+tt&jI|)y6!(V@&>npX(j^4T9 zz1su?I2%x+YGfB!OP%j-$chF{CX{IQh>qE-bpZkMAkf)%xJDX5usQ%ml$!VZnHHCQ zy(_?kG!p~?A1NH!CB&$+E&imCdW>{50ZCRMN&)0}l%JFCaDHiHJlWz3ZrB+I2B-oS z4ox=@lsN zNj@ieY4Gd$aA&$Bhz(JtqM?{g6WX?C+2L}8_lMt~>S^G02sv=7W$%8o(=I4@lR~pe zL?Hyqxk%fL#&tptW{<5#GJ@p0(la-4S~ zGJ?cII0CLN<2+jVyiUF-87HEl%>WaZ5=SrHGq5pWO=5Ajv&xY*YF3RnHuS8Dd+6eF ztanq8AOfB?2!lL>q;cWwiw}_nbrp0T-eeBvIkB15D`BZ&C|!VZ_-mJ|Jbs2s0L3K} zhk1<*fb5<~)uD^a(cT{bJDk1^c9UC?k|~e|b>gqo$inDgnj*=pG9KIGmMG8^TPMl( z0rp{wYv!S>j*%7j^wO!1y&t%^9Pd4;fufxrQVS1003<}aaPpVknSAC?NJOHQRLO}l z8nOSZPF!!^9nJJU0e?L{=zdUg;6F6hKA3z#17^JO>Bj#P)k?> zMe<2*V1#R`N3Gici08;1u3P9)e=Tt2^a(0(NQ8nD=a9wa9NvjZ4Xe+1kZerV`?Ho= zjGyk(voo}Vug!6xQW80Cus7xju8vq-S;1>(h>burGzugjY0w8OE@$x$T=kNVW6}o> z#(>*dt+NAL!svQ1gxnetBIR&Q9CQdqLj*|sFRmWEusZ~#-llLM1h4NWwcbL_G@Tb_jTTWAI$(#t0neM$*b)sWeXCtZC-Uxu0|k$QUD^$_53BVS;Vz9y_>v=S2{fu4tyuT~ovI$dQH5C_mmM!S zdFdjhjd~=BQ2?X{o>-H1U0hD*y*N;UPmhJTl(pi5bt#pE2#}_LsOktrX|eHO2LjD0 zjEx>(8hRJY`7dYn z4wxI~D|VeIYUPFfkdme$3$KSc(4^h1| zk*nt#pA_s8N*hHIb2@(u-@MQBUrz2l?nyJdu^-p^JA{#!-VN{8iJ~Gl+F%fJc3R*Y zFRnxSJ^*TC<1AK24B#V6Ibex3&VM<-_nInEnI7vM+>LwCup6aDMDWv{gQ9jahytj^ zGw4h(8<8v9C?0}Y4kV%?2)ZW&gyac3Ak_BOiK`nBMu;r@?RG4{_+oQU`nW2{>v)f3B!jMfu01uc_)ia z5B0KHlm;~E98@B4p#-8nYRC*6&$}7y5^Q6Bu?68+4jw=Q+LAnghxsoHdGCmcztLH} zmjy_iv^lB{Gr=(D=+MT|P~rl2eSnY4=#HM(k8>r)sKddvZ6|a?X$+%@8lPX3$p%z6 zSX>tKj=bG_)_Zw4v%{j=bR-4h*eC;MIdcFJLyO@EpQ6IzilE8enzsQ}eh!@l0#&BP zsRNIa0BSBSOL>oKP7ML;O+6e7_Dl0)R1P>i>=VtA0ba=f`J6l8V{vU!3K=rUw=*M* zI~pNXOEey3aaqqhBQVKU?`Q{>Bq$Uul8ZWLLuHuTHV0q=>cLu~TwH?*h=9>AVfa31 z21Cy@-1~xQ*x8gM&#g7H^K zu_;Ip&`WY^;AgnNnEt6#!stjs@Ahz)6}=NlFh{+w1!@A7t)T*>VwK1c5^*OiVo-U6 z0QktWY!Ho}hN9CY9+EJU8W@oIOcDh^0?X~Tq<2mdM9+F}3zF8lL%o^wMBZpslHQ9_ z0gHq|rdz!Go#P`S4v1=m$$=MGr3{f^N=w@*28f7P&UycGy{+k8$zWi%%UfIgjUrLu z3-7mt)tApZ6hVm=a0a5m|L@ATdtya^rU6KZ08dqvV!%ln0=82EnEg+2JQpi@9|d}Y zg(D(vXE;+z4)Ro2B!k%QgBv5HV!wOFCmDCYn0Pan+bqW zu-@V4DXit)_zKbU>UX#R!68@Sx7-t$MHWMK2$t<6$r88)Q4r!;ups{61dsq$ww9(r zV8H2mei<19iDV$e9ejJ!a~GyyfSh!1152J@eUgF z_n}Jjs5o*Mcz_aD!zWRr!7|UD55APg2yU1;02;&ng}+SV+};Nwx2xavVlxMlaY{lp zkquhtm=4tUi+(`>wF~_#Br)xaV_`A+*$@#1Q|*}u=Kj*(a&&I*?U~c+T`$6*w(X?v z5?M~`i74n9Q6Nk`qHiz%;Nz@jqO_K991mbL*{Q*xp=Z6cII(x%0*ckUUbuh16smh0 z;srr$DR%tLPKIW#YR8?!jWL!4eP#B{xfn^LsI0Ksg25gx4#(cY~Dv_y(MaizdLODeg(IHfa0DA zY(z)<-FD26BcW1C1mD*7zwjQjii^K@?8Aw?*8uN+GyEol)(k#>15Z#44(duxK(}4< zt0fZViBwpsI8Po*j%5(f+O-d7^4<(VeFi&#QNcaEXxsZCe*kAH%rtAa0}dIRIh750*iY zfrYx{Ecf02mZQ^nk4uQN)hDxqunQsjxlQu{k@`iP^_~*pc1V8VKv>u&;!&b1ZWl@6 zo&*#|a6h0AC-EM<8$u9!eKvO^9s+XA?x|OgGDk+5lvYQ*{11E>1Wr=`lodEmguD>~ zYS)K5*8B8jxYg&fXj&#@2W-rCT{ zhCq$(c4+=g)`vj84Iii`sOlF)UPu1@BL{o0Qnvbx7BCuJGFm6B>GMFaWgYiKRP*B4 zrUN1gj$lZDfW064w;UbnJz~pA-*@fy$#oj{(@V}nL-I@0E^51Qnl~9#0MyQNfmXSs zcJ;A~qrBH=#dlceIIBR*bXgY(IB36l0_s21Ab3~ry9WNM9<9`76*7IsC4kG&uuYyNx*0KK^vrswbhx< zvXVu^m10eyBeWnLB=-kU zqJe>}&a&9mdteaB!|L-}JZK_v63WrrA+Rr5C)t7W39iSJc_gD!v~aKUU+Ps~Lb>o$F6J@9G_y1ULI6cQEVee$opK zzdR{*nwPtgx6Fk+deAu5GdptK&-SyScJn?s#p${EEEn@LhHMKE)H$xR?SO-zItCV; z^D9`kJ38B9FYjT8c%nYXyQ#*-CwcD2pw76EZ?{Wbg{&qlw=@0(x*fbD7@T$gY4u5d zaUT_Z@dmu`^H~4z{HMDc&#efa9ufgiwr!x?&iS*U_VAuqkpG9*Cwez9AuONg<I0;gep#ABFYF@Y{`! z?TZOG`&k7l!mI7>mrtL6?wyo)pT2$h@_8?MNBrn+N3%ZG`B~X93wb+m;68L;A^*^O z+|+Hz|NWUSpe2LTNfO1sPrpN7iUve6Cky4DJtm?&|NY4?>M|Nb0KY#4tTG}oldzwY zD9*Uwm&xC}M=5>yiT=}H*f3aY2FJC(=d#*}&~5$b@!vmI%3r*TuCV`fzr5Ev_xmvY zH@%s<)QG5_Ug4|hAJ2zaa#8!h|NLjT8ygj3`12`X0oMj7`N73Qc?~GIZT~E|=%?C; z-sC@Py>?M~!C;?7thz7>Fe`to+6VQUer(6fe~N`)L#LC=vibdf^@v?>*JTe~zXIN3 zzFYqP7z^b|-^OF%{6FYu(c1ZM+wU}R`}XC($giJ%{p-iS&qMgf$G62#`j_9H`5%ve ze|-G5dj4;J{rKmZ|NimoQD^xtR!}$~Lx0Q>;`CH%%$`*KWm!cT|1hj$lq&%U?mr{CcA^Vb$4XE6Dr zF-iDk5MB+_E(HwHD3(2}nQ=F&;ziwjMnM;DOK4Dv+%Jh~F+Pn|)HG}+?@E1$Mm@X< zh@IfY(=G5a4sw1ayg$GLvRkGOS;7yh6ZBq3Lb!~JoF3{~tgT+WLF zK^xXsF^$u&(Q>N!(88AR18Dkv;4(wkj;}+Bz|G}mY=w$AR4RcNoO(8j3 z*Ic6hD7B!*78$%V9@=|)D(fJlcux>+CIcx_`Kl5bBFdjKGDKp#4|jImo6Nv5wk`xE>vxffWa;*kJ0%>dP3AZZOGddi_&P2`C=Z45tf`b zc!yvHlkopb=BrN*ge6a!3G6Z|fk5+sx&~@oxyW*y*REZ)jgLYpIf_%fBoGzecRM0>udqA9SdV{d>RwQ4T}YE#U_qsH$7Q2UwT2KFl-IhR+bn1O0@+KBlGx>9;?V zI+=vV*DiEQ9vm#Hu|m#?e$@l82vBcIQ}L}5?lBXw#{-{To-pp4ZU;v@GEK0Y<>`l5 zp;Hi1(|i`STZ^3!P>|?gZI+kFw_wOY}zMf$;f8Ga&-N0JHj8^d; z&^60qtsV4we1sVryEyvg6>w0QF1L-fynwV+{kE_A1lJS~z`1eBz+cRk(4)9PV&+od z_*n@`C4ch)IfZsVJPFD)0i=DC+Tm#d|IC)q650Y=L2Ut>6xT7XC$6P9k6>g2Zv89m zrzXE(=mp$VsL{}5tQP;|=OJr)M|SAmINh4JMCV-g9A$612<`@5?^9ayiJY*6K>N4s z__MK%6;yK>-fS*M7rS!nfQfb-X_+G1p=w7k04Zv5)$etsb;YaAZ&hh1F44JH$Zm~7@k!=Y8nlPv_^y;1BB@@R{1x!h%|l@QMZ zck;8llV>QLG^nUdyiq7=Lvs{)h(+Dm*a#u#+tj-ex`uT^$2vY4Z_ z?kEK|C4~VY9dy@Y1_Ivi#D2*z?TQTa_(>QLw^++eYdpriTqa%Dkh{OTZrH)4S)Uhv=t X)wkwxCMe0?(32LQKEtmHF8lxh{LiZ7 literal 0 HcmV?d00001 diff --git a/apps/web/core/components/instance/not-ready-view.tsx b/apps/web/core/components/instance/not-ready-view.tsx index 5625a77e53f..850d0af2ebc 100644 --- a/apps/web/core/components/instance/not-ready-view.tsx +++ b/apps/web/core/components/instance/not-ready-view.tsx @@ -4,57 +4,55 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import Link from "next/link"; -import { useTheme } from "next-themes"; import { GOD_MODE_URL } from "@plane/constants"; -import { Button } from "@plane/propel/button"; -import { PlaneLockup } from "@plane/propel/icons"; // assets -import PlaneBackgroundPatternDark from "@/app/assets/auth/background-pattern-dark.svg?url"; -import PlaneBackgroundPattern from "@/app/assets/auth/background-pattern.svg?url"; -import PlaneTakeOffImage from "@/app/assets/plane-takeoff.png?url"; +import GradientLogo from "@/app/assets/auth/gradient-logo.webp?url"; +import GradientBgLogo from "@/app/assets/auth/gradient-bg-logo.webp?url"; +import DefaultLayout from "@/layouts/default-layout"; +import { PlaneLockup } from "@plane/propel/icons"; +import { Button } from "@plane/propel/button"; export function InstanceNotReady() { - const { resolvedTheme } = useTheme(); - const patternBackground = resolvedTheme === "dark" ? PlaneBackgroundPatternDark : PlaneBackgroundPattern; - return ( -
-
-
-
- - - + +
+ {/* Background decorations */} + + + {/* Main content */} +
+
+
-
- -
- Plane background pattern -
- -
-
-
-
-

Welcome aboard Plane!

- Plane Logo -

- Get started by setting up your instance and workspace +

+
+ Plane Logo +
+

Welcome to Plane

+

+ Set up your instance and create your first workspace to begin managing projects and work.

-
+ + +
-
+ ); } From e97298952249a691b3d8f51760a85af5d6bfb53a Mon Sep 17 00:00:00 2001 From: sriram veeraghanta Date: Wed, 18 Mar 2026 00:05:21 +0530 Subject: [PATCH 14/62] chore(deps): upgrade the undici and flatted versions --- package.json | 6 +++-- packages/services/package.json | 2 +- pnpm-lock.yaml | 42 +++++++++++++++------------------- 3 files changed, 24 insertions(+), 26 deletions(-) diff --git a/package.json b/package.json index c2641f65045..55188311468 100644 --- a/package.json +++ b/package.json @@ -37,7 +37,7 @@ "engines": { "node": ">=22.18.0" }, - "packageManager": "pnpm@10.30.2+sha512.36cdc707e7b7940a988c9c1ecf88d084f8514b5c3f085f53a2e244c2921d3b2545bc20dd4ebe1fc245feec463bb298aecea7a63ed1f7680b877dc6379d8d0cb4", + "packageManager": "pnpm@10.32.1+sha512.a706938f0e89ac1456b6563eab4edf1d1faf3368d1191fc5c59790e96dc918e4456ab2e67d613de1043d2e8c81f87303e6b40d4ffeca9df15ef1ad567348f2be", "pnpm": { "overrides": { "express": "catalog:", @@ -69,7 +69,9 @@ "minimatch@10": "10.2.3", "serialize-javascript": "7.0.3", "ajv@6": "6.14.0", - "ajv@8": "8.18.0" + "ajv@8": "8.18.0", + "undici@7": "7.24.0", + "flatted": "3.4.0" }, "onlyBuiltDependencies": [ "turbo" diff --git a/packages/services/package.json b/packages/services/package.json index e417a36e068..e44ff0cc030 100644 --- a/packages/services/package.json +++ b/packages/services/package.json @@ -28,7 +28,7 @@ "@plane/constants": "workspace:*", "@plane/types": "workspace:*", "axios": "catalog:", - "file-type": "^21.0.0" + "file-type": "^21.3.1" }, "devDependencies": { "@plane/typescript-config": "workspace:*", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e40e081b1f2..88c52dcea48 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -113,6 +113,8 @@ overrides: serialize-javascript: 7.0.3 ajv@6: 6.14.0 ajv@8: 8.18.0 + undici@7: 7.24.0 + flatted: 3.4.0 importers: @@ -1188,8 +1190,8 @@ importers: specifier: 'catalog:' version: 1.13.5 file-type: - specifier: ^21.0.0 - version: 21.0.0 + specifier: ^21.3.1 + version: 21.3.3 devDependencies: '@plane/typescript-config': specifier: workspace:* @@ -4126,8 +4128,8 @@ packages: '@tiptap/core': ^2.7.0 '@tiptap/pm': ^2.7.0 - '@tokenizer/inflate@0.2.7': - resolution: {integrity: sha512-MADQgmZT1eKjp06jpI2yozxaU9uVs4GzzgSL+uEq7bVcJ9V1ZXQkeGNql1fsSI0gMy1vhvNTNbUqrx+pZfJVmg==} + '@tokenizer/inflate@0.4.1': + resolution: {integrity: sha512-2mAv+8pkG6GIZiF1kNg1jAjh27IDxEPKwdGul3snfztFerfPGI1LjDezZp3i7BElXompqEtPmoPx6c2wgtWsOA==} engines: {node: '>=18'} '@tokenizer/token@0.3.0': @@ -5587,15 +5589,12 @@ packages: fecha@4.2.3: resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==} - fflate@0.8.2: - resolution: {integrity: sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==} - file-selector@2.1.2: resolution: {integrity: sha512-QgXo+mXTe8ljeqUFaX3QVHc5osSItJ/Km+xpocx0aSqWGMSCf6qYs/VnzZgS864Pjn5iceMRFigeAV7AfTlaig==} engines: {node: '>= 12'} - file-type@21.0.0: - resolution: {integrity: sha512-ek5xNX2YBYlXhiUXui3D/BXa3LdqPmoLJ7rqEx2bKJ7EAUEfmXgW0Das7Dc6Nr9MvqaOnIqiPV0mZk/r/UpNAg==} + file-type@21.3.3: + resolution: {integrity: sha512-pNwbwz8c3aZ+GvbJnIsCnDjKvgCZLHxkFWLEFxU3RMa+Ey++ZSEfisvsWQMcdys6PpxQjWUOIDi1fifXsW3YRg==} engines: {node: '>=20'} filesize@10.1.6: @@ -5647,8 +5646,8 @@ packages: resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} engines: {node: ^10.12.0 || >=12.0.0} - flatted@3.3.3: - resolution: {integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==} + flatted@3.4.0: + resolution: {integrity: sha512-kC6Bb+ooptOIvWj5B63EQWkF0FEnNjV2ZNkLMLZRDDduIiWeFF4iKnslwhiWxjAdbg4NzTNo6h0qLuvFrcx+Sw==} flow-parser@0.293.0: resolution: {integrity: sha512-8tEGAcWpCqioajiSqrJr2+JSmkEI2vO/UACFGG378RO106ez9xugVxe9EpXD3aI1Vbf+mEUGhMt0gMpveJwVGA==} @@ -8306,8 +8305,8 @@ packages: undici-types@6.20.0: resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} - undici@7.18.2: - resolution: {integrity: sha512-y+8YjDFzWdQlSE9N5nzKMT3g4a5UBX1HKowfdXh0uvAnTaqqwqB92Jt4UXBAeKekDs5IaDKyJFR4X1gYVCgXcw==} + undici@7.24.0: + resolution: {integrity: sha512-jxytwMHhsbdpBXxLAcuu0fzlQeXCNnWdDyRHpvWsUl8vd98UwYdl9YTyn8/HcpcJPC3pwUveefsa3zTxyD/ERg==} engines: {node: '>=20.18.1'} unicode-properties@1.4.1: @@ -9351,7 +9350,7 @@ snapshots: '@effect/sql': 0.49.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14) effect: 3.19.14 mime: 3.0.0 - undici: 7.18.2 + undici: 7.24.0 ws: 8.18.3 transitivePeerDependencies: - bufferutil @@ -11479,10 +11478,9 @@ snapshots: '@tiptap/core': 2.26.3(@tiptap/pm@2.26.1) '@tiptap/pm': 2.26.1 - '@tokenizer/inflate@0.2.7': + '@tokenizer/inflate@0.4.1': dependencies: debug: 4.4.3 - fflate: 0.8.2 token-types: 6.1.1 transitivePeerDependencies: - supports-color @@ -13030,15 +13028,13 @@ snapshots: fecha@4.2.3: {} - fflate@0.8.2: {} - file-selector@2.1.2: dependencies: tslib: 2.8.1 - file-type@21.0.0: + file-type@21.3.3: dependencies: - '@tokenizer/inflate': 0.2.7 + '@tokenizer/inflate': 0.4.1 strtok3: 10.3.4 token-types: 6.1.1 uint8array-extras: 1.5.0 @@ -13105,11 +13101,11 @@ snapshots: flat-cache@3.2.0: dependencies: - flatted: 3.3.3 + flatted: 3.4.0 keyv: 4.5.4 rimraf: 3.0.2 - flatted@3.3.3: {} + flatted@3.4.0: {} flow-parser@0.293.0: {} @@ -16244,7 +16240,7 @@ snapshots: undici-types@6.20.0: {} - undici@7.18.2: {} + undici@7.24.0: {} unicode-properties@1.4.1: dependencies: From 428cb478b1cc659b316a555146d1112f71911d09 Mon Sep 17 00:00:00 2001 From: Vipin Chaudhary Date: Wed, 18 Mar 2026 00:07:52 +0530 Subject: [PATCH 15/62] [WEB-6610] Fix work item drag handle hover gap (#8759) * [WEB-6610] Fix work item drag handle hover gap Amp-Thread-ID: https://ampcode.com/threads/T-019ce703-e30e-769b-9436-a7f5506e8a6c Co-authored-by: Amp * fix: use p-0! pl-6! for correct drag handle hover area Amp-Thread-ID: https://ampcode.com/threads/T-019ce703-e30e-769b-9436-a7f5506e8a6c Co-authored-by: Amp * fix: update containerClassName to -ml-6 border-none p-0! pl-6! Amp-Thread-ID: https://ampcode.com/threads/T-019ce703-e30e-769b-9436-a7f5506e8a6c Co-authored-by: Amp --------- Co-authored-by: Amp --- apps/web/core/components/issues/issue-detail/main-content.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/web/core/components/issues/issue-detail/main-content.tsx b/apps/web/core/components/issues/issue-detail/main-content.tsx index f482e240cb2..d14bd35396a 100644 --- a/apps/web/core/components/issues/issue-detail/main-content.tsx +++ b/apps/web/core/components/issues/issue-detail/main-content.tsx @@ -134,7 +134,7 @@ export const IssueMainContent = observer(function IssueMainContent(props: Props) Date: Wed, 18 Mar 2026 00:09:47 +0530 Subject: [PATCH 16/62] chore(deps): bump the actions group across 1 directory with 11 updates (#8741) Bumps the actions group with 11 updates in the / directory: | Package | From | To | | --- | --- | --- | | [actions/checkout](https://github.com/actions/checkout) | `4` | `6` | | [makeplane/actions](https://github.com/makeplane/actions) | `1.0.0` | `1.4.0` | | [actions/upload-artifact](https://github.com/actions/upload-artifact) | `4` | `7` | | [softprops/action-gh-release](https://github.com/softprops/action-gh-release) | `2.1.0` | `2.5.0` | | [actions/setup-node](https://github.com/actions/setup-node) | `4` | `6` | | [actions/setup-go](https://github.com/actions/setup-go) | `5` | `6` | | [docker/login-action](https://github.com/docker/login-action) | `3` | `4` | | [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action) | `3` | `4` | | [docker/build-push-action](https://github.com/docker/build-push-action) | `6.9.0` | `7.0.0` | | [tailscale/github-action](https://github.com/tailscale/github-action) | `2` | `4` | | [actions/cache](https://github.com/actions/cache) | `4` | `5` | Updates `actions/checkout` from 4 to 6 - [Release notes](https://github.com/actions/checkout/releases) - [Changelog](https://github.com/actions/checkout/blob/main/CHANGELOG.md) - [Commits](https://github.com/actions/checkout/compare/v4...v6) Updates `makeplane/actions` from 1.0.0 to 1.4.0 - [Release notes](https://github.com/makeplane/actions/releases) - [Commits](https://github.com/makeplane/actions/compare/v1.0.0...v1.4.0) Updates `actions/upload-artifact` from 4 to 7 - [Release notes](https://github.com/actions/upload-artifact/releases) - [Commits](https://github.com/actions/upload-artifact/compare/v4...v7) Updates `softprops/action-gh-release` from 2.1.0 to 2.5.0 - [Release notes](https://github.com/softprops/action-gh-release/releases) - [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md) - [Commits](https://github.com/softprops/action-gh-release/compare/v2.1.0...v2.5.0) Updates `actions/setup-node` from 4 to 6 - [Release notes](https://github.com/actions/setup-node/releases) - [Commits](https://github.com/actions/setup-node/compare/v4...v6) Updates `actions/setup-go` from 5 to 6 - [Release notes](https://github.com/actions/setup-go/releases) - [Commits](https://github.com/actions/setup-go/compare/v5...v6) Updates `docker/login-action` from 3 to 4 - [Release notes](https://github.com/docker/login-action/releases) - [Commits](https://github.com/docker/login-action/compare/v3...v4) Updates `docker/setup-buildx-action` from 3 to 4 - [Release notes](https://github.com/docker/setup-buildx-action/releases) - [Commits](https://github.com/docker/setup-buildx-action/compare/v3...v4) Updates `docker/build-push-action` from 6.9.0 to 7.0.0 - [Release notes](https://github.com/docker/build-push-action/releases) - [Commits](https://github.com/docker/build-push-action/compare/v6.9.0...v7.0.0) Updates `tailscale/github-action` from 2 to 4 - [Release notes](https://github.com/tailscale/github-action/releases) - [Commits](https://github.com/tailscale/github-action/compare/v2...v4) Updates `actions/cache` from 4 to 5 - [Release notes](https://github.com/actions/cache/releases) - [Changelog](https://github.com/actions/cache/blob/main/RELEASES.md) - [Commits](https://github.com/actions/cache/compare/v4...v5) --- updated-dependencies: - dependency-name: actions/checkout dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major dependency-group: actions - dependency-name: makeplane/actions dependency-version: 1.4.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: actions - dependency-name: actions/upload-artifact dependency-version: '7' dependency-type: direct:production update-type: version-update:semver-major dependency-group: actions - dependency-name: softprops/action-gh-release dependency-version: 2.5.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: actions - dependency-name: actions/setup-node dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major dependency-group: actions - dependency-name: actions/setup-go dependency-version: '6' dependency-type: direct:production update-type: version-update:semver-major dependency-group: actions - dependency-name: docker/login-action dependency-version: '4' dependency-type: direct:production update-type: version-update:semver-major dependency-group: actions - dependency-name: docker/setup-buildx-action dependency-version: '4' dependency-type: direct:production update-type: version-update:semver-major dependency-group: actions - dependency-name: docker/build-push-action dependency-version: 7.0.0 dependency-type: direct:production update-type: version-update:semver-major dependency-group: actions - dependency-name: tailscale/github-action dependency-version: '4' dependency-type: direct:production update-type: version-update:semver-major dependency-group: actions - dependency-name: actions/cache dependency-version: '5' dependency-type: direct:production update-type: version-update:semver-major dependency-group: actions ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- .github/workflows/build-branch.yml | 28 +++++++++---------- .github/workflows/check-version.yml | 4 +-- .github/workflows/codeql.yml | 2 +- .github/workflows/codespell.yml | 2 +- .github/workflows/copyright-check.yml | 2 +- .github/workflows/feature-deployment.yml | 12 ++++---- .../pull-request-build-lint-web-apps.yml | 14 +++++----- .github/workflows/sync-repo-pr.yml | 2 +- .github/workflows/sync-repo.yml | 2 +- 9 files changed, 34 insertions(+), 34 deletions(-) diff --git a/.github/workflows/build-branch.yml b/.github/workflows/build-branch.yml index 087a012d40c..00fc16531d7 100644 --- a/.github/workflows/build-branch.yml +++ b/.github/workflows/build-branch.yml @@ -134,7 +134,7 @@ jobs: - id: checkout_files name: Checkout Files - uses: actions/checkout@v4 + uses: actions/checkout@v6 branch_build_push_admin: name: Build-Push Admin Docker Image @@ -142,7 +142,7 @@ jobs: needs: [branch_build_setup] steps: - name: Admin Build and Push - uses: makeplane/actions/build-push@v1.0.0 + uses: makeplane/actions/build-push@v1.4.0 with: build-release: ${{ needs.branch_build_setup.outputs.build_release }} build-prerelease: ${{ needs.branch_build_setup.outputs.build_prerelease }} @@ -164,7 +164,7 @@ jobs: needs: [branch_build_setup] steps: - name: Web Build and Push - uses: makeplane/actions/build-push@v1.0.0 + uses: makeplane/actions/build-push@v1.4.0 with: build-release: ${{ needs.branch_build_setup.outputs.build_release }} build-prerelease: ${{ needs.branch_build_setup.outputs.build_prerelease }} @@ -186,7 +186,7 @@ jobs: needs: [branch_build_setup] steps: - name: Space Build and Push - uses: makeplane/actions/build-push@v1.0.0 + uses: makeplane/actions/build-push@v1.4.0 with: build-release: ${{ needs.branch_build_setup.outputs.build_release }} build-prerelease: ${{ needs.branch_build_setup.outputs.build_prerelease }} @@ -208,7 +208,7 @@ jobs: needs: [branch_build_setup] steps: - name: Live Build and Push - uses: makeplane/actions/build-push@v1.0.0 + uses: makeplane/actions/build-push@v1.4.0 with: build-release: ${{ needs.branch_build_setup.outputs.build_release }} build-prerelease: ${{ needs.branch_build_setup.outputs.build_prerelease }} @@ -230,7 +230,7 @@ jobs: needs: [branch_build_setup] steps: - name: Backend Build and Push - uses: makeplane/actions/build-push@v1.0.0 + uses: makeplane/actions/build-push@v1.4.0 with: build-release: ${{ needs.branch_build_setup.outputs.build_release }} build-prerelease: ${{ needs.branch_build_setup.outputs.build_prerelease }} @@ -252,7 +252,7 @@ jobs: needs: [branch_build_setup] steps: - name: Proxy Build and Push - uses: makeplane/actions/build-push@v1.0.0 + uses: makeplane/actions/build-push@v1.4.0 with: build-release: ${{ needs.branch_build_setup.outputs.build_release }} build-prerelease: ${{ needs.branch_build_setup.outputs.build_prerelease }} @@ -282,7 +282,7 @@ jobs: - branch_build_push_proxy steps: - name: Checkout Files - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Prepare AIO Assets id: prepare_aio_assets @@ -298,13 +298,13 @@ jobs: echo "AIO_BUILD_VERSION=${aio_version}" >> $GITHUB_OUTPUT - name: Upload AIO Assets - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: path: ./deployments/aio/community/dist name: aio-assets-dist - name: AIO Build and Push - uses: makeplane/actions/build-push@v1.1.0 + uses: makeplane/actions/build-push@v1.4.0 with: build-release: ${{ needs.branch_build_setup.outputs.build_release }} build-prerelease: ${{ needs.branch_build_setup.outputs.build_prerelease }} @@ -337,7 +337,7 @@ jobs: - branch_build_push_proxy steps: - name: Checkout Files - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Update Assets run: | @@ -352,7 +352,7 @@ jobs: # sed -i 's/APP_RELEASE=stable/APP_RELEASE='${REL_VERSION}'/g' deployments/cli/community/variables.env - name: Upload Assets - uses: actions/upload-artifact@v4 + uses: actions/upload-artifact@v7 with: name: community-assets path: | @@ -381,7 +381,7 @@ jobs: REL_VERSION: ${{ needs.branch_build_setup.outputs.release_version }} steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Update Assets run: | @@ -391,7 +391,7 @@ jobs: - name: Create Release id: create_release - uses: softprops/action-gh-release@v2.1.0 + uses: softprops/action-gh-release@v2.6.1 env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} # This token is provided by Actions, you do not need to create your own token with: diff --git a/.github/workflows/check-version.yml b/.github/workflows/check-version.yml index 855ee359fe2..e32581f2e2d 100644 --- a/.github/workflows/check-version.yml +++ b/.github/workflows/check-version.yml @@ -10,13 +10,13 @@ jobs: runs-on: ubuntu-latest steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: ref: ${{ github.head_ref }} fetch-depth: 0 - name: Setup Node.js - uses: actions/setup-node@v4 + uses: actions/setup-node@v6 - name: Get PR Branch version run: echo "PR_VERSION=$(node -p "require('./package.json').version")" >> $GITHUB_ENV diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 6d63f54c4f8..a645c192ff3 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -23,7 +23,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Initialize CodeQL uses: github/codeql-action/init@v4 diff --git a/.github/workflows/codespell.yml b/.github/workflows/codespell.yml index ca87dc9347f..2798d8d5255 100644 --- a/.github/workflows/codespell.yml +++ b/.github/workflows/codespell.yml @@ -18,7 +18,7 @@ jobs: steps: - name: Checkout - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Annotate locations with typos uses: codespell-project/codespell-problem-matcher@v1 - name: Codespell diff --git a/.github/workflows/copyright-check.yml b/.github/workflows/copyright-check.yml index 1e20ed2eeb6..b406833a827 100644 --- a/.github/workflows/copyright-check.yml +++ b/.github/workflows/copyright-check.yml @@ -21,7 +21,7 @@ jobs: uses: actions/checkout@v6 - name: Set up Go - uses: actions/setup-go@v5 + uses: actions/setup-go@v6 with: go-version: "1.22" diff --git a/.github/workflows/feature-deployment.yml b/.github/workflows/feature-deployment.yml index dad3489dfec..c0740c517b4 100644 --- a/.github/workflows/feature-deployment.yml +++ b/.github/workflows/feature-deployment.yml @@ -48,7 +48,7 @@ jobs: - id: checkout_files name: Checkout Files - uses: actions/checkout@v4 + uses: actions/checkout@v6 full_build_push: runs-on: ubuntu-22.04 @@ -63,23 +63,23 @@ jobs: BUILDX_ENDPOINT: ${{ needs.branch_build_setup.outputs.gh_buildx_endpoint }} steps: - name: Login to Docker Hub - uses: docker/login-action@v3 + uses: docker/login-action@v4 with: username: ${{ secrets.DOCKERHUB_USERNAME }} password: ${{ secrets.DOCKERHUB_TOKEN }} - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 + uses: docker/setup-buildx-action@v4 with: driver: ${{ env.BUILDX_DRIVER }} version: ${{ env.BUILDX_VERSION }} endpoint: ${{ env.BUILDX_ENDPOINT }} - name: Check out the repo - uses: actions/checkout@v4 + uses: actions/checkout@v6 - name: Build and Push to Docker Hub - uses: docker/build-push-action@v6.9.0 + uses: docker/build-push-action@v7.0.0 with: context: . file: ./aio/Dockerfile-app @@ -112,7 +112,7 @@ jobs: sudo apt-get install -y python3-pip pip3 install awscli - name: Tailscale - uses: tailscale/github-action@v2 + uses: tailscale/github-action@v4 with: oauth-client-id: ${{ secrets.TAILSCALE_OAUTH_CLIENT_ID }} oauth-secret: ${{ secrets.TAILSCALE_OAUTH_SECRET }} diff --git a/.github/workflows/pull-request-build-lint-web-apps.yml b/.github/workflows/pull-request-build-lint-web-apps.yml index 6d67699231a..d5d417ca395 100644 --- a/.github/workflows/pull-request-build-lint-web-apps.yml +++ b/.github/workflows/pull-request-build-lint-web-apps.yml @@ -46,7 +46,7 @@ jobs: run: echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - name: Cache pnpm store - uses: actions/cache@v4 + uses: actions/cache@v5 with: path: ${{ env.STORE_PATH }} key: pnpm-store-${{ runner.os }}-${{ hashFiles('**/pnpm-lock.yaml') }} @@ -89,7 +89,7 @@ jobs: run: echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - name: Cache pnpm store - uses: actions/cache@v4 + uses: actions/cache@v5 with: path: ${{ env.STORE_PATH }} key: pnpm-store-${{ runner.os }}-${{ hashFiles('**/pnpm-lock.yaml') }} @@ -97,7 +97,7 @@ jobs: pnpm-store-${{ runner.os }}- - name: Restore Turbo cache - uses: actions/cache/restore@v4 + uses: actions/cache/restore@v5 with: path: .turbo key: turbo-${{ runner.os }}-${{ github.event.pull_request.base.sha }}-${{ github.sha }} @@ -112,7 +112,7 @@ jobs: run: pnpm turbo run build --affected - name: Save Turbo cache - uses: actions/cache/save@v4 + uses: actions/cache/save@v5 with: path: .turbo key: turbo-${{ runner.os }}-${{ github.event.pull_request.base.sha }}-${{ github.sha }} @@ -146,7 +146,7 @@ jobs: run: echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - name: Cache pnpm store - uses: actions/cache@v4 + uses: actions/cache@v5 with: path: ${{ env.STORE_PATH }} key: pnpm-store-${{ runner.os }}-${{ hashFiles('**/pnpm-lock.yaml') }} @@ -187,7 +187,7 @@ jobs: run: echo "STORE_PATH=$(pnpm store path --silent)" >> $GITHUB_ENV - name: Cache pnpm store - uses: actions/cache@v4 + uses: actions/cache@v5 with: path: ${{ env.STORE_PATH }} key: pnpm-store-${{ runner.os }}-${{ hashFiles('**/pnpm-lock.yaml') }} @@ -195,7 +195,7 @@ jobs: pnpm-store-${{ runner.os }}- - name: Restore Turbo cache - uses: actions/cache/restore@v4 + uses: actions/cache/restore@v5 with: path: .turbo key: turbo-${{ runner.os }}-${{ github.event.pull_request.base.sha }}-${{ github.sha }} diff --git a/.github/workflows/sync-repo-pr.yml b/.github/workflows/sync-repo-pr.yml index 548ccbf423f..5047f4fee0f 100644 --- a/.github/workflows/sync-repo-pr.yml +++ b/.github/workflows/sync-repo-pr.yml @@ -21,7 +21,7 @@ jobs: contents: write steps: - name: Checkout code - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: fetch-depth: 0 # Fetch all history for all branches and tags diff --git a/.github/workflows/sync-repo.yml b/.github/workflows/sync-repo.yml index 5d6c72cb758..3f97dbbf10b 100644 --- a/.github/workflows/sync-repo.yml +++ b/.github/workflows/sync-repo.yml @@ -17,7 +17,7 @@ jobs: contents: read steps: - name: Checkout Code - uses: actions/checkout@v4 + uses: actions/checkout@v6 with: persist-credentials: false fetch-depth: 0 From 1faf06c7553d2bbce59634ae96fb498495c46d62 Mon Sep 17 00:00:00 2001 From: sriram veeraghanta Date: Wed, 18 Mar 2026 00:13:00 +0530 Subject: [PATCH 17/62] chore: remove chat support component --- apps/web/app/provider.tsx | 7 --- .../components/global/chat-support-modal.tsx | 49 ------------------- apps/web/package.json | 1 - pnpm-lock.yaml | 8 --- 4 files changed, 65 deletions(-) delete mode 100644 apps/web/core/components/global/chat-support-modal.tsx diff --git a/apps/web/app/provider.tsx b/apps/web/app/provider.tsx index a8a5d27188e..016b66c0e4b 100644 --- a/apps/web/app/provider.tsx +++ b/apps/web/app/provider.tsx @@ -13,8 +13,6 @@ import { TranslationProvider } from "@plane/i18n"; import { Toast } from "@plane/propel/toast"; // helpers import { resolveGeneralTheme } from "@plane/utils"; -// polyfills -import "@/lib/polyfills"; // mobx store provider import { StoreProvider } from "@/lib/store-context"; @@ -31,10 +29,6 @@ const InstanceWrapper = lazy(function InstanceWrapper() { return import("@/lib/wrappers/instance-wrapper"); }); -const ChatSupportModal = lazy(function ChatSupportModal() { - return import("@/components/global/chat-support-modal"); -}); - export interface IAppProvider { children: React.ReactNode; } @@ -53,7 +47,6 @@ export function AppProvider(props: IAppProvider) { - {children} diff --git a/apps/web/core/components/global/chat-support-modal.tsx b/apps/web/core/components/global/chat-support-modal.tsx deleted file mode 100644 index 5956c5e8f32..00000000000 --- a/apps/web/core/components/global/chat-support-modal.tsx +++ /dev/null @@ -1,49 +0,0 @@ -/** - * Copyright (c) 2023-present Plane Software, Inc. and contributors - * SPDX-License-Identifier: AGPL-3.0-only - * See the LICENSE file for details. - */ - -import { useEffect } from "react"; -import { Intercom, shutdown, show } from "@intercom/messenger-js-sdk"; -import { observer } from "mobx-react"; -// custom events -import { CHAT_SUPPORT_EVENTS } from "@/custom-events/chat-support"; -// store hooks -import { useInstance } from "@/hooks/store/use-instance"; -import { useUser } from "@/hooks/store/user"; - -const ChatSupportModal = observer(function ChatSupportModal() { - // store hooks - const { data: user } = useUser(); - const { config } = useInstance(); - // derived values - const intercomAppId = config?.intercom_app_id; - const isEnabled = Boolean(user && config?.is_intercom_enabled && intercomAppId); - - useEffect(() => { - if (!isEnabled || !user || !intercomAppId) return; - - Intercom({ - app_id: intercomAppId, - user_id: user.id, - name: `${user.first_name} ${user.last_name}`, - email: user.email, - hide_default_launcher: true, - }); - - const handleOpenChatSupport = () => { - show(); - }; - - window.addEventListener(CHAT_SUPPORT_EVENTS.open, handleOpenChatSupport); - return () => { - window.removeEventListener(CHAT_SUPPORT_EVENTS.open, handleOpenChatSupport); - shutdown(); - }; - }, [user, intercomAppId, isEnabled]); - - return null; -}); - -export default ChatSupportModal; diff --git a/apps/web/package.json b/apps/web/package.json index 34cf4b00612..dfa37b7b296 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -25,7 +25,6 @@ "@fontsource/ibm-plex-mono": "5.2.7", "@fontsource/material-symbols-rounded": "5.2.30", "@headlessui/react": "^1.7.19", - "@intercom/messenger-js-sdk": "^0.0.12", "@plane/constants": "workspace:*", "@plane/editor": "workspace:*", "@plane/hooks": "workspace:*", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 88c52dcea48..2e38471ac97 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -573,9 +573,6 @@ importers: '@headlessui/react': specifier: ^1.7.19 version: 1.7.19(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@intercom/messenger-js-sdk': - specifier: ^0.0.12 - version: 0.0.12 '@plane/constants': specifier: workspace:* version: link:../../packages/constants @@ -2333,9 +2330,6 @@ packages: cpu: [x64] os: [win32] - '@intercom/messenger-js-sdk@0.0.12': - resolution: {integrity: sha512-xoUGlKLD8nIcZaH7AesR/LfwXH4QQUdPZMV4sApK/zvVFBgAY/A9IWp1ey/jUcp+776ejtZeEqreJZxG4LdEuw==} - '@ioredis/commands@1.3.0': resolution: {integrity: sha512-M/T6Zewn7sDaBQEqIZ8Rb+i9y8qfGmq+5SDFSf9sA2lUZTmdDLVdOiQaeDp+Q4wElZ9HG1GAX5KhDaidp6LQsQ==} @@ -9738,8 +9732,6 @@ snapshots: '@img/sharp-win32-x64@0.34.3': optional: true - '@intercom/messenger-js-sdk@0.0.12': {} - '@ioredis/commands@1.3.0': {} '@isaacs/cliui@8.0.2': From 9d3b5d9da7c2320cf6e60e2e17c85cadf68b7a78 Mon Sep 17 00:00:00 2001 From: Bavisetti Narayan <72156168+NarayanBavisetti@users.noreply.github.com> Date: Tue, 24 Mar 2026 00:44:50 +0530 Subject: [PATCH 18/62] fix: added workspace member check in allow permission for creator #8778 --- apps/api/plane/app/permissions/base.py | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/apps/api/plane/app/permissions/base.py b/apps/api/plane/app/permissions/base.py index 7b243cbb789..9c451ed86ab 100644 --- a/apps/api/plane/app/permissions/base.py +++ b/apps/api/plane/app/permissions/base.py @@ -22,6 +22,17 @@ def decorator(view_func): def _wrapped_view(instance, request, *args, **kwargs): # Check for creator if required if creator and model: + # check if the user is part of the workspace or not + if not WorkspaceMember.objects.filter( + member=request.user, + workspace__slug=kwargs["slug"], + is_active=True, + ).exists(): + return Response( + {"error": "You don't have the required permissions."}, + status=status.HTTP_403_FORBIDDEN, + ) + obj = model.objects.filter(id=kwargs["pk"], created_by=request.user).exists() if obj: return view_func(instance, request, *args, **kwargs) From c3c7c72affcf4eff93dc21f8192d5b3fe23f3598 Mon Sep 17 00:00:00 2001 From: sriram veeraghanta Date: Wed, 25 Mar 2026 00:22:25 +0530 Subject: [PATCH 19/62] fix: package updates --- apps/api/requirements/base.txt | 2 +- apps/live/package.json | 2 +- package.json | 2 +- pnpm-lock.yaml | 96 +++++++++++++++++----------------- 4 files changed, 51 insertions(+), 51 deletions(-) diff --git a/apps/api/requirements/base.txt b/apps/api/requirements/base.txt index 02c509ea14d..3000afde973 100644 --- a/apps/api/requirements/base.txt +++ b/apps/api/requirements/base.txt @@ -61,7 +61,7 @@ zxcvbn==4.4.28 # timezone pytz==2024.1 # jwt -PyJWT==2.8.0 +PyJWT==2.12.0 # OpenTelemetry opentelemetry-api==1.28.1 opentelemetry-sdk==1.28.1 diff --git a/apps/live/package.json b/apps/live/package.json index fcec003bd7a..679ea741b39 100644 --- a/apps/live/package.json +++ b/apps/live/package.json @@ -47,7 +47,7 @@ "axios": "catalog:", "compression": "1.8.1", "cors": "^2.8.5", - "effect": "^3.16.3", + "effect": "3.20.0", "express": "catalog:", "express-ws": "^5.0.2", "helmet": "^7.1.0", diff --git a/package.json b/package.json index 55188311468..1d09b344f09 100644 --- a/package.json +++ b/package.json @@ -71,7 +71,7 @@ "ajv@6": "6.14.0", "ajv@8": "8.18.0", "undici@7": "7.24.0", - "flatted": "3.4.0" + "flatted": "3.4.2" }, "onlyBuiltDependencies": [ "turbo" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2e38471ac97..f236eef3da3 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -114,7 +114,7 @@ overrides: ajv@6: 6.14.0 ajv@8: 8.18.0 undici@7: 7.24.0 - flatted: 3.4.0 + flatted: 3.4.2 importers: @@ -267,10 +267,10 @@ importers: version: 1.51.1 '@effect/platform': specifier: ^0.94.0 - version: 0.94.1(effect@3.19.14) + version: 0.94.1(effect@3.20.0) '@effect/platform-node': specifier: ^0.104.0 - version: 0.104.0(@effect/cluster@0.56.1(@effect/platform@0.94.1(effect@3.19.14))(@effect/rpc@0.73.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14))(@effect/sql@0.49.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14))(@effect/workflow@0.16.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.19.14))(@effect/rpc@0.73.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14))(effect@3.19.14))(effect@3.19.14))(@effect/platform@0.94.1(effect@3.19.14))(@effect/rpc@0.73.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14))(@effect/sql@0.49.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14))(effect@3.19.14) + version: 0.104.0(@effect/cluster@0.56.1(@effect/platform@0.94.1(effect@3.20.0))(@effect/rpc@0.73.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0))(@effect/sql@0.49.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0))(@effect/workflow@0.16.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.20.0))(@effect/rpc@0.73.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0))(effect@3.20.0))(effect@3.20.0))(@effect/platform@0.94.1(effect@3.20.0))(@effect/rpc@0.73.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0))(@effect/sql@0.49.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0))(effect@3.20.0) '@fontsource/inter': specifier: 5.2.8 version: 5.2.8 @@ -323,8 +323,8 @@ importers: specifier: ^2.8.5 version: 2.8.5 effect: - specifier: ^3.16.3 - version: 3.19.14 + specifier: 3.20.0 + version: 3.20.0 express: specifier: 4.22.0 version: 4.22.0 @@ -5334,8 +5334,8 @@ packages: ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} - effect@3.19.14: - resolution: {integrity: sha512-3vwdq0zlvQOxXzXNKRIPKTqZNMyGCdaFUBfMPqpsyzZDre67kgC1EEHDV4EoQTovJ4w5fmJW756f86kkuz7WFA==} + effect@3.20.0: + resolution: {integrity: sha512-qMLfDJscrNG8p/aw+IkT9W7fgj50Z4wG5bLBy0Txsxz8iUHjDIkOgO3SV0WZfnQbNG2VJYb0b+rDLMrhM4+Krw==} electron-to-chromium@1.5.218: resolution: {integrity: sha512-uwwdN0TUHs8u6iRgN8vKeWZMRll4gBkz+QMqdS7DDe49uiK68/UX92lFb61oiFPrpYZNeZIqa4bA7O6Aiasnzg==} @@ -5640,8 +5640,8 @@ packages: resolution: {integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==} engines: {node: ^10.12.0 || >=12.0.0} - flatted@3.4.0: - resolution: {integrity: sha512-kC6Bb+ooptOIvWj5B63EQWkF0FEnNjV2ZNkLMLZRDDduIiWeFF4iKnslwhiWxjAdbg4NzTNo6h0qLuvFrcx+Sw==} + flatted@3.4.2: + resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} flow-parser@0.293.0: resolution: {integrity: sha512-8tEGAcWpCqioajiSqrJr2+JSmkEI2vO/UACFGG378RO106ez9xugVxe9EpXD3aI1Vbf+mEUGhMt0gMpveJwVGA==} @@ -9304,45 +9304,45 @@ snapshots: dependencies: '@noble/ciphers': 1.3.0 - '@effect/cluster@0.56.1(@effect/platform@0.94.1(effect@3.19.14))(@effect/rpc@0.73.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14))(@effect/sql@0.49.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14))(@effect/workflow@0.16.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.19.14))(@effect/rpc@0.73.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14))(effect@3.19.14))(effect@3.19.14)': + '@effect/cluster@0.56.1(@effect/platform@0.94.1(effect@3.20.0))(@effect/rpc@0.73.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0))(@effect/sql@0.49.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0))(@effect/workflow@0.16.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.20.0))(@effect/rpc@0.73.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0))(effect@3.20.0))(effect@3.20.0)': dependencies: - '@effect/platform': 0.94.1(effect@3.19.14) - '@effect/rpc': 0.73.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14) - '@effect/sql': 0.49.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14) - '@effect/workflow': 0.16.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.19.14))(@effect/rpc@0.73.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14))(effect@3.19.14) - effect: 3.19.14 + '@effect/platform': 0.94.1(effect@3.20.0) + '@effect/rpc': 0.73.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0) + '@effect/sql': 0.49.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0) + '@effect/workflow': 0.16.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.20.0))(@effect/rpc@0.73.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0))(effect@3.20.0) + effect: 3.20.0 kubernetes-types: 1.30.0 - '@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14)(ioredis@5.7.0)': + '@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0)(ioredis@5.7.0)': dependencies: - '@effect/platform': 0.94.1(effect@3.19.14) - effect: 3.19.14 + '@effect/platform': 0.94.1(effect@3.20.0) + effect: 3.20.0 uuid: 11.1.0 optionalDependencies: ioredis: 5.7.0 - '@effect/platform-node-shared@0.57.0(@effect/cluster@0.56.1(@effect/platform@0.94.1(effect@3.19.14))(@effect/rpc@0.73.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14))(@effect/sql@0.49.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14))(@effect/workflow@0.16.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.19.14))(@effect/rpc@0.73.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14))(effect@3.19.14))(effect@3.19.14))(@effect/platform@0.94.1(effect@3.19.14))(@effect/rpc@0.73.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14))(@effect/sql@0.49.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14))(effect@3.19.14)': + '@effect/platform-node-shared@0.57.0(@effect/cluster@0.56.1(@effect/platform@0.94.1(effect@3.20.0))(@effect/rpc@0.73.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0))(@effect/sql@0.49.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0))(@effect/workflow@0.16.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.20.0))(@effect/rpc@0.73.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0))(effect@3.20.0))(effect@3.20.0))(@effect/platform@0.94.1(effect@3.20.0))(@effect/rpc@0.73.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0))(@effect/sql@0.49.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0))(effect@3.20.0)': dependencies: - '@effect/cluster': 0.56.1(@effect/platform@0.94.1(effect@3.19.14))(@effect/rpc@0.73.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14))(@effect/sql@0.49.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14))(@effect/workflow@0.16.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.19.14))(@effect/rpc@0.73.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14))(effect@3.19.14))(effect@3.19.14) - '@effect/platform': 0.94.1(effect@3.19.14) - '@effect/rpc': 0.73.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14) - '@effect/sql': 0.49.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14) + '@effect/cluster': 0.56.1(@effect/platform@0.94.1(effect@3.20.0))(@effect/rpc@0.73.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0))(@effect/sql@0.49.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0))(@effect/workflow@0.16.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.20.0))(@effect/rpc@0.73.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0))(effect@3.20.0))(effect@3.20.0) + '@effect/platform': 0.94.1(effect@3.20.0) + '@effect/rpc': 0.73.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0) + '@effect/sql': 0.49.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0) '@parcel/watcher': 2.5.4 - effect: 3.19.14 + effect: 3.20.0 multipasta: 0.2.7 ws: 8.18.3 transitivePeerDependencies: - bufferutil - utf-8-validate - '@effect/platform-node@0.104.0(@effect/cluster@0.56.1(@effect/platform@0.94.1(effect@3.19.14))(@effect/rpc@0.73.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14))(@effect/sql@0.49.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14))(@effect/workflow@0.16.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.19.14))(@effect/rpc@0.73.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14))(effect@3.19.14))(effect@3.19.14))(@effect/platform@0.94.1(effect@3.19.14))(@effect/rpc@0.73.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14))(@effect/sql@0.49.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14))(effect@3.19.14)': + '@effect/platform-node@0.104.0(@effect/cluster@0.56.1(@effect/platform@0.94.1(effect@3.20.0))(@effect/rpc@0.73.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0))(@effect/sql@0.49.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0))(@effect/workflow@0.16.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.20.0))(@effect/rpc@0.73.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0))(effect@3.20.0))(effect@3.20.0))(@effect/platform@0.94.1(effect@3.20.0))(@effect/rpc@0.73.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0))(@effect/sql@0.49.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0))(effect@3.20.0)': dependencies: - '@effect/cluster': 0.56.1(@effect/platform@0.94.1(effect@3.19.14))(@effect/rpc@0.73.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14))(@effect/sql@0.49.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14))(@effect/workflow@0.16.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.19.14))(@effect/rpc@0.73.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14))(effect@3.19.14))(effect@3.19.14) - '@effect/platform': 0.94.1(effect@3.19.14) - '@effect/platform-node-shared': 0.57.0(@effect/cluster@0.56.1(@effect/platform@0.94.1(effect@3.19.14))(@effect/rpc@0.73.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14))(@effect/sql@0.49.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14))(@effect/workflow@0.16.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.19.14))(@effect/rpc@0.73.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14))(effect@3.19.14))(effect@3.19.14))(@effect/platform@0.94.1(effect@3.19.14))(@effect/rpc@0.73.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14))(@effect/sql@0.49.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14))(effect@3.19.14) - '@effect/rpc': 0.73.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14) - '@effect/sql': 0.49.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14) - effect: 3.19.14 + '@effect/cluster': 0.56.1(@effect/platform@0.94.1(effect@3.20.0))(@effect/rpc@0.73.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0))(@effect/sql@0.49.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0))(@effect/workflow@0.16.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.20.0))(@effect/rpc@0.73.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0))(effect@3.20.0))(effect@3.20.0) + '@effect/platform': 0.94.1(effect@3.20.0) + '@effect/platform-node-shared': 0.57.0(@effect/cluster@0.56.1(@effect/platform@0.94.1(effect@3.20.0))(@effect/rpc@0.73.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0))(@effect/sql@0.49.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0))(@effect/workflow@0.16.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.20.0))(@effect/rpc@0.73.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0))(effect@3.20.0))(effect@3.20.0))(@effect/platform@0.94.1(effect@3.20.0))(@effect/rpc@0.73.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0))(@effect/sql@0.49.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0))(effect@3.20.0) + '@effect/rpc': 0.73.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0) + '@effect/sql': 0.49.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0) + effect: 3.20.0 mime: 3.0.0 undici: 7.24.0 ws: 8.18.3 @@ -9350,32 +9350,32 @@ snapshots: - bufferutil - utf-8-validate - '@effect/platform@0.94.1(effect@3.19.14)': + '@effect/platform@0.94.1(effect@3.20.0)': dependencies: - effect: 3.19.14 + effect: 3.20.0 find-my-way-ts: 0.1.6 msgpackr: 1.11.8 multipasta: 0.2.7 - '@effect/rpc@0.73.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14)': + '@effect/rpc@0.73.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0)': dependencies: - '@effect/platform': 0.94.1(effect@3.19.14) - effect: 3.19.14 + '@effect/platform': 0.94.1(effect@3.20.0) + effect: 3.20.0 msgpackr: 1.11.8 - '@effect/sql@0.49.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14)': + '@effect/sql@0.49.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0)': dependencies: - '@effect/experimental': 0.58.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14)(ioredis@5.7.0) - '@effect/platform': 0.94.1(effect@3.19.14) - effect: 3.19.14 + '@effect/experimental': 0.58.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0)(ioredis@5.7.0) + '@effect/platform': 0.94.1(effect@3.20.0) + effect: 3.20.0 uuid: 11.1.0 - '@effect/workflow@0.16.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.19.14))(@effect/rpc@0.73.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14))(effect@3.19.14)': + '@effect/workflow@0.16.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.20.0))(@effect/rpc@0.73.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0))(effect@3.20.0)': dependencies: - '@effect/experimental': 0.58.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14)(ioredis@5.7.0) - '@effect/platform': 0.94.1(effect@3.19.14) - '@effect/rpc': 0.73.0(@effect/platform@0.94.1(effect@3.19.14))(effect@3.19.14) - effect: 3.19.14 + '@effect/experimental': 0.58.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0)(ioredis@5.7.0) + '@effect/platform': 0.94.1(effect@3.20.0) + '@effect/rpc': 0.73.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0) + effect: 3.20.0 '@emnapi/core@1.7.1': dependencies: @@ -12768,7 +12768,7 @@ snapshots: ee-first@1.1.1: {} - effect@3.19.14: + effect@3.20.0: dependencies: '@standard-schema/spec': 1.0.0 fast-check: 3.23.2 @@ -13093,11 +13093,11 @@ snapshots: flat-cache@3.2.0: dependencies: - flatted: 3.4.0 + flatted: 3.4.2 keyv: 4.5.4 rimraf: 3.0.2 - flatted@3.4.0: {} + flatted@3.4.2: {} flow-parser@0.293.0: {} From d9695afcdcb31697fc1831d87997913ac6cadc9c Mon Sep 17 00:00:00 2001 From: darkingtail <51188676+darkingtail@users.noreply.github.com> Date: Wed, 25 Mar 2026 04:17:03 +0800 Subject: [PATCH 20/62] =?UTF-8?q?fix:=20remove=20unused=20imports=20and=20?= =?UTF-8?q?variables=20(part=201=20=E2=80=94=20packages=20&=20non-web-core?= =?UTF-8?q?)=20(#8751)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: remove unused imports and variables (part 1) Resolve oxlint no-unused-vars warnings in packages/*, apps/admin, apps/space, apps/live, and apps/web (non-core). * fix: resolve CI check failures * fix: resolve check:types failures * fix: resolve check:types and check:format failures - Use destructuring alias for activeCycleResolvedPath - Format propel tab-navigation file * fix: format propel button helper with oxfmt Reorder Tailwind classes to match oxfmt canonical ordering. --- apps/admin/app/root.tsx | 2 +- apps/live/src/lib/pdf/styles.ts | 1 - apps/space/app/root.tsx | 2 +- apps/space/hooks/use-editor-flagging.ts | 2 +- apps/space/store/cycle.store.ts | 6 +++--- apps/space/store/helpers/base-issues.store.ts | 4 ++-- apps/space/store/instance.store.ts | 4 ++-- apps/space/store/issue-detail.store.ts | 6 +++--- apps/space/store/issue-filters.store.ts | 4 ++-- apps/space/store/issue.store.ts | 6 +++--- apps/space/store/label.store.ts | 6 +++--- apps/space/store/members.store.ts | 6 +++--- apps/space/store/module.store.ts | 6 +++--- apps/space/store/profile.store.ts | 4 ++-- apps/space/store/publish/publish.store.ts | 4 ++-- apps/space/store/publish/publish_list.store.ts | 4 ++-- apps/space/store/state.store.ts | 6 +++--- apps/space/store/user.store.ts | 4 ++-- .../web/app/(all)/[workspaceSlug]/(projects)/_sidebar.tsx | 1 - .../(projects)/profile/[userId]/header.tsx | 2 -- apps/web/app/(all)/[workspaceSlug]/(projects)/sidebar.tsx | 1 - apps/web/app/(all)/invitations/page.tsx | 1 - apps/web/ce/components/analytics/use-analytics-tabs.tsx | 2 +- apps/web/ce/components/automations/root.tsx | 1 - .../components/command-palette/modals/work-item-level.tsx | 1 - .../components/common/subscription/subscription-pill.tsx | 2 +- apps/web/ce/components/cycles/active-cycle/root.tsx | 2 +- apps/web/ce/components/cycles/additional-actions.tsx | 1 - apps/web/ce/components/cycles/analytics-sidebar/root.tsx | 1 - apps/web/ce/components/de-dupe/de-dupe-button.tsx | 4 +--- apps/web/ce/components/de-dupe/duplicate-modal/root.tsx | 4 +--- apps/web/ce/components/de-dupe/duplicate-popover/root.tsx | 1 - .../ce/components/de-dupe/issue-block/button-label.tsx | 5 +---- apps/web/ce/components/epics/epic-modal/modal.tsx | 3 +-- apps/web/ce/components/estimates/inputs/time-input.tsx | 2 -- apps/web/ce/components/estimates/points/delete.tsx | 2 -- apps/web/ce/components/estimates/update/modal.tsx | 1 - apps/web/ce/components/gantt-chart/blocks/blocks-list.tsx | 1 - .../dependency/blockDraggables/left-draggable.tsx | 2 +- .../dependency/blockDraggables/right-draggable.tsx | 2 +- .../gantt-chart/dependency/dependency-paths.tsx | 5 +---- apps/web/ce/components/inbox/source-pill.tsx | 2 +- apps/web/ce/components/issues/filters/issue-types.tsx | 1 - apps/web/ce/components/issues/filters/team-project.tsx | 1 - .../issues/issue-detail-widgets/action-buttons.tsx | 1 - .../issues/issue-detail-widgets/collapsibles.tsx | 1 - .../ce/components/issues/issue-detail-widgets/modals.tsx | 1 - .../issues/issue-details/additional-activity-root.tsx | 1 - .../issues/issue-details/additional-properties.tsx | 1 - .../ce/components/issues/issue-details/issue-creator.tsx | 1 - .../issue-details/issue-properties-activity/root.tsx | 2 -- .../issues/issue-details/issue-type-activity.tsx | 1 - .../issues/issue-details/parent-select-root.tsx | 4 ++-- .../issues/issue-layouts/additional-properties.tsx | 3 +-- .../ce/components/issues/issue-layouts/issue-stats.tsx | 3 +-- .../quick-action-dropdowns/duplicate-modal.tsx | 2 -- .../issues/issue-modal/modal-additional-properties.tsx | 2 -- .../ce/components/issues/worklog/activity/filter-root.tsx | 1 - apps/web/ce/components/issues/worklog/activity/root.tsx | 1 - .../issues/worklog/activity/worklog-create-button.tsx | 2 -- apps/web/ce/components/issues/worklog/property/root.tsx | 2 -- apps/web/ce/components/onboarding/tour/root.tsx | 1 - apps/web/ce/components/pages/modals/modals.tsx | 3 +-- .../web/ce/components/sidebar/project-navigation-root.tsx | 1 - apps/web/ce/components/views/helper.tsx | 4 ++-- .../workspace-notifications/notification-card/root.tsx | 1 - apps/web/ce/components/workspace/sidebar/sidebar-item.tsx | 1 - apps/web/ce/components/workspace/upgrade-badge.tsx | 1 - apps/web/ce/hooks/use-debounced-duplicate-issues.tsx | 8 ++++---- apps/web/ce/hooks/use-issue-properties.tsx | 2 +- apps/web/ce/store/issue/helpers/base-issue-store.ts | 2 +- apps/web/ce/store/issue/helpers/base-issue.store.ts | 2 +- apps/web/ce/store/timeline/base-timeline.store.ts | 2 +- .../src/core/components/editors/editor-container.tsx | 2 +- .../src/core/components/editors/link-view-container.tsx | 1 - packages/editor/src/core/components/menus/block-menu.tsx | 2 +- .../core/components/menus/bubble-menu/color-selector.tsx | 1 - .../core/components/menus/bubble-menu/link-selector.tsx | 1 - .../core/components/menus/bubble-menu/node-selector.tsx | 1 - .../editor/src/core/components/menus/bubble-menu/root.tsx | 1 - .../src/core/extensions/custom-image/components/block.tsx | 2 +- .../editor/src/core/hooks/use-collaborative-editor.ts | 1 - packages/editor/src/core/props.ts | 1 - packages/editor/src/core/types/config.ts | 1 - packages/propel/src/button/helper.tsx | 4 ++-- .../propel/src/tab-navigation/tab-navigation-list.tsx | 1 - packages/ui/src/collapsible/collapsible-button.tsx | 1 - packages/ui/src/dropdown/common/options.tsx | 1 - packages/ui/src/dropdown/multi-select.tsx | 1 - packages/ui/src/dropdown/single-select.tsx | 1 - packages/ui/src/link/block.tsx | 1 - packages/ui/src/progress/radial-progress.tsx | 1 - packages/ui/src/scroll-area.tsx | 1 - packages/ui/src/tabs/tabs.tsx | 1 - packages/utils/src/url.ts | 4 ++-- 95 files changed, 71 insertions(+), 145 deletions(-) diff --git a/apps/admin/app/root.tsx b/apps/admin/app/root.tsx index 1bfcfa37d88..5d4eafb765a 100644 --- a/apps/admin/app/root.tsx +++ b/apps/admin/app/root.tsx @@ -88,7 +88,7 @@ export function HydrateFallback() { ); } -export function ErrorBoundary({ error }: Route.ErrorBoundaryProps) { +export function ErrorBoundary({ error: _error }: Route.ErrorBoundaryProps) { return (

Something went wrong.

diff --git a/apps/live/src/lib/pdf/styles.ts b/apps/live/src/lib/pdf/styles.ts index 186321a9d99..b55a156d0a8 100644 --- a/apps/live/src/lib/pdf/styles.ts +++ b/apps/live/src/lib/pdf/styles.ts @@ -12,7 +12,6 @@ import { CODE_COLORS, LINK_COLORS, MENTION_COLORS, - NEUTRAL_COLORS, TEXT_COLORS, } from "./colors"; diff --git a/apps/space/app/root.tsx b/apps/space/app/root.tsx index abfb3ca4f83..fe504b1edf0 100644 --- a/apps/space/app/root.tsx +++ b/apps/space/app/root.tsx @@ -95,6 +95,6 @@ export function HydrateFallback() { ); } -export function ErrorBoundary({ error }: Route.ErrorBoundaryProps) { +export function ErrorBoundary({ error: _error }: Route.ErrorBoundaryProps) { return ; } diff --git a/apps/space/hooks/use-editor-flagging.ts b/apps/space/hooks/use-editor-flagging.ts index f796845170d..88e82f76979 100644 --- a/apps/space/hooks/use-editor-flagging.ts +++ b/apps/space/hooks/use-editor-flagging.ts @@ -25,7 +25,7 @@ export type TEditorFlaggingHookReturnType = { /** * @description extensions disabled in various editors */ -export const useEditorFlagging = (anchor: string): TEditorFlaggingHookReturnType => ({ +export const useEditorFlagging = (_anchor: string): TEditorFlaggingHookReturnType => ({ document: { disabled: [], flagged: [], diff --git a/apps/space/store/cycle.store.ts b/apps/space/store/cycle.store.ts index 41ef8d0d436..13cb6950a5b 100644 --- a/apps/space/store/cycle.store.ts +++ b/apps/space/store/cycle.store.ts @@ -9,7 +9,7 @@ import { action, makeObservable, observable, runInAction } from "mobx"; import { SitesCycleService } from "@plane/services"; import type { TPublicCycle } from "@/types/cycle"; // store -import type { CoreRootStore } from "./root.store"; +import type { RootStore } from "./root.store"; export interface ICycleStore { // observables @@ -23,9 +23,9 @@ export interface ICycleStore { export class CycleStore implements ICycleStore { cycles: TPublicCycle[] | undefined = undefined; cycleService: SitesCycleService; - rootStore: CoreRootStore; + rootStore: RootStore; - constructor(_rootStore: CoreRootStore) { + constructor(_rootStore: RootStore) { makeObservable(this, { // observables cycles: observable, diff --git a/apps/space/store/helpers/base-issues.store.ts b/apps/space/store/helpers/base-issues.store.ts index b1c342308e8..e0fdb564c60 100644 --- a/apps/space/store/helpers/base-issues.store.ts +++ b/apps/space/store/helpers/base-issues.store.ts @@ -23,7 +23,7 @@ import type { } from "@plane/types"; // types import type { IIssue, TIssuesResponse } from "@/types/issue"; -import type { CoreRootStore } from "../root.store"; +import type { RootStore } from "../root.store"; // constants // helpers @@ -81,7 +81,7 @@ export abstract class BaseIssuesStore implements IBaseIssuesStore { // root store rootIssueStore; - constructor(_rootStore: CoreRootStore) { + constructor(_rootStore: RootStore) { makeObservable(this, { // observable loader: observable, diff --git a/apps/space/store/instance.store.ts b/apps/space/store/instance.store.ts index 3672c5f0081..37dc9318eac 100644 --- a/apps/space/store/instance.store.ts +++ b/apps/space/store/instance.store.ts @@ -10,7 +10,7 @@ import { observable, action, makeObservable, runInAction } from "mobx"; import { InstanceService } from "@plane/services"; import type { IInstance, IInstanceConfig } from "@plane/types"; // store -import type { CoreRootStore } from "@/store/root.store"; +import type { RootStore } from "@/store/root.store"; type TError = { status: string; @@ -40,7 +40,7 @@ export class InstanceStore implements IInstanceStore { // services instanceService; - constructor(private store: CoreRootStore) { + constructor(private store: RootStore) { makeObservable(this, { // observable isLoading: observable.ref, diff --git a/apps/space/store/issue-detail.store.ts b/apps/space/store/issue-detail.store.ts index 0840e70c00a..6cbb6c867b3 100644 --- a/apps/space/store/issue-detail.store.ts +++ b/apps/space/store/issue-detail.store.ts @@ -13,7 +13,7 @@ import { SitesFileService, SitesIssueService } from "@plane/services"; import type { TFileSignedURLResponse, TIssuePublicComment } from "@plane/types"; import { EFileAssetType } from "@plane/types"; // store -import type { CoreRootStore } from "@/store/root.store"; +import type { RootStore } from "@/store/root.store"; // types import type { IIssue, IPeekMode, IVote } from "@/types/issue"; @@ -60,12 +60,12 @@ export class IssueDetailStore implements IIssueDetailStore { [key: string]: IIssue; } = {}; // root store - rootStore: CoreRootStore; + rootStore: RootStore; // services issueService: SitesIssueService; fileService: SitesFileService; - constructor(_rootStore: CoreRootStore) { + constructor(_rootStore: RootStore) { makeObservable(this, { loader: observable.ref, error: observable.ref, diff --git a/apps/space/store/issue-filters.store.ts b/apps/space/store/issue-filters.store.ts index 1632a0b3ea2..e2cb514dead 100644 --- a/apps/space/store/issue-filters.store.ts +++ b/apps/space/store/issue-filters.store.ts @@ -11,7 +11,7 @@ import { computedFn } from "mobx-utils"; import { ISSUE_DISPLAY_FILTERS_BY_LAYOUT } from "@plane/constants"; import type { IssuePaginationOptions, TIssueParams } from "@plane/types"; // store -import type { CoreRootStore } from "@/store/root.store"; +import type { RootStore } from "@/store/root.store"; // types import type { TIssueLayoutOptions, @@ -60,7 +60,7 @@ export class IssueFilterStore implements IIssueFilterStore { }; filters: { [anchor: string]: TIssueFilters } | undefined = undefined; - constructor(private store: CoreRootStore) { + constructor(private store: RootStore) { makeObservable(this, { // observables layoutOptions: observable, diff --git a/apps/space/store/issue.store.ts b/apps/space/store/issue.store.ts index 27ed2ad8951..93556bc8068 100644 --- a/apps/space/store/issue.store.ts +++ b/apps/space/store/issue.store.ts @@ -9,7 +9,7 @@ import { action, makeObservable, runInAction } from "mobx"; import { SitesIssueService } from "@plane/services"; import type { IssuePaginationOptions, TLoader } from "@plane/types"; // store -import type { CoreRootStore } from "@/store/root.store"; +import type { RootStore } from "@/store/root.store"; // types import { BaseIssuesStore } from "./helpers/base-issues.store"; import type { IBaseIssuesStore } from "./helpers/base-issues.store"; @@ -28,11 +28,11 @@ export interface IIssueStore extends IBaseIssuesStore { export class IssueStore extends BaseIssuesStore implements IIssueStore { // root store - rootStore: CoreRootStore; + rootStore: RootStore; // services issueService: SitesIssueService; - constructor(_rootStore: CoreRootStore) { + constructor(_rootStore: RootStore) { super(_rootStore); makeObservable(this, { // actions diff --git a/apps/space/store/label.store.ts b/apps/space/store/label.store.ts index b720816cf13..b1c229f0ae9 100644 --- a/apps/space/store/label.store.ts +++ b/apps/space/store/label.store.ts @@ -10,7 +10,7 @@ import { action, computed, makeObservable, observable, runInAction } from "mobx" import { SitesLabelService } from "@plane/services"; import type { IIssueLabel } from "@plane/types"; // store -import type { CoreRootStore } from "./root.store"; +import type { RootStore } from "./root.store"; export interface IIssueLabelStore { // observables @@ -25,9 +25,9 @@ export interface IIssueLabelStore { export class LabelStore implements IIssueLabelStore { labelMap: Record = {}; labelService: SitesLabelService; - rootStore: CoreRootStore; + rootStore: RootStore; - constructor(_rootStore: CoreRootStore) { + constructor(_rootStore: RootStore) { makeObservable(this, { // observables labelMap: observable, diff --git a/apps/space/store/members.store.ts b/apps/space/store/members.store.ts index 5c429b0037e..a06d0055049 100644 --- a/apps/space/store/members.store.ts +++ b/apps/space/store/members.store.ts @@ -9,7 +9,7 @@ import { action, computed, makeObservable, observable, runInAction } from "mobx" // plane imports import { SitesMemberService } from "@plane/services"; import type { TPublicMember } from "@/types/member"; -import type { CoreRootStore } from "./root.store"; +import type { RootStore } from "./root.store"; export interface IIssueMemberStore { // observables @@ -24,9 +24,9 @@ export interface IIssueMemberStore { export class MemberStore implements IIssueMemberStore { memberMap: Record = {}; memberService: SitesMemberService; - rootStore: CoreRootStore; + rootStore: RootStore; - constructor(_rootStore: CoreRootStore) { + constructor(_rootStore: RootStore) { makeObservable(this, { // observables memberMap: observable, diff --git a/apps/space/store/module.store.ts b/apps/space/store/module.store.ts index 1f2dd2d54a6..c539846efc0 100644 --- a/apps/space/store/module.store.ts +++ b/apps/space/store/module.store.ts @@ -11,7 +11,7 @@ import { SitesModuleService } from "@plane/services"; // types import type { TPublicModule } from "@/types/modules"; // root store -import type { CoreRootStore } from "./root.store"; +import type { RootStore } from "./root.store"; export interface IIssueModuleStore { // observables @@ -26,9 +26,9 @@ export interface IIssueModuleStore { export class ModuleStore implements IIssueModuleStore { moduleMap: Record = {}; moduleService: SitesModuleService; - rootStore: CoreRootStore; + rootStore: RootStore; - constructor(_rootStore: CoreRootStore) { + constructor(_rootStore: RootStore) { makeObservable(this, { // observables moduleMap: observable, diff --git a/apps/space/store/profile.store.ts b/apps/space/store/profile.store.ts index 0dee248dda5..d62d1d37a38 100644 --- a/apps/space/store/profile.store.ts +++ b/apps/space/store/profile.store.ts @@ -11,7 +11,7 @@ import { UserService } from "@plane/services"; import type { TUserProfile } from "@plane/types"; import { EStartOfTheWeek } from "@plane/types"; // store -import type { CoreRootStore } from "@/store/root.store"; +import type { RootStore } from "@/store/root.store"; type TError = { status: string; @@ -64,7 +64,7 @@ export class ProfileStore implements IProfileStore { // services userService: UserService; - constructor(public store: CoreRootStore) { + constructor(public store: RootStore) { makeObservable(this, { // observables isLoading: observable.ref, diff --git a/apps/space/store/publish/publish.store.ts b/apps/space/store/publish/publish.store.ts index b59ff2be230..973ea86e589 100644 --- a/apps/space/store/publish/publish.store.ts +++ b/apps/space/store/publish/publish.store.ts @@ -14,7 +14,7 @@ import type { TProjectPublishViewProps, } from "@plane/types"; // store -import type { CoreRootStore } from "../root.store"; +import type { RootStore } from "../root.store"; export interface IPublishStore extends TProjectPublishSettings { // computed @@ -45,7 +45,7 @@ export class PublishStore implements IPublishStore { workspace_detail: IWorkspaceLite | undefined; constructor( - private store: CoreRootStore, + private store: RootStore, publishSettings: TProjectPublishSettings ) { this.anchor = publishSettings.anchor; diff --git a/apps/space/store/publish/publish_list.store.ts b/apps/space/store/publish/publish_list.store.ts index 29a09dca17e..eeebe97e70a 100644 --- a/apps/space/store/publish/publish_list.store.ts +++ b/apps/space/store/publish/publish_list.store.ts @@ -11,7 +11,7 @@ import { SitesProjectPublishService } from "@plane/services"; import type { TProjectPublishSettings } from "@plane/types"; // store import { PublishStore } from "@/store/publish/publish.store"; -import type { CoreRootStore } from "@/store/root.store"; +import type { RootStore } from "@/store/root.store"; export interface IPublishListStore { // observables @@ -26,7 +26,7 @@ export class PublishListStore implements IPublishListStore { // service publishService; - constructor(private rootStore: CoreRootStore) { + constructor(private rootStore: RootStore) { makeObservable(this, { // observables publishMap: observable, diff --git a/apps/space/store/state.store.ts b/apps/space/store/state.store.ts index f900c5105f7..3ecf78d1592 100644 --- a/apps/space/store/state.store.ts +++ b/apps/space/store/state.store.ts @@ -12,7 +12,7 @@ import type { IState } from "@plane/types"; // helpers import { sortStates } from "@/helpers/state.helper"; // store -import type { CoreRootStore } from "./root.store"; +import type { RootStore } from "./root.store"; export interface IStateStore { // observables @@ -28,9 +28,9 @@ export interface IStateStore { export class StateStore implements IStateStore { states: IState[] | undefined = undefined; stateService: SitesStateService; - rootStore: CoreRootStore; + rootStore: RootStore; - constructor(_rootStore: CoreRootStore) { + constructor(_rootStore: RootStore) { makeObservable(this, { // observables states: observable, diff --git a/apps/space/store/user.store.ts b/apps/space/store/user.store.ts index fac64281ead..f2a3c7dbc20 100644 --- a/apps/space/store/user.store.ts +++ b/apps/space/store/user.store.ts @@ -14,7 +14,7 @@ import type { ActorDetail, IUser } from "@plane/types"; import type { IProfileStore } from "@/store/profile.store"; import { ProfileStore } from "@/store/profile.store"; // store -import type { CoreRootStore } from "@/store/root.store"; +import type { RootStore } from "@/store/root.store"; type TUserErrorStatus = { status: string; @@ -50,7 +50,7 @@ export class UserStore implements IUserStore { // service userService: UserService; - constructor(private store: CoreRootStore) { + constructor(private store: RootStore) { // stores this.profile = new ProfileStore(store); // service diff --git a/apps/web/app/(all)/[workspaceSlug]/(projects)/_sidebar.tsx b/apps/web/app/(all)/[workspaceSlug]/(projects)/_sidebar.tsx index bbbea873523..173b1fb0e09 100644 --- a/apps/web/app/(all)/[workspaceSlug]/(projects)/_sidebar.tsx +++ b/apps/web/app/(all)/[workspaceSlug]/(projects)/_sidebar.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { useState } from "react"; import { observer } from "mobx-react"; // plane imports diff --git a/apps/web/app/(all)/[workspaceSlug]/(projects)/profile/[userId]/header.tsx b/apps/web/app/(all)/[workspaceSlug]/(projects)/profile/[userId]/header.tsx index 62c1c162154..296b780c91e 100644 --- a/apps/web/app/(all)/[workspaceSlug]/(projects)/profile/[userId]/header.tsx +++ b/apps/web/app/(all)/[workspaceSlug]/(projects)/profile/[userId]/header.tsx @@ -5,7 +5,6 @@ */ // ui -import type { FC } from "react"; import { observer } from "mobx-react"; import { useParams, useRouter } from "next/navigation"; import { PanelRight } from "lucide-react"; @@ -14,7 +13,6 @@ import { useTranslation } from "@plane/i18n"; import { YourWorkIcon, ChevronDownIcon } from "@plane/propel/icons"; import type { IUserProfileProjectSegregation } from "@plane/types"; import { Breadcrumbs, Header, CustomMenu } from "@plane/ui"; -import { cn } from "@plane/utils"; // components import { BreadcrumbLink } from "@/components/common/breadcrumb-link"; import { ProfileIssuesFilter } from "@/components/profile/profile-issues-filter"; diff --git a/apps/web/app/(all)/[workspaceSlug]/(projects)/sidebar.tsx b/apps/web/app/(all)/[workspaceSlug]/(projects)/sidebar.tsx index 26c4734c734..c529c4efe9f 100644 --- a/apps/web/app/(all)/[workspaceSlug]/(projects)/sidebar.tsx +++ b/apps/web/app/(all)/[workspaceSlug]/(projects)/sidebar.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { isEmpty } from "lodash-es"; import { observer } from "mobx-react"; // plane helpers diff --git a/apps/web/app/(all)/invitations/page.tsx b/apps/web/app/(all)/invitations/page.tsx index 6921f5b841a..dc1e45cc2d7 100644 --- a/apps/web/app/(all)/invitations/page.tsx +++ b/apps/web/app/(all)/invitations/page.tsx @@ -81,7 +81,6 @@ function UserInvitationsPage() { .then(() => { mutate(USER_WORKSPACES_LIST); const firstInviteId = invitationsRespond[0]; - const invitation = invitations?.find((i) => i.id === firstInviteId); const redirectWorkspace = invitations?.find((i) => i.id === firstInviteId)?.workspace; updateUserProfile({ last_workspace_id: redirectWorkspace?.id }) .then(() => { diff --git a/apps/web/ce/components/analytics/use-analytics-tabs.tsx b/apps/web/ce/components/analytics/use-analytics-tabs.tsx index 03877975127..d022d74f0ff 100644 --- a/apps/web/ce/components/analytics/use-analytics-tabs.tsx +++ b/apps/web/ce/components/analytics/use-analytics-tabs.tsx @@ -8,7 +8,7 @@ import { useMemo } from "react"; import { useTranslation } from "@plane/i18n"; import { getAnalyticsTabs } from "./tabs"; -export const useAnalyticsTabs = (workspaceSlug: string) => { +export const useAnalyticsTabs = (_workspaceSlug: string) => { const { t } = useTranslation(); const analyticsTabs = useMemo(() => getAnalyticsTabs(t), [t]); diff --git a/apps/web/ce/components/automations/root.tsx b/apps/web/ce/components/automations/root.tsx index f36f36d3ce1..1baeeb8b0b2 100644 --- a/apps/web/ce/components/automations/root.tsx +++ b/apps/web/ce/components/automations/root.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React from "react"; export type TCustomAutomationsRootProps = { diff --git a/apps/web/ce/components/command-palette/modals/work-item-level.tsx b/apps/web/ce/components/command-palette/modals/work-item-level.tsx index cb9d8dc228c..fc83af463a3 100644 --- a/apps/web/ce/components/command-palette/modals/work-item-level.tsx +++ b/apps/web/ce/components/command-palette/modals/work-item-level.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { observer } from "mobx-react"; import { useParams } from "next/navigation"; // plane imports diff --git a/apps/web/ce/components/common/subscription/subscription-pill.tsx b/apps/web/ce/components/common/subscription/subscription-pill.tsx index f286b870a35..89efebe83be 100644 --- a/apps/web/ce/components/common/subscription/subscription-pill.tsx +++ b/apps/web/ce/components/common/subscription/subscription-pill.tsx @@ -10,6 +10,6 @@ type TProps = { workspace?: IWorkspace; }; -export function SubscriptionPill(props: TProps) { +export function SubscriptionPill(_props: TProps) { return <>; } diff --git a/apps/web/ce/components/cycles/active-cycle/root.tsx b/apps/web/ce/components/cycles/active-cycle/root.tsx index 7c15122e1e1..ab413b8b0a4 100644 --- a/apps/web/ce/components/cycles/active-cycle/root.tsx +++ b/apps/web/ce/components/cycles/active-cycle/root.tsx @@ -46,7 +46,7 @@ type ActiveCyclesComponentProps = { const ActiveCyclesComponent = observer(function ActiveCyclesComponent({ cycleId, activeCycle, - activeCycleResolvedPath, + activeCycleResolvedPath: _activeCycleResolvedPath, workspaceSlug, projectId, handleFiltersUpdate, diff --git a/apps/web/ce/components/cycles/additional-actions.tsx b/apps/web/ce/components/cycles/additional-actions.tsx index 843e9e51e9e..45bc7b5cd58 100644 --- a/apps/web/ce/components/cycles/additional-actions.tsx +++ b/apps/web/ce/components/cycles/additional-actions.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { observer } from "mobx-react"; type Props = { cycleId: string; diff --git a/apps/web/ce/components/cycles/analytics-sidebar/root.tsx b/apps/web/ce/components/cycles/analytics-sidebar/root.tsx index ce0865c4d4e..17501e01d8a 100644 --- a/apps/web/ce/components/cycles/analytics-sidebar/root.tsx +++ b/apps/web/ce/components/cycles/analytics-sidebar/root.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React from "react"; // components import { SidebarChart } from "./base"; diff --git a/apps/web/ce/components/de-dupe/de-dupe-button.tsx b/apps/web/ce/components/de-dupe/de-dupe-button.tsx index 2060f155661..cfeeeb82ad7 100644 --- a/apps/web/ce/components/de-dupe/de-dupe-button.tsx +++ b/apps/web/ce/components/de-dupe/de-dupe-button.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React from "react"; // local components @@ -15,7 +14,6 @@ type TDeDupeButtonRoot = { label: string; }; -export function DeDupeButtonRoot(props: TDeDupeButtonRoot) { - const { workspaceSlug, isDuplicateModalOpen, label, handleOnClick } = props; +export function DeDupeButtonRoot(_props: TDeDupeButtonRoot) { return <>; } diff --git a/apps/web/ce/components/de-dupe/duplicate-modal/root.tsx b/apps/web/ce/components/de-dupe/duplicate-modal/root.tsx index 60e3ec924c4..4afbdeca089 100644 --- a/apps/web/ce/components/de-dupe/duplicate-modal/root.tsx +++ b/apps/web/ce/components/de-dupe/duplicate-modal/root.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; // types import type { TDeDupeIssue } from "@plane/types"; @@ -14,7 +13,6 @@ type TDuplicateModalRootProps = { handleDuplicateIssueModal: (value: boolean) => void; }; -export function DuplicateModalRoot(props: TDuplicateModalRootProps) { - const { workspaceSlug, issues, handleDuplicateIssueModal } = props; +export function DuplicateModalRoot(_props: TDuplicateModalRootProps) { return <>; } diff --git a/apps/web/ce/components/de-dupe/duplicate-popover/root.tsx b/apps/web/ce/components/de-dupe/duplicate-popover/root.tsx index 51dfff897f2..146d6b4bc88 100644 --- a/apps/web/ce/components/de-dupe/duplicate-popover/root.tsx +++ b/apps/web/ce/components/de-dupe/duplicate-popover/root.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React from "react"; import { observer } from "mobx-react"; // types diff --git a/apps/web/ce/components/de-dupe/issue-block/button-label.tsx b/apps/web/ce/components/de-dupe/issue-block/button-label.tsx index 461187bd099..ae89c7797fb 100644 --- a/apps/web/ce/components/de-dupe/issue-block/button-label.tsx +++ b/apps/web/ce/components/de-dupe/issue-block/button-label.tsx @@ -4,14 +4,11 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; - type TDeDupeIssueButtonLabelProps = { isOpen: boolean; buttonLabel: string; }; -export function DeDupeIssueButtonLabel(props: TDeDupeIssueButtonLabelProps) { - const { isOpen, buttonLabel } = props; +export function DeDupeIssueButtonLabel(_props: TDeDupeIssueButtonLabelProps) { return <>; } diff --git a/apps/web/ce/components/epics/epic-modal/modal.tsx b/apps/web/ce/components/epics/epic-modal/modal.tsx index 14509d580d8..90d7c9fa34b 100644 --- a/apps/web/ce/components/epics/epic-modal/modal.tsx +++ b/apps/web/ce/components/epics/epic-modal/modal.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React from "react"; import type { TIssue } from "@plane/types"; @@ -22,6 +21,6 @@ export interface EpicModalProps { isProjectSelectionDisabled?: boolean; } -export function CreateUpdateEpicModal(props: EpicModalProps) { +export function CreateUpdateEpicModal(_props: EpicModalProps) { return <>; } diff --git a/apps/web/ce/components/estimates/inputs/time-input.tsx b/apps/web/ce/components/estimates/inputs/time-input.tsx index f210f0083ac..6eadf418380 100644 --- a/apps/web/ce/components/estimates/inputs/time-input.tsx +++ b/apps/web/ce/components/estimates/inputs/time-input.tsx @@ -4,8 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; - export type TEstimateTimeInputProps = { value?: number; handleEstimateInputValue: (value: string) => void; diff --git a/apps/web/ce/components/estimates/points/delete.tsx b/apps/web/ce/components/estimates/points/delete.tsx index f5969a9392a..c64ee12c1ae 100644 --- a/apps/web/ce/components/estimates/points/delete.tsx +++ b/apps/web/ce/components/estimates/points/delete.tsx @@ -4,8 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; - import type { TEstimatePointsObject, TEstimateSystemKeys, TEstimateTypeErrorObject } from "@plane/types"; export type TEstimatePointDelete = { diff --git a/apps/web/ce/components/estimates/update/modal.tsx b/apps/web/ce/components/estimates/update/modal.tsx index cfb67209771..e0600f32d39 100644 --- a/apps/web/ce/components/estimates/update/modal.tsx +++ b/apps/web/ce/components/estimates/update/modal.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { observer } from "mobx-react"; type TUpdateEstimateModal = { diff --git a/apps/web/ce/components/gantt-chart/blocks/blocks-list.tsx b/apps/web/ce/components/gantt-chart/blocks/blocks-list.tsx index 2c252ded637..fcb9d0936bd 100644 --- a/apps/web/ce/components/gantt-chart/blocks/blocks-list.tsx +++ b/apps/web/ce/components/gantt-chart/blocks/blocks-list.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; // import type { IBlockUpdateDependencyData } from "@plane/types"; import { GanttChartBlock } from "@/components/gantt-chart/blocks/block"; diff --git a/apps/web/ce/components/gantt-chart/dependency/blockDraggables/left-draggable.tsx b/apps/web/ce/components/gantt-chart/dependency/blockDraggables/left-draggable.tsx index 252e3317605..34a8aac7d4a 100644 --- a/apps/web/ce/components/gantt-chart/dependency/blockDraggables/left-draggable.tsx +++ b/apps/web/ce/components/gantt-chart/dependency/blockDraggables/left-draggable.tsx @@ -12,6 +12,6 @@ type LeftDependencyDraggableProps = { ganttContainerRef: RefObject; }; -export function LeftDependencyDraggable(props: LeftDependencyDraggableProps) { +export function LeftDependencyDraggable(_props: LeftDependencyDraggableProps) { return <>; } diff --git a/apps/web/ce/components/gantt-chart/dependency/blockDraggables/right-draggable.tsx b/apps/web/ce/components/gantt-chart/dependency/blockDraggables/right-draggable.tsx index 059702dd00c..d6badd067db 100644 --- a/apps/web/ce/components/gantt-chart/dependency/blockDraggables/right-draggable.tsx +++ b/apps/web/ce/components/gantt-chart/dependency/blockDraggables/right-draggable.tsx @@ -11,6 +11,6 @@ type RightDependencyDraggableProps = { block: IGanttBlock; ganttContainerRef: RefObject; }; -export function RightDependencyDraggable(props: RightDependencyDraggableProps) { +export function RightDependencyDraggable(_props: RightDependencyDraggableProps) { return <>; } diff --git a/apps/web/ce/components/gantt-chart/dependency/dependency-paths.tsx b/apps/web/ce/components/gantt-chart/dependency/dependency-paths.tsx index 92c531cfef0..6332a71cb25 100644 --- a/apps/web/ce/components/gantt-chart/dependency/dependency-paths.tsx +++ b/apps/web/ce/components/gantt-chart/dependency/dependency-paths.tsx @@ -4,12 +4,9 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; - type Props = { isEpic?: boolean; }; -export function TimelineDependencyPaths(props: Props) { - const { isEpic = false } = props; +export function TimelineDependencyPaths(_props: Props) { return <>; } diff --git a/apps/web/ce/components/inbox/source-pill.tsx b/apps/web/ce/components/inbox/source-pill.tsx index a9f23030883..6d7763f8ba9 100644 --- a/apps/web/ce/components/inbox/source-pill.tsx +++ b/apps/web/ce/components/inbox/source-pill.tsx @@ -10,6 +10,6 @@ export type TInboxSourcePill = { source: EInboxIssueSource; }; -export function InboxSourcePill(props: TInboxSourcePill) { +export function InboxSourcePill(_props: TInboxSourcePill) { return <>; } diff --git a/apps/web/ce/components/issues/filters/issue-types.tsx b/apps/web/ce/components/issues/filters/issue-types.tsx index 8c9bc6f0603..db7b06f77f0 100644 --- a/apps/web/ce/components/issues/filters/issue-types.tsx +++ b/apps/web/ce/components/issues/filters/issue-types.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type React from "react"; import { observer } from "mobx-react"; type Props = { diff --git a/apps/web/ce/components/issues/filters/team-project.tsx b/apps/web/ce/components/issues/filters/team-project.tsx index e231da3d15b..f838f4c9481 100644 --- a/apps/web/ce/components/issues/filters/team-project.tsx +++ b/apps/web/ce/components/issues/filters/team-project.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type React from "react"; import { observer } from "mobx-react"; type Props = { diff --git a/apps/web/ce/components/issues/issue-detail-widgets/action-buttons.tsx b/apps/web/ce/components/issues/issue-detail-widgets/action-buttons.tsx index d1e200e2224..4c17d1be123 100644 --- a/apps/web/ce/components/issues/issue-detail-widgets/action-buttons.tsx +++ b/apps/web/ce/components/issues/issue-detail-widgets/action-buttons.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; // plane types import type { TIssueServiceType, TWorkItemWidgets } from "@plane/types"; diff --git a/apps/web/ce/components/issues/issue-detail-widgets/collapsibles.tsx b/apps/web/ce/components/issues/issue-detail-widgets/collapsibles.tsx index 02cf4611998..626107cdb2b 100644 --- a/apps/web/ce/components/issues/issue-detail-widgets/collapsibles.tsx +++ b/apps/web/ce/components/issues/issue-detail-widgets/collapsibles.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; // plane types import type { TIssueServiceType, TWorkItemWidgets } from "@plane/types"; diff --git a/apps/web/ce/components/issues/issue-detail-widgets/modals.tsx b/apps/web/ce/components/issues/issue-detail-widgets/modals.tsx index 8be9058da3d..9356b772706 100644 --- a/apps/web/ce/components/issues/issue-detail-widgets/modals.tsx +++ b/apps/web/ce/components/issues/issue-detail-widgets/modals.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; // plane types import type { TIssueServiceType, TWorkItemWidgets } from "@plane/types"; diff --git a/apps/web/ce/components/issues/issue-details/additional-activity-root.tsx b/apps/web/ce/components/issues/issue-details/additional-activity-root.tsx index 345811e553d..95804501abb 100644 --- a/apps/web/ce/components/issues/issue-details/additional-activity-root.tsx +++ b/apps/web/ce/components/issues/issue-details/additional-activity-root.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { observer } from "mobx-react"; export type TAdditionalActivityRoot = { diff --git a/apps/web/ce/components/issues/issue-details/additional-properties.tsx b/apps/web/ce/components/issues/issue-details/additional-properties.tsx index 7f04dde779a..a169a8863a5 100644 --- a/apps/web/ce/components/issues/issue-details/additional-properties.tsx +++ b/apps/web/ce/components/issues/issue-details/additional-properties.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React from "react"; // plane imports diff --git a/apps/web/ce/components/issues/issue-details/issue-creator.tsx b/apps/web/ce/components/issues/issue-details/issue-creator.tsx index 2c25079ad04..56e8e74938d 100644 --- a/apps/web/ce/components/issues/issue-details/issue-creator.tsx +++ b/apps/web/ce/components/issues/issue-details/issue-creator.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import Link from "next/link"; // hooks import { useIssueDetail } from "@/hooks/store/use-issue-detail"; diff --git a/apps/web/ce/components/issues/issue-details/issue-properties-activity/root.tsx b/apps/web/ce/components/issues/issue-details/issue-properties-activity/root.tsx index db97243b13d..c6a50531ee7 100644 --- a/apps/web/ce/components/issues/issue-details/issue-properties-activity/root.tsx +++ b/apps/web/ce/components/issues/issue-details/issue-properties-activity/root.tsx @@ -4,8 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; - type TIssueAdditionalPropertiesActivity = { activityId: string; ends: "top" | "bottom" | undefined; diff --git a/apps/web/ce/components/issues/issue-details/issue-type-activity.tsx b/apps/web/ce/components/issues/issue-details/issue-type-activity.tsx index d85155aaf1b..08b499f823b 100644 --- a/apps/web/ce/components/issues/issue-details/issue-type-activity.tsx +++ b/apps/web/ce/components/issues/issue-details/issue-type-activity.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { observer } from "mobx-react"; export type TIssueTypeActivity = { activityId: string; showIssue?: boolean; ends: "top" | "bottom" | undefined }; diff --git a/apps/web/ce/components/issues/issue-details/parent-select-root.tsx b/apps/web/ce/components/issues/issue-details/parent-select-root.tsx index 2a1d2b51d09..301b31a9e22 100644 --- a/apps/web/ce/components/issues/issue-details/parent-select-root.tsx +++ b/apps/web/ce/components/issues/issue-details/parent-select-root.tsx @@ -47,7 +47,7 @@ export const IssueParentSelectRoot = observer(function IssueParentSelectRoot(pro await issueOperations.fetch(workspaceSlug, projectId, issueId, false); if (_issueId) await fetchSubIssues(workspaceSlug, projectId, _issueId); toggleParentIssueModal(null); - } catch (error) { + } catch (_error) { console.error("something went wrong while fetching the issue"); } }; @@ -63,7 +63,7 @@ export const IssueParentSelectRoot = observer(function IssueParentSelectRoot(pro await removeSubIssue(workspaceSlug, projectId, parentIssueId, issueId); await fetchSubIssues(workspaceSlug, projectId, parentIssueId); setSubIssueHelpers(parentIssueId, "issue_loader", issueId); - } catch (error) { + } catch (_error) { setToast({ type: TOAST_TYPE.ERROR, title: t("common.error.label"), diff --git a/apps/web/ce/components/issues/issue-layouts/additional-properties.tsx b/apps/web/ce/components/issues/issue-layouts/additional-properties.tsx index 37a5505d447..35c62fed4ac 100644 --- a/apps/web/ce/components/issues/issue-layouts/additional-properties.tsx +++ b/apps/web/ce/components/issues/issue-layouts/additional-properties.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React from "react"; import type { IIssueDisplayProperties, TIssue } from "@plane/types"; @@ -13,6 +12,6 @@ export type TWorkItemLayoutAdditionalProperties = { issue: TIssue; }; -export function WorkItemLayoutAdditionalProperties(props: TWorkItemLayoutAdditionalProperties) { +export function WorkItemLayoutAdditionalProperties(_props: TWorkItemLayoutAdditionalProperties) { return <>; } diff --git a/apps/web/ce/components/issues/issue-layouts/issue-stats.tsx b/apps/web/ce/components/issues/issue-layouts/issue-stats.tsx index 4ff1eed5552..fc6fbc0a024 100644 --- a/apps/web/ce/components/issues/issue-layouts/issue-stats.tsx +++ b/apps/web/ce/components/issues/issue-layouts/issue-stats.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React from "react"; type Props = { @@ -15,6 +14,6 @@ type Props = { showLabel?: boolean; }; -export function IssueStats(props: Props) { +export function IssueStats(_props: Props) { return <>; } diff --git a/apps/web/ce/components/issues/issue-layouts/quick-action-dropdowns/duplicate-modal.tsx b/apps/web/ce/components/issues/issue-layouts/quick-action-dropdowns/duplicate-modal.tsx index 4c09712dc4f..b8b142f7408 100644 --- a/apps/web/ce/components/issues/issue-layouts/quick-action-dropdowns/duplicate-modal.tsx +++ b/apps/web/ce/components/issues/issue-layouts/quick-action-dropdowns/duplicate-modal.tsx @@ -4,8 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; - type TDuplicateWorkItemModalProps = { workItemId: string; onClose: () => void; diff --git a/apps/web/ce/components/issues/issue-modal/modal-additional-properties.tsx b/apps/web/ce/components/issues/issue-modal/modal-additional-properties.tsx index 4daec9f8b6c..0255407ae68 100644 --- a/apps/web/ce/components/issues/issue-modal/modal-additional-properties.tsx +++ b/apps/web/ce/components/issues/issue-modal/modal-additional-properties.tsx @@ -4,8 +4,6 @@ * See the LICENSE file for details. */ -import type React from "react"; - export type TWorkItemModalAdditionalPropertiesProps = { isDraft?: boolean; projectId: string | null; diff --git a/apps/web/ce/components/issues/worklog/activity/filter-root.tsx b/apps/web/ce/components/issues/worklog/activity/filter-root.tsx index 2c40285fe00..623980ffe00 100644 --- a/apps/web/ce/components/issues/worklog/activity/filter-root.tsx +++ b/apps/web/ce/components/issues/worklog/activity/filter-root.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; // plane imports import type { TActivityFilters, TActivityFilterOption } from "@plane/constants"; import { ACTIVITY_FILTER_TYPE_OPTIONS } from "@plane/constants"; diff --git a/apps/web/ce/components/issues/worklog/activity/root.tsx b/apps/web/ce/components/issues/worklog/activity/root.tsx index d885232588d..3b3d33729b2 100644 --- a/apps/web/ce/components/issues/worklog/activity/root.tsx +++ b/apps/web/ce/components/issues/worklog/activity/root.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import type { TIssueActivityComment } from "@plane/types"; type TIssueActivityWorklog = { diff --git a/apps/web/ce/components/issues/worklog/activity/worklog-create-button.tsx b/apps/web/ce/components/issues/worklog/activity/worklog-create-button.tsx index f9e13ccdf10..5ded8d02bb2 100644 --- a/apps/web/ce/components/issues/worklog/activity/worklog-create-button.tsx +++ b/apps/web/ce/components/issues/worklog/activity/worklog-create-button.tsx @@ -4,8 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; - type TIssueActivityWorklogCreateButton = { workspaceSlug: string; projectId: string; diff --git a/apps/web/ce/components/issues/worklog/property/root.tsx b/apps/web/ce/components/issues/worklog/property/root.tsx index 151be1460ed..7eff7d6a8a0 100644 --- a/apps/web/ce/components/issues/worklog/property/root.tsx +++ b/apps/web/ce/components/issues/worklog/property/root.tsx @@ -4,8 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; - type TIssueWorklogProperty = { workspaceSlug: string; projectId: string; diff --git a/apps/web/ce/components/onboarding/tour/root.tsx b/apps/web/ce/components/onboarding/tour/root.tsx index 46100a8c74b..6f879e3922e 100644 --- a/apps/web/ce/components/onboarding/tour/root.tsx +++ b/apps/web/ce/components/onboarding/tour/root.tsx @@ -7,7 +7,6 @@ import { useState } from "react"; import { observer } from "mobx-react"; // plane imports -import { PRODUCT_TOUR_TRACKER_ELEMENTS } from "@plane/constants"; import { Button } from "@plane/propel/button"; import { CloseIcon, PlaneLockup } from "@plane/propel/icons"; // assets diff --git a/apps/web/ce/components/pages/modals/modals.tsx b/apps/web/ce/components/pages/modals/modals.tsx index 0b36ce33f2e..84952fbf400 100644 --- a/apps/web/ce/components/pages/modals/modals.tsx +++ b/apps/web/ce/components/pages/modals/modals.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type React from "react"; import { observer } from "mobx-react"; // components import type { EPageStoreType } from "@/plane-web/hooks/store"; @@ -16,6 +15,6 @@ export type TPageModalsProps = { storeType: EPageStoreType; }; -export const PageModals = observer(function PageModals(props: TPageModalsProps) { +export const PageModals = observer(function PageModals(_props: TPageModalsProps) { return null; }); diff --git a/apps/web/ce/components/sidebar/project-navigation-root.tsx b/apps/web/ce/components/sidebar/project-navigation-root.tsx index 51463851e30..fd5249c01fc 100644 --- a/apps/web/ce/components/sidebar/project-navigation-root.tsx +++ b/apps/web/ce/components/sidebar/project-navigation-root.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; // components import { ProjectNavigation } from "@/components/workspace/sidebar/project-navigation"; diff --git a/apps/web/ce/components/views/helper.tsx b/apps/web/ce/components/views/helper.tsx index e725632ec00..dda72e6ed04 100644 --- a/apps/web/ce/components/views/helper.tsx +++ b/apps/web/ce/components/views/helper.tsx @@ -13,11 +13,11 @@ export type TLayoutSelectionProps = { workspaceSlug: string; }; -export function GlobalViewLayoutSelection(props: TLayoutSelectionProps) { +export function GlobalViewLayoutSelection(_props: TLayoutSelectionProps) { return <>; } -export function WorkspaceAdditionalLayouts(props: TWorkspaceLayoutProps) { +export function WorkspaceAdditionalLayouts(_props: TWorkspaceLayoutProps) { return <>; } diff --git a/apps/web/ce/components/workspace-notifications/notification-card/root.tsx b/apps/web/ce/components/workspace-notifications/notification-card/root.tsx index d6e9afafb2d..2dcc706bf85 100644 --- a/apps/web/ce/components/workspace-notifications/notification-card/root.tsx +++ b/apps/web/ce/components/workspace-notifications/notification-card/root.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { observer } from "mobx-react"; // plane imports import { ENotificationLoader, ENotificationQueryParamType } from "@plane/constants"; diff --git a/apps/web/ce/components/workspace/sidebar/sidebar-item.tsx b/apps/web/ce/components/workspace/sidebar/sidebar-item.tsx index a1fb30bfc4e..c6fbc8f9fec 100644 --- a/apps/web/ce/components/workspace/sidebar/sidebar-item.tsx +++ b/apps/web/ce/components/workspace/sidebar/sidebar-item.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import type { IWorkspaceSidebarNavigationItem } from "@plane/constants"; import { SidebarItemBase } from "@/components/workspace/sidebar/sidebar-item"; diff --git a/apps/web/ce/components/workspace/upgrade-badge.tsx b/apps/web/ce/components/workspace/upgrade-badge.tsx index 039ac280af2..5bddd913d92 100644 --- a/apps/web/ce/components/workspace/upgrade-badge.tsx +++ b/apps/web/ce/components/workspace/upgrade-badge.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; // helpers import { useTranslation } from "@plane/i18n"; import { cn } from "@plane/utils"; diff --git a/apps/web/ce/hooks/use-debounced-duplicate-issues.tsx b/apps/web/ce/hooks/use-debounced-duplicate-issues.tsx index f84f4d2be79..32459909792 100644 --- a/apps/web/ce/hooks/use-debounced-duplicate-issues.tsx +++ b/apps/web/ce/hooks/use-debounced-duplicate-issues.tsx @@ -7,10 +7,10 @@ import type { TDeDupeIssue } from "@plane/types"; export const useDebouncedDuplicateIssues = ( - workspaceSlug: string | undefined, - workspaceId: string | undefined, - projectId: string | undefined, - formData: { name: string | undefined; description_html?: string | undefined; issueId?: string | undefined } + _workspaceSlug: string | undefined, + _workspaceId: string | undefined, + _projectId: string | undefined, + _formData: { name: string | undefined; description_html?: string | undefined; issueId?: string | undefined } ) => { const duplicateIssues: TDeDupeIssue[] = []; diff --git a/apps/web/ce/hooks/use-issue-properties.tsx b/apps/web/ce/hooks/use-issue-properties.tsx index 4eff976d404..310fd725e4c 100644 --- a/apps/web/ce/hooks/use-issue-properties.tsx +++ b/apps/web/ce/hooks/use-issue-properties.tsx @@ -10,7 +10,7 @@ export const useWorkItemProperties = ( projectId: string | null | undefined, workspaceSlug: string | null | undefined, workItemId: string | null | undefined, - issueServiceType: TIssueServiceType + _issueServiceType: TIssueServiceType ) => { if (!projectId || !workspaceSlug || !workItemId) return; }; diff --git a/apps/web/ce/store/issue/helpers/base-issue-store.ts b/apps/web/ce/store/issue/helpers/base-issue-store.ts index 59d6d7b6a0a..236235a8256 100644 --- a/apps/web/ce/store/issue/helpers/base-issue-store.ts +++ b/apps/web/ce/store/issue/helpers/base-issue-store.ts @@ -7,4 +7,4 @@ import type { TIssue } from "@plane/types"; import { getIssueIds } from "@/store/issue/helpers/base-issues-utils"; -export const workItemSortWithOrderByExtended = (array: TIssue[], key?: string) => getIssueIds(array); +export const workItemSortWithOrderByExtended = (array: TIssue[], _key?: string) => getIssueIds(array); diff --git a/apps/web/ce/store/issue/helpers/base-issue.store.ts b/apps/web/ce/store/issue/helpers/base-issue.store.ts index 59d6d7b6a0a..236235a8256 100644 --- a/apps/web/ce/store/issue/helpers/base-issue.store.ts +++ b/apps/web/ce/store/issue/helpers/base-issue.store.ts @@ -7,4 +7,4 @@ import type { TIssue } from "@plane/types"; import { getIssueIds } from "@/store/issue/helpers/base-issues-utils"; -export const workItemSortWithOrderByExtended = (array: TIssue[], key?: string) => getIssueIds(array); +export const workItemSortWithOrderByExtended = (array: TIssue[], _key?: string) => getIssueIds(array); diff --git a/apps/web/ce/store/timeline/base-timeline.store.ts b/apps/web/ce/store/timeline/base-timeline.store.ts index b1c70f99407..b97b2ff7e14 100644 --- a/apps/web/ce/store/timeline/base-timeline.store.ts +++ b/apps/web/ce/store/timeline/base-timeline.store.ts @@ -342,5 +342,5 @@ export class BaseTimeLineStore implements IBaseTimelineStore { }); // Dummy method to return if the current Block's dependency is being dragged - getIsCurrentDependencyDragging = computedFn((blockId: string) => false); + getIsCurrentDependencyDragging = computedFn((_blockId: string) => false); } diff --git a/packages/editor/src/core/components/editors/editor-container.tsx b/packages/editor/src/core/components/editors/editor-container.tsx index 1ab8de8d09b..b9631cbfbd0 100644 --- a/packages/editor/src/core/components/editors/editor-container.tsx +++ b/packages/editor/src/core/components/editors/editor-container.tsx @@ -6,7 +6,7 @@ import type { HocuspocusProvider } from "@hocuspocus/provider"; import type { Editor } from "@tiptap/react"; -import type { FC, ReactNode } from "react"; +import type { ReactNode } from "react"; import { useCallback, useEffect, useRef } from "react"; // plane utils import { cn } from "@plane/utils"; diff --git a/packages/editor/src/core/components/editors/link-view-container.tsx b/packages/editor/src/core/components/editors/link-view-container.tsx index 6fd3a61d0d5..9b07c63a73f 100644 --- a/packages/editor/src/core/components/editors/link-view-container.tsx +++ b/packages/editor/src/core/components/editors/link-view-container.tsx @@ -7,7 +7,6 @@ import { autoUpdate, flip, hide, shift, useDismiss, useFloating, useInteractions } from "@floating-ui/react"; import type { Editor } from "@tiptap/react"; import { useEditorState } from "@tiptap/react"; -import type { FC } from "react"; import { useCallback, useEffect, useRef, useState } from "react"; // components diff --git a/packages/editor/src/core/components/menus/block-menu.tsx b/packages/editor/src/core/components/menus/block-menu.tsx index 367f741b56d..c3dff0d20e9 100644 --- a/packages/editor/src/core/components/menus/block-menu.tsx +++ b/packages/editor/src/core/components/menus/block-menu.tsx @@ -42,7 +42,7 @@ export type BlockMenuOption = { }; export function BlockMenu(props: Props) { - const { editor, workItemIdentifier } = props; + const { editor } = props; const [isOpen, setIsOpen] = useState(false); const [isAnimatedIn, setIsAnimatedIn] = useState(false); const menuRef = useRef(null); diff --git a/packages/editor/src/core/components/menus/bubble-menu/color-selector.tsx b/packages/editor/src/core/components/menus/bubble-menu/color-selector.tsx index cc1c2a8bb36..d8151b8b61c 100644 --- a/packages/editor/src/core/components/menus/bubble-menu/color-selector.tsx +++ b/packages/editor/src/core/components/menus/bubble-menu/color-selector.tsx @@ -7,7 +7,6 @@ import type { Editor } from "@tiptap/react"; import { ALargeSmall, Ban } from "lucide-react"; import { useMemo } from "react"; -import type { FC } from "react"; // plane utils import { cn } from "@plane/utils"; // constants diff --git a/packages/editor/src/core/components/menus/bubble-menu/link-selector.tsx b/packages/editor/src/core/components/menus/bubble-menu/link-selector.tsx index 46491412433..0745059389d 100644 --- a/packages/editor/src/core/components/menus/bubble-menu/link-selector.tsx +++ b/packages/editor/src/core/components/menus/bubble-menu/link-selector.tsx @@ -6,7 +6,6 @@ import type { Editor } from "@tiptap/core"; -import type { FC } from "react"; import { useCallback, useRef, useState } from "react"; import { LinkIcon, TrashIcon, CheckIcon } from "@plane/propel/icons"; // plane imports diff --git a/packages/editor/src/core/components/menus/bubble-menu/node-selector.tsx b/packages/editor/src/core/components/menus/bubble-menu/node-selector.tsx index 20229ace53a..e31fe563591 100644 --- a/packages/editor/src/core/components/menus/bubble-menu/node-selector.tsx +++ b/packages/editor/src/core/components/menus/bubble-menu/node-selector.tsx @@ -6,7 +6,6 @@ import type { Editor } from "@tiptap/react"; -import type { FC } from "react"; import { CheckIcon, ChevronDownIcon } from "@plane/propel/icons"; // plane utils import { cn } from "@plane/utils"; diff --git a/packages/editor/src/core/components/menus/bubble-menu/root.tsx b/packages/editor/src/core/components/menus/bubble-menu/root.tsx index 8aa1d90a664..0173275142e 100644 --- a/packages/editor/src/core/components/menus/bubble-menu/root.tsx +++ b/packages/editor/src/core/components/menus/bubble-menu/root.tsx @@ -8,7 +8,6 @@ import { isNodeSelection } from "@tiptap/core"; import type { Editor } from "@tiptap/core"; import { BubbleMenu, useEditorState } from "@tiptap/react"; import type { BubbleMenuProps } from "@tiptap/react"; -import type { FC } from "react"; import { useEffect, useState, useRef } from "react"; // plane utils import { cn } from "@plane/utils"; diff --git a/packages/editor/src/core/extensions/custom-image/components/block.tsx b/packages/editor/src/core/extensions/custom-image/components/block.tsx index 4d6793a0793..acb3e260c06 100644 --- a/packages/editor/src/core/extensions/custom-image/components/block.tsx +++ b/packages/editor/src/core/extensions/custom-image/components/block.tsx @@ -252,7 +252,7 @@ export function CustomImageBlock(props: CustomImageBlockProps) { src={displayedImageSrc} alt="" onLoad={handleImageLoad} - onError={(e) => + onError={(_e) => void (async () => { // for old image extension this command doesn't exist or if the image failed to load for the first time if (!extension.options.restoreImage || hasTriedRestoringImageOnce) { diff --git a/packages/editor/src/core/hooks/use-collaborative-editor.ts b/packages/editor/src/core/hooks/use-collaborative-editor.ts index 70fc1ebd704..8815c668333 100644 --- a/packages/editor/src/core/hooks/use-collaborative-editor.ts +++ b/packages/editor/src/core/hooks/use-collaborative-editor.ts @@ -65,7 +65,6 @@ export const useCollaborativeEditor = (props: UseCollaborativeEditorArgs) => { titleRef, updatePageProperties, user, - actions, } = props; const { mainNavigationExtension, titleNavigationExtension, setMainEditor, setTitleEditor } = useEditorNavigation(); diff --git a/packages/editor/src/core/props.ts b/packages/editor/src/core/props.ts index 4eb4dad50ab..51f9b937a4f 100644 --- a/packages/editor/src/core/props.ts +++ b/packages/editor/src/core/props.ts @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import { DOMParser } from "@tiptap/pm/model"; import type { EditorProps } from "@tiptap/pm/view"; // plane utils import { cn } from "@plane/utils"; diff --git a/packages/editor/src/core/types/config.ts b/packages/editor/src/core/types/config.ts index 065e4177e1f..74fff4dfe01 100644 --- a/packages/editor/src/core/types/config.ts +++ b/packages/editor/src/core/types/config.ts @@ -5,7 +5,6 @@ */ // plane imports -import type { TWebhookConnectionQueryParams } from "@plane/types"; import type { TExtendedFileHandler } from "@/plane-editor/types/config"; export type TFileHandler = { diff --git a/packages/propel/src/button/helper.tsx b/packages/propel/src/button/helper.tsx index 9e332d55f0b..18130b113c9 100644 --- a/packages/propel/src/button/helper.tsx +++ b/packages/propel/src/button/helper.tsx @@ -17,9 +17,9 @@ export const buttonVariants = cva( "error-fill": "bg-danger-primary text-on-color hover:bg-danger-primary-hover active:bg-danger-primary-active disabled:bg-layer-disabled disabled:text-disabled", "error-outline": - "bg-layer-2 hover:bg-danger-subtle active:bg-danger-subtle-hover disabled:bg-layer-2 text-danger-secondary disabled:text-disabled border border-danger-strong disabled:border-subtle-1", + "border border-danger-strong bg-layer-2 text-danger-secondary hover:bg-danger-subtle active:bg-danger-subtle-hover disabled:border-subtle-1 disabled:bg-layer-2 disabled:text-disabled", secondary: - "bg-layer-2 hover:bg-layer-2-hover active:bg-layer-2-active disabled:bg-layer-transparent text-secondary disabled:text-disabled border border-strong disabled:border-subtle-1 shadow-raised-100", + "border border-strong bg-layer-2 text-secondary shadow-raised-100 hover:bg-layer-2-hover active:bg-layer-2-active disabled:border-subtle-1 disabled:bg-layer-transparent disabled:text-disabled", tertiary: "bg-layer-3 text-secondary hover:bg-layer-3-hover active:bg-layer-3-active disabled:bg-layer-transparent disabled:text-disabled", ghost: diff --git a/packages/propel/src/tab-navigation/tab-navigation-list.tsx b/packages/propel/src/tab-navigation/tab-navigation-list.tsx index aa3f5793900..d4a7c98f060 100644 --- a/packages/propel/src/tab-navigation/tab-navigation-list.tsx +++ b/packages/propel/src/tab-navigation/tab-navigation-list.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { LayoutGroup } from "framer-motion"; import { cn } from "../utils"; import type { TTabNavigationListProps } from "./tab-navigation-types"; diff --git a/packages/ui/src/collapsible/collapsible-button.tsx b/packages/ui/src/collapsible/collapsible-button.tsx index 780087cbe6c..c2bb54c86ed 100644 --- a/packages/ui/src/collapsible/collapsible-button.tsx +++ b/packages/ui/src/collapsible/collapsible-button.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React from "react"; import type { ISvgIcons } from "@plane/propel/icons"; import { DropdownIcon } from "@plane/propel/icons"; diff --git a/packages/ui/src/dropdown/common/options.tsx b/packages/ui/src/dropdown/common/options.tsx index d37a2ea1ebd..fb8a1e55fba 100644 --- a/packages/ui/src/dropdown/common/options.tsx +++ b/packages/ui/src/dropdown/common/options.tsx @@ -28,7 +28,6 @@ export function DropdownOptions(props: IMultiSelectDropdownOptions | ISingleSele keyExtractor, options, handleClose, - value, renderItem, loader, isMobile = false, diff --git a/packages/ui/src/dropdown/multi-select.tsx b/packages/ui/src/dropdown/multi-select.tsx index d7a9cf221d2..ba3f3ea242f 100644 --- a/packages/ui/src/dropdown/multi-select.tsx +++ b/packages/ui/src/dropdown/multi-select.tsx @@ -6,7 +6,6 @@ import { Combobox } from "@headlessui/react"; import { sortBy } from "lodash-es"; -import type { FC } from "react"; import React, { useMemo, useRef, useState } from "react"; import { usePopper } from "react-popper"; // plane imports diff --git a/packages/ui/src/dropdown/single-select.tsx b/packages/ui/src/dropdown/single-select.tsx index cb960c92497..4c16c4c69d1 100644 --- a/packages/ui/src/dropdown/single-select.tsx +++ b/packages/ui/src/dropdown/single-select.tsx @@ -6,7 +6,6 @@ import { Combobox } from "@headlessui/react"; import { sortBy } from "lodash-es"; -import type { FC } from "react"; import React, { useMemo, useRef, useState } from "react"; import { usePopper } from "react-popper"; // plane imports diff --git a/packages/ui/src/link/block.tsx b/packages/ui/src/link/block.tsx index 1398b4adc73..6d50522f86e 100644 --- a/packages/ui/src/link/block.tsx +++ b/packages/ui/src/link/block.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React from "react"; // plane utils import { calculateTimeAgo, cn, getIconForLink } from "@plane/utils"; diff --git a/packages/ui/src/progress/radial-progress.tsx b/packages/ui/src/progress/radial-progress.tsx index 2addbe11160..5f8ebb37d4f 100644 --- a/packages/ui/src/progress/radial-progress.tsx +++ b/packages/ui/src/progress/radial-progress.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React, { useState, useEffect } from "react"; interface IRadialProgressBar { diff --git a/packages/ui/src/scroll-area.tsx b/packages/ui/src/scroll-area.tsx index 76791d9fba3..4ce2a1edba1 100644 --- a/packages/ui/src/scroll-area.tsx +++ b/packages/ui/src/scroll-area.tsx @@ -5,7 +5,6 @@ */ import * as RadixScrollArea from "@radix-ui/react-scroll-area"; -import type { FC } from "react"; import React from "react"; import { cn } from "./utils"; diff --git a/packages/ui/src/tabs/tabs.tsx b/packages/ui/src/tabs/tabs.tsx index 009f022830e..ccd2337522a 100644 --- a/packages/ui/src/tabs/tabs.tsx +++ b/packages/ui/src/tabs/tabs.tsx @@ -5,7 +5,6 @@ */ import { Tab } from "@headlessui/react"; -import type { FC } from "react"; import React, { Fragment, useEffect, useState } from "react"; // helpers import { useLocalStorage } from "@plane/hooks"; diff --git a/packages/utils/src/url.ts b/packages/utils/src/url.ts index 29268a156fc..522a626297c 100644 --- a/packages/utils/src/url.ts +++ b/packages/utils/src/url.ts @@ -261,7 +261,7 @@ export function extractURLComponents(url: URL | string): IURLComponents | undefi } return undefined; - } catch (error) { + } catch (_error) { return undefined; } } @@ -323,7 +323,7 @@ export function isValidNextPath(url: string): boolean { ]; return !maliciousPatterns.some((pattern) => pattern.test(pathname)); - } catch (error) { + } catch (_error) { // If URL constructor fails, it's an invalid path return false; } From 04d4490293b5a49996dcc93c72977fb4766295f9 Mon Sep 17 00:00:00 2001 From: darkingtail <51188676+darkingtail@users.noreply.github.com> Date: Wed, 25 Mar 2026 04:18:01 +0800 Subject: [PATCH 21/62] =?UTF-8?q?fix:=20remove=20unused=20imports=20and=20?= =?UTF-8?q?variables=20(part=202=20=E2=80=94=20web/core=20non-issues)=20(#?= =?UTF-8?q?8752)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: remove unused imports and variables (part 2) Resolve oxlint no-unused-vars warnings in apps/web/core/ (excluding components/issues/). * fix: resolve CI check failures * fix: resolve check:types failures --- .../components/account/auth-forms/email.tsx | 2 +- .../account/auth-forms/password.tsx | 2 +- .../account/auth-forms/unique-code.tsx | 2 +- .../analytics/analytics-section-wrapper.tsx | 2 +- .../analytics/insight-table/data-table.tsx | 4 +- .../analytics/work-items/priority-chart.tsx | 1 + .../work-items/workitems-insight-table.tsx | 1 + .../components/archives/archive-tabs-list.tsx | 1 - .../components/comments/comment-create.tsx | 1 - .../components/comments/comment-reaction.tsx | 2 - .../common/activity/activity-item.tsx | 3 +- .../core/components/common/activity/user.tsx | 1 - .../web/core/components/common/count-chip.tsx | 1 - apps/web/core/components/common/pro-icon.tsx | 1 - .../core/components/core/list/list-root.tsx | 1 - .../components/core/theme/theme-switch.tsx | 1 - .../cycles/active-cycle/cycle-stats.tsx | 1 - .../cycles/active-cycle/productivity.tsx | 1 - .../cycles/active-cycle/progress.tsx | 1 - .../analytics-sidebar/issue-progress.tsx | 1 - .../analytics-sidebar/sidebar-details.tsx | 1 - .../analytics-sidebar/sidebar-header.tsx | 2 +- .../cycles/archived-cycles/view.tsx | 1 - .../core/components/cycles/cycles-view.tsx | 1 - .../cycles/list/cycle-list-group-header.tsx | 1 - .../list/cycle-list-project-group-header.tsx | 1 - apps/web/core/components/cycles/list/root.tsx | 1 - apps/web/core/components/cycles/modal.tsx | 4 +- .../empty-state/section-empty-state-root.tsx | 1 - .../components/estimates/create/modal.tsx | 1 - .../components/estimates/delete/modal.tsx | 2 +- .../estimates/estimate-disable-switch.tsx | 2 +- .../components/estimates/estimate-list.tsx | 1 - .../components/estimates/estimate-search.tsx | 1 - .../estimates/inputs/number-input.tsx | 1 - .../core/components/estimates/inputs/root.tsx | 1 - .../estimates/inputs/text-input.tsx | 1 - .../components/estimates/loader-screen.tsx | 1 - .../estimates/points/create-root.tsx | 2 +- .../components/estimates/points/create.tsx | 6 --- .../components/estimates/points/preview.tsx | 1 - .../core/components/exporter/export-form.tsx | 2 +- .../components/exporter/single-export.tsx | 1 - .../components/gantt-chart/chart/root.tsx | 1 - apps/web/core/components/gantt-chart/root.tsx | 1 - .../core/components/home/user-greetings.tsx | 1 - .../links/create-update-link-modal.tsx | 1 - .../components/home/widgets/links/links.tsx | 1 - .../components/home/widgets/manage/index.tsx | 1 - .../manage/widget-item-drag-handle.tsx | 1 - .../home/widgets/manage/widget-item.tsx | 3 +- .../home/widgets/recents/filters.tsx | 1 - .../inbox/content/inbox-issue-header.tsx | 1 - .../components/inbox/content/issue-root.tsx | 2 +- .../inbox-filter/applied-filters/date.tsx | 1 - .../inbox-filter/applied-filters/label.tsx | 1 - .../inbox-filter/applied-filters/member.tsx | 1 - .../inbox-filter/applied-filters/priority.tsx | 1 - .../inbox-filter/applied-filters/root.tsx | 1 - .../inbox-filter/applied-filters/state.tsx | 1 - .../inbox-filter/applied-filters/status.tsx | 1 - .../inbox/inbox-filter/filters/date.tsx | 1 - .../inbox-filter/filters/filter-selection.tsx | 4 -- .../inbox/inbox-filter/filters/labels.tsx | 1 - .../inbox/inbox-filter/filters/members.tsx | 1 - .../inbox/inbox-filter/filters/priority.tsx | 1 - .../inbox/inbox-filter/filters/state.tsx | 1 - .../inbox/inbox-filter/filters/status.tsx | 1 - .../components/inbox/inbox-filter/root.tsx | 1 - .../inbox/inbox-filter/sorting/order-by.tsx | 1 - .../modals/create-modal/issue-description.tsx | 2 +- .../modals/create-modal/issue-properties.tsx | 1 - .../inbox/modals/create-modal/issue-title.tsx | 1 - .../inbox/modals/create-modal/modal.tsx | 1 - .../inbox/sidebar/inbox-list-item.tsx | 2 +- .../components/inbox/sidebar/inbox-list.tsx | 1 - .../components/instance/maintenance-view.tsx | 1 - .../labels/create-update-label-inline.tsx | 6 +-- .../analytics-sidebar/issue-progress.tsx | 3 +- .../modules/archived-modules/header.tsx | 1 - .../modules/archived-modules/view.tsx | 1 - .../modules/links/create-update-modal.tsx | 1 - apps/web/core/components/modules/modal.tsx | 4 +- .../modules/module-list-item-action.tsx | 9 +--- .../modules/module-status-dropdown.tsx | 1 - .../components/modules/module-view-header.tsx | 1 - .../core/components/modules/quick-actions.tsx | 2 - .../customize-navigation-dialog.tsx | 1 - .../navigation/tab-navigation-root.tsx | 1 - .../web/core/components/onboarding/header.tsx | 1 - .../components/onboarding/invite-members.tsx | 2 +- .../onboarding/steps/common/header.tsx | 2 - .../onboarding/steps/profile/consent.tsx | 2 - .../onboarding/switch-account-dropdown.tsx | 1 - .../components/pages/editor/editor-body.tsx | 1 - .../pages/editor/toolbar/options-dropdown.tsx | 1 - .../core/components/pages/list/order-by.tsx | 4 +- .../components/power-k/ui/modal/footer.tsx | 1 - .../power-k/ui/modal/search-results.tsx | 1 - .../project-states/create-update/create.tsx | 2 +- .../core/components/project-states/root.tsx | 1 - .../components/project/dropdowns/order-by.tsx | 2 +- .../project/leave-project-modal.tsx | 2 +- .../core/components/sidebar/add-button.tsx | 1 - .../components/views/filters/order-by.tsx | 2 +- .../views/view-list-item-action.tsx | 1 - .../core/components/views/view-list-item.tsx | 1 - .../components/web-hooks/form/secret-key.tsx | 1 - .../notification-app-sidebar-option.tsx | 1 - .../billing/comparison/feature-detail.tsx | 3 +- .../hooks/use-collaborative-page-actions.tsx | 2 +- apps/web/core/services/analytics.service.ts | 2 +- apps/web/core/services/instance.service.ts | 2 +- .../issue/issue-details/relation.store.ts | 2 +- .../store/issue/issue-details/root.store.ts | 1 - .../core/store/issue/module/issue.store.ts | 2 +- .../issue/workspace-draft/issue.store.ts | 52 +++++++++++-------- .../core/store/pages/project-page.store.ts | 2 +- 118 files changed, 71 insertions(+), 166 deletions(-) diff --git a/apps/web/core/components/account/auth-forms/email.tsx b/apps/web/core/components/account/auth-forms/email.tsx index 8abddb42efa..2138753aaf6 100644 --- a/apps/web/core/components/account/auth-forms/email.tsx +++ b/apps/web/core/components/account/auth-forms/email.tsx @@ -4,7 +4,7 @@ * See the LICENSE file for details. */ -import type { FC, FormEvent } from "react"; +import type { FormEvent } from "react"; import { useMemo, useRef, useState } from "react"; import { observer } from "mobx-react"; // icons diff --git a/apps/web/core/components/account/auth-forms/password.tsx b/apps/web/core/components/account/auth-forms/password.tsx index 6fed9e88893..8ebe3c827d3 100644 --- a/apps/web/core/components/account/auth-forms/password.tsx +++ b/apps/web/core/components/account/auth-forms/password.tsx @@ -10,7 +10,7 @@ import Link from "next/link"; // icons import { Eye, EyeOff, Info, XCircle } from "lucide-react"; // plane imports -import { API_BASE_URL, E_PASSWORD_STRENGTH, AUTH_TRACKER_EVENTS, AUTH_TRACKER_ELEMENTS } from "@plane/constants"; +import { API_BASE_URL, E_PASSWORD_STRENGTH, AUTH_TRACKER_ELEMENTS } from "@plane/constants"; import { useTranslation } from "@plane/i18n"; import { Button } from "@plane/propel/button"; import { CloseIcon } from "@plane/propel/icons"; diff --git a/apps/web/core/components/account/auth-forms/unique-code.tsx b/apps/web/core/components/account/auth-forms/unique-code.tsx index aa65175b49d..9c4b8a6c189 100644 --- a/apps/web/core/components/account/auth-forms/unique-code.tsx +++ b/apps/web/core/components/account/auth-forms/unique-code.tsx @@ -41,7 +41,7 @@ const defaultValues: TUniqueCodeFormValues = { }; export function AuthUniqueCodeForm(props: TAuthUniqueCodeForm) { - const { mode, email, handleEmailClear, generateEmailUniqueCode, isExistingEmail, nextPath } = props; + const { mode, email, handleEmailClear, generateEmailUniqueCode, nextPath } = props; // derived values const defaultResetTimerValue = 5; // states diff --git a/apps/web/core/components/analytics/analytics-section-wrapper.tsx b/apps/web/core/components/analytics/analytics-section-wrapper.tsx index 9a3af1171b8..d46ce74b46b 100644 --- a/apps/web/core/components/analytics/analytics-section-wrapper.tsx +++ b/apps/web/core/components/analytics/analytics-section-wrapper.tsx @@ -16,7 +16,7 @@ type Props = { }; function AnalyticsSectionWrapper(props: Props) { - const { title, children, className, subtitle, actions, headerClassName } = props; + const { title, children, className, actions, headerClassName } = props; return (
diff --git a/apps/web/core/components/analytics/insight-table/data-table.tsx b/apps/web/core/components/analytics/insight-table/data-table.tsx index 9c24d1aa572..a0f5213a693 100644 --- a/apps/web/core/components/analytics/insight-table/data-table.tsx +++ b/apps/web/core/components/analytics/insight-table/data-table.tsx @@ -38,10 +38,10 @@ interface DataTableProps { } export function DataTable({ columns, data, searchPlaceholder, actions }: DataTableProps) { - const [rowSelection, setRowSelection] = React.useState({}); + const [rowSelection, _setRowSelection] = React.useState({}); const [columnVisibility, setColumnVisibility] = React.useState({}); const [columnFilters, setColumnFilters] = React.useState([]); - const [sorting, setSorting] = React.useState([]); + const [sorting, _setSorting] = React.useState([]); const { t } = useTranslation(); const inputRef = React.useRef(null); const [isSearchOpen, setIsSearchOpen] = React.useState(false); diff --git a/apps/web/core/components/analytics/work-items/priority-chart.tsx b/apps/web/core/components/analytics/work-items/priority-chart.tsx index f5ba27d6105..942285cab20 100644 --- a/apps/web/core/components/analytics/work-items/priority-chart.tsx +++ b/apps/web/core/components/analytics/work-items/priority-chart.tsx @@ -31,6 +31,7 @@ import { ChartLoader } from "../loaders"; import { generateBarColor } from "./utils"; declare module "@tanstack/react-table" { + // eslint-disable-next-line @typescript-eslint/no-unused-vars interface ColumnMeta { export: { key: string; diff --git a/apps/web/core/components/analytics/work-items/workitems-insight-table.tsx b/apps/web/core/components/analytics/work-items/workitems-insight-table.tsx index d63b84da8e1..52f3abd66ca 100644 --- a/apps/web/core/components/analytics/work-items/workitems-insight-table.tsx +++ b/apps/web/core/components/analytics/work-items/workitems-insight-table.tsx @@ -29,6 +29,7 @@ import { InsightTable } from "../insight-table"; const analyticsService = new AnalyticsService(); declare module "@tanstack/react-table" { + // eslint-disable-next-line @typescript-eslint/no-unused-vars interface ColumnMeta { export: { key: string; diff --git a/apps/web/core/components/archives/archive-tabs-list.tsx b/apps/web/core/components/archives/archive-tabs-list.tsx index 96396b9a930..ea21842013e 100644 --- a/apps/web/core/components/archives/archive-tabs-list.tsx +++ b/apps/web/core/components/archives/archive-tabs-list.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { observer } from "mobx-react"; import Link from "next/link"; import { useParams, usePathname } from "next/navigation"; diff --git a/apps/web/core/components/comments/comment-create.tsx b/apps/web/core/components/comments/comment-create.tsx index f727fc78962..d230a5be93e 100644 --- a/apps/web/core/components/comments/comment-create.tsx +++ b/apps/web/core/components/comments/comment-create.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { useRef, useState } from "react"; import { observer } from "mobx-react"; import { useForm, Controller } from "react-hook-form"; diff --git a/apps/web/core/components/comments/comment-reaction.tsx b/apps/web/core/components/comments/comment-reaction.tsx index e9d1c931b09..709de31e81b 100644 --- a/apps/web/core/components/comments/comment-reaction.tsx +++ b/apps/web/core/components/comments/comment-reaction.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { useMemo, useState } from "react"; import { observer } from "mobx-react"; // plane imports @@ -12,7 +11,6 @@ import { stringToEmoji } from "@plane/propel/emoji-icon-picker"; import { EmojiReactionGroup, EmojiReactionPicker } from "@plane/propel/emoji-reaction"; import type { EmojiReactionType } from "@plane/propel/emoji-reaction"; import type { TCommentsOperations, TIssueComment } from "@plane/types"; -import { cn } from "@plane/utils"; // helpers // local imports diff --git a/apps/web/core/components/common/activity/activity-item.tsx b/apps/web/core/components/common/activity/activity-item.tsx index c4b3e363aad..0cc6a01f5ff 100644 --- a/apps/web/core/components/common/activity/activity-item.tsx +++ b/apps/web/core/components/common/activity/activity-item.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { observer } from "mobx-react"; import type { TProjectActivity } from "@/plane-web/types"; @@ -18,7 +17,7 @@ type TActivityItem = { }; export const ActivityItem = observer(function ActivityItem(props: TActivityItem) { - const { activity, showProject = true, ends } = props; + const { activity, ends } = props; if (!activity) return null; diff --git a/apps/web/core/components/common/activity/user.tsx b/apps/web/core/components/common/activity/user.tsx index 9254ad3eb8e..1ba3d03b750 100644 --- a/apps/web/core/components/common/activity/user.tsx +++ b/apps/web/core/components/common/activity/user.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { observer } from "mobx-react"; import Link from "next/link"; // types diff --git a/apps/web/core/components/common/count-chip.tsx b/apps/web/core/components/common/count-chip.tsx index 113dc4264cd..8b920415195 100644 --- a/apps/web/core/components/common/count-chip.tsx +++ b/apps/web/core/components/common/count-chip.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; // import { cn } from "@plane/utils"; diff --git a/apps/web/core/components/common/pro-icon.tsx b/apps/web/core/components/common/pro-icon.tsx index 30e7ea97191..474ddd83676 100644 --- a/apps/web/core/components/common/pro-icon.tsx +++ b/apps/web/core/components/common/pro-icon.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { Crown } from "lucide-react"; // helpers import { cn } from "@plane/utils"; diff --git a/apps/web/core/components/core/list/list-root.tsx b/apps/web/core/components/core/list/list-root.tsx index a965478597a..d81f2daeec2 100644 --- a/apps/web/core/components/core/list/list-root.tsx +++ b/apps/web/core/components/core/list/list-root.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React from "react"; import { Row, ERowVariant } from "@plane/ui"; diff --git a/apps/web/core/components/core/theme/theme-switch.tsx b/apps/web/core/components/core/theme/theme-switch.tsx index 3560e997840..b9de9bc5dc5 100644 --- a/apps/web/core/components/core/theme/theme-switch.tsx +++ b/apps/web/core/components/core/theme/theme-switch.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; // plane imports import type { I_THEME_OPTION } from "@plane/constants"; import { THEME_OPTIONS } from "@plane/constants"; diff --git a/apps/web/core/components/cycles/active-cycle/cycle-stats.tsx b/apps/web/core/components/cycles/active-cycle/cycle-stats.tsx index 678fe682d50..f6ea00ba6c6 100644 --- a/apps/web/core/components/cycles/active-cycle/cycle-stats.tsx +++ b/apps/web/core/components/cycles/active-cycle/cycle-stats.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { Fragment, useCallback, useRef, useState } from "react"; import { isEmpty } from "lodash-es"; import { observer } from "mobx-react"; diff --git a/apps/web/core/components/cycles/active-cycle/productivity.tsx b/apps/web/core/components/cycles/active-cycle/productivity.tsx index 21720abc5c3..c3ebdfcbe8f 100644 --- a/apps/web/core/components/cycles/active-cycle/productivity.tsx +++ b/apps/web/core/components/cycles/active-cycle/productivity.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { Fragment } from "react"; import { observer } from "mobx-react"; import Link from "next/link"; diff --git a/apps/web/core/components/cycles/active-cycle/progress.tsx b/apps/web/core/components/cycles/active-cycle/progress.tsx index d781920b6c3..4688e9dc5bc 100644 --- a/apps/web/core/components/cycles/active-cycle/progress.tsx +++ b/apps/web/core/components/cycles/active-cycle/progress.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { observer } from "mobx-react"; import { useTheme } from "next-themes"; // plane imports diff --git a/apps/web/core/components/cycles/analytics-sidebar/issue-progress.tsx b/apps/web/core/components/cycles/analytics-sidebar/issue-progress.tsx index 4e4e579b875..738856d20ea 100644 --- a/apps/web/core/components/cycles/analytics-sidebar/issue-progress.tsx +++ b/apps/web/core/components/cycles/analytics-sidebar/issue-progress.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { useMemo } from "react"; import { isEmpty } from "lodash-es"; import { observer } from "mobx-react"; diff --git a/apps/web/core/components/cycles/analytics-sidebar/sidebar-details.tsx b/apps/web/core/components/cycles/analytics-sidebar/sidebar-details.tsx index 65137162603..9c8ba8ac2ab 100644 --- a/apps/web/core/components/cycles/analytics-sidebar/sidebar-details.tsx +++ b/apps/web/core/components/cycles/analytics-sidebar/sidebar-details.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React from "react"; import { isEmpty } from "lodash-es"; import { observer } from "mobx-react"; diff --git a/apps/web/core/components/cycles/analytics-sidebar/sidebar-header.tsx b/apps/web/core/components/cycles/analytics-sidebar/sidebar-header.tsx index e2a825ccc24..05cdb8ebbb5 100644 --- a/apps/web/core/components/cycles/analytics-sidebar/sidebar-header.tsx +++ b/apps/web/core/components/cycles/analytics-sidebar/sidebar-header.tsx @@ -76,7 +76,7 @@ export const CycleSidebarHeader = observer(function CycleSidebarHeader(props: Pr try { const res = await cycleService.cycleDateCheck(workspaceSlug, projectId, payload); return res.status; - } catch (err) { + } catch (_err) { return false; } }; diff --git a/apps/web/core/components/cycles/archived-cycles/view.tsx b/apps/web/core/components/cycles/archived-cycles/view.tsx index 48a1f6a097a..2153fb0c969 100644 --- a/apps/web/core/components/cycles/archived-cycles/view.tsx +++ b/apps/web/core/components/cycles/archived-cycles/view.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { observer } from "mobx-react"; // assets import AllFiltersImage from "@/app/assets/empty-state/cycle/all-filters.svg?url"; diff --git a/apps/web/core/components/cycles/cycles-view.tsx b/apps/web/core/components/cycles/cycles-view.tsx index 223c3a959f4..d0762125fee 100644 --- a/apps/web/core/components/cycles/cycles-view.tsx +++ b/apps/web/core/components/cycles/cycles-view.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { observer } from "mobx-react"; // components import { useTranslation } from "@plane/i18n"; diff --git a/apps/web/core/components/cycles/list/cycle-list-group-header.tsx b/apps/web/core/components/cycles/list/cycle-list-group-header.tsx index 903e1086be9..9b3578639af 100644 --- a/apps/web/core/components/cycles/list/cycle-list-group-header.tsx +++ b/apps/web/core/components/cycles/list/cycle-list-group-header.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React from "react"; // types import { CycleGroupIcon, ChevronDownIcon } from "@plane/propel/icons"; diff --git a/apps/web/core/components/cycles/list/cycle-list-project-group-header.tsx b/apps/web/core/components/cycles/list/cycle-list-project-group-header.tsx index 9e6f5c134fa..3d836dac0b4 100644 --- a/apps/web/core/components/cycles/list/cycle-list-project-group-header.tsx +++ b/apps/web/core/components/cycles/list/cycle-list-project-group-header.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React from "react"; import { observer } from "mobx-react"; import { Logo } from "@plane/propel/emoji-icon-picker"; diff --git a/apps/web/core/components/cycles/list/root.tsx b/apps/web/core/components/cycles/list/root.tsx index 0b2a4ed044f..07351decfbb 100644 --- a/apps/web/core/components/cycles/list/root.tsx +++ b/apps/web/core/components/cycles/list/root.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React from "react"; import { observer } from "mobx-react"; import { Disclosure } from "@headlessui/react"; diff --git a/apps/web/core/components/cycles/modal.tsx b/apps/web/core/components/cycles/modal.tsx index 2128bc3461e..582489ced59 100644 --- a/apps/web/core/components/cycles/modal.tsx +++ b/apps/web/core/components/cycles/modal.tsx @@ -50,7 +50,7 @@ export function CycleCreateUpdateModal(props: CycleModalProps) { const selectedProjectId = payload.project_id ?? projectId.toString(); await createCycle(workspaceSlug, selectedProjectId, payload) - .then((res) => { + .then((_res) => { // mutate when the current cycle creation is active if (payload.start_date && payload.end_date) { const currentDate = new Date(); @@ -81,7 +81,7 @@ export function CycleCreateUpdateModal(props: CycleModalProps) { const selectedProjectId = payload.project_id ?? projectId.toString(); await updateCycleDetails(workspaceSlug, selectedProjectId, cycleId, payload) - .then((res) => { + .then((_res) => { setToast({ type: TOAST_TYPE.SUCCESS, title: "Success!", diff --git a/apps/web/core/components/empty-state/section-empty-state-root.tsx b/apps/web/core/components/empty-state/section-empty-state-root.tsx index cc4acdffb48..3d0a05aa3d2 100644 --- a/apps/web/core/components/empty-state/section-empty-state-root.tsx +++ b/apps/web/core/components/empty-state/section-empty-state-root.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { cn } from "@plane/utils"; type Props = { diff --git a/apps/web/core/components/estimates/create/modal.tsx b/apps/web/core/components/estimates/create/modal.tsx index 02bbaced9a2..518f6665095 100644 --- a/apps/web/core/components/estimates/create/modal.tsx +++ b/apps/web/core/components/estimates/create/modal.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { useEffect, useMemo, useState } from "react"; import { observer } from "mobx-react"; // plane imports diff --git a/apps/web/core/components/estimates/delete/modal.tsx b/apps/web/core/components/estimates/delete/modal.tsx index 8181fc88814..e6b39fcdec2 100644 --- a/apps/web/core/components/estimates/delete/modal.tsx +++ b/apps/web/core/components/estimates/delete/modal.tsx @@ -48,7 +48,7 @@ export const DeleteEstimateModal = observer(function DeleteEstimateModal(props: message: "Estimate has been removed from your project.", }); handleClose(); - } catch (error) { + } catch (_error) { setButtonLoader(false); setToast({ type: TOAST_TYPE.ERROR, diff --git a/apps/web/core/components/estimates/estimate-disable-switch.tsx b/apps/web/core/components/estimates/estimate-disable-switch.tsx index 7553ce0757d..13bf7ce663a 100644 --- a/apps/web/core/components/estimates/estimate-disable-switch.tsx +++ b/apps/web/core/components/estimates/estimate-disable-switch.tsx @@ -44,7 +44,7 @@ export const EstimateDisableSwitch = observer(function EstimateDisableSwitch(pro ? t("project_settings.estimates.toasts.disabled.success.message") : t("project_settings.estimates.toasts.enabled.success.message"), }); - } catch (err) { + } catch (_err) { setToast({ type: TOAST_TYPE.ERROR, title: t("project_settings.estimates.toasts.disabled.error.title"), diff --git a/apps/web/core/components/estimates/estimate-list.tsx b/apps/web/core/components/estimates/estimate-list.tsx index 0a428e8f711..6e919c55715 100644 --- a/apps/web/core/components/estimates/estimate-list.tsx +++ b/apps/web/core/components/estimates/estimate-list.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { observer } from "mobx-react"; // local imports import { EstimateListItem } from "./estimate-list-item"; diff --git a/apps/web/core/components/estimates/estimate-search.tsx b/apps/web/core/components/estimates/estimate-search.tsx index 38a6439f18d..0b05f6716c2 100644 --- a/apps/web/core/components/estimates/estimate-search.tsx +++ b/apps/web/core/components/estimates/estimate-search.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { observer } from "mobx-react"; export const EstimateSearch = observer(function EstimateSearch() { diff --git a/apps/web/core/components/estimates/inputs/number-input.tsx b/apps/web/core/components/estimates/inputs/number-input.tsx index a93626df1cb..3e4d30b73d6 100644 --- a/apps/web/core/components/estimates/inputs/number-input.tsx +++ b/apps/web/core/components/estimates/inputs/number-input.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { useTranslation } from "@plane/i18n"; type TEstimateNumberInputProps = { value?: number; diff --git a/apps/web/core/components/estimates/inputs/root.tsx b/apps/web/core/components/estimates/inputs/root.tsx index 1c38f41cfeb..86b743ff7b2 100644 --- a/apps/web/core/components/estimates/inputs/root.tsx +++ b/apps/web/core/components/estimates/inputs/root.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; // plane imports import type { TEstimateSystemKeys } from "@plane/types"; import { EEstimateSystem } from "@plane/types"; diff --git a/apps/web/core/components/estimates/inputs/text-input.tsx b/apps/web/core/components/estimates/inputs/text-input.tsx index 03dd0b50d4a..50fe55da86e 100644 --- a/apps/web/core/components/estimates/inputs/text-input.tsx +++ b/apps/web/core/components/estimates/inputs/text-input.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { useTranslation } from "@plane/i18n"; type TEstimateTextInputProps = { value?: string; diff --git a/apps/web/core/components/estimates/loader-screen.tsx b/apps/web/core/components/estimates/loader-screen.tsx index 79f3b03947b..d858df1d971 100644 --- a/apps/web/core/components/estimates/loader-screen.tsx +++ b/apps/web/core/components/estimates/loader-screen.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { Loader } from "@plane/ui"; export function EstimateLoaderScreen() { diff --git a/apps/web/core/components/estimates/points/create-root.tsx b/apps/web/core/components/estimates/points/create-root.tsx index b309b2890c7..ad3c57e9fd7 100644 --- a/apps/web/core/components/estimates/points/create-root.tsx +++ b/apps/web/core/components/estimates/points/create-root.tsx @@ -4,7 +4,7 @@ * See the LICENSE file for details. */ -import type { Dispatch, FC, SetStateAction } from "react"; +import type { Dispatch, SetStateAction } from "react"; import { useCallback, useState } from "react"; import { observer } from "mobx-react"; // plane imports diff --git a/apps/web/core/components/estimates/points/create.tsx b/apps/web/core/components/estimates/points/create.tsx index a4fd55ad183..50aced9cd56 100644 --- a/apps/web/core/components/estimates/points/create.tsx +++ b/apps/web/core/components/estimates/points/create.tsx @@ -166,12 +166,6 @@ export const EstimatePointCreate = observer(function EstimatePointCreate(props: handleEstimatePointError(estimateInputValue, t("project_settings.estimates.validation.empty")); }; - // derived values - const inputProps = { - type: "text", - maxlength: MAX_ESTIMATE_POINT_INPUT_LENGTH, - }; - return (
) => { try { await inboxIssue.updateIssue(data); - } catch (error) { + } catch (_error) { setToast({ title: "Work item update failed", type: TOAST_TYPE.ERROR, diff --git a/apps/web/core/components/inbox/inbox-filter/applied-filters/date.tsx b/apps/web/core/components/inbox/inbox-filter/applied-filters/date.tsx index 5e13689475f..53cf70989bd 100644 --- a/apps/web/core/components/inbox/inbox-filter/applied-filters/date.tsx +++ b/apps/web/core/components/inbox/inbox-filter/applied-filters/date.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { observer } from "mobx-react"; import { PAST_DURATION_FILTER_OPTIONS } from "@plane/constants"; import { CloseIcon } from "@plane/propel/icons"; diff --git a/apps/web/core/components/inbox/inbox-filter/applied-filters/label.tsx b/apps/web/core/components/inbox/inbox-filter/applied-filters/label.tsx index 32b6f0f20e0..1fd33cbe80c 100644 --- a/apps/web/core/components/inbox/inbox-filter/applied-filters/label.tsx +++ b/apps/web/core/components/inbox/inbox-filter/applied-filters/label.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { observer } from "mobx-react"; // hooks import { CloseIcon } from "@plane/propel/icons"; diff --git a/apps/web/core/components/inbox/inbox-filter/applied-filters/member.tsx b/apps/web/core/components/inbox/inbox-filter/applied-filters/member.tsx index 724260b2426..4148f4af3f0 100644 --- a/apps/web/core/components/inbox/inbox-filter/applied-filters/member.tsx +++ b/apps/web/core/components/inbox/inbox-filter/applied-filters/member.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { observer } from "mobx-react"; // plane types diff --git a/apps/web/core/components/inbox/inbox-filter/applied-filters/priority.tsx b/apps/web/core/components/inbox/inbox-filter/applied-filters/priority.tsx index a588b37df6c..38a12602a0d 100644 --- a/apps/web/core/components/inbox/inbox-filter/applied-filters/priority.tsx +++ b/apps/web/core/components/inbox/inbox-filter/applied-filters/priority.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { observer } from "mobx-react"; import { ISSUE_PRIORITIES } from "@plane/constants"; import { useTranslation } from "@plane/i18n"; diff --git a/apps/web/core/components/inbox/inbox-filter/applied-filters/root.tsx b/apps/web/core/components/inbox/inbox-filter/applied-filters/root.tsx index 29b158d1065..99283e6c2c9 100644 --- a/apps/web/core/components/inbox/inbox-filter/applied-filters/root.tsx +++ b/apps/web/core/components/inbox/inbox-filter/applied-filters/root.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { observer } from "mobx-react"; // plane imports import { Header, EHeaderVariant } from "@plane/ui"; diff --git a/apps/web/core/components/inbox/inbox-filter/applied-filters/state.tsx b/apps/web/core/components/inbox/inbox-filter/applied-filters/state.tsx index 4de55f4ecff..f8b94c9bcf0 100644 --- a/apps/web/core/components/inbox/inbox-filter/applied-filters/state.tsx +++ b/apps/web/core/components/inbox/inbox-filter/applied-filters/state.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { observer } from "mobx-react"; import { EIconSize } from "@plane/constants"; import { StateGroupIcon, CloseIcon } from "@plane/propel/icons"; diff --git a/apps/web/core/components/inbox/inbox-filter/applied-filters/status.tsx b/apps/web/core/components/inbox/inbox-filter/applied-filters/status.tsx index 01543e59ab3..ccc7c31ae7a 100644 --- a/apps/web/core/components/inbox/inbox-filter/applied-filters/status.tsx +++ b/apps/web/core/components/inbox/inbox-filter/applied-filters/status.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { observer } from "mobx-react"; import { INBOX_STATUS } from "@plane/constants"; import { useTranslation } from "@plane/i18n"; diff --git a/apps/web/core/components/inbox/inbox-filter/filters/date.tsx b/apps/web/core/components/inbox/inbox-filter/filters/date.tsx index 84ae0ffdef0..51fbbe6d495 100644 --- a/apps/web/core/components/inbox/inbox-filter/filters/date.tsx +++ b/apps/web/core/components/inbox/inbox-filter/filters/date.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { useState } from "react"; import { concat, uniq } from "lodash-es"; import { observer } from "mobx-react"; diff --git a/apps/web/core/components/inbox/inbox-filter/filters/filter-selection.tsx b/apps/web/core/components/inbox/inbox-filter/filters/filter-selection.tsx index 2e4e57ff1a7..99ae144cd0c 100644 --- a/apps/web/core/components/inbox/inbox-filter/filters/filter-selection.tsx +++ b/apps/web/core/components/inbox/inbox-filter/filters/filter-selection.tsx @@ -4,21 +4,18 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { useState } from "react"; import { observer } from "mobx-react"; import { SearchIcon, CloseIcon } from "@plane/propel/icons"; // hooks import { useLabel } from "@/hooks/store/use-label"; import { useMember } from "@/hooks/store/use-member"; -import { useProjectState } from "@/hooks/store/use-project-state"; import { usePlatformOS } from "@/hooks/use-platform-os"; // local imports import { FilterDate } from "./date"; import { FilterLabels } from "./labels"; import { FilterMember } from "./members"; import { FilterPriority } from "./priority"; -import { FilterState } from "./state"; import { FilterStatus } from "./status"; export const InboxIssueFilterSelection = observer(function InboxIssueFilterSelection() { @@ -28,7 +25,6 @@ export const InboxIssueFilterSelection = observer(function InboxIssueFilterSelec project: { projectMemberIds }, } = useMember(); const { projectLabels } = useLabel(); - const { projectStates } = useProjectState(); // states const [filtersSearchQuery, setFiltersSearchQuery] = useState(""); diff --git a/apps/web/core/components/inbox/inbox-filter/filters/labels.tsx b/apps/web/core/components/inbox/inbox-filter/filters/labels.tsx index e45dae656b6..23e338b1d31 100644 --- a/apps/web/core/components/inbox/inbox-filter/filters/labels.tsx +++ b/apps/web/core/components/inbox/inbox-filter/filters/labels.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { useState } from "react"; import { observer } from "mobx-react"; import type { IIssueLabel } from "@plane/types"; diff --git a/apps/web/core/components/inbox/inbox-filter/filters/members.tsx b/apps/web/core/components/inbox/inbox-filter/filters/members.tsx index c6ff9a57198..d555aa81b85 100644 --- a/apps/web/core/components/inbox/inbox-filter/filters/members.tsx +++ b/apps/web/core/components/inbox/inbox-filter/filters/members.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { useMemo, useState } from "react"; import { sortBy } from "lodash-es"; import { observer } from "mobx-react"; diff --git a/apps/web/core/components/inbox/inbox-filter/filters/priority.tsx b/apps/web/core/components/inbox/inbox-filter/filters/priority.tsx index a88d10a3ca1..5272e368b24 100644 --- a/apps/web/core/components/inbox/inbox-filter/filters/priority.tsx +++ b/apps/web/core/components/inbox/inbox-filter/filters/priority.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { useState } from "react"; import { observer } from "mobx-react"; import { ISSUE_PRIORITIES } from "@plane/constants"; diff --git a/apps/web/core/components/inbox/inbox-filter/filters/state.tsx b/apps/web/core/components/inbox/inbox-filter/filters/state.tsx index 08d125f645e..4a4af021fce 100644 --- a/apps/web/core/components/inbox/inbox-filter/filters/state.tsx +++ b/apps/web/core/components/inbox/inbox-filter/filters/state.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { useState } from "react"; import { observer } from "mobx-react"; import { EIconSize } from "@plane/constants"; diff --git a/apps/web/core/components/inbox/inbox-filter/filters/status.tsx b/apps/web/core/components/inbox/inbox-filter/filters/status.tsx index 3f1955f4abe..e08a71334ac 100644 --- a/apps/web/core/components/inbox/inbox-filter/filters/status.tsx +++ b/apps/web/core/components/inbox/inbox-filter/filters/status.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { useState } from "react"; import { observer } from "mobx-react"; // types diff --git a/apps/web/core/components/inbox/inbox-filter/root.tsx b/apps/web/core/components/inbox/inbox-filter/root.tsx index 848e2f4d290..2413ccc382f 100644 --- a/apps/web/core/components/inbox/inbox-filter/root.tsx +++ b/apps/web/core/components/inbox/inbox-filter/root.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { ListFilter } from "lucide-react"; import { getButtonStyling } from "@plane/propel/button"; // plane imports diff --git a/apps/web/core/components/inbox/inbox-filter/sorting/order-by.tsx b/apps/web/core/components/inbox/inbox-filter/sorting/order-by.tsx index 599a1ce9cc9..ad2e720c715 100644 --- a/apps/web/core/components/inbox/inbox-filter/sorting/order-by.tsx +++ b/apps/web/core/components/inbox/inbox-filter/sorting/order-by.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { observer } from "mobx-react"; import { ArrowDownWideNarrow, ArrowUpWideNarrow } from "lucide-react"; import { INBOX_ISSUE_ORDER_BY_OPTIONS, INBOX_ISSUE_SORT_BY_OPTIONS } from "@plane/constants"; diff --git a/apps/web/core/components/inbox/modals/create-modal/issue-description.tsx b/apps/web/core/components/inbox/modals/create-modal/issue-description.tsx index f67f9b25d4d..ce3961b0892 100644 --- a/apps/web/core/components/inbox/modals/create-modal/issue-description.tsx +++ b/apps/web/core/components/inbox/modals/create-modal/issue-description.tsx @@ -4,7 +4,7 @@ * See the LICENSE file for details. */ -import type { FC, RefObject } from "react"; +import type { RefObject } from "react"; import { observer } from "mobx-react"; // plane imports import { ETabIndices } from "@plane/constants"; diff --git a/apps/web/core/components/inbox/modals/create-modal/issue-properties.tsx b/apps/web/core/components/inbox/modals/create-modal/issue-properties.tsx index b64a64b0f16..6d6c80e937c 100644 --- a/apps/web/core/components/inbox/modals/create-modal/issue-properties.tsx +++ b/apps/web/core/components/inbox/modals/create-modal/issue-properties.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { useState } from "react"; import { observer } from "mobx-react"; import { ETabIndices } from "@plane/constants"; diff --git a/apps/web/core/components/inbox/modals/create-modal/issue-title.tsx b/apps/web/core/components/inbox/modals/create-modal/issue-title.tsx index 3c8c809ec94..49d8178fb53 100644 --- a/apps/web/core/components/inbox/modals/create-modal/issue-title.tsx +++ b/apps/web/core/components/inbox/modals/create-modal/issue-title.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { observer } from "mobx-react"; // plane imports import { ETabIndices } from "@plane/constants"; diff --git a/apps/web/core/components/inbox/modals/create-modal/modal.tsx b/apps/web/core/components/inbox/modals/create-modal/modal.tsx index 43f01251d86..85b8a14c0ea 100644 --- a/apps/web/core/components/inbox/modals/create-modal/modal.tsx +++ b/apps/web/core/components/inbox/modals/create-modal/modal.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { useState } from "react"; // plane imports import { EModalPosition, EModalWidth, ModalCore } from "@plane/ui"; diff --git a/apps/web/core/components/inbox/sidebar/inbox-list-item.tsx b/apps/web/core/components/inbox/sidebar/inbox-list-item.tsx index 216f7936255..db8d4240f9f 100644 --- a/apps/web/core/components/inbox/sidebar/inbox-list-item.tsx +++ b/apps/web/core/components/inbox/sidebar/inbox-list-item.tsx @@ -4,7 +4,7 @@ * See the LICENSE file for details. */ -import type { FC, MouseEvent } from "react"; +import type { MouseEvent } from "react"; import { observer } from "mobx-react"; import Link from "next/link"; import { useSearchParams } from "next/navigation"; diff --git a/apps/web/core/components/inbox/sidebar/inbox-list.tsx b/apps/web/core/components/inbox/sidebar/inbox-list.tsx index 886171cda42..ee5ddd3ae6b 100644 --- a/apps/web/core/components/inbox/sidebar/inbox-list.tsx +++ b/apps/web/core/components/inbox/sidebar/inbox-list.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { Fragment } from "react"; import { observer } from "mobx-react"; // local imports diff --git a/apps/web/core/components/instance/maintenance-view.tsx b/apps/web/core/components/instance/maintenance-view.tsx index 48ed52f3426..eaa3bba4f9b 100644 --- a/apps/web/core/components/instance/maintenance-view.tsx +++ b/apps/web/core/components/instance/maintenance-view.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { useTheme } from "next-themes"; // assets import maintenanceModeDarkModeImage from "@/app/assets/instance/maintenance-mode-dark.svg?url"; diff --git a/apps/web/core/components/labels/create-update-label-inline.tsx b/apps/web/core/components/labels/create-update-label-inline.tsx index 04660487197..6be483cd1a0 100644 --- a/apps/web/core/components/labels/create-update-label-inline.tsx +++ b/apps/web/core/components/labels/create-update-label-inline.tsx @@ -11,7 +11,7 @@ import type { SubmitHandler } from "react-hook-form"; import { Controller, useForm } from "react-hook-form"; import { Popover, Transition } from "@headlessui/react"; // plane imports -import { getRandomLabelColor, LABEL_COLOR_OPTIONS, PROJECT_SETTINGS_TRACKER_EVENTS } from "@plane/constants"; +import { getRandomLabelColor, LABEL_COLOR_OPTIONS } from "@plane/constants"; import { useTranslation } from "@plane/i18n"; import { Button } from "@plane/propel/button"; import { TOAST_TYPE, setToast } from "@plane/propel/toast"; @@ -91,7 +91,7 @@ export const CreateUpdateLabelInline = observer( await labelOperationsCallbacks .createLabel(formData) - .then((res) => { + .then((_res) => { handleClose(); reset(defaultValues); }) @@ -111,7 +111,7 @@ export const CreateUpdateLabelInline = observer( await labelOperationsCallbacks .updateLabel(labelToUpdate.id, formData) - .then((res) => { + .then((_res) => { reset(defaultValues); handleClose(); }) diff --git a/apps/web/core/components/modules/analytics-sidebar/issue-progress.tsx b/apps/web/core/components/modules/analytics-sidebar/issue-progress.tsx index 3feecffeba6..f703ddf5816 100644 --- a/apps/web/core/components/modules/analytics-sidebar/issue-progress.tsx +++ b/apps/web/core/components/modules/analytics-sidebar/issue-progress.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { Fragment, useMemo, useState } from "react"; import { observer } from "mobx-react"; import { useSearchParams } from "next/navigation"; @@ -112,7 +111,7 @@ export const ModuleAnalyticsProgress = observer(function ModuleAnalyticsProgress await fetchModuleDetails(workspaceSlug, projectId, moduleId); } setLoader(false); - } catch (error) { + } catch (_error) { setLoader(false); setPlotType(moduleId, plotType); } diff --git a/apps/web/core/components/modules/archived-modules/header.tsx b/apps/web/core/components/modules/archived-modules/header.tsx index 4b58e4bb920..a15c431df2b 100644 --- a/apps/web/core/components/modules/archived-modules/header.tsx +++ b/apps/web/core/components/modules/archived-modules/header.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { useCallback, useRef, useState } from "react"; import { observer } from "mobx-react"; import { useParams } from "next/navigation"; diff --git a/apps/web/core/components/modules/archived-modules/view.tsx b/apps/web/core/components/modules/archived-modules/view.tsx index bea8c597fd7..f7a07b4685b 100644 --- a/apps/web/core/components/modules/archived-modules/view.tsx +++ b/apps/web/core/components/modules/archived-modules/view.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { observer } from "mobx-react"; // assets import AllFiltersImage from "@/app/assets/empty-state/module/all-filters.svg?url"; diff --git a/apps/web/core/components/modules/links/create-update-modal.tsx b/apps/web/core/components/modules/links/create-update-modal.tsx index 9caa018023a..b99254aefd6 100644 --- a/apps/web/core/components/modules/links/create-update-modal.tsx +++ b/apps/web/core/components/modules/links/create-update-modal.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { useEffect } from "react"; import { Controller, useForm } from "react-hook-form"; // plane types diff --git a/apps/web/core/components/modules/modal.tsx b/apps/web/core/components/modules/modal.tsx index b85d9b48903..621bfa07585 100644 --- a/apps/web/core/components/modules/modal.tsx +++ b/apps/web/core/components/modules/modal.tsx @@ -58,7 +58,7 @@ export const CreateUpdateModuleModal = observer(function CreateUpdateModuleModal const selectedProjectId = payload.project_id ?? projectId.toString(); await createModule(workspaceSlug.toString(), selectedProjectId, payload) - .then((res) => { + .then((_res) => { handleClose(); setToast({ type: TOAST_TYPE.SUCCESS, @@ -80,7 +80,7 @@ export const CreateUpdateModuleModal = observer(function CreateUpdateModuleModal const selectedProjectId = payload.project_id ?? projectId.toString(); await updateModuleDetails(workspaceSlug.toString(), selectedProjectId, data.id, payload) - .then((res) => { + .then((_res) => { handleClose(); setToast({ diff --git a/apps/web/core/components/modules/module-list-item-action.tsx b/apps/web/core/components/modules/module-list-item-action.tsx index 73746d05351..3340fab1d63 100644 --- a/apps/web/core/components/modules/module-list-item-action.tsx +++ b/apps/web/core/components/modules/module-list-item-action.tsx @@ -9,14 +9,7 @@ import { observer } from "mobx-react"; import { useParams } from "next/navigation"; import { SquareUser } from "lucide-react"; // Plane imports -import { - MODULE_STATUS, - EUserPermissions, - EUserPermissionsLevel, - IS_FAVORITE_MENU_OPEN, - MODULE_TRACKER_EVENTS, - MODULE_TRACKER_ELEMENTS, -} from "@plane/constants"; +import { MODULE_STATUS, EUserPermissions, EUserPermissionsLevel, IS_FAVORITE_MENU_OPEN } from "@plane/constants"; import { useLocalStorage } from "@plane/hooks"; import { useTranslation } from "@plane/i18n"; import { TOAST_TYPE, setPromiseToast, setToast } from "@plane/propel/toast"; diff --git a/apps/web/core/components/modules/module-status-dropdown.tsx b/apps/web/core/components/modules/module-status-dropdown.tsx index b0bf9b8cb65..ef532e68b16 100644 --- a/apps/web/core/components/modules/module-status-dropdown.tsx +++ b/apps/web/core/components/modules/module-status-dropdown.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React from "react"; import { observer } from "mobx-react"; import { MODULE_STATUS } from "@plane/constants"; diff --git a/apps/web/core/components/modules/module-view-header.tsx b/apps/web/core/components/modules/module-view-header.tsx index baf978a0132..916bfe95b6a 100644 --- a/apps/web/core/components/modules/module-view-header.tsx +++ b/apps/web/core/components/modules/module-view-header.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React, { useCallback, useEffect, useRef, useState } from "react"; import { observer } from "mobx-react"; import { useParams } from "next/navigation"; diff --git a/apps/web/core/components/modules/quick-actions.tsx b/apps/web/core/components/modules/quick-actions.tsx index 771635e00e1..f62e5cc3009 100644 --- a/apps/web/core/components/modules/quick-actions.tsx +++ b/apps/web/core/components/modules/quick-actions.tsx @@ -9,7 +9,6 @@ import { observer } from "mobx-react"; import { MoreHorizontal } from "lucide-react"; // plane imports import { EUserPermissions, EUserPermissionsLevel } from "@plane/constants"; -import { useTranslation } from "@plane/i18n"; import { IconButton } from "@plane/propel/icon-button"; import { TOAST_TYPE, setToast } from "@plane/propel/toast"; import type { TContextMenuItem } from "@plane/ui"; @@ -44,7 +43,6 @@ export const ModuleQuickActions = observer(function ModuleQuickActions(props: Pr const { getModuleById, restoreModule } = useModule(); - const { t } = useTranslation(); // derived values const moduleDetails = getModuleById(moduleId); // auth diff --git a/apps/web/core/components/navigation/customize-navigation-dialog.tsx b/apps/web/core/components/navigation/customize-navigation-dialog.tsx index 4d7c824951b..b4390bd0188 100644 --- a/apps/web/core/components/navigation/customize-navigation-dialog.tsx +++ b/apps/web/core/components/navigation/customize-navigation-dialog.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { useCallback, useMemo, useState } from "react"; import { observer } from "mobx-react"; import { useParams } from "next/navigation"; diff --git a/apps/web/core/components/navigation/tab-navigation-root.tsx b/apps/web/core/components/navigation/tab-navigation-root.tsx index c53fc45053f..f3bd16c60d9 100644 --- a/apps/web/core/components/navigation/tab-navigation-root.tsx +++ b/apps/web/core/components/navigation/tab-navigation-root.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React, { useEffect } from "react"; import { observer } from "mobx-react"; import { useParams, useLocation, Link, useNavigate } from "react-router"; diff --git a/apps/web/core/components/onboarding/header.tsx b/apps/web/core/components/onboarding/header.tsx index 7efe5aafffb..4ebf6a9c156 100644 --- a/apps/web/core/components/onboarding/header.tsx +++ b/apps/web/core/components/onboarding/header.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { observer } from "mobx-react"; // plane imports import { PlaneLockup, ChevronLeftIcon } from "@plane/propel/icons"; diff --git a/apps/web/core/components/onboarding/invite-members.tsx b/apps/web/core/components/onboarding/invite-members.tsx index acac3446eec..b73c87bb8b8 100644 --- a/apps/web/core/components/onboarding/invite-members.tsx +++ b/apps/web/core/components/onboarding/invite-members.tsx @@ -262,7 +262,7 @@ const InviteMemberInput = observer(function InviteMemberInput(props: InviteMembe }); export function InviteMembers(props: Props) { - const { finishOnboarding, totalSteps, workspace } = props; + const { finishOnboarding, workspace } = props; const [isInvitationDisabled, setIsInvitationDisabled] = useState(true); diff --git a/apps/web/core/components/onboarding/steps/common/header.tsx b/apps/web/core/components/onboarding/steps/common/header.tsx index f6891126a51..69be93c6fa4 100644 --- a/apps/web/core/components/onboarding/steps/common/header.tsx +++ b/apps/web/core/components/onboarding/steps/common/header.tsx @@ -4,8 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; - type Props = { title: string; description: string; diff --git a/apps/web/core/components/onboarding/steps/profile/consent.tsx b/apps/web/core/components/onboarding/steps/profile/consent.tsx index 62927e43731..18f42063c8f 100644 --- a/apps/web/core/components/onboarding/steps/profile/consent.tsx +++ b/apps/web/core/components/onboarding/steps/profile/consent.tsx @@ -4,8 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; - import { CheckIcon } from "@plane/propel/icons"; type Props = { diff --git a/apps/web/core/components/onboarding/switch-account-dropdown.tsx b/apps/web/core/components/onboarding/switch-account-dropdown.tsx index aae4375249d..bf96aae6198 100644 --- a/apps/web/core/components/onboarding/switch-account-dropdown.tsx +++ b/apps/web/core/components/onboarding/switch-account-dropdown.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { useState } from "react"; import { observer } from "mobx-react"; import { Menu, Transition } from "@headlessui/react"; diff --git a/apps/web/core/components/pages/editor/editor-body.tsx b/apps/web/core/components/pages/editor/editor-body.tsx index 907c6d9e405..9270386dc0a 100644 --- a/apps/web/core/components/pages/editor/editor-body.tsx +++ b/apps/web/core/components/pages/editor/editor-body.tsx @@ -45,7 +45,6 @@ import type { TPageInstance } from "@/store/pages/base-page"; import { PageContentLoader } from "../loaders/page-content-loader"; import { PageEditorHeaderRoot } from "./header"; import { PageContentBrowser } from "./summary"; -import { PageEditorTitle } from "./title"; export type TEditorBodyConfig = { fileHandler: TFileHandler; diff --git a/apps/web/core/components/pages/editor/toolbar/options-dropdown.tsx b/apps/web/core/components/pages/editor/toolbar/options-dropdown.tsx index 291f3cb47c1..a1c62bba10a 100644 --- a/apps/web/core/components/pages/editor/toolbar/options-dropdown.tsx +++ b/apps/web/core/components/pages/editor/toolbar/options-dropdown.tsx @@ -10,7 +10,6 @@ import { ArrowUpToLine, Clipboard, History } from "lucide-react"; // plane imports import { TOAST_TYPE, setToast } from "@plane/propel/toast"; import { ToggleSwitch } from "@plane/ui"; -import { copyTextToClipboard } from "@plane/utils"; // hooks import { useAppRouter } from "@/hooks/use-app-router"; import { usePageFilters } from "@/hooks/use-page-filters"; diff --git a/apps/web/core/components/pages/list/order-by.tsx b/apps/web/core/components/pages/list/order-by.tsx index 60030c2e8fb..2e9f22f0ad7 100644 --- a/apps/web/core/components/pages/list/order-by.tsx +++ b/apps/web/core/components/pages/list/order-by.tsx @@ -4,11 +4,11 @@ * See the LICENSE file for details. */ -import { ArrowDownWideNarrow, ArrowUpWideNarrow, Check } from "lucide-react"; +import { ArrowDownWideNarrow, ArrowUpWideNarrow } from "lucide-react"; // plane imports import { getButtonStyling } from "@plane/propel/button"; // types -import { CheckIcon, ChevronDownIcon } from "@plane/propel/icons"; +import { CheckIcon } from "@plane/propel/icons"; import type { TPageFiltersSortBy, TPageFiltersSortKey } from "@plane/types"; import { CustomMenu } from "@plane/ui"; diff --git a/apps/web/core/components/power-k/ui/modal/footer.tsx b/apps/web/core/components/power-k/ui/modal/footer.tsx index cf22070a051..092e4f6da41 100644 --- a/apps/web/core/components/power-k/ui/modal/footer.tsx +++ b/apps/web/core/components/power-k/ui/modal/footer.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type React from "react"; import { observer } from "mobx-react"; // plane imports import { useTranslation } from "@plane/i18n"; diff --git a/apps/web/core/components/power-k/ui/modal/search-results.tsx b/apps/web/core/components/power-k/ui/modal/search-results.tsx index 12c49304f9b..eaa5eb9b876 100644 --- a/apps/web/core/components/power-k/ui/modal/search-results.tsx +++ b/apps/web/core/components/power-k/ui/modal/search-results.tsx @@ -12,7 +12,6 @@ import type { IWorkspaceSearchResults } from "@plane/types"; // hooks import { useAppRouter } from "@/hooks/use-app-router"; // helpers -import { openProjectAndScrollToSidebar } from "../../actions/helper"; import { PowerKModalCommandItem } from "./command-item"; import { POWER_K_SEARCH_RESULTS_GROUPS_MAP } from "./search-results-map"; diff --git a/apps/web/core/components/project-states/create-update/create.tsx b/apps/web/core/components/project-states/create-update/create.tsx index 0505fcb5870..85f084f6a42 100644 --- a/apps/web/core/components/project-states/create-update/create.tsx +++ b/apps/web/core/components/project-states/create-update/create.tsx @@ -34,7 +34,7 @@ export const StateCreate = observer(function StateCreate(props: TStateCreate) { if (!groupKey) return { status: "error" }; try { - const response = await createStateCallback({ ...formData, group: groupKey }); + await createStateCallback({ ...formData, group: groupKey }); setToast({ type: TOAST_TYPE.SUCCESS, diff --git a/apps/web/core/components/project-states/root.tsx b/apps/web/core/components/project-states/root.tsx index 8aac7f4d8b2..20e0dd393d9 100644 --- a/apps/web/core/components/project-states/root.tsx +++ b/apps/web/core/components/project-states/root.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { useMemo } from "react"; import { observer } from "mobx-react"; import useSWR from "swr"; diff --git a/apps/web/core/components/project/dropdowns/order-by.tsx b/apps/web/core/components/project/dropdowns/order-by.tsx index ad00e3b2e00..5b83e0c2879 100644 --- a/apps/web/core/components/project/dropdowns/order-by.tsx +++ b/apps/web/core/components/project/dropdowns/order-by.tsx @@ -9,7 +9,7 @@ import { ArrowDownWideNarrow } from "lucide-react"; import { PROJECT_ORDER_BY_OPTIONS } from "@plane/constants"; import { useTranslation } from "@plane/i18n"; import { getButtonStyling } from "@plane/propel/button"; -import { CheckIcon, ChevronDownIcon } from "@plane/propel/icons"; +import { CheckIcon } from "@plane/propel/icons"; import type { TProjectOrderByOptions } from "@plane/types"; import { CustomMenu } from "@plane/ui"; diff --git a/apps/web/core/components/project/leave-project-modal.tsx b/apps/web/core/components/project/leave-project-modal.tsx index 0f4b32ae02d..262a1237bef 100644 --- a/apps/web/core/components/project/leave-project-modal.tsx +++ b/apps/web/core/components/project/leave-project-modal.tsx @@ -64,7 +64,7 @@ export const LeaveProjectModal = observer(function LeaveProjectModal(props: ILea .then(() => { handleClose(); }) - .catch((err) => { + .catch((_err) => { setToast({ type: TOAST_TYPE.ERROR, title: "Error!", diff --git a/apps/web/core/components/sidebar/add-button.tsx b/apps/web/core/components/sidebar/add-button.tsx index 1e41f5192f0..6db327e363b 100644 --- a/apps/web/core/components/sidebar/add-button.tsx +++ b/apps/web/core/components/sidebar/add-button.tsx @@ -5,7 +5,6 @@ */ import { Button } from "@plane/propel/button"; -import { cn } from "@plane/utils"; type Props = React.ComponentProps<"button"> & { label: React.ReactNode; diff --git a/apps/web/core/components/views/filters/order-by.tsx b/apps/web/core/components/views/filters/order-by.tsx index bb27650f69f..33360658864 100644 --- a/apps/web/core/components/views/filters/order-by.tsx +++ b/apps/web/core/components/views/filters/order-by.tsx @@ -9,7 +9,7 @@ import { ArrowDownWideNarrow, ArrowUpWideNarrow } from "lucide-react"; import { VIEW_SORT_BY_OPTIONS, VIEW_SORTING_KEY_OPTIONS } from "@plane/constants"; import { useTranslation } from "@plane/i18n"; import { getButtonStyling } from "@plane/propel/button"; -import { CheckIcon, ChevronDownIcon } from "@plane/propel/icons"; +import { CheckIcon } from "@plane/propel/icons"; import type { TViewFiltersSortBy, TViewFiltersSortKey } from "@plane/types"; import { CustomMenu } from "@plane/ui"; diff --git a/apps/web/core/components/views/view-list-item-action.tsx b/apps/web/core/components/views/view-list-item-action.tsx index 3e917a01544..5bfa74a32bc 100644 --- a/apps/web/core/components/views/view-list-item-action.tsx +++ b/apps/web/core/components/views/view-list-item-action.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React, { useState } from "react"; import { observer } from "mobx-react"; import { useParams } from "next/navigation"; diff --git a/apps/web/core/components/views/view-list-item.tsx b/apps/web/core/components/views/view-list-item.tsx index 511759bf150..a790daca062 100644 --- a/apps/web/core/components/views/view-list-item.tsx +++ b/apps/web/core/components/views/view-list-item.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { useRef } from "react"; import { observer } from "mobx-react"; import { useParams } from "next/navigation"; diff --git a/apps/web/core/components/web-hooks/form/secret-key.tsx b/apps/web/core/components/web-hooks/form/secret-key.tsx index 50ec98ea479..98bf1b73c88 100644 --- a/apps/web/core/components/web-hooks/form/secret-key.tsx +++ b/apps/web/core/components/web-hooks/form/secret-key.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { useState } from "react"; import { range } from "lodash-es"; import { observer } from "mobx-react"; diff --git a/apps/web/core/components/workspace-notifications/notification-app-sidebar-option.tsx b/apps/web/core/components/workspace-notifications/notification-app-sidebar-option.tsx index a6b39246ed2..935c36ae503 100644 --- a/apps/web/core/components/workspace-notifications/notification-app-sidebar-option.tsx +++ b/apps/web/core/components/workspace-notifications/notification-app-sidebar-option.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { observer } from "mobx-react"; import useSWR from "swr"; // plane imports diff --git a/apps/web/core/components/workspace/billing/comparison/feature-detail.tsx b/apps/web/core/components/workspace/billing/comparison/feature-detail.tsx index 5476f142a15..b3335f3454b 100644 --- a/apps/web/core/components/workspace/billing/comparison/feature-detail.tsx +++ b/apps/web/core/components/workspace/billing/comparison/feature-detail.tsx @@ -7,7 +7,6 @@ import { CheckCircle2, Minus, MinusCircle } from "lucide-react"; import type { EProductSubscriptionEnum } from "@plane/types"; // plane imports -import { cn } from "@plane/utils"; // constants import type { TPlanFeatureData } from "@/constants/plans"; @@ -17,7 +16,7 @@ type TPlanFeatureDetailProps = { }; export function PlanFeatureDetail(props: TPlanFeatureDetailProps) { - const { subscriptionType, data } = props; + const { data } = props; if (data === null || data === undefined) { return ; diff --git a/apps/web/core/hooks/use-collaborative-page-actions.tsx b/apps/web/core/hooks/use-collaborative-page-actions.tsx index 7fc1491ff27..d212b47da65 100644 --- a/apps/web/core/hooks/use-collaborative-page-actions.tsx +++ b/apps/web/core/hooks/use-collaborative-page-actions.tsx @@ -5,7 +5,7 @@ */ import { useState, useEffect, useCallback, useMemo } from "react"; -import type { EditorRefApi, TDocumentEventsServer } from "@plane/editor"; +import type { TDocumentEventsServer } from "@plane/editor"; import type { TDocumentEventsClient } from "@plane/editor/lib"; import { DocumentCollaborativeEvents, getServerEventName } from "@plane/editor/lib"; import { TOAST_TYPE, setToast } from "@plane/propel/toast"; diff --git a/apps/web/core/services/analytics.service.ts b/apps/web/core/services/analytics.service.ts index 9b0c9431df0..4480d37bd07 100644 --- a/apps/web/core/services/analytics.service.ts +++ b/apps/web/core/services/analytics.service.ts @@ -88,7 +88,7 @@ export class AnalyticsService extends APIService { }); } - processUrl( + processUrl<_T extends string>( endpoint: string, workspaceSlug: string, tab: TAnalyticsGraphsBase | TAnalyticsTabsBase, diff --git a/apps/web/core/services/instance.service.ts b/apps/web/core/services/instance.service.ts index ae2e9d516ff..875401da36b 100644 --- a/apps/web/core/services/instance.service.ts +++ b/apps/web/core/services/instance.service.ts @@ -6,7 +6,7 @@ // types import { API_BASE_URL } from "@plane/constants"; -import type { IInstanceInfo, TPage } from "@plane/types"; +import type { IInstanceInfo } from "@plane/types"; // helpers // services import { APIService } from "@/services/api.service"; diff --git a/apps/web/core/store/issue/issue-details/relation.store.ts b/apps/web/core/store/issue/issue-details/relation.store.ts index f03b73cf3a1..4cdabd8a8cf 100644 --- a/apps/web/core/store/issue/issue-details/relation.store.ts +++ b/apps/web/core/store/issue/issue-details/relation.store.ts @@ -305,7 +305,7 @@ export class IssueRelationStore implements IIssueRelationStore { set(this.relationMap, [issueId], issueRelations); } }); - } catch (e) { + } catch (_e) { console.error("Error while extracting issue relations from issues"); } }; diff --git a/apps/web/core/store/issue/issue-details/root.store.ts b/apps/web/core/store/issue/issue-details/root.store.ts index ea0775aa157..77c7b64323d 100644 --- a/apps/web/core/store/issue/issue-details/root.store.ts +++ b/apps/web/core/store/issue/issue-details/root.store.ts @@ -23,7 +23,6 @@ import type { IIssueActivityStoreActions, TActivityLoader, } from "@/plane-web/store/issue/issue-details/activity.store"; -import type { RootStore } from "@/plane-web/store/root.store"; import type { TIssueRelationTypes } from "@/plane-web/types"; import type { IIssueRootStore } from "../root.store"; import { IssueAttachmentStore } from "./attachment.store"; diff --git a/apps/web/core/store/issue/module/issue.store.ts b/apps/web/core/store/issue/module/issue.store.ts index 973ff92fcd0..4f3fbddbf82 100644 --- a/apps/web/core/store/issue/module/issue.store.ts +++ b/apps/web/core/store/issue/module/issue.store.ts @@ -117,7 +117,7 @@ export class ModuleIssues extends BaseIssuesStore implements IModuleIssues { const moduleId = id ?? this.moduleId; moduleId && this.rootIssueStore.rootStore.module.updateModuleDistribution(distributionUpdates, moduleId); - } catch (e) { + } catch (_e) { console.warn("could not update module statistics"); } }; diff --git a/apps/web/core/store/issue/workspace-draft/issue.store.ts b/apps/web/core/store/issue/workspace-draft/issue.store.ts index 48b017676bd..850a9e03e31 100644 --- a/apps/web/core/store/issue/workspace-draft/issue.store.ts +++ b/apps/web/core/store/issue/workspace-draft/issue.store.ts @@ -391,31 +391,39 @@ export class WorkspaceDraftIssues implements IWorkspaceDraftIssues { // dummies viewFlags: ViewFlags = { enableQuickAdd: false, enableIssueCreation: false, enableInlineEditing: false }; groupedIssueIds: TGroupedIssues | TSubGroupedIssues | undefined = undefined; - getIssueIds = (groupId?: string, subGroupId?: string) => undefined; - getPaginationData = (groupId: string | undefined, subGroupId: string | undefined) => undefined; - getIssueLoader = (groupId?: string, subGroupId?: string) => "loaded" as TLoader; - getGroupIssueCount = (groupId: string | undefined, subGroupId: string | undefined, isSubGroupCumulative: boolean) => - undefined; - removeCycleFromIssue = async (workspaceSlug: string, projectId: string, issueId: string) => {}; + getIssueIds = (_groupId?: string, _subGroupId?: string) => undefined; + getPaginationData = (_groupId: string | undefined, _subGroupId: string | undefined) => undefined; + getIssueLoader = (_groupId?: string, _subGroupId?: string) => "loaded" as TLoader; + getGroupIssueCount = ( + _groupId: string | undefined, + _subGroupId: string | undefined, + _isSubGroupCumulative: boolean + ) => undefined; + removeCycleFromIssue = async (_workspaceSlug: string, _projectId: string, _issueId: string) => {}; addIssueToCycle = async ( - workspaceSlug: string, - projectId: string, - cycleId: string, - issueIds: string[], - fetchAddedIssues?: boolean + _workspaceSlug: string, + _projectId: string, + _cycleId: string, + _issueIds: string[], + _fetchAddedIssues?: boolean ) => {}; - removeIssueFromCycle = async (workspaceSlug: string, projectId: string, cycleId: string, issueId: string) => {}; + removeIssueFromCycle = async (_workspaceSlug: string, _projectId: string, _cycleId: string, _issueId: string) => {}; - removeIssuesFromModule = async (workspaceSlug: string, projectId: string, moduleId: string, issueIds: string[]) => {}; + removeIssuesFromModule = async ( + _workspaceSlug: string, + _projectId: string, + _moduleId: string, + _issueIds: string[] + ) => {}; changeModulesInIssue = async ( - workspaceSlug: string, - projectId: string, - issueId: string, - addModuleIds: string[], - removeModuleIds: string[] + _workspaceSlug: string, + _projectId: string, + _issueId: string, + _addModuleIds: string[], + _removeModuleIds: string[] ) => {}; - archiveIssue = async (workspaceSlug: string, projectId: string, issueId: string) => {}; - archiveBulkIssues = async (workspaceSlug: string, projectId: string, issueIds: string[]) => {}; - removeBulkIssues = async (workspaceSlug: string, projectId: string, issueIds: string[]) => {}; - bulkUpdateProperties = async (workspaceSlug: string, projectId: string, data: TBulkOperationsPayload) => {}; + archiveIssue = async (_workspaceSlug: string, _projectId: string, _issueId: string) => {}; + archiveBulkIssues = async (_workspaceSlug: string, _projectId: string, _issueIds: string[]) => {}; + removeBulkIssues = async (_workspaceSlug: string, _projectId: string, _issueIds: string[]) => {}; + bulkUpdateProperties = async (_workspaceSlug: string, _projectId: string, _data: TBulkOperationsPayload) => {}; } diff --git a/apps/web/core/store/pages/project-page.store.ts b/apps/web/core/store/pages/project-page.store.ts index c84dad1b5d9..abb48ab9178 100644 --- a/apps/web/core/store/pages/project-page.store.ts +++ b/apps/web/core/store/pages/project-page.store.ts @@ -328,7 +328,7 @@ export class ProjectPageStore implements IProjectPageStore { * @description delete a page * @param {string} pageId */ - removePage = async ({ pageId, shouldSync = true }: { pageId: string; shouldSync?: boolean }) => { + removePage = async ({ pageId, shouldSync: _shouldSync = true }: { pageId: string; shouldSync?: boolean }) => { try { const { workspaceSlug, projectId } = this.store.router; if (!workspaceSlug || !projectId || !pageId) return undefined; From 5a7d1ebd65c9283ec97a155bc5dd3c914431206d Mon Sep 17 00:00:00 2001 From: darkingtail <51188676+darkingtail@users.noreply.github.com> Date: Wed, 25 Mar 2026 04:20:38 +0800 Subject: [PATCH 22/62] fix: remove unused imports and variables (part 3) (#8753) Resolve oxlint no-unused-vars warnings in apps/web/core/components/issues/. --- .../core/components/issues/archived-issues-header.tsx | 1 - .../components/issues/attachment/attachment-detail.tsx | 1 - .../issues/attachment/attachment-item-list.tsx | 1 - .../issues/attachment/attachment-list-item.tsx | 1 - .../components/issues/attachment/attachments-list.tsx | 1 - .../issues/attachment/delete-attachment-modal.tsx | 1 - .../issues/create-issue-toast-action-items.tsx | 5 ++--- .../issues/issue-detail-widgets/action-buttons.tsx | 1 - .../issue-detail-widgets/attachments/content.tsx | 1 - .../attachments/quick-action-button.tsx | 1 - .../issues/issue-detail-widgets/attachments/root.tsx | 1 - .../issues/issue-detail-widgets/attachments/title.tsx | 1 - .../issue-detail-widget-collapsibles.tsx | 1 - .../issue-detail-widget-modals.tsx | 1 - .../issues/issue-detail-widgets/links/content.tsx | 1 - .../issue-detail-widgets/links/quick-action-button.tsx | 1 - .../issues/issue-detail-widgets/links/root.tsx | 1 - .../issues/issue-detail-widgets/links/title.tsx | 1 - .../issues/issue-detail-widgets/relations/content.tsx | 1 - .../relations/quick-action-button.tsx | 1 - .../issues/issue-detail-widgets/relations/root.tsx | 1 - .../issues/issue-detail-widgets/relations/title.tsx | 1 - .../components/issues/issue-detail-widgets/root.tsx | 1 - .../issues/issue-detail-widgets/sub-issues/content.tsx | 1 - .../sub-issues/display-filters.tsx | 1 - .../issues/issue-detail-widgets/sub-issues/filters.tsx | 1 - .../sub-issues/issues-list/list-group.tsx | 1 - .../sub-issues/quick-action-button.tsx | 1 - .../issues/issue-detail-widgets/sub-issues/root.tsx | 1 - .../issue-detail-widgets/sub-issues/title-actions.tsx | 1 - .../issues/issue-detail-widgets/sub-issues/title.tsx | 10 +--------- .../issues/issue-detail-widgets/widget-button.tsx | 1 - .../activity/actions/helpers/activity-block.tsx | 2 +- .../issue-activity/activity/actions/target_date.tsx | 1 - .../core/components/issues/issue-detail/label/root.tsx | 2 +- .../issue-detail/links/create-update-link-modal.tsx | 1 - .../components/issues/issue-detail/reactions/issue.tsx | 2 +- .../components/issues/issue-detail/subscription.tsx | 1 - .../issues/issue-layouts/calendar/calendar.tsx | 1 - .../issues/issue-layouts/calendar/day-tile.tsx | 1 - .../calendar/dropdowns/months-dropdown.tsx | 1 - .../calendar/dropdowns/options-dropdown.tsx | 1 - .../issues/issue-layouts/calendar/header.tsx | 1 - .../issues/issue-layouts/calendar/week-days.tsx | 1 - .../issues/issue-layouts/empty-states/project-view.tsx | 2 +- .../issue-layouts/filters/header/helpers/dropdown.tsx | 1 - .../components/issues/issue-layouts/kanban/default.tsx | 3 --- .../issue-layouts/kanban/headers/sub-group-by-card.tsx | 1 - .../issues/issue-layouts/list/block-root.tsx | 2 +- .../issues/issue-layouts/list/blocks-list.tsx | 2 +- .../issue-layouts/list/headers/group-by-card.tsx | 2 +- .../issue-layouts/list/roots/archived-issue-root.tsx | 1 - .../issue-layouts/list/roots/profile-issues-root.tsx | 1 - .../issues/issue-layouts/list/roots/project-root.tsx | 1 - .../quick-action-dropdowns/issue-detail.tsx | 3 +-- .../issues/issue-layouts/quick-add/button/gantt.tsx | 1 - .../issues/issue-layouts/quick-add/button/kanban.tsx | 1 - .../issues/issue-layouts/quick-add/button/list.tsx | 1 - .../issue-layouts/quick-add/button/spreadsheet.tsx | 1 - .../issues/issue-layouts/quick-add/form/calendar.tsx | 1 - .../issues/issue-layouts/quick-add/form/gantt.tsx | 1 - .../issues/issue-layouts/quick-add/form/kanban.tsx | 1 - .../issues/issue-layouts/quick-add/form/list.tsx | 1 - .../issue-layouts/quick-add/form/spreadsheet.tsx | 1 - .../issue-layouts/roots/all-issue-layout-root.tsx | 1 - .../web/core/components/issues/issue-layouts/utils.tsx | 2 +- apps/web/core/components/issues/issue-modal/form.tsx | 2 -- .../core/components/issues/layout-quick-actions.tsx | 2 +- .../web/core/components/issues/peek-overview/error.tsx | 1 - .../components/issues/peek-overview/issue-detail.tsx | 1 - .../core/components/issues/peek-overview/loader.tsx | 1 - apps/web/core/components/issues/peek-overview/root.tsx | 2 +- apps/web/core/components/issues/peek-overview/view.tsx | 1 - .../components/issues/relations/issue-list-item.tsx | 1 - .../core/components/issues/relations/issue-list.tsx | 1 - .../core/components/issues/relations/properties.tsx | 1 - apps/web/core/components/issues/title-input.tsx | 1 - .../issues/workspace-draft/draft-issue-block.tsx | 1 - .../components/issues/workspace-draft/empty-state.tsx | 1 - .../core/components/issues/workspace-draft/loader.tsx | 1 - 80 files changed, 14 insertions(+), 94 deletions(-) diff --git a/apps/web/core/components/issues/archived-issues-header.tsx b/apps/web/core/components/issues/archived-issues-header.tsx index 2f0077911e1..8190b45853d 100644 --- a/apps/web/core/components/issues/archived-issues-header.tsx +++ b/apps/web/core/components/issues/archived-issues-header.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { observer } from "mobx-react"; import { useParams } from "next/navigation"; // plane imports diff --git a/apps/web/core/components/issues/attachment/attachment-detail.tsx b/apps/web/core/components/issues/attachment/attachment-detail.tsx index 1d7db397957..fb486b04b18 100644 --- a/apps/web/core/components/issues/attachment/attachment-detail.tsx +++ b/apps/web/core/components/issues/attachment/attachment-detail.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { useState } from "react"; import { observer } from "mobx-react"; import Link from "next/link"; diff --git a/apps/web/core/components/issues/attachment/attachment-item-list.tsx b/apps/web/core/components/issues/attachment/attachment-item-list.tsx index 46f619be1c6..0ac4db84f29 100644 --- a/apps/web/core/components/issues/attachment/attachment-item-list.tsx +++ b/apps/web/core/components/issues/attachment/attachment-item-list.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { useCallback, useState } from "react"; import { observer } from "mobx-react"; import type { FileRejection } from "react-dropzone"; diff --git a/apps/web/core/components/issues/attachment/attachment-list-item.tsx b/apps/web/core/components/issues/attachment/attachment-list-item.tsx index 55023fec4d2..6c8135d6264 100644 --- a/apps/web/core/components/issues/attachment/attachment-list-item.tsx +++ b/apps/web/core/components/issues/attachment/attachment-list-item.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { observer } from "mobx-react"; import { useTranslation } from "@plane/i18n"; diff --git a/apps/web/core/components/issues/attachment/attachments-list.tsx b/apps/web/core/components/issues/attachment/attachments-list.tsx index 2811709075c..a5d75e16652 100644 --- a/apps/web/core/components/issues/attachment/attachments-list.tsx +++ b/apps/web/core/components/issues/attachment/attachments-list.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { observer } from "mobx-react"; // hooks import { useIssueDetail } from "@/hooks/store/use-issue-detail"; diff --git a/apps/web/core/components/issues/attachment/delete-attachment-modal.tsx b/apps/web/core/components/issues/attachment/delete-attachment-modal.tsx index 691b3126170..676f4e38290 100644 --- a/apps/web/core/components/issues/attachment/delete-attachment-modal.tsx +++ b/apps/web/core/components/issues/attachment/delete-attachment-modal.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { useState } from "react"; import { observer } from "mobx-react"; // plane-i18n diff --git a/apps/web/core/components/issues/create-issue-toast-action-items.tsx b/apps/web/core/components/issues/create-issue-toast-action-items.tsx index 1d894dbf8ed..2bdcd552a81 100644 --- a/apps/web/core/components/issues/create-issue-toast-action-items.tsx +++ b/apps/web/core/components/issues/create-issue-toast-action-items.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React, { useState } from "react"; import { observer } from "mobx-react"; import { copyUrlToClipboard, generateWorkItemLink } from "@plane/utils"; @@ -24,7 +23,7 @@ type TCreateIssueToastActionItems = { export const CreateIssueToastActionItems = observer(function CreateIssueToastActionItems( props: TCreateIssueToastActionItems ) { - const { workspaceSlug, projectId, issueId, isEpic = false } = props; + const { workspaceSlug, issueId, isEpic = false } = props; // state const [copied, setCopied] = useState(false); // store hooks @@ -53,7 +52,7 @@ export const CreateIssueToastActionItems = observer(function CreateIssueToastAct await copyUrlToClipboard(workItemLink); setCopied(true); setTimeout(() => setCopied(false), 3000); - } catch (error) { + } catch (_error) { setCopied(false); } e.preventDefault(); diff --git a/apps/web/core/components/issues/issue-detail-widgets/action-buttons.tsx b/apps/web/core/components/issues/issue-detail-widgets/action-buttons.tsx index c82628e3a90..e9b1ac43a9b 100644 --- a/apps/web/core/components/issues/issue-detail-widgets/action-buttons.tsx +++ b/apps/web/core/components/issues/issue-detail-widgets/action-buttons.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React from "react"; import { Paperclip } from "lucide-react"; import { useTranslation } from "@plane/i18n"; diff --git a/apps/web/core/components/issues/issue-detail-widgets/attachments/content.tsx b/apps/web/core/components/issues/issue-detail-widgets/attachments/content.tsx index a536acf5a56..90c738ee784 100644 --- a/apps/web/core/components/issues/issue-detail-widgets/attachments/content.tsx +++ b/apps/web/core/components/issues/issue-detail-widgets/attachments/content.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React from "react"; import { observer } from "mobx-react"; import type { TIssueServiceType } from "@plane/types"; diff --git a/apps/web/core/components/issues/issue-detail-widgets/attachments/quick-action-button.tsx b/apps/web/core/components/issues/issue-detail-widgets/attachments/quick-action-button.tsx index 4354d380697..7853b3b4e40 100644 --- a/apps/web/core/components/issues/issue-detail-widgets/attachments/quick-action-button.tsx +++ b/apps/web/core/components/issues/issue-detail-widgets/attachments/quick-action-button.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React, { useCallback, useState } from "react"; import { observer } from "mobx-react"; import type { FileRejection } from "react-dropzone"; diff --git a/apps/web/core/components/issues/issue-detail-widgets/attachments/root.tsx b/apps/web/core/components/issues/issue-detail-widgets/attachments/root.tsx index 0c94fca605a..e1a94c7d79e 100644 --- a/apps/web/core/components/issues/issue-detail-widgets/attachments/root.tsx +++ b/apps/web/core/components/issues/issue-detail-widgets/attachments/root.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React from "react"; import { observer } from "mobx-react"; // plane imports diff --git a/apps/web/core/components/issues/issue-detail-widgets/attachments/title.tsx b/apps/web/core/components/issues/issue-detail-widgets/attachments/title.tsx index 74d69f3cfbe..28ce79670b7 100644 --- a/apps/web/core/components/issues/issue-detail-widgets/attachments/title.tsx +++ b/apps/web/core/components/issues/issue-detail-widgets/attachments/title.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React, { useMemo } from "react"; import { observer } from "mobx-react"; import { useTranslation } from "@plane/i18n"; diff --git a/apps/web/core/components/issues/issue-detail-widgets/issue-detail-widget-collapsibles.tsx b/apps/web/core/components/issues/issue-detail-widgets/issue-detail-widget-collapsibles.tsx index 962e933190a..8f741ad1660 100644 --- a/apps/web/core/components/issues/issue-detail-widgets/issue-detail-widget-collapsibles.tsx +++ b/apps/web/core/components/issues/issue-detail-widgets/issue-detail-widget-collapsibles.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React from "react"; import { observer } from "mobx-react"; // plane imports diff --git a/apps/web/core/components/issues/issue-detail-widgets/issue-detail-widget-modals.tsx b/apps/web/core/components/issues/issue-detail-widgets/issue-detail-widget-modals.tsx index fc08f6a7b91..de3d180cee5 100644 --- a/apps/web/core/components/issues/issue-detail-widgets/issue-detail-widget-modals.tsx +++ b/apps/web/core/components/issues/issue-detail-widgets/issue-detail-widget-modals.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React from "react"; import { observer } from "mobx-react"; import { TOAST_TYPE, setToast } from "@plane/propel/toast"; diff --git a/apps/web/core/components/issues/issue-detail-widgets/links/content.tsx b/apps/web/core/components/issues/issue-detail-widgets/links/content.tsx index 999721885ca..3ffe9950c22 100644 --- a/apps/web/core/components/issues/issue-detail-widgets/links/content.tsx +++ b/apps/web/core/components/issues/issue-detail-widgets/links/content.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React from "react"; import type { TIssueServiceType } from "@plane/types"; // components diff --git a/apps/web/core/components/issues/issue-detail-widgets/links/quick-action-button.tsx b/apps/web/core/components/issues/issue-detail-widgets/links/quick-action-button.tsx index f10504ef7ad..7ed50892902 100644 --- a/apps/web/core/components/issues/issue-detail-widgets/links/quick-action-button.tsx +++ b/apps/web/core/components/issues/issue-detail-widgets/links/quick-action-button.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React from "react"; import { observer } from "mobx-react"; import { PlusIcon } from "@plane/propel/icons"; diff --git a/apps/web/core/components/issues/issue-detail-widgets/links/root.tsx b/apps/web/core/components/issues/issue-detail-widgets/links/root.tsx index b38c6b2b6fd..bd963868a2e 100644 --- a/apps/web/core/components/issues/issue-detail-widgets/links/root.tsx +++ b/apps/web/core/components/issues/issue-detail-widgets/links/root.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React from "react"; import { observer } from "mobx-react"; // plane imports diff --git a/apps/web/core/components/issues/issue-detail-widgets/links/title.tsx b/apps/web/core/components/issues/issue-detail-widgets/links/title.tsx index ceb855a1dab..b9d1fa76360 100644 --- a/apps/web/core/components/issues/issue-detail-widgets/links/title.tsx +++ b/apps/web/core/components/issues/issue-detail-widgets/links/title.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React, { useMemo } from "react"; import { observer } from "mobx-react"; // plane imports diff --git a/apps/web/core/components/issues/issue-detail-widgets/relations/content.tsx b/apps/web/core/components/issues/issue-detail-widgets/relations/content.tsx index c7b6377ac74..2e2f5f4a88d 100644 --- a/apps/web/core/components/issues/issue-detail-widgets/relations/content.tsx +++ b/apps/web/core/components/issues/issue-detail-widgets/relations/content.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { useState } from "react"; import { observer } from "mobx-react"; // plane imports diff --git a/apps/web/core/components/issues/issue-detail-widgets/relations/quick-action-button.tsx b/apps/web/core/components/issues/issue-detail-widgets/relations/quick-action-button.tsx index 98700c91818..46375887c71 100644 --- a/apps/web/core/components/issues/issue-detail-widgets/relations/quick-action-button.tsx +++ b/apps/web/core/components/issues/issue-detail-widgets/relations/quick-action-button.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React from "react"; import { observer } from "mobx-react"; diff --git a/apps/web/core/components/issues/issue-detail-widgets/relations/root.tsx b/apps/web/core/components/issues/issue-detail-widgets/relations/root.tsx index edebdb19b61..d1b5d80880d 100644 --- a/apps/web/core/components/issues/issue-detail-widgets/relations/root.tsx +++ b/apps/web/core/components/issues/issue-detail-widgets/relations/root.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React from "react"; import { observer } from "mobx-react"; // plane imports diff --git a/apps/web/core/components/issues/issue-detail-widgets/relations/title.tsx b/apps/web/core/components/issues/issue-detail-widgets/relations/title.tsx index ce4bdab4aa1..658359c22d0 100644 --- a/apps/web/core/components/issues/issue-detail-widgets/relations/title.tsx +++ b/apps/web/core/components/issues/issue-detail-widgets/relations/title.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React, { useMemo } from "react"; import { observer } from "mobx-react"; import { useTranslation } from "@plane/i18n"; diff --git a/apps/web/core/components/issues/issue-detail-widgets/root.tsx b/apps/web/core/components/issues/issue-detail-widgets/root.tsx index 037e345f1fe..2218ec3b7aa 100644 --- a/apps/web/core/components/issues/issue-detail-widgets/root.tsx +++ b/apps/web/core/components/issues/issue-detail-widgets/root.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React from "react"; // plane imports import type { TIssueServiceType, TWorkItemWidgets } from "@plane/types"; diff --git a/apps/web/core/components/issues/issue-detail-widgets/sub-issues/content.tsx b/apps/web/core/components/issues/issue-detail-widgets/sub-issues/content.tsx index 96e020113a1..0dbf8c85ab5 100644 --- a/apps/web/core/components/issues/issue-detail-widgets/sub-issues/content.tsx +++ b/apps/web/core/components/issues/issue-detail-widgets/sub-issues/content.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React, { useEffect, useState, useCallback } from "react"; import { observer } from "mobx-react"; import type { TIssue, TIssueServiceType } from "@plane/types"; diff --git a/apps/web/core/components/issues/issue-detail-widgets/sub-issues/display-filters.tsx b/apps/web/core/components/issues/issue-detail-widgets/sub-issues/display-filters.tsx index 4d679d69379..cf4260b2eba 100644 --- a/apps/web/core/components/issues/issue-detail-widgets/sub-issues/display-filters.tsx +++ b/apps/web/core/components/issues/issue-detail-widgets/sub-issues/display-filters.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { useMemo } from "react"; import { isEmpty } from "lodash-es"; import { observer } from "mobx-react"; diff --git a/apps/web/core/components/issues/issue-detail-widgets/sub-issues/filters.tsx b/apps/web/core/components/issues/issue-detail-widgets/sub-issues/filters.tsx index ea95af28dc1..9dbaf05d2de 100644 --- a/apps/web/core/components/issues/issue-detail-widgets/sub-issues/filters.tsx +++ b/apps/web/core/components/issues/issue-detail-widgets/sub-issues/filters.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { useMemo, useState } from "react"; import { observer } from "mobx-react"; import { ListFilter } from "lucide-react"; diff --git a/apps/web/core/components/issues/issue-detail-widgets/sub-issues/issues-list/list-group.tsx b/apps/web/core/components/issues/issue-detail-widgets/sub-issues/issues-list/list-group.tsx index 94fa95d4358..b76d7241002 100644 --- a/apps/web/core/components/issues/issue-detail-widgets/sub-issues/issues-list/list-group.tsx +++ b/apps/web/core/components/issues/issue-detail-widgets/sub-issues/issues-list/list-group.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { useState } from "react"; import { observer } from "mobx-react"; import { CircleDashed } from "lucide-react"; diff --git a/apps/web/core/components/issues/issue-detail-widgets/sub-issues/quick-action-button.tsx b/apps/web/core/components/issues/issue-detail-widgets/sub-issues/quick-action-button.tsx index 8e825e00c0e..ded8cc8cb96 100644 --- a/apps/web/core/components/issues/issue-detail-widgets/sub-issues/quick-action-button.tsx +++ b/apps/web/core/components/issues/issue-detail-widgets/sub-issues/quick-action-button.tsx @@ -7,7 +7,6 @@ import React from "react"; import { observer } from "mobx-react"; // plane imports -import { WORK_ITEM_TRACKER_EVENTS } from "@plane/constants"; import { useTranslation } from "@plane/i18n"; import { PlusIcon, WorkItemsIcon } from "@plane/propel/icons"; import type { TIssue, TIssueServiceType } from "@plane/types"; diff --git a/apps/web/core/components/issues/issue-detail-widgets/sub-issues/root.tsx b/apps/web/core/components/issues/issue-detail-widgets/sub-issues/root.tsx index c0de91cb92b..4bc8c79690c 100644 --- a/apps/web/core/components/issues/issue-detail-widgets/sub-issues/root.tsx +++ b/apps/web/core/components/issues/issue-detail-widgets/sub-issues/root.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React from "react"; import { observer } from "mobx-react"; // plane imports diff --git a/apps/web/core/components/issues/issue-detail-widgets/sub-issues/title-actions.tsx b/apps/web/core/components/issues/issue-detail-widgets/sub-issues/title-actions.tsx index 997a1ae574d..524ec47951e 100644 --- a/apps/web/core/components/issues/issue-detail-widgets/sub-issues/title-actions.tsx +++ b/apps/web/core/components/issues/issue-detail-widgets/sub-issues/title-actions.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { useCallback } from "react"; import { cloneDeep } from "lodash-es"; import { observer } from "mobx-react"; diff --git a/apps/web/core/components/issues/issue-detail-widgets/sub-issues/title.tsx b/apps/web/core/components/issues/issue-detail-widgets/sub-issues/title.tsx index 1298dbe156b..10beb87889d 100644 --- a/apps/web/core/components/issues/issue-detail-widgets/sub-issues/title.tsx +++ b/apps/web/core/components/issues/issue-detail-widgets/sub-issues/title.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { observer } from "mobx-react"; // plane imports import { useTranslation } from "@plane/i18n"; @@ -25,14 +24,7 @@ type Props = { }; export const SubIssuesCollapsibleTitle = observer(function SubIssuesCollapsibleTitle(props: Props) { - const { - isOpen, - parentIssueId, - disabled, - issueServiceType = EIssueServiceType.ISSUES, - projectId, - workspaceSlug, - } = props; + const { isOpen, parentIssueId, disabled, issueServiceType = EIssueServiceType.ISSUES, projectId } = props; // translation const { t } = useTranslation(); // store hooks diff --git a/apps/web/core/components/issues/issue-detail-widgets/widget-button.tsx b/apps/web/core/components/issues/issue-detail-widgets/widget-button.tsx index c848aeea112..df2dd31cf5d 100644 --- a/apps/web/core/components/issues/issue-detail-widgets/widget-button.tsx +++ b/apps/web/core/components/issues/issue-detail-widgets/widget-button.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React from "react"; // helpers import { Button } from "@plane/propel/button"; diff --git a/apps/web/core/components/issues/issue-detail/issue-activity/activity/actions/helpers/activity-block.tsx b/apps/web/core/components/issues/issue-detail/issue-activity/activity/actions/helpers/activity-block.tsx index 1906cd8d6ca..a88bc7a806a 100644 --- a/apps/web/core/components/issues/issue-detail/issue-activity/activity/actions/helpers/activity-block.tsx +++ b/apps/web/core/components/issues/issue-detail/issue-activity/activity/actions/helpers/activity-block.tsx @@ -4,7 +4,7 @@ * See the LICENSE file for details. */ -import type { FC, ReactNode } from "react"; +import type { ReactNode } from "react"; import { Network } from "lucide-react"; // plane imports import { Tooltip } from "@plane/propel/tooltip"; diff --git a/apps/web/core/components/issues/issue-detail/issue-activity/activity/actions/target_date.tsx b/apps/web/core/components/issues/issue-detail/issue-activity/activity/actions/target_date.tsx index a7da1d45d20..d38c497089d 100644 --- a/apps/web/core/components/issues/issue-detail/issue-activity/activity/actions/target_date.tsx +++ b/apps/web/core/components/issues/issue-detail/issue-activity/activity/actions/target_date.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { observer } from "mobx-react"; import { CalendarDays } from "lucide-react"; // hooks diff --git a/apps/web/core/components/issues/issue-detail/label/root.tsx b/apps/web/core/components/issues/issue-detail/label/root.tsx index bc9ecd34a25..b205c56d5c0 100644 --- a/apps/web/core/components/issues/issue-detail/label/root.tsx +++ b/apps/web/core/components/issues/issue-detail/label/root.tsx @@ -62,7 +62,7 @@ export const IssueLabel = observer(function IssueLabel(props: TIssueLabel) { try { if (onLabelUpdate) onLabelUpdate(data.label_ids || []); else await updateIssue(workspaceSlug, projectId, issueId, data); - } catch (error) { + } catch (_error) { setToast({ title: t("toast.error"), type: TOAST_TYPE.ERROR, diff --git a/apps/web/core/components/issues/issue-detail/links/create-update-link-modal.tsx b/apps/web/core/components/issues/issue-detail/links/create-update-link-modal.tsx index 4f37b31a80f..ecc11ddcdf4 100644 --- a/apps/web/core/components/issues/issue-detail/links/create-update-link-modal.tsx +++ b/apps/web/core/components/issues/issue-detail/links/create-update-link-modal.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { useEffect } from "react"; import { observer } from "mobx-react"; import { Controller, useForm } from "react-hook-form"; diff --git a/apps/web/core/components/issues/issue-detail/reactions/issue.tsx b/apps/web/core/components/issues/issue-detail/reactions/issue.tsx index 20e2e17bc5c..ac1f944102b 100644 --- a/apps/web/core/components/issues/issue-detail/reactions/issue.tsx +++ b/apps/web/core/components/issues/issue-detail/reactions/issue.tsx @@ -54,7 +54,7 @@ export const IssueReaction = observer(function IssueReaction(props: TIssueReacti type: TOAST_TYPE.SUCCESS, message: "Reaction created successfully", }); - } catch (error) { + } catch (_error) { setToast({ title: "Error!", type: TOAST_TYPE.ERROR, diff --git a/apps/web/core/components/issues/issue-detail/subscription.tsx b/apps/web/core/components/issues/issue-detail/subscription.tsx index 16c3fa41075..d9573d63c62 100644 --- a/apps/web/core/components/issues/issue-detail/subscription.tsx +++ b/apps/web/core/components/issues/issue-detail/subscription.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { useState } from "react"; import { isNil } from "lodash-es"; import { observer } from "mobx-react"; diff --git a/apps/web/core/components/issues/issue-layouts/calendar/calendar.tsx b/apps/web/core/components/issues/issue-layouts/calendar/calendar.tsx index d028c4f5adf..1d1ed886039 100644 --- a/apps/web/core/components/issues/issue-layouts/calendar/calendar.tsx +++ b/apps/web/core/components/issues/issue-layouts/calendar/calendar.tsx @@ -30,7 +30,6 @@ import { MONTHS_LIST } from "@/constants/calendar"; import { useIssues } from "@/hooks/store/use-issues"; import useSize from "@/hooks/use-window-size"; // store -import type { IProjectEpicsFilter } from "@/plane-web/store/issue/epic"; import type { ICycleIssuesFilter } from "@/store/issue/cycle"; import type { ICalendarStore } from "@/store/issue/issue_calendar_view.store"; import type { IModuleIssuesFilter } from "@/store/issue/module"; diff --git a/apps/web/core/components/issues/issue-layouts/calendar/day-tile.tsx b/apps/web/core/components/issues/issue-layouts/calendar/day-tile.tsx index ebf54597305..78a55230067 100644 --- a/apps/web/core/components/issues/issue-layouts/calendar/day-tile.tsx +++ b/apps/web/core/components/issues/issue-layouts/calendar/day-tile.tsx @@ -20,7 +20,6 @@ import { highlightIssueOnDrop } from "@/components/issues/issue-layouts/utils"; import { MONTHS_LIST } from "@/constants/calendar"; // helpers // types -import type { IProjectEpicsFilter } from "@/plane-web/store/issue/epic"; import type { ICycleIssuesFilter } from "@/store/issue/cycle"; import type { IModuleIssuesFilter } from "@/store/issue/module"; import type { IProjectIssuesFilter } from "@/store/issue/project"; diff --git a/apps/web/core/components/issues/issue-layouts/calendar/dropdowns/months-dropdown.tsx b/apps/web/core/components/issues/issue-layouts/calendar/dropdowns/months-dropdown.tsx index e6228890dcf..9539c5dd5c2 100644 --- a/apps/web/core/components/issues/issue-layouts/calendar/dropdowns/months-dropdown.tsx +++ b/apps/web/core/components/issues/issue-layouts/calendar/dropdowns/months-dropdown.tsx @@ -15,7 +15,6 @@ import { ChevronLeftIcon, ChevronRightIcon } from "@plane/propel/icons"; import { getDate } from "@plane/utils"; import { MONTHS_LIST } from "@/constants/calendar"; import { useCalendarView } from "@/hooks/store/use-calendar-view"; -import type { IProjectEpicsFilter } from "@/plane-web/store/issue/epic"; import type { ICycleIssuesFilter } from "@/store/issue/cycle"; import type { IModuleIssuesFilter } from "@/store/issue/module"; import type { IProjectIssuesFilter } from "@/store/issue/project"; diff --git a/apps/web/core/components/issues/issue-layouts/calendar/dropdowns/options-dropdown.tsx b/apps/web/core/components/issues/issue-layouts/calendar/dropdowns/options-dropdown.tsx index b0503c26d51..2917da06979 100644 --- a/apps/web/core/components/issues/issue-layouts/calendar/dropdowns/options-dropdown.tsx +++ b/apps/web/core/components/issues/issue-layouts/calendar/dropdowns/options-dropdown.tsx @@ -24,7 +24,6 @@ import { ToggleSwitch } from "@plane/ui"; import { CALENDAR_LAYOUTS } from "@/constants/calendar"; import { useCalendarView } from "@/hooks/store/use-calendar-view"; import useSize from "@/hooks/use-window-size"; -import type { IProjectEpicsFilter } from "@/plane-web/store/issue/epic"; import type { ICycleIssuesFilter } from "@/store/issue/cycle"; import type { IModuleIssuesFilter } from "@/store/issue/module"; import type { IProjectIssuesFilter } from "@/store/issue/project"; diff --git a/apps/web/core/components/issues/issue-layouts/calendar/header.tsx b/apps/web/core/components/issues/issue-layouts/calendar/header.tsx index ebb5b64f37b..a16d80a15dc 100644 --- a/apps/web/core/components/issues/issue-layouts/calendar/header.tsx +++ b/apps/web/core/components/issues/issue-layouts/calendar/header.tsx @@ -14,7 +14,6 @@ import type { TSupportedFilterForUpdate } from "@plane/types"; import { Row } from "@plane/ui"; // icons import { useCalendarView } from "@/hooks/store/use-calendar-view"; -import type { IProjectEpicsFilter } from "@/plane-web/store/issue/epic"; import type { ICycleIssuesFilter } from "@/store/issue/cycle"; import type { IModuleIssuesFilter } from "@/store/issue/module"; import type { IProjectIssuesFilter } from "@/store/issue/project"; diff --git a/apps/web/core/components/issues/issue-layouts/calendar/week-days.tsx b/apps/web/core/components/issues/issue-layouts/calendar/week-days.tsx index 5f3381e0c75..5635d6d410f 100644 --- a/apps/web/core/components/issues/issue-layouts/calendar/week-days.tsx +++ b/apps/web/core/components/issues/issue-layouts/calendar/week-days.tsx @@ -11,7 +11,6 @@ import { cn, getOrderedDays, renderFormattedPayloadDate } from "@plane/utils"; // hooks import { useUserProfile } from "@/hooks/store/user"; // types -import type { IProjectEpicsFilter } from "@/plane-web/store/issue/epic"; import type { ICycleIssuesFilter } from "@/store/issue/cycle"; import type { IModuleIssuesFilter } from "@/store/issue/module"; import type { IProjectIssuesFilter } from "@/store/issue/project"; diff --git a/apps/web/core/components/issues/issue-layouts/empty-states/project-view.tsx b/apps/web/core/components/issues/issue-layouts/empty-states/project-view.tsx index e5b8b1ce4e8..4bcfa8fb977 100644 --- a/apps/web/core/components/issues/issue-layouts/empty-states/project-view.tsx +++ b/apps/web/core/components/issues/issue-layouts/empty-states/project-view.tsx @@ -6,7 +6,7 @@ import { observer } from "mobx-react"; // components -import { EUserPermissions, EUserPermissionsLevel, WORK_ITEM_TRACKER_ELEMENTS } from "@plane/constants"; +import { EUserPermissions, EUserPermissionsLevel } from "@plane/constants"; import { EmptyStateDetailed } from "@plane/propel/empty-state"; import { EIssuesStoreType } from "@plane/types"; // hooks diff --git a/apps/web/core/components/issues/issue-layouts/filters/header/helpers/dropdown.tsx b/apps/web/core/components/issues/issue-layouts/filters/header/helpers/dropdown.tsx index 4067fa38f41..fdf49f374a8 100644 --- a/apps/web/core/components/issues/issue-layouts/filters/header/helpers/dropdown.tsx +++ b/apps/web/core/components/issues/issue-layouts/filters/header/helpers/dropdown.tsx @@ -11,7 +11,6 @@ import { usePopper } from "react-popper"; import { Popover, Transition } from "@headlessui/react"; // ui import { Button } from "@plane/propel/button"; -import { ChevronUpIcon } from "@plane/propel/icons"; type Props = { children: React.ReactNode; diff --git a/apps/web/core/components/issues/issue-layouts/kanban/default.tsx b/apps/web/core/components/issues/issue-layouts/kanban/default.tsx index d52e256a218..b7326ee0f9c 100644 --- a/apps/web/core/components/issues/issue-layouts/kanban/default.tsx +++ b/apps/web/core/components/issues/issue-layouts/kanban/default.tsx @@ -6,8 +6,6 @@ import type { MutableRefObject } from "react"; import { observer } from "mobx-react"; -// i18n -import { useTranslation } from "@plane/i18n"; import type { GroupByColumnTypes, IGroupByColumn, @@ -100,7 +98,6 @@ export const KanBan = observer(function KanBan(props: IKanBan) { isEpic = false, } = props; // i18n - const { t } = useTranslation(); // store hooks const storeType = useIssueStoreType(); const issueKanBanView = useKanbanView(); diff --git a/apps/web/core/components/issues/issue-layouts/kanban/headers/sub-group-by-card.tsx b/apps/web/core/components/issues/issue-layouts/kanban/headers/sub-group-by-card.tsx index 1a3827672f1..55eb49155b1 100644 --- a/apps/web/core/components/issues/issue-layouts/kanban/headers/sub-group-by-card.tsx +++ b/apps/web/core/components/issues/issue-layouts/kanban/headers/sub-group-by-card.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React from "react"; import { observer } from "mobx-react"; import { Circle } from "lucide-react"; diff --git a/apps/web/core/components/issues/issue-layouts/list/block-root.tsx b/apps/web/core/components/issues/issue-layouts/list/block-root.tsx index 8ab27463dd0..7050cd1addc 100644 --- a/apps/web/core/components/issues/issue-layouts/list/block-root.tsx +++ b/apps/web/core/components/issues/issue-layouts/list/block-root.tsx @@ -4,7 +4,7 @@ * See the LICENSE file for details. */ -import type { FC, MutableRefObject } from "react"; +import type { MutableRefObject } from "react"; import React, { useEffect, useRef, useState } from "react"; import { combine } from "@atlaskit/pragmatic-drag-and-drop/combine"; import { dropTargetForElements } from "@atlaskit/pragmatic-drag-and-drop/element/adapter"; diff --git a/apps/web/core/components/issues/issue-layouts/list/blocks-list.tsx b/apps/web/core/components/issues/issue-layouts/list/blocks-list.tsx index 958ebb26e29..cc3690900c2 100644 --- a/apps/web/core/components/issues/issue-layouts/list/blocks-list.tsx +++ b/apps/web/core/components/issues/issue-layouts/list/blocks-list.tsx @@ -4,7 +4,7 @@ * See the LICENSE file for details. */ -import type { FC, MutableRefObject } from "react"; +import type { MutableRefObject } from "react"; // components import type { TIssue, IIssueDisplayProperties, TIssueMap, TGroupedIssues } from "@plane/types"; // hooks diff --git a/apps/web/core/components/issues/issue-layouts/list/headers/group-by-card.tsx b/apps/web/core/components/issues/issue-layouts/list/headers/group-by-card.tsx index ad861ad2cfa..9fec4fc10a1 100644 --- a/apps/web/core/components/issues/issue-layouts/list/headers/group-by-card.tsx +++ b/apps/web/core/components/issues/issue-layouts/list/headers/group-by-card.tsx @@ -83,7 +83,7 @@ export const HeaderGroupByCard = observer(function HeaderGroupByCard(props: IHea title: "Success!", message: "Work items added to the cycle successfully.", }); - } catch (error) { + } catch (_error) { setToast({ type: TOAST_TYPE.ERROR, title: "Error!", diff --git a/apps/web/core/components/issues/issue-layouts/list/roots/archived-issue-root.tsx b/apps/web/core/components/issues/issue-layouts/list/roots/archived-issue-root.tsx index 7d134080b0e..54c8913fab3 100644 --- a/apps/web/core/components/issues/issue-layouts/list/roots/archived-issue-root.tsx +++ b/apps/web/core/components/issues/issue-layouts/list/roots/archived-issue-root.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { observer } from "mobx-react"; // local imports import { ArchivedIssueQuickActions } from "../../quick-action-dropdowns"; diff --git a/apps/web/core/components/issues/issue-layouts/list/roots/profile-issues-root.tsx b/apps/web/core/components/issues/issue-layouts/list/roots/profile-issues-root.tsx index eb1c3450e78..cc69e7cdff0 100644 --- a/apps/web/core/components/issues/issue-layouts/list/roots/profile-issues-root.tsx +++ b/apps/web/core/components/issues/issue-layouts/list/roots/profile-issues-root.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { observer } from "mobx-react"; import { useParams } from "next/navigation"; import { EUserPermissions, EUserPermissionsLevel } from "@plane/constants"; diff --git a/apps/web/core/components/issues/issue-layouts/list/roots/project-root.tsx b/apps/web/core/components/issues/issue-layouts/list/roots/project-root.tsx index 7d4eb226ea9..bde805f3619 100644 --- a/apps/web/core/components/issues/issue-layouts/list/roots/project-root.tsx +++ b/apps/web/core/components/issues/issue-layouts/list/roots/project-root.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { observer } from "mobx-react"; import { useParams } from "next/navigation"; // plane imports diff --git a/apps/web/core/components/issues/issue-layouts/quick-action-dropdowns/issue-detail.tsx b/apps/web/core/components/issues/issue-layouts/quick-action-dropdowns/issue-detail.tsx index 82e65dd0278..ab391019682 100644 --- a/apps/web/core/components/issues/issue-layouts/quick-action-dropdowns/issue-detail.tsx +++ b/apps/web/core/components/issues/issue-layouts/quick-action-dropdowns/issue-detail.tsx @@ -7,7 +7,7 @@ import { useState } from "react"; import { omit } from "lodash-es"; import { observer } from "mobx-react"; -import { useParams, usePathname } from "next/navigation"; +import { useParams } from "next/navigation"; import { Ellipsis } from "lucide-react"; // plane imports import { ARCHIVABLE_STATE_GROUPS, EUserPermissions, EUserPermissionsLevel } from "@plane/constants"; @@ -60,7 +60,6 @@ export const WorkItemDetailQuickActions = observer(function WorkItemDetailQuickA } = props; // router const { workspaceSlug } = useParams(); - const pathname = usePathname(); // states const [createUpdateIssueModal, setCreateUpdateIssueModal] = useState(false); const [issueToEdit, setIssueToEdit] = useState(undefined); diff --git a/apps/web/core/components/issues/issue-layouts/quick-add/button/gantt.tsx b/apps/web/core/components/issues/issue-layouts/quick-add/button/gantt.tsx index 2700c788867..0362734af1d 100644 --- a/apps/web/core/components/issues/issue-layouts/quick-add/button/gantt.tsx +++ b/apps/web/core/components/issues/issue-layouts/quick-add/button/gantt.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { observer } from "mobx-react"; import { useTranslation } from "@plane/i18n"; diff --git a/apps/web/core/components/issues/issue-layouts/quick-add/button/kanban.tsx b/apps/web/core/components/issues/issue-layouts/quick-add/button/kanban.tsx index 5a02c87768a..4ecd6a36208 100644 --- a/apps/web/core/components/issues/issue-layouts/quick-add/button/kanban.tsx +++ b/apps/web/core/components/issues/issue-layouts/quick-add/button/kanban.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { observer } from "mobx-react"; import { useTranslation } from "@plane/i18n"; diff --git a/apps/web/core/components/issues/issue-layouts/quick-add/button/list.tsx b/apps/web/core/components/issues/issue-layouts/quick-add/button/list.tsx index dce450308ff..1a17c44f887 100644 --- a/apps/web/core/components/issues/issue-layouts/quick-add/button/list.tsx +++ b/apps/web/core/components/issues/issue-layouts/quick-add/button/list.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { observer } from "mobx-react"; import { useTranslation } from "@plane/i18n"; diff --git a/apps/web/core/components/issues/issue-layouts/quick-add/button/spreadsheet.tsx b/apps/web/core/components/issues/issue-layouts/quick-add/button/spreadsheet.tsx index f3f742ff92b..a94ccb068d1 100644 --- a/apps/web/core/components/issues/issue-layouts/quick-add/button/spreadsheet.tsx +++ b/apps/web/core/components/issues/issue-layouts/quick-add/button/spreadsheet.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { observer } from "mobx-react"; import { useTranslation } from "@plane/i18n"; diff --git a/apps/web/core/components/issues/issue-layouts/quick-add/form/calendar.tsx b/apps/web/core/components/issues/issue-layouts/quick-add/form/calendar.tsx index 1079a45fbf6..9fd69a8b9fe 100644 --- a/apps/web/core/components/issues/issue-layouts/quick-add/form/calendar.tsx +++ b/apps/web/core/components/issues/issue-layouts/quick-add/form/calendar.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { observer } from "mobx-react"; import type { TQuickAddIssueForm } from "../root"; diff --git a/apps/web/core/components/issues/issue-layouts/quick-add/form/gantt.tsx b/apps/web/core/components/issues/issue-layouts/quick-add/form/gantt.tsx index 01c61213fdf..65d05c40311 100644 --- a/apps/web/core/components/issues/issue-layouts/quick-add/form/gantt.tsx +++ b/apps/web/core/components/issues/issue-layouts/quick-add/form/gantt.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { observer } from "mobx-react"; import { useTranslation } from "@plane/i18n"; import { cn } from "@plane/utils"; diff --git a/apps/web/core/components/issues/issue-layouts/quick-add/form/kanban.tsx b/apps/web/core/components/issues/issue-layouts/quick-add/form/kanban.tsx index 0338a4f58c3..f6a1aba136b 100644 --- a/apps/web/core/components/issues/issue-layouts/quick-add/form/kanban.tsx +++ b/apps/web/core/components/issues/issue-layouts/quick-add/form/kanban.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { observer } from "mobx-react"; import { useTranslation } from "@plane/i18n"; import type { TQuickAddIssueForm } from "../root"; diff --git a/apps/web/core/components/issues/issue-layouts/quick-add/form/list.tsx b/apps/web/core/components/issues/issue-layouts/quick-add/form/list.tsx index 7aba3fc4413..7f9ff9b6d25 100644 --- a/apps/web/core/components/issues/issue-layouts/quick-add/form/list.tsx +++ b/apps/web/core/components/issues/issue-layouts/quick-add/form/list.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { observer } from "mobx-react"; import { useTranslation } from "@plane/i18n"; import type { TQuickAddIssueForm } from "../root"; diff --git a/apps/web/core/components/issues/issue-layouts/quick-add/form/spreadsheet.tsx b/apps/web/core/components/issues/issue-layouts/quick-add/form/spreadsheet.tsx index 10a1acc16bb..ebf5978a2c6 100644 --- a/apps/web/core/components/issues/issue-layouts/quick-add/form/spreadsheet.tsx +++ b/apps/web/core/components/issues/issue-layouts/quick-add/form/spreadsheet.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { observer } from "mobx-react"; import { useTranslation } from "@plane/i18n"; import type { TQuickAddIssueForm } from "../root"; diff --git a/apps/web/core/components/issues/issue-layouts/roots/all-issue-layout-root.tsx b/apps/web/core/components/issues/issue-layouts/roots/all-issue-layout-root.tsx index 5a2921ba7e8..a7bad0857bb 100644 --- a/apps/web/core/components/issues/issue-layouts/roots/all-issue-layout-root.tsx +++ b/apps/web/core/components/issues/issue-layouts/roots/all-issue-layout-root.tsx @@ -14,7 +14,6 @@ import { EmptyStateDetailed } from "@plane/propel/empty-state"; import type { EIssueLayoutTypes } from "@plane/types"; import { EIssuesStoreType, STATIC_VIEW_TYPES } from "@plane/types"; // assets -import emptyView from "@/app/assets/empty-state/view.svg?url"; // components import { IssuePeekOverview } from "@/components/issues/peek-overview"; import { WorkspaceActiveLayout } from "@/components/views/helper"; diff --git a/apps/web/core/components/issues/issue-layouts/utils.tsx b/apps/web/core/components/issues/issue-layouts/utils.tsx index c1a1a89f358..f6cd86b64ba 100644 --- a/apps/web/core/components/issues/issue-layouts/utils.tsx +++ b/apps/web/core/components/issues/issue-layouts/utils.tsx @@ -4,7 +4,7 @@ * See the LICENSE file for details. */ -import type { CSSProperties, FC } from "react"; +import type { CSSProperties } from "react"; import { extractInstruction } from "@atlaskit/pragmatic-drag-and-drop-hitbox/tree-item"; import { clone, isNil, pull, uniq, concat } from "lodash-es"; import scrollIntoView from "smooth-scroll-into-view-if-needed"; diff --git a/apps/web/core/components/issues/issue-modal/form.tsx b/apps/web/core/components/issues/issue-modal/form.tsx index 01812b1bca9..33d7c599317 100644 --- a/apps/web/core/components/issues/issue-modal/form.tsx +++ b/apps/web/core/components/issues/issue-modal/form.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React, { useState, useRef, useEffect } from "react"; import { observer } from "mobx-react"; import { useParams } from "next/navigation"; @@ -17,7 +16,6 @@ import { useTranslation } from "@plane/i18n"; import { Button } from "@plane/propel/button"; import { TOAST_TYPE, setToast } from "@plane/propel/toast"; import type { TIssue, TWorkspaceDraftIssue } from "@plane/types"; -import { EIssuesStoreType } from "@plane/types"; // hooks import { ToggleSwitch } from "@plane/ui"; import { diff --git a/apps/web/core/components/issues/layout-quick-actions.tsx b/apps/web/core/components/issues/layout-quick-actions.tsx index 39f5061bea3..c68f9e907fb 100644 --- a/apps/web/core/components/issues/layout-quick-actions.tsx +++ b/apps/web/core/components/issues/layout-quick-actions.tsx @@ -10,7 +10,7 @@ import type { TContextMenuItem } from "@plane/ui"; import { CustomMenu } from "@plane/ui"; import { copyUrlToClipboard, cn } from "@plane/utils"; import { useLayoutMenuItems } from "@/components/common/quick-actions-helper"; -import { Ellipsis, MoreHorizontal } from "lucide-react"; +import { Ellipsis } from "lucide-react"; import { IconButton } from "@plane/propel/icon-button"; type Props = { diff --git a/apps/web/core/components/issues/peek-overview/error.tsx b/apps/web/core/components/issues/peek-overview/error.tsx index c616c3592cd..3d033598337 100644 --- a/apps/web/core/components/issues/peek-overview/error.tsx +++ b/apps/web/core/components/issues/peek-overview/error.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { MoveRight } from "lucide-react"; import { Tooltip } from "@plane/propel/tooltip"; // assets diff --git a/apps/web/core/components/issues/peek-overview/issue-detail.tsx b/apps/web/core/components/issues/peek-overview/issue-detail.tsx index bac7ea28bb1..6bd89124b62 100644 --- a/apps/web/core/components/issues/peek-overview/issue-detail.tsx +++ b/apps/web/core/components/issues/peek-overview/issue-detail.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { useEffect } from "react"; import { observer } from "mobx-react"; // plane imports diff --git a/apps/web/core/components/issues/peek-overview/loader.tsx b/apps/web/core/components/issues/peek-overview/loader.tsx index 0be333fe517..701f72844e6 100644 --- a/apps/web/core/components/issues/peek-overview/loader.tsx +++ b/apps/web/core/components/issues/peek-overview/loader.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { MoveRight } from "lucide-react"; import { Tooltip } from "@plane/propel/tooltip"; import { Loader } from "@plane/ui"; diff --git a/apps/web/core/components/issues/peek-overview/root.tsx b/apps/web/core/components/issues/peek-overview/root.tsx index 7e964edba4e..421aaebbdb0 100644 --- a/apps/web/core/components/issues/peek-overview/root.tsx +++ b/apps/web/core/components/issues/peek-overview/root.tsx @@ -83,7 +83,7 @@ export const IssuePeekOverview = observer(function IssuePeekOverview(props: IWor fetchActivities(workspaceSlug, projectId, issueId); return; }) - .catch((error) => { + .catch((_error) => { setToast({ title: t("toast.error"), type: TOAST_TYPE.ERROR, diff --git a/apps/web/core/components/issues/peek-overview/view.tsx b/apps/web/core/components/issues/peek-overview/view.tsx index 8776b6d60a7..333e4038c3d 100644 --- a/apps/web/core/components/issues/peek-overview/view.tsx +++ b/apps/web/core/components/issues/peek-overview/view.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { useRef, useState } from "react"; import { observer } from "mobx-react"; import { createPortal } from "react-dom"; diff --git a/apps/web/core/components/issues/relations/issue-list-item.tsx b/apps/web/core/components/issues/relations/issue-list-item.tsx index e5f3f450782..573a4b725a8 100644 --- a/apps/web/core/components/issues/relations/issue-list-item.tsx +++ b/apps/web/core/components/issues/relations/issue-list-item.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React from "react"; import { observer } from "mobx-react"; import { useTranslation } from "@plane/i18n"; diff --git a/apps/web/core/components/issues/relations/issue-list.tsx b/apps/web/core/components/issues/relations/issue-list.tsx index b5a23e77184..e6f245416ee 100644 --- a/apps/web/core/components/issues/relations/issue-list.tsx +++ b/apps/web/core/components/issues/relations/issue-list.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React from "react"; import { observer } from "mobx-react"; // plane imports diff --git a/apps/web/core/components/issues/relations/properties.tsx b/apps/web/core/components/issues/relations/properties.tsx index 80bf9567b41..0342d8cebf1 100644 --- a/apps/web/core/components/issues/relations/properties.tsx +++ b/apps/web/core/components/issues/relations/properties.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React from "react"; import { observer } from "mobx-react"; // components diff --git a/apps/web/core/components/issues/title-input.tsx b/apps/web/core/components/issues/title-input.tsx index 921a8676a2d..ce82b0e7225 100644 --- a/apps/web/core/components/issues/title-input.tsx +++ b/apps/web/core/components/issues/title-input.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { useState, useEffect, useCallback, useRef } from "react"; import { observer } from "mobx-react"; import { useTranslation } from "@plane/i18n"; diff --git a/apps/web/core/components/issues/workspace-draft/draft-issue-block.tsx b/apps/web/core/components/issues/workspace-draft/draft-issue-block.tsx index b411ece6698..dd3c7b5998f 100644 --- a/apps/web/core/components/issues/workspace-draft/draft-issue-block.tsx +++ b/apps/web/core/components/issues/workspace-draft/draft-issue-block.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import React, { useRef, useState } from "react"; import { omit } from "lodash-es"; import { observer } from "mobx-react"; diff --git a/apps/web/core/components/issues/workspace-draft/empty-state.tsx b/apps/web/core/components/issues/workspace-draft/empty-state.tsx index a720a58a5e7..a5d4f84c8b6 100644 --- a/apps/web/core/components/issues/workspace-draft/empty-state.tsx +++ b/apps/web/core/components/issues/workspace-draft/empty-state.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { Fragment, useState } from "react"; // components import { observer } from "mobx-react"; diff --git a/apps/web/core/components/issues/workspace-draft/loader.tsx b/apps/web/core/components/issues/workspace-draft/loader.tsx index 60d0a610e5b..b301f946ab6 100644 --- a/apps/web/core/components/issues/workspace-draft/loader.tsx +++ b/apps/web/core/components/issues/workspace-draft/loader.tsx @@ -4,7 +4,6 @@ * See the LICENSE file for details. */ -import type { FC } from "react"; import { range } from "lodash-es"; // components import { ListLoaderItemRow } from "@/components/ui/loader/layouts/list-layout-loader"; From d91b5a274b4f8ad9d9eea10eb3a250150957b887 Mon Sep 17 00:00:00 2001 From: sriram veeraghanta Date: Wed, 25 Mar 2026 01:59:25 +0530 Subject: [PATCH 23/62] fix: removed unused files --- .codespellrc | 7 -- .github/dependabot.yml | 55 ------------- .github/workflows/codespell.yml | 25 ------ .../pull-request-build-lint-web-apps.yml | 2 - .github/workflows/sync-repo-pr.yml | 52 ------------- .github/workflows/sync-repo.yml | 44 ----------- docker-compose-local.yml | 78 ------------------- 7 files changed, 263 deletions(-) delete mode 100644 .codespellrc delete mode 100644 .github/dependabot.yml delete mode 100644 .github/workflows/codespell.yml delete mode 100644 .github/workflows/sync-repo-pr.yml delete mode 100644 .github/workflows/sync-repo.yml diff --git a/.codespellrc b/.codespellrc deleted file mode 100644 index ffe730b747b..00000000000 --- a/.codespellrc +++ /dev/null @@ -1,7 +0,0 @@ -[codespell] -# Ref: https://github.com/codespell-project/codespell#using-a-config-file -skip = .git*,*.svg,i18n,*-lock.yaml,*.css,.codespellrc,migrations,*.js,*.map,*.mjs -check-hidden = true -# ignore all CamelCase and camelCase -ignore-regex = \b[A-Za-z][a-z]+[A-Z][a-zA-Z]+\b -ignore-words-list = tread diff --git a/.github/dependabot.yml b/.github/dependabot.yml deleted file mode 100644 index 3ef625faef2..00000000000 --- a/.github/dependabot.yml +++ /dev/null @@ -1,55 +0,0 @@ -version: 2 -updates: - # JavaScript/TypeScript dependencies (pnpm monorepo root) - - package-ecosystem: "npm" - directory: "/" - schedule: - interval: "weekly" - open-pull-requests-limit: 10 - labels: - - "dependencies" - - "javascript" - groups: - minor-and-patch: - update-types: - - "minor" - - "patch" - - # Python dependencies - - package-ecosystem: "pip" - directory: "/apps/api" - schedule: - interval: "weekly" - open-pull-requests-limit: 5 - labels: - - "dependencies" - - "python" - groups: - minor-and-patch: - update-types: - - "minor" - - "patch" - - # GitHub Actions - - package-ecosystem: "github-actions" - directory: "/" - schedule: - interval: "weekly" - open-pull-requests-limit: 5 - labels: - - "dependencies" - - "github-actions" - groups: - actions: - patterns: - - "*" - - # Docker - API - - package-ecosystem: "docker" - directory: "/apps/api" - schedule: - interval: "weekly" - open-pull-requests-limit: 5 - labels: - - "dependencies" - - "docker" diff --git a/.github/workflows/codespell.yml b/.github/workflows/codespell.yml deleted file mode 100644 index 2798d8d5255..00000000000 --- a/.github/workflows/codespell.yml +++ /dev/null @@ -1,25 +0,0 @@ -# Codespell configuration is within .codespellrc ---- -name: Codespell - -on: - push: - branches: [preview] - pull_request: - branches: [preview] - -permissions: - contents: read - -jobs: - codespell: - name: Check for spelling errors - runs-on: ubuntu-latest - - steps: - - name: Checkout - uses: actions/checkout@v6 - - name: Annotate locations with typos - uses: codespell-project/codespell-problem-matcher@v1 - - name: Codespell - uses: codespell-project/actions-codespell@v2 diff --git a/.github/workflows/pull-request-build-lint-web-apps.yml b/.github/workflows/pull-request-build-lint-web-apps.yml index d5d417ca395..719f101187d 100644 --- a/.github/workflows/pull-request-build-lint-web-apps.yml +++ b/.github/workflows/pull-request-build-lint-web-apps.yml @@ -8,8 +8,6 @@ on: types: - "opened" - "synchronize" - - "ready_for_review" - - "review_requested" - "reopened" concurrency: diff --git a/.github/workflows/sync-repo-pr.yml b/.github/workflows/sync-repo-pr.yml deleted file mode 100644 index 5047f4fee0f..00000000000 --- a/.github/workflows/sync-repo-pr.yml +++ /dev/null @@ -1,52 +0,0 @@ -name: Create PR on Sync - -on: - workflow_dispatch: - push: - branches: - - "sync/**" - -env: - CURRENT_BRANCH: ${{ github.ref_name }} - TARGET_BRANCH: "preview" # The target branch that you would like to merge changes like develop - GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }} # Personal access token required to modify contents and workflows - ACCOUNT_USER_NAME: ${{ vars.ACCOUNT_USER_NAME }} - ACCOUNT_USER_EMAIL: ${{ vars.ACCOUNT_USER_EMAIL }} - -jobs: - create_pull_request: - runs-on: ubuntu-latest - permissions: - pull-requests: write - contents: write - steps: - - name: Checkout code - uses: actions/checkout@v6 - with: - fetch-depth: 0 # Fetch all history for all branches and tags - - - name: Setup Git - run: | - git config user.name "$ACCOUNT_USER_NAME" - git config user.email "$ACCOUNT_USER_EMAIL" - - - name: Setup GH CLI and Git Config - run: | - type -p curl >/dev/null || (sudo apt update && sudo apt install curl -y) - curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg - sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg - echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null - sudo apt update - sudo apt install gh -y - - - name: Create PR to Target Branch - run: | - # get all pull requests and check if there is already a PR - PR_EXISTS=$(gh pr list --base $TARGET_BRANCH --head $CURRENT_BRANCH --state open --json number | jq '.[] | .number') - if [ -n "$PR_EXISTS" ]; then - echo "Pull Request already exists: $PR_EXISTS" - else - echo "Creating new pull request" - PR_URL=$(gh pr create --base $TARGET_BRANCH --head $CURRENT_BRANCH --title "${{ vars.SYNC_PR_TITLE }}" --body "") - echo "Pull Request created: $PR_URL" - fi diff --git a/.github/workflows/sync-repo.yml b/.github/workflows/sync-repo.yml deleted file mode 100644 index 3f97dbbf10b..00000000000 --- a/.github/workflows/sync-repo.yml +++ /dev/null @@ -1,44 +0,0 @@ -name: Sync Repositories - -on: - workflow_dispatch: - push: - branches: - - preview - -env: - SOURCE_BRANCH_NAME: ${{ github.ref_name }} - -jobs: - sync_changes: - runs-on: ubuntu-22.04 - permissions: - pull-requests: write - contents: read - steps: - - name: Checkout Code - uses: actions/checkout@v6 - with: - persist-credentials: false - fetch-depth: 0 - - - name: Setup GH CLI - run: | - type -p curl >/dev/null || (sudo apt update && sudo apt install curl -y) - curl -fsSL https://cli.github.com/packages/githubcli-archive-keyring.gpg | sudo dd of=/usr/share/keyrings/githubcli-archive-keyring.gpg - sudo chmod go+r /usr/share/keyrings/githubcli-archive-keyring.gpg - echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" | sudo tee /etc/apt/sources.list.d/github-cli.list > /dev/null - sudo apt update - sudo apt install gh -y - - - name: Push Changes to Target Repo - env: - GH_TOKEN: ${{ secrets.ACCESS_TOKEN }} - run: | - TARGET_REPO="${{ vars.SYNC_TARGET_REPO }}" - TARGET_BRANCH="${{ vars.SYNC_TARGET_BRANCH_NAME }}" - SOURCE_BRANCH="${{ env.SOURCE_BRANCH_NAME }}" - - git checkout $SOURCE_BRANCH - git remote add target-origin-a "https://$GH_TOKEN@github.com/$TARGET_REPO.git" - git push target-origin-a $SOURCE_BRANCH:$TARGET_BRANCH diff --git a/docker-compose-local.yml b/docker-compose-local.yml index 5b7cba39e11..6bc5ee309f7 100644 --- a/docker-compose-local.yml +++ b/docker-compose-local.yml @@ -63,63 +63,6 @@ services: ports: - "5432:5432" - # web: - # build: - # context: . - # dockerfile: ./web/Dockerfile.dev - # restart: unless-stopped - # networks: - # - dev_env - # volumes: - # - ./web:/app/web - # env_file: - # - ./web/.env - # depends_on: - # - api - # - worker - - # space: - # build: - # context: . - # dockerfile: ./space/Dockerfile.dev - # restart: unless-stopped - # networks: - # - dev_env - # volumes: - # - ./space:/app/space - # depends_on: - # - api - # - worker - # - web - - # admin: - # build: - # context: . - # dockerfile: ./admin/Dockerfile.dev - # restart: unless-stopped - # networks: - # - dev_env - # volumes: - # - ./admin:/app/admin - # depends_on: - # - api - # - worker - # - web - - # live: - # build: - # context: . - # dockerfile: ./live/Dockerfile.dev - # restart: unless-stopped - # networks: - # - dev_env - # volumes: - # - ./live:/app/live - # depends_on: - # - api - # - worker - # - web - api: build: context: ./apps/api @@ -197,27 +140,6 @@ services: - plane-db - plane-redis - # proxy: - # build: - # context: ./apps/proxy - # dockerfile: Dockerfile.ce - # restart: unless-stopped - # networks: - # - dev_env - # ports: - # - ${LISTEN_HTTP_PORT}:80 - # - ${LISTEN_HTTPS_PORT}:443 - # env_file: - # - .env - # environment: - # FILE_SIZE_LIMIT: ${FILE_SIZE_LIMIT:-5242880} - # BUCKET_NAME: ${AWS_S3_BUCKET_NAME:-uploads} - # depends_on: - # - api - # - web - # - space - # - admin - volumes: redisdata: uploads: From f3c7c057b44902bb89c087c3adcaa2394a79b6dc Mon Sep 17 00:00:00 2001 From: sriram veeraghanta Date: Wed, 25 Mar 2026 13:13:58 +0530 Subject: [PATCH 24/62] chore: remove service token endpoint which is unused (#8797) --- apps/api/plane/app/urls/api.py | 7 +------ apps/api/plane/app/views/__init__.py | 2 +- apps/api/plane/app/views/api.py | 28 +--------------------------- 3 files changed, 3 insertions(+), 34 deletions(-) diff --git a/apps/api/plane/app/urls/api.py b/apps/api/plane/app/urls/api.py index eedf18ccc3d..145cfdd652d 100644 --- a/apps/api/plane/app/urls/api.py +++ b/apps/api/plane/app/urls/api.py @@ -3,7 +3,7 @@ # See the LICENSE file for details. from django.urls import path -from plane.app.views import ApiTokenEndpoint, ServiceApiTokenEndpoint +from plane.app.views import ApiTokenEndpoint urlpatterns = [ # API Tokens @@ -17,10 +17,5 @@ ApiTokenEndpoint.as_view(), name="api-tokens-details", ), - path( - "workspaces//service-api-tokens/", - ServiceApiTokenEndpoint.as_view(), - name="service-api-tokens", - ), ## End API Tokens ] diff --git a/apps/api/plane/app/views/__init__.py b/apps/api/plane/app/views/__init__.py index baa6661b9cc..84f7872ec85 100644 --- a/apps/api/plane/app/views/__init__.py +++ b/apps/api/plane/app/views/__init__.py @@ -165,7 +165,7 @@ from .module.archive import ModuleArchiveUnarchiveEndpoint -from .api import ApiTokenEndpoint, ServiceApiTokenEndpoint +from .api import ApiTokenEndpoint from .page.base import ( PageViewSet, diff --git a/apps/api/plane/app/views/api.py b/apps/api/plane/app/views/api.py index f2abc1a2dec..f3163c33146 100644 --- a/apps/api/plane/app/views/api.py +++ b/apps/api/plane/app/views/api.py @@ -13,9 +13,8 @@ # Module import from .base import BaseAPIView -from plane.db.models import APIToken, Workspace +from plane.db.models import APIToken from plane.app.serializers import APITokenSerializer, APITokenReadSerializer -from plane.app.permissions import WorkspaceEntityPermission class ApiTokenEndpoint(BaseAPIView): @@ -61,28 +60,3 @@ def patch(self, request: Request, pk: str) -> Response: serializer.save() return Response(serializer.data, status=status.HTTP_200_OK) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) - - -class ServiceApiTokenEndpoint(BaseAPIView): - permission_classes = [WorkspaceEntityPermission] - - def post(self, request: Request, slug: str) -> Response: - workspace = Workspace.objects.get(slug=slug) - - api_token = APIToken.objects.filter(workspace=workspace, is_service=True).first() - - if api_token: - return Response({"token": str(api_token.token)}, status=status.HTTP_200_OK) - else: - # Check the user type - user_type = 1 if request.user.is_bot else 0 - - api_token = APIToken.objects.create( - label=str(uuid4().hex), - description="Service Token", - user=request.user, - workspace=workspace, - user_type=user_type, - is_service=True, - ) - return Response({"token": str(api_token.token)}, status=status.HTTP_201_CREATED) From 54b80e91eb600fd1628fb536d6173e57cb04ab2a Mon Sep 17 00:00:00 2001 From: sriramveeraghanta Date: Wed, 25 Mar 2026 13:23:36 +0530 Subject: [PATCH 25/62] fix: broken lockfile --- pnpm-lock.yaml | 53 ++------------------------------------------------ 1 file changed, 2 insertions(+), 51 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d19e117da72..41f77995ae4 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -99,7 +99,6 @@ overrides: prosemirror-view: 1.40.0 '@types/express': 4.17.23 typescript: 5.8.3 -<<<<<<< HEAD vite: 7.3.1 qs: 6.14.2 diff: 5.2.2 @@ -116,9 +115,6 @@ overrides: ajv@8: 8.18.0 undici@7: 7.24.0 flatted: 3.4.2 -======= - vite: 7.1.11 ->>>>>>> 7902805635a88ef07e5df02c17bef61211947d8c importers: @@ -661,12 +657,6 @@ importers: next-themes: specifier: 0.4.6 version: 0.4.6(react-dom@18.3.1(react@18.3.1))(react@18.3.1) -<<<<<<< HEAD -======= - posthog-js: - specifier: ^1.255.1 - version: 1.255.1 ->>>>>>> 7902805635a88ef07e5df02c17bef61211947d8c react: specifier: 'catalog:' version: 18.3.1 @@ -6174,10 +6164,6 @@ packages: resolution: {integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==} engines: {node: '>= 10.13.0'} - jiti@2.5.1: - resolution: {integrity: sha512-twQoecYPiVA5K/h6SxtORw/Bs3ar+mLUtoPSc7iMXzQzK8d7eJ/R09wmTwAjiamETn1cXYPGfNnu7DMoHgu12w==} - hasBin: true - jiti@2.6.1: resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} hasBin: true @@ -7928,18 +7914,6 @@ packages: prettier: optional: true -<<<<<<< HEAD -======= - storybook@9.1.10: - resolution: {integrity: sha512-4+U7gF9hMpGilQmdVJwQaVZZEkD7XwC4ZDmBa51mobaPYelELEMoMfNM2hLyvB2x12gk1IJui1DnwOE4t+MXhw==} - hasBin: true - peerDependencies: - prettier: ^2 || ^3 - peerDependenciesMeta: - prettier: - optional: true - ->>>>>>> 7902805635a88ef07e5df02c17bef61211947d8c string-argv@0.3.2: resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} engines: {node: '>=0.6.19'} @@ -8011,14 +7985,6 @@ packages: style-to-object@0.4.4: resolution: {integrity: sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==} -<<<<<<< HEAD -======= - sucrase@3.35.0: - resolution: {integrity: sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==} - engines: {node: '>=16 || 14 >=14.17'} - hasBin: true - ->>>>>>> 7902805635a88ef07e5df02c17bef61211947d8c supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} @@ -8921,7 +8887,7 @@ snapshots: dependencies: '@babel/compat-data': 7.28.4 '@babel/helper-validator-option': 7.27.1 - browserslist: 4.26.2 + browserslist: 4.28.1 lru-cache: 5.1.1 semver: 6.3.1 @@ -13705,8 +13671,6 @@ snapshots: merge-stream: 2.0.0 supports-color: 8.1.1 - jiti@2.5.1: {} - jiti@2.6.1: {} js-tokens@4.0.0: {} @@ -16013,19 +15977,6 @@ snapshots: dependencies: inline-style-parser: 0.1.1 -<<<<<<< HEAD -======= - sucrase@3.35.0: - dependencies: - '@jridgewell/gen-mapping': 0.3.13 - commander: 4.1.1 - glob: 11.1.0 - lines-and-columns: 1.2.4 - mz: 2.7.0 - pirates: 4.0.7 - ts-interface-checker: 0.1.13 - ->>>>>>> 7902805635a88ef07e5df02c17bef61211947d8c supports-color@5.5.0: dependencies: has-flag: 3.0.0 @@ -16270,7 +16221,7 @@ snapshots: dependencies: '@quansync/fs': 0.1.5 defu: 6.1.4 - jiti: 2.5.1 + jiti: 2.6.1 quansync: 0.2.11 undici-types@6.20.0: {} From d94a26945198a5f5a026420fe4ff6ac2acc7ba46 Mon Sep 17 00:00:00 2001 From: ouchan <111338754+ouchanip@users.noreply.github.com> Date: Wed, 25 Mar 2026 17:01:16 +0900 Subject: [PATCH 26/62] fix: add model_activity.delay() to API issue update/create paths for webhook dispatch (#8792) Fixes #6746 API-driven issue updates (PUT update, PUT create-via-upsert, PATCH) were missing `model_activity.delay()` calls, so webhooks were never dispatched for changes made through the API. The web UI paths already include these calls (e.g. in `post()` at L475), but the `put()` and `partial_update()` methods only called `issue_activity.delay()`. This adds `model_activity.delay()` immediately after each existing `issue_activity.delay()` in these three code paths, using the same signature as the existing call in `post()`. Tested on Plane CE v1.2.1 self-hosted: API PATCH triggers `webhook_send_task` in the Celery worker, confirming webhook delivery. Co-authored-by: Claude Opus 4.6 (1M context) --- apps/api/plane/api/views/issue.py | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/apps/api/plane/api/views/issue.py b/apps/api/plane/api/views/issue.py index b936cdcda00..20d4f604a66 100644 --- a/apps/api/plane/api/views/issue.py +++ b/apps/api/plane/api/views/issue.py @@ -629,6 +629,16 @@ def put(self, request, slug, project_id): current_instance=current_instance, epoch=int(timezone.now().timestamp()), ) + # Send the model activity for webhook dispatch + model_activity.delay( + model_name="issue", + model_id=str(issue.id), + requested_data=request.data, + current_instance=current_instance, + actor_id=request.user.id, + slug=slug, + origin=base_host(request=request, is_app=True), + ) return Response(serializer.data, status=status.HTTP_200_OK) return Response( # If the serializer is not valid, respond with 400 bad @@ -677,6 +687,16 @@ def put(self, request, slug, project_id): current_instance=None, epoch=int(timezone.now().timestamp()), ) + # Send the model activity for webhook dispatch + model_activity.delay( + model_name="issue", + model_id=str(serializer.data["id"]), + requested_data=request.data, + current_instance=None, + actor_id=request.user.id, + slug=slug, + origin=base_host(request=request, is_app=True), + ) return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) else: @@ -752,6 +772,16 @@ def patch(self, request, slug, project_id, pk): current_instance=current_instance, epoch=int(timezone.now().timestamp()), ) + # Send the model activity for webhook dispatch + model_activity.delay( + model_name="issue", + model_id=str(pk), + requested_data=request.data, + current_instance=current_instance, + actor_id=request.user.id, + slug=slug, + origin=base_host(request=request, is_app=True), + ) return Response(serializer.data, status=status.HTTP_200_OK) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) From 942d2b98efb25cb024316a89c43e4e6b067d7ff0 Mon Sep 17 00:00:00 2001 From: Anmol Singh Bhatia <121005188+anmolsinghbhatia@users.noreply.github.com> Date: Thu, 26 Mar 2026 18:12:24 +0530 Subject: [PATCH 27/62] [WEB-6702] feat: redesign intake action buttons and use design tokens (#8801) * feat: intake action buttons redesign * chore: code refactoring --- .../inbox/content/inbox-issue-header.tsx | 110 ++++++++++-------- .../content/inbox-issue-mobile-header.tsx | 56 +++++---- .../components/inbox/inbox-status-icon.tsx | 16 +-- .../icons/misc/check-circle-filled-icon.tsx | 25 ++++ .../icons/misc/close-circle-filled-icon.tsx | 25 ++++ packages/propel/src/icons/misc/index.ts | 2 + 6 files changed, 156 insertions(+), 78 deletions(-) create mode 100644 packages/propel/src/icons/misc/check-circle-filled-icon.tsx create mode 100644 packages/propel/src/icons/misc/close-circle-filled-icon.tsx diff --git a/apps/web/core/components/inbox/content/inbox-issue-header.tsx b/apps/web/core/components/inbox/content/inbox-issue-header.tsx index cda57dbc61f..5243521731e 100644 --- a/apps/web/core/components/inbox/content/inbox-issue-header.tsx +++ b/apps/web/core/components/inbox/content/inbox-issue-header.tsx @@ -6,12 +6,22 @@ import { useCallback, useEffect, useState } from "react"; import { observer } from "mobx-react"; -import { CircleCheck, CircleX, Clock, FileStack, MoveRight } from "lucide-react"; +import { Clock, FileStack, MoreHorizontal, MoveRight } from "lucide-react"; // plane imports import { EUserPermissions, EUserPermissionsLevel } from "@plane/constants"; import { useTranslation } from "@plane/i18n"; import { Button } from "@plane/propel/button"; -import { LinkIcon, CopyIcon, NewTabIcon, TrashIcon, ChevronDownIcon, ChevronUpIcon } from "@plane/propel/icons"; +import { IconButton, getIconButtonStyling } from "@plane/propel/icon-button"; +import { + LinkIcon, + CopyIcon, + NewTabIcon, + TrashIcon, + ChevronDownIcon, + ChevronUpIcon, + CheckCircleFilledIcon, + CloseCircleFilledIcon, +} from "@plane/propel/icons"; import { TOAST_TYPE, setToast } from "@plane/propel/toast"; import type { TNameDescriptionLoader } from "@plane/types"; import { EInboxIssueStatus } from "@plane/types"; @@ -67,7 +77,8 @@ export const InboxIssueActionsHeader = observer(function InboxIssueActionsHeader const { currentTab, deleteInboxIssue, filteredInboxIssueIds } = useProjectInbox(); const { data: currentUser } = useUser(); const { allowPermissions } = useUserPermissions(); - const { currentProjectDetails } = useProject(); + const { getPartialProjectById } = useProject(); + const currentProjectDetails = getPartialProjectById(projectId); const { t } = useTranslation(); const router = useAppRouter(); @@ -296,73 +307,70 @@ export const InboxIssueActionsHeader = observer(function InboxIssueActionsHeader
{!isNotificationEmbed && (
- - + />
)}
{canMarkAsAccepted && ( -
- -
+ )} {canMarkAsDeclined && ( -
- -
+ )} {isAcceptedOrDeclined ? (
router.push(workItemLink)} target="_self"> - @@ -370,7 +378,11 @@ export const InboxIssueActionsHeader = observer(function InboxIssueActionsHeader ) : ( <> {isAllowed && ( - + } + customButtonClassName={getIconButtonStyling("secondary", "lg")} + placement="bottom-start" + > {canMarkAsAccepted && ( diff --git a/apps/web/core/components/inbox/content/inbox-issue-mobile-header.tsx b/apps/web/core/components/inbox/content/inbox-issue-mobile-header.tsx index 0d9f98e9c9d..bde81665d54 100644 --- a/apps/web/core/components/inbox/content/inbox-issue-mobile-header.tsx +++ b/apps/web/core/components/inbox/content/inbox-issue-mobile-header.tsx @@ -4,11 +4,20 @@ * See the LICENSE file for details. */ -import React from "react"; import { observer } from "mobx-react"; -import { CircleCheck, CircleX, Clock, FileStack, PanelLeft, MoveRight } from "lucide-react"; -import { LinkIcon, NewTabIcon, TrashIcon, ChevronDownIcon, ChevronUpIcon } from "@plane/propel/icons"; +import { Clock, FileStack, MoreHorizontal, PanelLeft, MoveRight } from "lucide-react"; +import { IconButton, getIconButtonStyling } from "@plane/propel/icon-button"; +import { + LinkIcon, + NewTabIcon, + TrashIcon, + ChevronDownIcon, + ChevronUpIcon, + CheckCircleFilledIcon, + CloseCircleFilledIcon, +} from "@plane/propel/icons"; import type { TNameDescriptionLoader } from "@plane/types"; + import { Header, CustomMenu, EHeaderVariant } from "@plane/ui"; import { cn, findHowManyDaysLeft, generateWorkItemLink } from "@plane/utils"; // components @@ -18,6 +27,7 @@ import { useProject } from "@/hooks/store/use-project"; import { useAppRouter } from "@/hooks/use-app-router"; // store types import type { IInboxIssueStore } from "@/store/inbox/inbox-issue.store"; + // local imports import { InboxIssueStatus } from "../inbox-issue-status"; @@ -102,20 +112,20 @@ export const InboxIssueActionsMobileHeader = observer(function InboxIssueActions />
- - + />
@@ -124,7 +134,11 @@ export const InboxIssueActionsMobileHeader = observer(function InboxIssueActions
- + } + customButtonClassName={getIconButtonStyling("secondary", "lg")} + placement="bottom-start" + > {isAcceptedOrDeclined && (
@@ -183,8 +197,8 @@ export const InboxIssueActionsMobileHeader = observer(function InboxIssueActions ) } > -
- +
+ Accept
@@ -199,8 +213,8 @@ export const InboxIssueActionsMobileHeader = observer(function InboxIssueActions ) } > -
- +
+ Decline
@@ -208,7 +222,7 @@ export const InboxIssueActionsMobileHeader = observer(function InboxIssueActions {canDelete && !isAcceptedOrDeclined && ( setDeleteIssueModal(true)}>
- + Delete
diff --git a/apps/web/core/components/inbox/inbox-status-icon.tsx b/apps/web/core/components/inbox/inbox-status-icon.tsx index 86bcf791288..ceaf5826d25 100644 --- a/apps/web/core/components/inbox/inbox-status-icon.tsx +++ b/apps/web/core/components/inbox/inbox-status-icon.tsx @@ -13,28 +13,28 @@ import { cn } from "@plane/utils"; export const ICON_PROPERTIES = { [EInboxIssueStatus.PENDING]: { icon: AlertTriangle, - textColor: (snoozeDatePassed: boolean = false) => (snoozeDatePassed ? "" : "text-[#AB6400]"), - bgColor: (snoozeDatePassed: boolean = false) => (snoozeDatePassed ? "" : "bg-[#FFF7C2]"), + textColor: (snoozeDatePassed: boolean = false) => (snoozeDatePassed ? "" : "text-warning-primary"), + bgColor: (snoozeDatePassed: boolean = false) => (snoozeDatePassed ? "" : "bg-warning-subtle"), }, [EInboxIssueStatus.DECLINED]: { icon: XCircle, - textColor: (snoozeDatePassed: boolean = false) => (snoozeDatePassed ? "" : "text-[#CE2C31]"), - bgColor: (snoozeDatePassed: boolean = false) => (snoozeDatePassed ? "" : "bg-[#FEEBEC]"), + textColor: (snoozeDatePassed: boolean = false) => (snoozeDatePassed ? "" : "text-danger-primary"), + bgColor: (snoozeDatePassed: boolean = false) => (snoozeDatePassed ? "" : "bg-danger-subtle"), }, [EInboxIssueStatus.SNOOZED]: { icon: Clock, textColor: (snoozeDatePassed: boolean = false) => (snoozeDatePassed ? "text-danger-primary" : "text-placeholder"), - bgColor: (snoozeDatePassed: boolean = false) => (snoozeDatePassed ? "bg-danger-subtle" : "bg-[#E0E1E6]"), + bgColor: (snoozeDatePassed: boolean = false) => (snoozeDatePassed ? "bg-danger-subtle" : "bg-layer-3"), }, [EInboxIssueStatus.ACCEPTED]: { icon: CheckCircle2, - textColor: (snoozeDatePassed: boolean = false) => (snoozeDatePassed ? "" : "text-[#3E9B4F]"), - bgColor: (snoozeDatePassed: boolean = false) => (snoozeDatePassed ? "" : "bg-[#E9F6E9]"), + textColor: (snoozeDatePassed: boolean = false) => (snoozeDatePassed ? "" : "text-success-primary"), + bgColor: (snoozeDatePassed: boolean = false) => (snoozeDatePassed ? "" : "bg-success-subtle"), }, [EInboxIssueStatus.DUPLICATE]: { icon: CopyIcon, textColor: (snoozeDatePassed: boolean = false) => (snoozeDatePassed ? "" : "text-secondary"), - bgColor: (snoozeDatePassed: boolean = false) => (snoozeDatePassed ? "" : "bg-gray-500/10"), + bgColor: (snoozeDatePassed: boolean = false) => (snoozeDatePassed ? "" : "bg-layer-3"), }, }; export function InboxStatusIcon({ diff --git a/packages/propel/src/icons/misc/check-circle-filled-icon.tsx b/packages/propel/src/icons/misc/check-circle-filled-icon.tsx new file mode 100644 index 00000000000..c0227cbc38a --- /dev/null +++ b/packages/propel/src/icons/misc/check-circle-filled-icon.tsx @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2023-present Plane Software, Inc. and contributors + * SPDX-License-Identifier: AGPL-3.0-only + * See the LICENSE file for details. + */ + +import * as React from "react"; + +import { IconWrapper } from "../icon-wrapper"; +import type { ISvgIcons } from "../type"; + +export const CheckCircleFilledIcon: React.FC = ({ color = "currentColor", ...rest }) => { + const clipPathId = React.useId(); + + return ( + + + + ); +}; diff --git a/packages/propel/src/icons/misc/close-circle-filled-icon.tsx b/packages/propel/src/icons/misc/close-circle-filled-icon.tsx new file mode 100644 index 00000000000..2b927d62ced --- /dev/null +++ b/packages/propel/src/icons/misc/close-circle-filled-icon.tsx @@ -0,0 +1,25 @@ +/** + * Copyright (c) 2023-present Plane Software, Inc. and contributors + * SPDX-License-Identifier: AGPL-3.0-only + * See the LICENSE file for details. + */ + +import * as React from "react"; + +import { IconWrapper } from "../icon-wrapper"; +import type { ISvgIcons } from "../type"; + +export const CloseCircleFilledIcon: React.FC = ({ color = "currentColor", ...rest }) => { + const clipPathId = React.useId(); + + return ( + + + + ); +}; diff --git a/packages/propel/src/icons/misc/index.ts b/packages/propel/src/icons/misc/index.ts index fc387e1d171..34716ecbe6e 100644 --- a/packages/propel/src/icons/misc/index.ts +++ b/packages/propel/src/icons/misc/index.ts @@ -4,4 +4,6 @@ * See the LICENSE file for details. */ +export * from "./check-circle-filled-icon"; +export * from "./close-circle-filled-icon"; export * from "./info-icon"; From 5396d438a3aea1a41cd971af83bc70faf9b0b6bf Mon Sep 17 00:00:00 2001 From: b-saikrishnakanth <130811169+b-saikrishnakanth@users.noreply.github.com> Date: Thu, 26 Mar 2026 18:13:30 +0530 Subject: [PATCH 28/62] Open [WEB-6739] fix: color inside of active projects of analytics overview tab #8803 --- .../core/components/analytics/overview/active-project-item.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/web/core/components/analytics/overview/active-project-item.tsx b/apps/web/core/components/analytics/overview/active-project-item.tsx index e71ae52d530..0af7dc87fda 100644 --- a/apps/web/core/components/analytics/overview/active-project-item.tsx +++ b/apps/web/core/components/analytics/overview/active-project-item.tsx @@ -23,7 +23,7 @@ type Props = { function CompletionPercentage({ percentage }: { percentage: number }) { const percentageColor = - percentage > 50 ? "bg-success-primary text-success-primary" : "bg-danger-primary text-danger-primary"; + percentage > 50 ? "bg-success-subtle text-success-primary" : "bg-danger-subtle text-danger-primary"; return (
{percentage}% From ce401c723e6a3407fc4870a425b2b289f82c2fdf Mon Sep 17 00:00:00 2001 From: b-saikrishnakanth <130811169+b-saikrishnakanth@users.noreply.github.com> Date: Thu, 26 Mar 2026 18:13:57 +0530 Subject: [PATCH 29/62] [WEB-6734] fix: circular progress indicator stroke color#8802 --- packages/ui/src/progress/circular-progress-indicator.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/ui/src/progress/circular-progress-indicator.tsx b/packages/ui/src/progress/circular-progress-indicator.tsx index a2874793645..b679522322b 100644 --- a/packages/ui/src/progress/circular-progress-indicator.tsx +++ b/packages/ui/src/progress/circular-progress-indicator.tsx @@ -15,7 +15,7 @@ interface ICircularProgressIndicator { } export function CircularProgressIndicator(props: ICircularProgressIndicator) { - const { size = 40, percentage = 25, strokeWidth = 6, strokeColor = "stroke-success", children } = props; + const { size = 40, percentage = 25, strokeWidth = 6, strokeColor = "stroke-success-secondary", children } = props; const sqSize = size; const radius = (size - strokeWidth) / 2; From 113bba46ea04309fa584d09084c6aaf36814d720 Mon Sep 17 00:00:00 2001 From: "M. Palanikannan" <73993394+Palanikannan1437@users.noreply.github.com> Date: Thu, 26 Mar 2026 20:43:03 +0530 Subject: [PATCH 30/62] fix: migrate page navigation pane tabs from headless ui to propel (#8805) --- .../components/pages/navigation-pane/root.tsx | 14 ++++---- .../pages/navigation-pane/tabs-list.tsx | 36 ++++++------------- 2 files changed, 17 insertions(+), 33 deletions(-) diff --git a/apps/web/core/components/pages/navigation-pane/root.tsx b/apps/web/core/components/pages/navigation-pane/root.tsx index 0c3370d4781..079cf8b5f64 100644 --- a/apps/web/core/components/pages/navigation-pane/root.tsx +++ b/apps/web/core/components/pages/navigation-pane/root.tsx @@ -4,13 +4,13 @@ * See the LICENSE file for details. */ -import React, { useCallback } from "react"; +import { useCallback } from "react"; import { observer } from "mobx-react"; import { useRouter, useSearchParams } from "next/navigation"; import { ArrowRightCircle } from "lucide-react"; -import { Tab } from "@headlessui/react"; // plane imports import { useTranslation } from "@plane/i18n"; +import { Tabs } from "@plane/propel/tabs"; import { Tooltip } from "@plane/propel/tooltip"; // hooks import { useQueryParams } from "@/hooks/use-query-params"; @@ -26,7 +26,6 @@ import { PageNavigationPaneTabsList } from "./tabs-list"; import type { INavigationPaneExtension } from "./types/extensions"; import { - PAGE_NAVIGATION_PANE_TAB_KEYS, PAGE_NAVIGATION_PANE_TABS_QUERY_PARAM, PAGE_NAVIGATION_PANE_VERSION_QUERY_PARAM, PAGE_NAVIGATION_PANE_WIDTH, @@ -55,7 +54,6 @@ export const PageNavigationPaneRoot = observer(function PageNavigationPaneRoot(p PAGE_NAVIGATION_PANE_TABS_QUERY_PARAM ) as TPageNavigationPaneTab | null; const activeTab: TPageNavigationPaneTab = navigationPaneQueryParam || "outline"; - const selectedIndex = PAGE_NAVIGATION_PANE_TAB_KEYS.indexOf(activeTab); // Check if any extension is currently active based on query parameters const ActiveExtension = extensions.find((extension) => { @@ -75,8 +73,8 @@ export const PageNavigationPaneRoot = observer(function PageNavigationPaneRoot(p const { t } = useTranslation(); const handleTabChange = useCallback( - (index: number) => { - const updatedTab = PAGE_NAVIGATION_PANE_TAB_KEYS[index]; + (value: string) => { + const updatedTab = value as TPageNavigationPaneTab; const isUpdatedTabInfo = updatedTab === "info"; const updatedRoute = updateQueryParams({ paramsToAdd: { [PAGE_NAVIGATION_PANE_TABS_QUERY_PARAM]: updatedTab }, @@ -112,10 +110,10 @@ export const PageNavigationPaneRoot = observer(function PageNavigationPaneRoot(p {ActiveExtension ? ( ) : showNavigationTabs ? ( - + - + ) : null}
diff --git a/apps/web/core/components/pages/navigation-pane/tabs-list.tsx b/apps/web/core/components/pages/navigation-pane/tabs-list.tsx index 76469a7c971..3ba55f6a2c3 100644 --- a/apps/web/core/components/pages/navigation-pane/tabs-list.tsx +++ b/apps/web/core/components/pages/navigation-pane/tabs-list.tsx @@ -4,9 +4,9 @@ * See the LICENSE file for details. */ -import { Tab } from "@headlessui/react"; // plane imports import { useTranslation } from "@plane/i18n"; +import { Tabs } from "@plane/propel/tabs"; // plane web components import { ORDERED_PAGE_NAVIGATION_TABS_LIST } from "@/plane-web/components/pages/navigation-pane"; @@ -15,29 +15,15 @@ export function PageNavigationPaneTabsList() { const { t } = useTranslation(); return ( - - {({ selectedIndex }) => ( - <> - {ORDERED_PAGE_NAVIGATION_TABS_LIST.map((tab) => ( - - {t(tab.i18n_label)} - - ))} - {/* active tab indicator */} -
- - )} - +
+ + {ORDERED_PAGE_NAVIGATION_TABS_LIST.map((tab) => ( + + {t(tab.i18n_label)} + + ))} + + +
); } From 130ba5ee6cf90217ddf5fa52189cdf3711e40796 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 27 Mar 2026 00:11:02 +0530 Subject: [PATCH 31/62] chore(deps): bump requests (#8804) Bumps the pip group with 1 update in the /apps/api/requirements directory: [requests](https://github.com/psf/requests). Updates `requests` from 2.32.4 to 2.33.0 - [Release notes](https://github.com/psf/requests/releases) - [Changelog](https://github.com/psf/requests/blob/main/HISTORY.md) - [Commits](https://github.com/psf/requests/compare/v2.32.4...v2.33.0) --- updated-dependencies: - dependency-name: requests dependency-version: 2.33.0 dependency-type: direct:production dependency-group: pip ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- apps/api/requirements/test.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/api/requirements/test.txt b/apps/api/requirements/test.txt index 7c242c806ab..c3149753572 100644 --- a/apps/api/requirements/test.txt +++ b/apps/api/requirements/test.txt @@ -9,4 +9,4 @@ factory-boy==3.3.0 freezegun==1.2.2 coverage==7.2.7 httpx==0.24.1 -requests==2.32.4 \ No newline at end of file +requests==2.33.0 \ No newline at end of file From 97b4abd69313d3f7d2f3cf63cf69139a917557cd Mon Sep 17 00:00:00 2001 From: Aaron Date: Fri, 27 Mar 2026 17:29:55 +0700 Subject: [PATCH 32/62] fix: tsdown watch (#8813) closes #8791 --- apps/live/package.json | 2 +- package.json | 4 + packages/constants/package.json | 2 +- packages/decorators/package.json | 7 +- packages/editor/package.json | 2 +- packages/hooks/package.json | 7 +- packages/hooks/tsdown.config.ts | 1 + packages/i18n/package.json | 7 +- packages/i18n/tsdown.config.ts | 1 + packages/logger/package.json | 6 +- packages/propel/package.json | 2 +- packages/services/package.json | 7 +- packages/services/tsdown.config.ts | 1 + packages/shared-state/package.json | 7 +- packages/shared-state/tsdown.config.ts | 1 + packages/tailwind-config/package.json | 6 +- packages/types/package.json | 2 +- packages/ui/package.json | 7 +- packages/ui/tsdown.config.ts | 1 + packages/utils/package.json | 7 +- packages/utils/tsdown.config.ts | 1 + pnpm-lock.yaml | 668 ++++++++++++------------- 22 files changed, 351 insertions(+), 398 deletions(-) diff --git a/apps/live/package.json b/apps/live/package.json index 9b796f2fafd..3b8778c7126 100644 --- a/apps/live/package.json +++ b/apps/live/package.json @@ -14,7 +14,7 @@ }, "scripts": { "build": "tsc --noEmit && tsdown", - "dev": "tsdown --watch --onSuccess \"node --env-file=.env .\"", + "dev": "tsdown --watch --no-clean --onSuccess \"node --env-file=.env .\"", "start": "node --env-file=.env .", "test": "vitest run", "test:watch": "vitest", diff --git a/package.json b/package.json index 378654052ec..85f8f15de8d 100644 --- a/package.json +++ b/package.json @@ -74,6 +74,10 @@ "flatted": "3.4.2" }, "onlyBuiltDependencies": [ + "@parcel/watcher", + "@swc/core", + "esbuild", + "msgpackr-extract", "turbo" ], "ignoredBuiltDependencies": [ diff --git a/packages/constants/package.json b/packages/constants/package.json index 106f901b89c..f0d62718c9c 100644 --- a/packages/constants/package.json +++ b/packages/constants/package.json @@ -12,7 +12,7 @@ "./package.json": "./package.json" }, "scripts": { - "dev": "tsdown --watch", + "dev": "tsdown --watch --no-clean", "build": "tsdown", "check:lint": "oxlint --max-warnings=2 .", "check:types": "tsc --noEmit", diff --git a/packages/decorators/package.json b/packages/decorators/package.json index c44db6f0b04..d643bcb1455 100644 --- a/packages/decorators/package.json +++ b/packages/decorators/package.json @@ -14,7 +14,7 @@ }, "scripts": { "build": "tsdown", - "dev": "tsdown --watch", + "dev": "tsdown --watch --no-clean", "check:lint": "oxlint --max-warnings=3 .", "check:types": "tsc --noEmit", "check:format": "oxfmt --check .", @@ -30,5 +30,10 @@ "reflect-metadata": "^0.2.2", "tsdown": "catalog:", "typescript": "catalog:" + }, + "inlinedDependencies": { + "@types/express": "4.17.23", + "@types/express-serve-static-core": "4.19.6", + "reflect-metadata": "0.2.2" } } diff --git a/packages/editor/package.json b/packages/editor/package.json index 25d75540b9d..0651546ac7c 100644 --- a/packages/editor/package.json +++ b/packages/editor/package.json @@ -24,7 +24,7 @@ }, "scripts": { "build": "tsc && tsdown", - "dev": "tsdown --watch", + "dev": "tsdown --watch --no-clean", "check:lint": "oxlint --max-warnings=416 .", "check:types": "tsc --noEmit", "check:format": "oxfmt --check .", diff --git a/packages/hooks/package.json b/packages/hooks/package.json index 515c50ca002..c76803af15f 100644 --- a/packages/hooks/package.json +++ b/packages/hooks/package.json @@ -9,15 +9,12 @@ "module": "./dist/index.js", "types": "./dist/index.d.ts", "exports": { - ".": { - "types": "./dist/index.d.ts", - "import": "./dist/index.js" - }, + ".": "./dist/index.js", "./package.json": "./package.json" }, "scripts": { "build": "tsdown", - "dev": "tsdown --watch", + "dev": "tsdown --watch --no-clean", "check:lint": "oxlint --max-warnings=4 .", "check:types": "tsc --noEmit", "check:format": "oxfmt --check .", diff --git a/packages/hooks/tsdown.config.ts b/packages/hooks/tsdown.config.ts index 78c3dcba86b..92959eaf716 100644 --- a/packages/hooks/tsdown.config.ts +++ b/packages/hooks/tsdown.config.ts @@ -5,4 +5,5 @@ export default defineConfig({ format: ["esm"], dts: true, platform: "neutral", + exports: true, }); diff --git a/packages/i18n/package.json b/packages/i18n/package.json index 937dcbc1c49..90d01a4106c 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -9,14 +9,11 @@ "module": "./dist/index.js", "types": "./dist/index.d.ts", "exports": { - ".": { - "types": "./dist/index.d.ts", - "import": "./dist/index.js" - }, + ".": "./dist/index.js", "./package.json": "./package.json" }, "scripts": { - "dev": "tsdown --watch", + "dev": "tsdown --watch --no-clean", "build": "tsdown", "check:lint": "oxlint --max-warnings=2 .", "check:types": "tsc --noEmit", diff --git a/packages/i18n/tsdown.config.ts b/packages/i18n/tsdown.config.ts index 78c3dcba86b..92959eaf716 100644 --- a/packages/i18n/tsdown.config.ts +++ b/packages/i18n/tsdown.config.ts @@ -5,4 +5,5 @@ export default defineConfig({ format: ["esm"], dts: true, platform: "neutral", + exports: true, }); diff --git a/packages/logger/package.json b/packages/logger/package.json index 632304e0ba2..7924a01dedf 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -14,7 +14,7 @@ }, "scripts": { "build": "tsdown", - "dev": "tsdown --watch", + "dev": "tsdown --watch --no-clean", "check:lint": "oxlint --max-warnings=0 .", "check:types": "tsc --noEmit", "check:format": "oxfmt --check .", @@ -32,5 +32,9 @@ "@types/node": "catalog:", "tsdown": "catalog:", "typescript": "catalog:" + }, + "inlinedDependencies": { + "@types/express": "4.17.23", + "@types/express-serve-static-core": "4.19.6" } } diff --git a/packages/propel/package.json b/packages/propel/package.json index 54fa0f8c3f7..e0e1d15f821 100644 --- a/packages/propel/package.json +++ b/packages/propel/package.json @@ -50,7 +50,7 @@ "./styles/react-day-picker": "./dist/styles/react-day-picker.css" }, "scripts": { - "dev": "tsdown --watch", + "dev": "tsdown --watch --no-clean", "build": "tsdown", "check:lint": "oxlint --max-warnings=3605 .", "check:types": "tsc --noEmit", diff --git a/packages/services/package.json b/packages/services/package.json index 273d7119ca0..c3744d28857 100644 --- a/packages/services/package.json +++ b/packages/services/package.json @@ -8,15 +8,12 @@ "module": "./dist/index.js", "types": "./dist/index.d.ts", "exports": { - ".": { - "types": "./dist/index-BliaS-AT.d.ts", - "import": "./dist/index.js" - }, + ".": "./dist/index.js", "./package.json": "./package.json" }, "scripts": { "build": "tsdown", - "dev": "tsdown --watch", + "dev": "tsdown --watch --no-clean", "check:lint": "oxlint --max-warnings=6 .", "check:types": "tsc --noEmit", "check:format": "oxfmt --check .", diff --git a/packages/services/tsdown.config.ts b/packages/services/tsdown.config.ts index 78c3dcba86b..92959eaf716 100644 --- a/packages/services/tsdown.config.ts +++ b/packages/services/tsdown.config.ts @@ -5,4 +5,5 @@ export default defineConfig({ format: ["esm"], dts: true, platform: "neutral", + exports: true, }); diff --git a/packages/shared-state/package.json b/packages/shared-state/package.json index a912747cb3f..950876974a7 100644 --- a/packages/shared-state/package.json +++ b/packages/shared-state/package.json @@ -9,15 +9,12 @@ "module": "./dist/index.js", "types": "./dist/index.d.ts", "exports": { - ".": { - "types": "./dist/index.d.ts", - "import": "./dist/index.js" - }, + ".": "./dist/index.js", "./package.json": "./package.json" }, "scripts": { "build": "tsdown", - "dev": "tsdown --watch", + "dev": "tsdown --watch --no-clean", "check:lint": "oxlint --max-warnings=0 .", "check:types": "tsc --noEmit", "check:format": "oxfmt --check .", diff --git a/packages/shared-state/tsdown.config.ts b/packages/shared-state/tsdown.config.ts index 78c3dcba86b..92959eaf716 100644 --- a/packages/shared-state/tsdown.config.ts +++ b/packages/shared-state/tsdown.config.ts @@ -5,4 +5,5 @@ export default defineConfig({ format: ["esm"], dts: true, platform: "neutral", + exports: true, }); diff --git a/packages/tailwind-config/package.json b/packages/tailwind-config/package.json index 17227350f89..89d0138684d 100644 --- a/packages/tailwind-config/package.json +++ b/packages/tailwind-config/package.json @@ -12,9 +12,11 @@ "./index.css": "./index.css", "./postcss.config.js": "./postcss.config.js" }, - "devDependencies": { + "dependencies": { "@tailwindcss/postcss": "4.1.17", - "postcss": "8.5.6", + "postcss": "8.5.6" + }, + "devDependencies": { "tailwindcss": "4.1.17" } } diff --git a/packages/types/package.json b/packages/types/package.json index 20e35658207..99f2ec6cb7f 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -12,7 +12,7 @@ "./package.json": "./package.json" }, "scripts": { - "dev": "tsdown --watch", + "dev": "tsdown --watch --no-clean", "build": "tsdown", "check:lint": "oxlint --max-warnings=1 .", "check:types": "tsc --noEmit", diff --git a/packages/ui/package.json b/packages/ui/package.json index 6805534a679..0527d98aa66 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -10,15 +10,12 @@ "module": "./dist/index.js", "types": "./dist/index.d.ts", "exports": { - ".": { - "types": "./dist/index.d.ts", - "import": "./dist/index.js" - }, + ".": "./dist/index.js", "./package.json": "./package.json" }, "scripts": { "build": "tsdown", - "dev": "tsdown --watch", + "dev": "tsdown --watch --no-clean", "storybook": "storybook dev -p 6006", "build-storybook": "storybook build", "postcss": "postcss styles/globals.css -o styles/output.css --watch", diff --git a/packages/ui/tsdown.config.ts b/packages/ui/tsdown.config.ts index 78c3dcba86b..92959eaf716 100644 --- a/packages/ui/tsdown.config.ts +++ b/packages/ui/tsdown.config.ts @@ -5,4 +5,5 @@ export default defineConfig({ format: ["esm"], dts: true, platform: "neutral", + exports: true, }); diff --git a/packages/utils/package.json b/packages/utils/package.json index 9a2bbf61ec9..070702688a2 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -9,15 +9,12 @@ "module": "./dist/index.js", "types": "./dist/index.d.ts", "exports": { - ".": { - "types": "./dist/index.d.ts", - "import": "./dist/index.js" - }, + ".": "./dist/index.js", "./package.json": "./package.json" }, "scripts": { "build": "tsdown", - "dev": "tsdown --watch", + "dev": "tsdown --watch --no-clean", "check:lint": "oxlint --max-warnings=38 .", "check:types": "tsc --noEmit", "check:format": "oxfmt --check .", diff --git a/packages/utils/tsdown.config.ts b/packages/utils/tsdown.config.ts index 78c3dcba86b..92959eaf716 100644 --- a/packages/utils/tsdown.config.ts +++ b/packages/utils/tsdown.config.ts @@ -5,4 +5,5 @@ export default defineConfig({ format: ["esm"], dts: true, platform: "neutral", + exports: true, }); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 41f77995ae4..4410dfe2d38 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -397,7 +397,7 @@ importers: version: 2.4.5 tsdown: specifier: 'catalog:' - version: 0.16.0(typescript@5.8.3) + version: 0.16.0(typescript@5.8.3)(unrun@0.2.34) typescript: specifier: 5.8.3 version: 5.8.3 @@ -787,7 +787,7 @@ importers: version: 18.3.11 tsdown: specifier: 'catalog:' - version: 0.16.0(typescript@5.8.3) + version: 0.16.0(typescript@5.8.3)(unrun@0.2.34) typescript: specifier: 5.8.3 version: 5.8.3 @@ -811,7 +811,7 @@ importers: version: 0.2.2 tsdown: specifier: 'catalog:' - version: 0.16.0(typescript@5.8.3) + version: 0.16.0(typescript@5.8.3)(unrun@0.2.34) typescript: specifier: 5.8.3 version: 5.8.3 @@ -995,7 +995,7 @@ importers: version: 8.5.6 tsdown: specifier: 'catalog:' - version: 0.16.0(typescript@5.8.3) + version: 0.16.0(typescript@5.8.3)(unrun@0.2.34) typescript: specifier: 5.8.3 version: 5.8.3 @@ -1017,7 +1017,7 @@ importers: version: 18.3.11 tsdown: specifier: 'catalog:' - version: 0.16.0(typescript@5.8.3) + version: 0.16.0(typescript@5.8.3)(unrun@0.2.34) typescript: specifier: 5.8.3 version: 5.8.3 @@ -1057,7 +1057,7 @@ importers: version: 18.3.11 tsdown: specifier: 'catalog:' - version: 0.16.0(typescript@5.8.3) + version: 0.16.0(typescript@5.8.3)(unrun@0.2.34) typescript: specifier: 5.8.3 version: 5.8.3 @@ -1082,7 +1082,7 @@ importers: version: 22.12.0 tsdown: specifier: 'catalog:' - version: 0.16.0(typescript@5.8.3) + version: 0.16.0(typescript@5.8.3)(unrun@0.2.34) typescript: specifier: 5.8.3 version: 5.8.3 @@ -1170,7 +1170,7 @@ importers: version: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) tsdown: specifier: 'catalog:' - version: 0.16.0(typescript@5.8.3) + version: 0.16.0(typescript@5.8.3)(unrun@0.2.34) typescript: specifier: 5.8.3 version: 5.8.3 @@ -1195,7 +1195,7 @@ importers: version: link:../typescript-config tsdown: specifier: 'catalog:' - version: 0.16.0(typescript@5.8.3) + version: 0.16.0(typescript@5.8.3)(unrun@0.2.34) typescript: specifier: 5.8.3 version: 5.8.3 @@ -1238,19 +1238,20 @@ importers: version: 22.12.0 tsdown: specifier: 'catalog:' - version: 0.16.0(typescript@5.8.3) + version: 0.16.0(typescript@5.8.3)(unrun@0.2.34) typescript: specifier: 5.8.3 version: 5.8.3 packages/tailwind-config: - devDependencies: + dependencies: '@tailwindcss/postcss': specifier: 4.1.17 version: 4.1.17 postcss: specifier: 8.5.6 version: 8.5.6 + devDependencies: tailwindcss: specifier: 4.1.17 version: 4.1.17 @@ -1278,7 +1279,7 @@ importers: version: 18.3.1 tsdown: specifier: 'catalog:' - version: 0.16.0(typescript@5.8.3) + version: 0.16.0(typescript@5.8.3)(unrun@0.2.34) typescript: specifier: 5.8.3 version: 5.8.3 @@ -1422,7 +1423,7 @@ importers: version: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) tsdown: specifier: 'catalog:' - version: 0.16.0(typescript@5.8.3) + version: 0.16.0(typescript@5.8.3)(unrun@0.2.34) typescript: specifier: 5.8.3 version: 5.8.3 @@ -1513,7 +1514,7 @@ importers: version: 2.16.0 tsdown: specifier: 'catalog:' - version: 0.16.0(typescript@5.8.3) + version: 0.16.0(typescript@5.8.3)(unrun@0.2.34) typescript: specifier: 5.8.3 version: 5.8.3 @@ -1527,10 +1528,6 @@ packages: resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} engines: {node: '>=10'} - '@ampproject/remapping@2.3.0': - resolution: {integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==} - engines: {node: '>=6.0.0'} - '@asamuzakjp/css-color@3.2.0': resolution: {integrity: sha512-K1A6z8tS3XsmCMM86xoWdn7Fkdn9m6RSVtocUrJYIwZnFVkng/PvkEoWtOWmP+Scc6saYWHWZYbndEEXxl24jw==} @@ -1551,10 +1548,6 @@ packages: resolution: {integrity: sha512-YsmSKC29MJwf0gF8Rjjrg5LQCmyh+j/nD8/eP7f+BeoQTKYqs9RoWbjGOdy0+1Ekr68RJZMUOPVQaQisnIo4Rw==} engines: {node: '>=6.9.0'} - '@babel/core@7.28.3': - resolution: {integrity: sha512-yDBHV9kQNcr2/sUr9jghVyz9C3Y5G2zUM2H2lo+9mKv4sFgbA8s8Z9t8D1jiTkGoO/NoIfKMyKWr4s6CN23ZwQ==} - engines: {node: '>=6.9.0'} - '@babel/core@7.28.4': resolution: {integrity: sha512-2BCOP7TN8M+gVDj7/ht3hsaO/B/n5oDbiAyyvnRlNOs+u1o+JWNYTQrmpuNp1/Wq2gcFrI01JAW+paEKDMx/CA==} engines: {node: '>=6.9.0'} @@ -1629,11 +1622,6 @@ packages: resolution: {integrity: sha512-UPYc3SauzZ3JGgj87GgZ89JVdC5dj0AoetR5Bw6wj4niittNyFh6+eOGonYvJ1ao6B8lEa3Q3klS7ADZ53bc5g==} engines: {node: '>=6.9.0'} - '@babel/parser@7.28.3': - resolution: {integrity: sha512-7+Ey1mAgYqFAx2h0RuoxcQT5+MlG3GTV0TQrgr7/ZliKsm/MNDxVVutlWaziMq7wJNAz8MTqz55XLpWvva6StA==} - engines: {node: '>=6.0.0'} - hasBin: true - '@babel/parser@7.28.5': resolution: {integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==} engines: {node: '>=6.0.0'} @@ -1914,9 +1902,6 @@ packages: '@emnapi/core@1.7.1': resolution: {integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==} - '@emnapi/runtime@1.5.0': - resolution: {integrity: sha512-97/BJ3iXHww3djw6hYIfErCZFee7qCtrneuLa20UXFCOTCfBM2cvQHjWJ2EG0s0MtdNwInarqCTz35i4wWXHsQ==} - '@emnapi/runtime@1.7.1': resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==} @@ -2488,8 +2473,8 @@ packages: resolution: {integrity: sha512-DxuT1ClnIPts1kQx8FBmkk4BQDTfI5kIzywAaMjQSXfNnra5UFU9PwurXrl+Je3bJ6BGsp/zmshVVFbCmyI+ww==} engines: {node: '>= 10'} - '@napi-rs/wasm-runtime@1.1.0': - resolution: {integrity: sha512-Fq6DJW+Bb5jaWE69/qOE0D1TUN9+6uWhCeZpdnSBk14pjLcCWR7Q8n49PTSPHazM37JqrsdpEthXy2xn6jWWiA==} + '@napi-rs/wasm-runtime@1.1.1': + resolution: {integrity: sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==} '@noble/ciphers@1.3.0': resolution: {integrity: sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==} @@ -2507,6 +2492,9 @@ packages: resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} engines: {node: '>=8.0.0'} + '@oxc-project/types@0.122.0': + resolution: {integrity: sha512-oLAl5kBpV4w69UtFZ9xqcmTi+GENWOcPF7FCrczTiBbmC0ibXxCwyvZGbO39rCVEuLGAZM84DH0pUIyyv/YJzA==} + '@oxc-project/types@0.96.0': resolution: {integrity: sha512-r/xkmoXA0xEpU6UGtn18CNVjXH6erU3KCpCDbpLmbVxBFor1U9MqN5Z2uMmCHJuXjJzlnDR+hWY+yPoLo8oHDw==} @@ -2845,8 +2833,8 @@ packages: '@popperjs/core@2.11.8': resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} - '@quansync/fs@0.1.5': - resolution: {integrity: sha512-lNS9hL2aS2NZgNW7BBj+6EBl4rOf8l+tQ0eRY6JWCI8jI2kc53gSoqbjojU0OnAWhzoXiOjFyGsHcDGePB3lhA==} + '@quansync/fs@1.0.0': + resolution: {integrity: sha512-4TJ3DFtlf1L5LDMaM6CanJ/0lckGNtJcMjQ1NAV6zDmA0tEHKZtxNKin8EgPaVX1YzljbxckyT2tJrpQKAtngQ==} '@radix-ui/number@1.1.1': resolution: {integrity: sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==} @@ -3053,9 +3041,6 @@ packages: '@react-pdf/font@2.5.2': resolution: {integrity: sha512-Ud0EfZ2FwrbvwAWx8nz+KKLmiqACCH9a/N/xNDOja0e/YgSnqTpuyHegFBgIMKjuBtO5dNvkb4dXkxAhGe/ayw==} - '@react-pdf/font@4.0.2': - resolution: {integrity: sha512-/dAWu7Y2RD1RxarDZ9SkYPHgBYOhmcDnet4W/qN/m8k+A2Hr3ja54GymSR7GGxWBtxjKtNauVKrTa9LS1n8WUw==} - '@react-pdf/font@4.0.4': resolution: {integrity: sha512-8YtgGtL511txIEc9AjiilpZ7yjid8uCd8OGUl6jaL3LIHnrToUupSN4IzsMQpVTCMYiDLFnDNQzpZsOYtRS/Pg==} @@ -3074,9 +3059,6 @@ packages: '@react-pdf/pdfkit@3.2.0': resolution: {integrity: sha512-OBfCcnTC6RpD9uv9L2woF60Zj1uQxhLFzTBXTdcYE9URzPE/zqXIyzpXEA4Vf3TFbvBCgFE2RzJ2ZUS0asq7yA==} - '@react-pdf/pdfkit@4.0.3': - resolution: {integrity: sha512-k+Lsuq8vTwWsCqTp+CCB4+2N+sOTFrzwGA7aw3H9ix/PDWR9QksbmNg0YkzGbLAPI6CeawmiLHcf4trZ5ecLPQ==} - '@react-pdf/pdfkit@4.1.0': resolution: {integrity: sha512-Wm/IOAv0h/U5Ra94c/PltFJGcpTUd/fwVMVeFD6X9tTTPCttIwg0teRG1Lqq617J8K4W7jpL/B0HTH0mjp3QpQ==} @@ -3116,9 +3098,6 @@ packages: '@react-pdf/stylesheet@4.3.0': resolution: {integrity: sha512-x7IVZOqRrUum9quuDeFXBveXwBht+z/6B0M+z4a4XjfSg1vZVvzoTl07Oa1yvQ/4yIC5yIkG2TSMWeKnDB+hrw==} - '@react-pdf/stylesheet@6.1.0': - resolution: {integrity: sha512-BGZ2sYNUp38VJUegjva/jsri3iiRGnVNjWI+G9dTwAvLNOmwFvSJzqaCsEnqQ/DW5mrTBk/577FhDY7pv6AidA==} - '@react-pdf/stylesheet@6.1.2': resolution: {integrity: sha512-E3ftGRYUQGKiN3JOgtGsLDo0hGekA6dmkmi/MYACytmPTKxQRBSO3126MebmCq+t1rgU9uRlREIEawJ+8nzSbw==} @@ -3195,30 +3174,60 @@ packages: cpu: [arm64] os: [android] + '@rolldown/binding-android-arm64@1.0.0-rc.12': + resolution: {integrity: sha512-pv1y2Fv0JybcykuiiD3qBOBdz6RteYojRFY1d+b95WVuzx211CRh+ytI/+9iVyWQ6koTh5dawe4S/yRfOFjgaA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [android] + '@rolldown/binding-darwin-arm64@1.0.0-beta.46': resolution: {integrity: sha512-w4IyumCQkpA3ezZ37COG3mMusFYxjEE8zqCfXZU/qb5k1JMD2kVl0fgJafIbGli27tgelYMweXkJGnlrxSGT9Q==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [darwin] + '@rolldown/binding-darwin-arm64@1.0.0-rc.12': + resolution: {integrity: sha512-cFYr6zTG/3PXXF3pUO+umXxt1wkRK/0AYT8lDwuqvRC+LuKYWSAQAQZjCWDQpAH172ZV6ieYrNnFzVVcnSflAg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [darwin] + '@rolldown/binding-darwin-x64@1.0.0-beta.46': resolution: {integrity: sha512-9QqaRHPbdAnv306+7nzltq4CktJ49Z4W9ybHLWYxSeDSoOGL4l1QmxjDWoRHrqYEkNr+DWHqqoD4NNHgOk7lKw==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [darwin] + '@rolldown/binding-darwin-x64@1.0.0-rc.12': + resolution: {integrity: sha512-ZCsYknnHzeXYps0lGBz8JrF37GpE9bFVefrlmDrAQhOEi4IOIlcoU1+FwHEtyXGx2VkYAvhu7dyBf75EJQffBw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [darwin] + '@rolldown/binding-freebsd-x64@1.0.0-beta.46': resolution: {integrity: sha512-Cuk5opdEMb+Evi7QcGArc4hWVoHSGz/qyUUWLTpFJWjylb8wH1u4f+HZE6gVGACuf4w/5P/VhAIamHyweAbBVQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [x64] os: [freebsd] + '@rolldown/binding-freebsd-x64@1.0.0-rc.12': + resolution: {integrity: sha512-dMLeprcVsyJsKolRXyoTH3NL6qtsT0Y2xeuEA8WQJquWFXkEC4bcu1rLZZSnZRMtAqwtrF/Ib9Ddtpa/Gkge9Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [freebsd] + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.46': resolution: {integrity: sha512-BPWDxEnxb4JNMXrSmPuc5ywI6cHOELofmT0e/WGkbL1MwKYRVvqTf+gMcGLF6zAV+OF5hLYMAEk8XKfao6xmDQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm] os: [linux] + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.12': + resolution: {integrity: sha512-YqWjAgGC/9M1lz3GR1r1rP79nMgo3mQiiA+Hfo+pvKFK1fAJ1bCi0ZQVh8noOqNacuY1qIcfyVfP6HoyBRZ85Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm] + os: [linux] + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.46': resolution: {integrity: sha512-CDQSVlryuRC955EwgbBK1h/6xQyttSxQG8+6/PeOfvUlfKGPMbBdcsOEHzGve5ED1Y7Ovh2UFjY/eT106aQqig==} engines: {node: ^20.19.0 || >=22.12.0} @@ -3226,6 +3235,13 @@ packages: os: [linux] libc: [glibc] + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.12': + resolution: {integrity: sha512-/I5AS4cIroLpslsmzXfwbe5OmWvSsrFuEw3mwvbQ1kDxJ822hFHIx+vsN/TAzNVyepI/j/GSzrtCIwQPeKCLIg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [glibc] + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.46': resolution: {integrity: sha512-6IZHycZetmVaC9zwcl1aA9fPYPuxLa5apALjJRoJu/2BZdER3zBWxDnCzlEh4SUlo++cwdfV9ZQRK9JS8cLNuA==} engines: {node: ^20.19.0 || >=22.12.0} @@ -3233,6 +3249,27 @@ packages: os: [linux] libc: [musl] + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.12': + resolution: {integrity: sha512-V6/wZztnBqlx5hJQqNWwFdxIKN0m38p8Jas+VoSfgH54HSj9tKTt1dZvG6JRHcjh6D7TvrJPWFGaY9UBVOaWPw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.12': + resolution: {integrity: sha512-AP3E9BpcUYliZCxa3w5Kwj9OtEVDYK6sVoUzy4vTOJsjPOgdaJZKFmN4oOlX0Wp0RPV2ETfmIra9x1xuayFB7g==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.12': + resolution: {integrity: sha512-nWwpvUSPkoFmZo0kQazZYOrT7J5DGOJ/+QHHzjvNlooDZED8oH82Yg67HvehPPLAg5fUff7TfWFHQS8IV1n3og==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [s390x] + os: [linux] + libc: [glibc] + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.46': resolution: {integrity: sha512-R/kI8fMnsxXvWzcMv5A408hfvrwtAwD/HdQKIE1HKWmfxdSHB11Y3PVwlnt7RVo7I++6mWCIxxj5o3gut4ibEw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -3240,6 +3277,13 @@ packages: os: [linux] libc: [glibc] + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.12': + resolution: {integrity: sha512-RNrafz5bcwRy+O9e6P8Z/OCAJW/A+qtBczIqVYwTs14pf4iV1/+eKEjdOUta93q2TsT/FI0XYDP3TCky38LMAg==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [glibc] + '@rolldown/binding-linux-x64-musl@1.0.0-beta.46': resolution: {integrity: sha512-vGUXKuHGUlG2XBwvN4A8KIegeaVVxN2ZxdGG9thycwRkzUvZ9ccKvqUVZM8cVRyNRWgVgsGCS18qLUefVplwKw==} engines: {node: ^20.19.0 || >=22.12.0} @@ -3247,23 +3291,47 @@ packages: os: [linux] libc: [musl] + '@rolldown/binding-linux-x64-musl@1.0.0-rc.12': + resolution: {integrity: sha512-Jpw/0iwoKWx3LJ2rc1yjFrj+T7iHZn2JDg1Yny1ma0luviFS4mhAIcd1LFNxK3EYu3DHWCps0ydXQ5i/rrJ2ig==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [linux] + libc: [musl] + '@rolldown/binding-openharmony-arm64@1.0.0-beta.46': resolution: {integrity: sha512-6SpDGH+0Dud3/RFDoC6fva6+Cm/0COnMRKR8kI4ssHWlCXPymlM59kYFCIBLZZqwURpNVVMPln4rWjxXuwD23w==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [openharmony] + '@rolldown/binding-openharmony-arm64@1.0.0-rc.12': + resolution: {integrity: sha512-vRugONE4yMfVn0+7lUKdKvN4D5YusEiPilaoO2sgUWpCvrncvWgPMzK00ZFFJuiPgLwgFNP5eSiUlv2tfc+lpA==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [openharmony] + '@rolldown/binding-wasm32-wasi@1.0.0-beta.46': resolution: {integrity: sha512-peWDGp8YUAbTw5RJzr9AuPlTuf2adr+TBNIGF6ysMbobBKuQL41wYfGQlcerXJfLmjnQLf6DU2zTPBTfrS2Y8A==} engines: {node: '>=14.0.0'} cpu: [wasm32] + '@rolldown/binding-wasm32-wasi@1.0.0-rc.12': + resolution: {integrity: sha512-ykGiLr/6kkiHc0XnBfmFJuCjr5ZYKKofkx+chJWDjitX+KsJuAmrzWhwyOMSHzPhzOHOy7u9HlFoa5MoAOJ/Zg==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.46': resolution: {integrity: sha512-Ydbwg1JCnVbTAuDyKtu3dOuBLgZ6iZsy8p1jMPX/r7LMPnpXnS15GNcmMwa11nyl/M2VjGE1i/MORUTMt8mnRQ==} engines: {node: ^20.19.0 || >=22.12.0} cpu: [arm64] os: [win32] + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.12': + resolution: {integrity: sha512-5eOND4duWkwx1AzCxadcOrNeighiLwMInEADT0YM7xeEOOFcovWZCq8dadXgcRHSf3Ulh1kFo/qvzoFiCLOL1Q==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [arm64] + os: [win32] + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.46': resolution: {integrity: sha512-XcPZG2uDxEn6G3takXQvi7xWgDiJqdC0N6mubL/giKD4I65zgQtbadwlIR8oDB/erOahZr5IX8cRBVcK3xcvpg==} engines: {node: ^20.19.0 || >=22.12.0} @@ -3276,9 +3344,18 @@ packages: cpu: [x64] os: [win32] + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.12': + resolution: {integrity: sha512-PyqoipaswDLAZtot351MLhrlrh6lcZPo2LSYE+VDxbVk24LVKAGOuE4hb8xZQmrPAuEtTZW8E6D2zc5EUZX4Lw==} + engines: {node: ^20.19.0 || >=22.12.0} + cpu: [x64] + os: [win32] + '@rolldown/pluginutils@1.0.0-beta.46': resolution: {integrity: sha512-xMNwJo/pHkEP/mhNVnW+zUiJDle6/hxrwO0mfSJuEVRbBfgrJFuUSRoZx/nYUw5pCjrysl9OkNXCkAdih8GCnA==} + '@rolldown/pluginutils@1.0.0-rc.12': + resolution: {integrity: sha512-HHMwmarRKvoFsJorqYlFeFRzXZqCt2ETQlEDOb9aqssrnVBB1/+xgTGtuTrIk5vzLNX1MjMtTf7W9z3tsSbrxw==} + '@rollup/pluginutils@5.2.0': resolution: {integrity: sha512-qWJ2ZTbmumwiLFomfzTyt5Kng4hwPi9rwCYN4SHb6eaRU1KNO4ccxINHr/VhH4GgPlt1XfSTLX2LBTme8ne4Zw==} engines: {node: '>=14.0.0'} @@ -4673,10 +4750,6 @@ packages: base64-js@1.5.1: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} - baseline-browser-mapping@2.8.4: - resolution: {integrity: sha512-L+YvJwGAgwJBV1p6ffpSTa2KRc69EeeYGYjRVWKs0GKrK+LON0GC0gV+rKSNtALEDvMDqkvCFq9r1r94/Gjwxw==} - hasBin: true - baseline-browser-mapping@2.9.19: resolution: {integrity: sha512-ipDqC8FrAl/76p2SSWKSI+H9tFwm7vYqXQrItCuiVPt26Km0jS+NzSsBWAaBusvSbQcfJG+JitdMm+wZAgTYqg==} hasBin: true @@ -4735,11 +4808,6 @@ packages: browserify-zlib@0.2.0: resolution: {integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==} - browserslist@4.26.2: - resolution: {integrity: sha512-ECFzp6uFOSB+dcZ5BK/IBaGWssbSYBHvuMeMt3MMFyhI0Z8SqGgEkBLARgpRH3hutIgPVsALcMwbDrJqPxQ65A==} - engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} - hasBin: true - browserslist@4.28.1: resolution: {integrity: sha512-ZC5Bd0LgJXgwGqUknZY/vkUQ04r8NXnJZ3yYi4vDmSiZmC/pdSN0NbNRPxZpbtO4uAfDUAFffO8IZoM3Gj8IkA==} engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} @@ -5337,9 +5405,6 @@ packages: effect@3.20.0: resolution: {integrity: sha512-qMLfDJscrNG8p/aw+IkT9W7fgj50Z4wG5bLBy0Txsxz8iUHjDIkOgO3SV0WZfnQbNG2VJYb0b+rDLMrhM4+Krw==} - electron-to-chromium@1.5.218: - resolution: {integrity: sha512-uwwdN0TUHs8u6iRgN8vKeWZMRll4gBkz+QMqdS7DDe49uiK68/UX92lFb61oiFPrpYZNeZIqa4bA7O6Aiasnzg==} - electron-to-chromium@1.5.286: resolution: {integrity: sha512-9tfDXhJ4RKFNerfjdCcZfufu49vg620741MNs26a9+bhLThdB+plgMeou98CAaHu/WATj2iHOOHTp1hWtABj2A==} @@ -5775,8 +5840,8 @@ packages: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} - get-tsconfig@4.13.0: - resolution: {integrity: sha512-1VKTZJCwBrvbd+Wn3AOgQP/2Av+TfTCOlE4AcRJE72W1ksZXbAx8PPBR9RzgTeSPzlPMHrbANMH3LbltH73wxQ==} + get-tsconfig@4.13.7: + resolution: {integrity: sha512-7tN6rFgBlMgpBML5j8typ92BKFi2sFQvIdpAqLA2beia5avZDrMs0FLZiM5etShWq5irVyGcGMEA1jcDaK7A/Q==} glob-parent@5.1.2: resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} @@ -5788,6 +5853,7 @@ packages: glob@11.1.0: resolution: {integrity: sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==} engines: {node: 20 || >=22} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me hasBin: true globrex@0.1.2: @@ -6437,9 +6503,6 @@ packages: resolution: {integrity: sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==} hasBin: true - magic-string@0.30.19: - resolution: {integrity: sha512-2N21sPY9Ws53PZvsEpVtNuSW+ScYbQdp4b9qUaL+9QkHUrGFKo56Lg9Emg5s9V/qrtNBmiR01sYhUOwu3H+VOw==} - magic-string@0.30.21: resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} @@ -6879,9 +6942,6 @@ packages: node-html-parser@6.1.13: resolution: {integrity: sha512-qIsTMOY4C/dAa5Q5vsobRpOOvPfC4pB61UVW2uSwZNUp0QU/jCekTal1vMmbO0DgdHeLUJpv/ARmDqErVxA3Sg==} - node-releases@2.0.21: - resolution: {integrity: sha512-5b0pgg78U3hwXkCM8Z9b2FJdPZlr9Psr9V2gQPESdGHqbntyFJKFW4r5TeWGFzafGY3hzs1JC62VEQMbl1JFkw==} - node-releases@2.0.27: resolution: {integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==} @@ -7127,8 +7187,8 @@ packages: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} - picomatch@4.0.3: - resolution: {integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==} + picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} engines: {node: '>=12'} pidtree@0.6.0: @@ -7368,8 +7428,8 @@ packages: resolution: {integrity: sha512-V/yCWTTF7VJ9hIh18Ugr2zhJMP01MY7c5kh4J870L7imm6/DIzBsNLTXzMwUA3yZ5b/KBqLx8Kp3uRvd7xSe3Q==} engines: {node: '>=0.6'} - quansync@0.2.11: - resolution: {integrity: sha512-AifT7QEbW9Nri4tAwR5M/uzpBuqfZf+zwaEM/QkzEjj7NBuFD2rBuy0K3dE+8wltbezDV7JMA0WfnCPYRSYbXA==} + quansync@1.0.0: + resolution: {integrity: sha512-5xZacEEufv3HSTPQuchrvV6soaiACMFnq1H8wkVioctoH3TRha9Sz66lOxRwPK/qZj7HPiSveih9yAyh98gvqA==} queue@6.0.2: resolution: {integrity: sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==} @@ -7698,6 +7758,11 @@ packages: engines: {node: ^20.19.0 || >=22.12.0} hasBin: true + rolldown@1.0.0-rc.12: + resolution: {integrity: sha512-yP4USLIMYrwpPHEFB5JGH1uxhcslv6/hL0OyvTuY+3qlOSJvZ7ntYnoWpehBxufkgN0cvXxppuTu5hHa/zPh+A==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + rollup@4.59.0: resolution: {integrity: sha512-2oMpl67a3zCH9H79LeMcbDhXW/UmWG/y2zuqnF2jQq5uq9TbM9TVyXvA4+t+ne2IIkBdrLpAaRQAvo7YI/Yyeg==} engines: {node: '>=18.0.0', npm: '>=8.0.0'} @@ -7750,10 +7815,6 @@ packages: resolution: {integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==} engines: {node: '>= 10.13.0'} - schema-utils@4.3.2: - resolution: {integrity: sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==} - engines: {node: '>= 10.13.0'} - schema-utils@4.3.3: resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==} engines: {node: '>= 10.13.0'} @@ -7769,13 +7830,8 @@ packages: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true - semver@7.7.2: - resolution: {integrity: sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==} - engines: {node: '>=10'} - hasBin: true - - semver@7.7.3: - resolution: {integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==} + semver@7.7.4: + resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} engines: {node: '>=10'} hasBin: true @@ -7944,10 +8000,6 @@ packages: resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} engines: {node: '>=8'} - strip-ansi@7.1.0: - resolution: {integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==} - engines: {node: '>=12'} - strip-ansi@7.1.2: resolution: {integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==} engines: {node: '>=12'} @@ -8031,22 +8083,6 @@ packages: resolution: {integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==} engines: {node: '>=6'} - terser-webpack-plugin@5.3.14: - resolution: {integrity: sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==} - engines: {node: '>= 10.13.0'} - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: 5.104.1 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true - terser-webpack-plugin@5.3.16: resolution: {integrity: sha512-h9oBFCWrq78NyWWVcSwZarJkZ01c2AyGrzs1crmHZO3QUg9D61Wu4NPjBy69n7JqylFF5y+CsUZYmYEIZ3mR+Q==} engines: {node: '>= 10.13.0'} @@ -8086,8 +8122,8 @@ packages: tinycolor2@1.6.0: resolution: {integrity: sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==} - tinyexec@1.0.2: - resolution: {integrity: sha512-W/KYk+NFhkmsYpuHq5JykngiOCnxeVL8v8dFnqxSD8qEEdRfXk1SDM6JzNqcERbcGYj9tMrDQBYV9cjgnunFIg==} + tinyexec@1.0.4: + resolution: {integrity: sha512-u9r3uZC0bdpGOXtlxUIdwf9pkmvhqJdrVCH9fapQtgy/OeTTMZ1nqH7agtvEfmGui6e1XxjcdrlxvxJvc3sMqw==} engines: {node: '>=18'} tinyglobby@0.2.15: @@ -8289,8 +8325,11 @@ packages: resolution: {integrity: sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==} engines: {node: '>=18'} - unconfig@7.3.3: - resolution: {integrity: sha512-QCkQoOnJF8L107gxfHL0uavn7WD9b3dpBcFX6HtfQYmjw2YzWxGuFQ0N0J6tE9oguCBJn9KOvfqYDCMPHIZrBA==} + unconfig-core@7.5.0: + resolution: {integrity: sha512-Su3FauozOGP44ZmKdHy2oE6LPjk51M/TRRjHv2HNCWiDvfvCoxC2lno6jevMA91MYAdCdwP05QnWdWpSbncX/w==} + + unconfig@7.5.0: + resolution: {integrity: sha512-oi8Qy2JV4D3UQ0PsopR28CzdQ3S/5A1zwsUwp/rosSbfhJ5z7b90bIyTwi/F7hCLD4SGcZVjDzd4XoUQcEanvA==} undici-types@6.20.0: resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==} @@ -8357,11 +8396,15 @@ packages: resolution: {integrity: sha512-4/u/j4FrCKdi17jaxuJA0jClGxB1AvU2hw/IuayPc4ay1XGaJs/rbb4v5WKwAjNifjmXK9PIFyuPiaK8azyR9w==} engines: {node: '>=14.0.0'} - update-browserslist-db@1.1.3: - resolution: {integrity: sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==} + unrun@0.2.34: + resolution: {integrity: sha512-LyaghRBR++r7svhDK6tnDz2XaYHWdneBOA0jbS8wnRsHerI9MFljX4fIiTgbbNbEVzZ0C9P1OjWLLe1OqoaaEw==} + engines: {node: '>=20.19.0'} hasBin: true peerDependencies: - browserslist: '>= 4.21.0' + synckit: ^0.11.11 + peerDependenciesMeta: + synckit: + optional: true update-browserslist-db@1.2.3: resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} @@ -8793,11 +8836,6 @@ snapshots: '@alloc/quick-lru@5.2.0': {} - '@ampproject/remapping@2.3.0': - dependencies: - '@jridgewell/gen-mapping': 0.3.13 - '@jridgewell/trace-mapping': 0.3.31 - '@asamuzakjp/css-color@3.2.0': dependencies: '@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) @@ -8831,26 +8869,6 @@ snapshots: '@babel/compat-data@7.28.4': {} - '@babel/core@7.28.3': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.27.1 - '@babel/generator': 7.28.5 - '@babel/helper-compilation-targets': 7.27.2 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.3) - '@babel/helpers': 7.26.10 - '@babel/parser': 7.28.5 - '@babel/template': 7.27.2 - '@babel/traverse': 7.28.4 - '@babel/types': 7.28.5 - convert-source-map: 2.0.0 - debug: 4.4.3 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - '@babel/core@7.28.4': dependencies: '@babel/code-frame': 7.27.1 @@ -8891,19 +8909,6 @@ snapshots: lru-cache: 5.1.1 semver: 6.3.1 - '@babel/helper-create-class-features-plugin@7.28.3(@babel/core@7.28.3)': - dependencies: - '@babel/core': 7.28.3 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-member-expression-to-functions': 7.27.1 - '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.3) - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/traverse': 7.28.4 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - '@babel/helper-create-class-features-plugin@7.28.3(@babel/core@7.28.4)': dependencies: '@babel/core': 7.28.4 @@ -8933,15 +8938,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.3)': - dependencies: - '@babel/core': 7.28.3 - '@babel/helper-module-imports': 7.27.1 - '@babel/helper-validator-identifier': 7.28.5 - '@babel/traverse': 7.28.4 - transitivePeerDependencies: - - supports-color - '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.4)': dependencies: '@babel/core': 7.28.4 @@ -8957,15 +8953,6 @@ snapshots: '@babel/helper-plugin-utils@7.27.1': {} - '@babel/helper-replace-supers@7.27.1(@babel/core@7.28.3)': - dependencies: - '@babel/core': 7.28.3 - '@babel/helper-member-expression-to-functions': 7.27.1 - '@babel/helper-optimise-call-expression': 7.27.1 - '@babel/traverse': 7.28.4 - transitivePeerDependencies: - - supports-color - '@babel/helper-replace-supers@7.27.1(@babel/core@7.28.4)': dependencies: '@babel/core': 7.28.4 @@ -8993,22 +8980,13 @@ snapshots: '@babel/template': 7.27.2 '@babel/types': 7.28.5 - '@babel/parser@7.28.3': - dependencies: - '@babel/types': 7.28.5 - '@babel/parser@7.28.5': dependencies: '@babel/types': 7.28.5 - '@babel/plugin-syntax-flow@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-syntax-flow@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-plugin-utils': 7.27.1 - - '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.3)': - dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.4)': @@ -9016,37 +8994,24 @@ snapshots: '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.3)': - dependencies: - '@babel/core': 7.28.3 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.4)': dependencies: '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.3) + '@babel/core': 7.28.4 + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-flow-strip-types@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-flow-strip-types@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-syntax-flow': 7.27.1(@babel/core@7.28.3) - - '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.28.3)': - dependencies: - '@babel/core': 7.28.3 - '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.3) + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color + '@babel/plugin-syntax-flow': 7.27.1(@babel/core@7.28.4) '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.28.4)': dependencies: @@ -9056,35 +9021,24 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-optional-chaining@7.28.5(@babel/core@7.28.3)': + '@babel/plugin-transform-optional-chaining@7.28.5(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.28.3)': + '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 - '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.3) - '@babel/helper-plugin-utils': 7.27.1 - transitivePeerDependencies: - - supports-color - - '@babel/plugin-transform-typescript@7.28.0(@babel/core@7.28.3)': - dependencies: - '@babel/core': 7.28.3 - '@babel/helper-annotate-as-pure': 7.27.3 - '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.3) + '@babel/core': 7.28.4 + '@babel/helper-create-class-features-plugin': 7.28.3(@babel/core@7.28.4) '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 - '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.3) transitivePeerDependencies: - supports-color @@ -9099,23 +9053,12 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/preset-flow@7.27.1(@babel/core@7.28.3)': - dependencies: - '@babel/core': 7.28.3 - '@babel/helper-plugin-utils': 7.27.1 - '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.28.3) - - '@babel/preset-typescript@7.27.1(@babel/core@7.28.3)': + '@babel/preset-flow@7.27.1(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 '@babel/helper-plugin-utils': 7.27.1 '@babel/helper-validator-option': 7.27.1 - '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-typescript': 7.28.0(@babel/core@7.28.3) - transitivePeerDependencies: - - supports-color + '@babel/plugin-transform-flow-strip-types': 7.27.1(@babel/core@7.28.4) '@babel/preset-typescript@7.27.1(@babel/core@7.28.4)': dependencies: @@ -9128,9 +9071,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@babel/register@7.28.3(@babel/core@7.28.3)': + '@babel/register@7.28.3(@babel/core@7.28.4)': dependencies: - '@babel/core': 7.28.3 + '@babel/core': 7.28.4 clone-deep: 4.0.1 find-cache-dir: 2.1.0 make-dir: 2.1.0 @@ -9290,10 +9233,10 @@ snapshots: dotenv: 17.2.1 eciesjs: 0.4.15 execa: 5.1.1 - fdir: 6.5.0(picomatch@4.0.3) + fdir: 6.5.0(picomatch@4.0.4) ignore: 5.3.2 object-treeify: 1.1.33 - picomatch: 4.0.3 + picomatch: 4.0.4 which: 4.0.0 '@ecies/ciphers@0.2.4(@noble/ciphers@1.3.0)': @@ -9379,11 +9322,6 @@ snapshots: tslib: 2.8.1 optional: true - '@emnapi/runtime@1.5.0': - dependencies: - tslib: 2.8.1 - optional: true - '@emnapi/runtime@1.7.1': dependencies: tslib: 2.8.1 @@ -9716,7 +9654,7 @@ snapshots: '@img/sharp-wasm32@0.34.3': dependencies: - '@emnapi/runtime': 1.5.0 + '@emnapi/runtime': 1.7.1 optional: true '@img/sharp-win32-arm64@0.34.3': @@ -9734,7 +9672,7 @@ snapshots: dependencies: string-width: 5.1.2 string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 strip-ansi-cjs: strip-ansi@6.0.1 wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 @@ -9853,7 +9791,7 @@ snapshots: '@napi-rs/canvas-linux-x64-musl': 0.1.80 '@napi-rs/canvas-win32-x64-msvc': 0.1.80 - '@napi-rs/wasm-runtime@1.1.0': + '@napi-rs/wasm-runtime@1.1.1': dependencies: '@emnapi/core': 1.7.1 '@emnapi/runtime': 1.7.1 @@ -9871,6 +9809,9 @@ snapshots: '@opentelemetry/api@1.9.0': optional: true + '@oxc-project/types@0.122.0': + optional: true + '@oxc-project/types@0.96.0': {} '@oxfmt/binding-android-arm-eabi@0.35.0': @@ -10031,7 +9972,7 @@ snapshots: detect-libc: 2.0.4 is-glob: 4.0.3 node-addon-api: 7.1.1 - picomatch: 4.0.3 + picomatch: 4.0.4 optionalDependencies: '@parcel/watcher-android-arm64': 2.5.4 '@parcel/watcher-darwin-arm64': 2.5.4 @@ -10049,9 +9990,9 @@ snapshots: '@popperjs/core@2.11.8': {} - '@quansync/fs@0.1.5': + '@quansync/fs@1.0.0': dependencies: - quansync: 0.2.11 + quansync: 1.0.0 '@radix-ui/number@1.1.1': {} @@ -10237,13 +10178,6 @@ snapshots: transitivePeerDependencies: - encoding - '@react-pdf/font@4.0.2': - dependencies: - '@react-pdf/pdfkit': 4.0.3 - '@react-pdf/types': 2.9.2 - fontkit: 2.0.4 - is-url: 1.2.4 - '@react-pdf/font@4.0.4': dependencies: '@react-pdf/pdfkit': 4.1.0 @@ -10287,7 +10221,7 @@ snapshots: '@react-pdf/fns': 3.1.2 '@react-pdf/image': 3.0.3 '@react-pdf/primitives': 4.1.1 - '@react-pdf/stylesheet': 6.1.0 + '@react-pdf/stylesheet': 6.1.2 '@react-pdf/textkit': 6.0.0 '@react-pdf/types': 2.9.2 emoji-regex: 10.5.0 @@ -10304,17 +10238,6 @@ snapshots: jay-peg: 1.1.1 vite-compatible-readable-stream: 3.6.1 - '@react-pdf/pdfkit@4.0.3': - dependencies: - '@babel/runtime': 7.26.10 - '@react-pdf/png-js': 3.0.0 - browserify-zlib: 0.2.0 - crypto-js: 4.2.0 - fontkit: 2.0.4 - jay-peg: 1.1.1 - linebreak: 1.1.0 - vite-compatible-readable-stream: 3.6.1 - '@react-pdf/pdfkit@4.1.0': dependencies: '@babel/runtime': 7.26.10 @@ -10392,9 +10315,9 @@ snapshots: dependencies: '@babel/runtime': 7.26.10 '@react-pdf/fns': 3.1.2 - '@react-pdf/font': 4.0.2 + '@react-pdf/font': 4.0.4 '@react-pdf/layout': 4.4.0 - '@react-pdf/pdfkit': 4.0.3 + '@react-pdf/pdfkit': 4.1.0 '@react-pdf/primitives': 4.1.1 '@react-pdf/reconciler': 1.1.4(react@18.3.1) '@react-pdf/render': 4.3.0 @@ -10415,15 +10338,6 @@ snapshots: media-engine: 1.0.3 postcss-value-parser: 4.2.0 - '@react-pdf/stylesheet@6.1.0': - dependencies: - '@react-pdf/fns': 3.1.2 - '@react-pdf/types': 2.9.2 - color-string: 1.9.1 - hsl-to-hex: 1.0.0 - media-engine: 1.0.3 - postcss-value-parser: 4.2.0 - '@react-pdf/stylesheet@6.1.2': dependencies: '@react-pdf/fns': 3.1.2 @@ -10481,7 +10395,7 @@ snapshots: prettier: 3.7.4 react-refresh: 0.14.2 react-router: 7.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - semver: 7.7.3 + semver: 7.7.4 tinyglobby: 0.2.15 valibot: 1.2.0(typescript@5.8.3) vite: 7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1) @@ -10541,54 +10455,104 @@ snapshots: '@rolldown/binding-android-arm64@1.0.0-beta.46': optional: true + '@rolldown/binding-android-arm64@1.0.0-rc.12': + optional: true + '@rolldown/binding-darwin-arm64@1.0.0-beta.46': optional: true + '@rolldown/binding-darwin-arm64@1.0.0-rc.12': + optional: true + '@rolldown/binding-darwin-x64@1.0.0-beta.46': optional: true + '@rolldown/binding-darwin-x64@1.0.0-rc.12': + optional: true + '@rolldown/binding-freebsd-x64@1.0.0-beta.46': optional: true + '@rolldown/binding-freebsd-x64@1.0.0-rc.12': + optional: true + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-beta.46': optional: true + '@rolldown/binding-linux-arm-gnueabihf@1.0.0-rc.12': + optional: true + '@rolldown/binding-linux-arm64-gnu@1.0.0-beta.46': optional: true + '@rolldown/binding-linux-arm64-gnu@1.0.0-rc.12': + optional: true + '@rolldown/binding-linux-arm64-musl@1.0.0-beta.46': optional: true + '@rolldown/binding-linux-arm64-musl@1.0.0-rc.12': + optional: true + + '@rolldown/binding-linux-ppc64-gnu@1.0.0-rc.12': + optional: true + + '@rolldown/binding-linux-s390x-gnu@1.0.0-rc.12': + optional: true + '@rolldown/binding-linux-x64-gnu@1.0.0-beta.46': optional: true + '@rolldown/binding-linux-x64-gnu@1.0.0-rc.12': + optional: true + '@rolldown/binding-linux-x64-musl@1.0.0-beta.46': optional: true + '@rolldown/binding-linux-x64-musl@1.0.0-rc.12': + optional: true + '@rolldown/binding-openharmony-arm64@1.0.0-beta.46': optional: true + '@rolldown/binding-openharmony-arm64@1.0.0-rc.12': + optional: true + '@rolldown/binding-wasm32-wasi@1.0.0-beta.46': dependencies: - '@napi-rs/wasm-runtime': 1.1.0 + '@napi-rs/wasm-runtime': 1.1.1 + optional: true + + '@rolldown/binding-wasm32-wasi@1.0.0-rc.12': + dependencies: + '@napi-rs/wasm-runtime': 1.1.1 optional: true '@rolldown/binding-win32-arm64-msvc@1.0.0-beta.46': optional: true + '@rolldown/binding-win32-arm64-msvc@1.0.0-rc.12': + optional: true + '@rolldown/binding-win32-ia32-msvc@1.0.0-beta.46': optional: true '@rolldown/binding-win32-x64-msvc@1.0.0-beta.46': optional: true + '@rolldown/binding-win32-x64-msvc@1.0.0-rc.12': + optional: true + '@rolldown/pluginutils@1.0.0-beta.46': {} + '@rolldown/pluginutils@1.0.0-rc.12': + optional: true + '@rollup/pluginutils@5.2.0(rollup@4.59.0)': dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 - picomatch: 4.0.3 + picomatch: 4.0.4 optionalDependencies: rollup: 4.59.0 @@ -10836,10 +10800,10 @@ snapshots: magic-string: 0.30.21 path-browserify: 1.0.1 process: 0.11.10 - semver: 7.7.3 + semver: 7.7.4 storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) style-loader: 3.3.4(webpack@5.104.1(@swc/core@1.13.5(@swc/helpers@0.5.17))) - terser-webpack-plugin: 5.3.14(@swc/core@1.13.5(@swc/helpers@0.5.17))(webpack@5.104.1(@swc/core@1.13.5(@swc/helpers@0.5.17))) + terser-webpack-plugin: 5.3.16(@swc/core@1.13.5(@swc/helpers@0.5.17))(webpack@5.104.1(@swc/core@1.13.5(@swc/helpers@0.5.17))) ts-dedent: 2.2.0 url: 0.11.4 util: 0.12.5 @@ -10909,7 +10873,7 @@ snapshots: react-docgen: 7.1.1 react-dom: 18.3.1(react@18.3.1) resolve: 1.22.10 - semver: 7.7.3 + semver: 7.7.4 storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) tsconfig-paths: 4.2.0 webpack: 5.104.1(@swc/core@1.13.5(@swc/helpers@0.5.17)) @@ -10960,7 +10924,7 @@ snapshots: '@storybook/builder-vite': 9.1.10(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) '@storybook/react': 9.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))(typescript@5.8.3) find-up: 7.0.0 - magic-string: 0.30.19 + magic-string: 0.30.21 react: 18.3.1 react-docgen: 8.0.1 react-dom: 18.3.1(react@18.3.1) @@ -12059,7 +12023,7 @@ snapshots: autoprefixer@10.4.21(postcss@8.5.6): dependencies: - browserslist: 4.26.2 + browserslist: 4.28.1 caniuse-lite: 1.0.30001759 fraction.js: 4.3.7 normalize-range: 0.1.2 @@ -12103,8 +12067,6 @@ snapshots: base64-js@1.5.1: {} - baseline-browser-mapping@2.8.4: {} - baseline-browser-mapping@2.9.19: {} basic-auth@2.0.1: @@ -12177,14 +12139,6 @@ snapshots: dependencies: pako: 1.0.11 - browserslist@4.26.2: - dependencies: - baseline-browser-mapping: 2.8.4 - caniuse-lite: 1.0.30001759 - electron-to-chromium: 1.5.218 - node-releases: 2.0.21 - update-browserslist-db: 1.1.3(browserslist@4.26.2) - browserslist@4.28.1: dependencies: baseline-browser-mapping: 2.9.19 @@ -12517,7 +12471,7 @@ snapshots: postcss-modules-scope: 3.2.1(postcss@8.5.6) postcss-modules-values: 4.0.0(postcss@8.5.6) postcss-value-parser: 4.2.0 - semver: 7.7.3 + semver: 7.7.4 optionalDependencies: webpack: 5.104.1(@swc/core@1.13.5(@swc/helpers@0.5.17)) @@ -12769,8 +12723,6 @@ snapshots: '@standard-schema/spec': 1.0.0 fast-check: 3.23.2 - electron-to-chromium@1.5.218: {} - electron-to-chromium@1.5.286: {} element-resize-detector@1.2.4: @@ -13010,9 +12962,9 @@ snapshots: fast-uri@3.0.6: {} - fdir@6.5.0(picomatch@4.0.3): + fdir@6.5.0(picomatch@4.0.4): optionalDependencies: - picomatch: 4.0.3 + picomatch: 4.0.4 fecha@4.2.3: {} @@ -13136,7 +13088,7 @@ snapshots: minimatch: 3.1.4 node-abort-controller: 3.1.1 schema-utils: 3.3.0 - semver: 7.7.3 + semver: 7.7.4 tapable: 2.3.0 typescript: 5.8.3 webpack: 5.104.1(@swc/core@1.13.5(@swc/helpers@0.5.17)) @@ -13224,7 +13176,7 @@ snapshots: get-stream@6.0.1: {} - get-tsconfig@4.13.0: + get-tsconfig@4.13.7: dependencies: resolve-pkg-maps: 1.0.0 @@ -13679,16 +13631,16 @@ snapshots: jscodeshift@17.3.0: dependencies: - '@babel/core': 7.28.3 - '@babel/parser': 7.28.3 - '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.28.3) - '@babel/plugin-transform-optional-chaining': 7.28.5(@babel/core@7.28.3) - '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.28.3) - '@babel/preset-flow': 7.27.1(@babel/core@7.28.3) - '@babel/preset-typescript': 7.27.1(@babel/core@7.28.3) - '@babel/register': 7.28.3(@babel/core@7.28.3) + '@babel/core': 7.28.4 + '@babel/parser': 7.28.5 + '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.28.4) + '@babel/plugin-transform-optional-chaining': 7.28.5(@babel/core@7.28.4) + '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.28.4) + '@babel/preset-flow': 7.27.1(@babel/core@7.28.4) + '@babel/preset-typescript': 7.27.1(@babel/core@7.28.4) + '@babel/register': 7.28.3(@babel/core@7.28.4) flow-parser: 0.293.0 graceful-fs: 4.2.11 micromatch: 4.0.8 @@ -13948,10 +13900,6 @@ snapshots: lz-string@1.5.0: {} - magic-string@0.30.19: - dependencies: - '@jridgewell/sourcemap-codec': 1.5.5 - magic-string@0.30.21: dependencies: '@jridgewell/sourcemap-codec': 1.5.5 @@ -13973,7 +13921,7 @@ snapshots: make-dir@4.0.0: dependencies: - semver: 7.7.3 + semver: 7.7.4 map-or-similar@1.5.0: {} @@ -14623,8 +14571,6 @@ snapshots: css-select: 5.2.2 he: 1.2.0 - node-releases@2.0.21: {} - node-releases@2.0.27: {} normalize-path@3.0.0: {} @@ -14867,7 +14813,7 @@ snapshots: picomatch@2.3.1: {} - picomatch@4.0.3: {} + picomatch@4.0.4: {} pidtree@0.6.0: {} @@ -15136,7 +15082,7 @@ snapshots: dependencies: side-channel: 1.1.0 - quansync@0.2.11: {} + quansync@1.0.0: {} queue@6.0.2: dependencies: @@ -15548,7 +15494,7 @@ snapshots: ast-kit: 2.2.0 birpc: 2.9.0 dts-resolver: 2.1.3 - get-tsconfig: 4.13.0 + get-tsconfig: 4.13.7 magic-string: 0.30.21 obug: 2.1.1 rolldown: 1.0.0-beta.46 @@ -15577,6 +15523,28 @@ snapshots: '@rolldown/binding-win32-ia32-msvc': 1.0.0-beta.46 '@rolldown/binding-win32-x64-msvc': 1.0.0-beta.46 + rolldown@1.0.0-rc.12: + dependencies: + '@oxc-project/types': 0.122.0 + '@rolldown/pluginutils': 1.0.0-rc.12 + optionalDependencies: + '@rolldown/binding-android-arm64': 1.0.0-rc.12 + '@rolldown/binding-darwin-arm64': 1.0.0-rc.12 + '@rolldown/binding-darwin-x64': 1.0.0-rc.12 + '@rolldown/binding-freebsd-x64': 1.0.0-rc.12 + '@rolldown/binding-linux-arm-gnueabihf': 1.0.0-rc.12 + '@rolldown/binding-linux-arm64-gnu': 1.0.0-rc.12 + '@rolldown/binding-linux-arm64-musl': 1.0.0-rc.12 + '@rolldown/binding-linux-ppc64-gnu': 1.0.0-rc.12 + '@rolldown/binding-linux-s390x-gnu': 1.0.0-rc.12 + '@rolldown/binding-linux-x64-gnu': 1.0.0-rc.12 + '@rolldown/binding-linux-x64-musl': 1.0.0-rc.12 + '@rolldown/binding-openharmony-arm64': 1.0.0-rc.12 + '@rolldown/binding-wasm32-wasi': 1.0.0-rc.12 + '@rolldown/binding-win32-arm64-msvc': 1.0.0-rc.12 + '@rolldown/binding-win32-x64-msvc': 1.0.0-rc.12 + optional: true + rollup@4.59.0: dependencies: '@types/estree': 1.0.8 @@ -15662,13 +15630,6 @@ snapshots: ajv: 6.14.0 ajv-keywords: 3.5.2(ajv@6.14.0) - schema-utils@4.3.2: - dependencies: - '@types/json-schema': 7.0.15 - ajv: 8.18.0 - ajv-formats: 2.1.1(ajv@8.18.0) - ajv-keywords: 5.1.0(ajv@8.18.0) - schema-utils@4.3.3: dependencies: '@types/json-schema': 7.0.15 @@ -15684,9 +15645,7 @@ snapshots: semver@6.3.1: {} - semver@7.7.2: {} - - semver@7.7.3: {} + semver@7.7.4: {} send@0.19.0: dependencies: @@ -15777,7 +15736,7 @@ snapshots: dependencies: color: 4.2.3 detect-libc: 2.0.4 - semver: 7.7.2 + semver: 7.7.4 optionalDependencies: '@img/sharp-darwin-arm64': 0.34.3 '@img/sharp-darwin-x64': 0.34.3 @@ -15895,7 +15854,7 @@ snapshots: esbuild: 0.25.0 esbuild-register: 3.6.0(esbuild@0.25.0) recast: 0.23.11 - semver: 7.7.3 + semver: 7.7.4 ws: 8.18.3 optionalDependencies: prettier: 3.7.4 @@ -15945,10 +15904,6 @@ snapshots: dependencies: ansi-regex: 5.0.1 - strip-ansi@7.1.0: - dependencies: - ansi-regex: 6.2.2 - strip-ansi@7.1.2: dependencies: ansi-regex: 6.2.2 @@ -16016,17 +15971,6 @@ snapshots: tapable@2.3.0: {} - terser-webpack-plugin@5.3.14(@swc/core@1.13.5(@swc/helpers@0.5.17))(webpack@5.104.1(@swc/core@1.13.5(@swc/helpers@0.5.17))): - dependencies: - '@jridgewell/trace-mapping': 0.3.31 - jest-worker: 27.5.1 - schema-utils: 4.3.2 - serialize-javascript: 7.0.3 - terser: 5.43.1 - webpack: 5.104.1(@swc/core@1.13.5(@swc/helpers@0.5.17)) - optionalDependencies: - '@swc/core': 1.13.5(@swc/helpers@0.5.17) - terser-webpack-plugin@5.3.16(@swc/core@1.13.5(@swc/helpers@0.5.17))(webpack@5.104.1(@swc/core@1.13.5(@swc/helpers@0.5.17))): dependencies: '@jridgewell/trace-mapping': 0.3.31 @@ -16057,12 +16001,12 @@ snapshots: tinycolor2@1.6.0: {} - tinyexec@1.0.2: {} + tinyexec@1.0.4: {} tinyglobby@0.2.15: dependencies: - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 tinypool@2.1.0: {} @@ -16144,7 +16088,7 @@ snapshots: minimist: 1.2.8 strip-bom: 3.0.0 - tsdown@0.16.0(typescript@5.8.3): + tsdown@0.16.0(typescript@5.8.3)(unrun@0.2.34): dependencies: ansis: 4.2.0 cac: 6.7.14 @@ -16155,13 +16099,14 @@ snapshots: hookable: 5.5.3 rolldown: 1.0.0-beta.46 rolldown-plugin-dts: 0.17.8(rolldown@1.0.0-beta.46)(typescript@5.8.3) - semver: 7.7.3 - tinyexec: 1.0.2 + semver: 7.7.4 + tinyexec: 1.0.4 tinyglobby: 0.2.15 tree-kill: 1.2.2 - unconfig: 7.3.3 + unconfig: 7.5.0 optionalDependencies: typescript: 5.8.3 + unrun: 0.2.34 transitivePeerDependencies: - '@ts-macro/tsc' - '@typescript/native-preview' @@ -16217,12 +16162,18 @@ snapshots: uint8array-extras@1.5.0: {} - unconfig@7.3.3: + unconfig-core@7.5.0: + dependencies: + '@quansync/fs': 1.0.0 + quansync: 1.0.0 + + unconfig@7.5.0: dependencies: - '@quansync/fs': 0.1.5 + '@quansync/fs': 1.0.0 defu: 6.1.4 jiti: 2.6.1 - quansync: 0.2.11 + quansync: 1.0.0 + unconfig-core: 7.5.0 undici-types@6.20.0: {} @@ -16316,11 +16267,10 @@ snapshots: acorn: 8.15.0 webpack-virtual-modules: 0.6.2 - update-browserslist-db@1.1.3(browserslist@4.26.2): + unrun@0.2.34: dependencies: - browserslist: 4.26.2 - escalade: 3.2.0 - picocolors: 1.1.1 + rolldown: 1.0.0-rc.12 + optional: true update-browserslist-db@1.2.3(browserslist@4.28.1): dependencies: @@ -16492,8 +16442,8 @@ snapshots: vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1): dependencies: esbuild: 0.25.0 - fdir: 6.5.0(picomatch@4.0.3) - picomatch: 4.0.3 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 postcss: 8.5.6 rollup: 4.59.0 tinyglobby: 0.2.15 @@ -16519,10 +16469,10 @@ snapshots: magic-string: 0.30.21 obug: 2.1.1 pathe: 2.0.3 - picomatch: 4.0.3 + picomatch: 4.0.4 std-env: 3.10.0 tinybench: 2.9.0 - tinyexec: 1.0.2 + tinyexec: 1.0.4 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 vite: 7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1) @@ -16573,7 +16523,7 @@ snapshots: memfs: 3.5.3 mime-types: 2.1.35 range-parser: 1.2.1 - schema-utils: 4.3.2 + schema-utils: 4.3.3 optionalDependencies: webpack: 5.104.1(@swc/core@1.13.5(@swc/helpers@0.5.17)) From c53968a7f85ed0ebb13f3db0976fcccca7ea009f Mon Sep 17 00:00:00 2001 From: b-saikrishnakanth <130811169+b-saikrishnakanth@users.noreply.github.com> Date: Fri, 27 Mar 2026 16:00:51 +0530 Subject: [PATCH 33/62] [WEB-6762] fix: missing profile icons for recent activities on "Your Work" Page #8812 --- .../components/profile/overview/activity.tsx | 20 +++++++------------ 1 file changed, 7 insertions(+), 13 deletions(-) diff --git a/apps/web/core/components/profile/overview/activity.tsx b/apps/web/core/components/profile/overview/activity.tsx index cda3b8fb842..23bb961f770 100644 --- a/apps/web/core/components/profile/overview/activity.tsx +++ b/apps/web/core/components/profile/overview/activity.tsx @@ -9,6 +9,7 @@ import { useParams } from "next/navigation"; import useSWR from "swr"; // ui import { useTranslation } from "@plane/i18n"; +import { Avatar } from "@plane/propel/avatar"; import { EmptyStateCompact } from "@plane/propel/empty-state"; import { Loader, Card } from "@plane/ui"; import { calculateTimeAgo, getFileURL } from "@plane/utils"; @@ -49,19 +50,12 @@ export const ProfileActivity = observer(function ProfileActivity() {
{userProfileActivity.results.map((activity) => (
-
- {activity.actor_detail?.avatar_url && activity.actor_detail?.avatar_url !== "" ? ( - {activity.actor_detail?.display_name} - ) : ( -
- {activity.actor_detail?.display_name?.charAt(0)} -
- )} -
+

From f0468a9173da7834ea20e046b49f1530356c87f3 Mon Sep 17 00:00:00 2001 From: b-saikrishnakanth <130811169+b-saikrishnakanth@users.noreply.github.com> Date: Fri, 27 Mar 2026 16:01:24 +0530 Subject: [PATCH 34/62] [WEB-6763] fix: date range dropdown clipped in sub-issues list #8809 --- .../issue-detail-widgets/sub-issues/issues-list/properties.tsx | 2 ++ 1 file changed, 2 insertions(+) diff --git a/apps/web/core/components/issues/issue-detail-widgets/sub-issues/issues-list/properties.tsx b/apps/web/core/components/issues/issue-detail-widgets/sub-issues/issues-list/properties.tsx index 70b2507ea12..250e8ff883b 100644 --- a/apps/web/core/components/issues/issue-detail-widgets/sub-issues/issues-list/properties.tsx +++ b/apps/web/core/components/issues/issue-detail-widgets/sub-issues/issues-list/properties.tsx @@ -139,6 +139,7 @@ export const SubIssuesListItemProperties = observer(function SubIssuesListItemPr from: getDate(issue.start_date) || undefined, to: getDate(issue.target_date) || undefined, }} + placement="top-end" onSelect={(range) => { handleStartDate(range?.from ?? null); handleTargetDate(range?.to ?? null); @@ -154,6 +155,7 @@ export const SubIssuesListItemProperties = observer(function SubIssuesListItemPr showTooltip customTooltipHeading="Date Range" renderPlaceholder={false} + renderInPortal />

From 5e237938ff23eaba0a9202b4245017b88479a590 Mon Sep 17 00:00:00 2001 From: Anmol Singh Bhatia <121005188+anmolsinghbhatia@users.noreply.github.com> Date: Mon, 30 Mar 2026 12:20:39 +0530 Subject: [PATCH 35/62] [WEB-6783] fix: crash when deleting work item from peek view in workspace spreadsheet (#8821) * fix: guard against undefined issue in SpreadsheetIssueRow * fix: add defensive guard for isIssueNew in list block-root --- .../core/components/issues/issue-layouts/list/block-root.tsx | 2 +- .../issues/issue-layouts/spreadsheet/issue-row.tsx | 5 ++++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/apps/web/core/components/issues/issue-layouts/list/block-root.tsx b/apps/web/core/components/issues/issue-layouts/list/block-root.tsx index 7050cd1addc..443d84612b7 100644 --- a/apps/web/core/components/issues/issue-layouts/list/block-root.tsx +++ b/apps/web/core/components/issues/issue-layouts/list/block-root.tsx @@ -138,7 +138,7 @@ export const IssueBlockRoot = observer(function IssueBlockRoot(props: Props) { root={containerRef} classNames={`relative ${isLastChild && !isExpanded ? "" : "border-b border-b-subtle"}`} verticalOffset={100} - defaultValue={shouldRenderByDefault || isIssueNew(issuesMap[issueId])} + defaultValue={shouldRenderByDefault || (issuesMap[issueId] ? isIssueNew(issuesMap[issueId]) : false)} placeholderChildren={} shouldRecordHeights={isMobile} > diff --git a/apps/web/core/components/issues/issue-layouts/spreadsheet/issue-row.tsx b/apps/web/core/components/issues/issue-layouts/spreadsheet/issue-row.tsx index c511fd31815..6d060c4dbd3 100644 --- a/apps/web/core/components/issues/issue-layouts/spreadsheet/issue-row.tsx +++ b/apps/web/core/components/issues/issue-layouts/spreadsheet/issue-row.tsx @@ -81,10 +81,13 @@ export const SpreadsheetIssueRow = observer(function SpreadsheetIssueRow(props: const { issueMap } = useIssues(); // derived values + const issue = issueMap[issueId]; const subIssues = subIssuesStore.subIssuesByIssueId(issueId); const isIssueSelected = selectionHelpers.getIsEntitySelected(issueId); const isIssueActive = selectionHelpers.getIsEntityActive(issueId); + if (!issue) return null; + return ( <> {/* first column/ issue name and key column */} @@ -104,7 +107,7 @@ export const SpreadsheetIssueRow = observer(function SpreadsheetIssueRow(props: })} verticalOffset={100} shouldRecordHeights={false} - defaultValue={shouldRenderByDefault || isIssueNew(issueMap[issueId])} + defaultValue={shouldRenderByDefault || isIssueNew(issue)} > Date: Mon, 30 Mar 2026 12:28:39 +0530 Subject: [PATCH 36/62] chore(deps): bump cryptography (#8819) Bumps the pip group with 1 update in the /apps/api/requirements directory: [cryptography](https://github.com/pyca/cryptography). Updates `cryptography` from 46.0.5 to 46.0.6 - [Changelog](https://github.com/pyca/cryptography/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pyca/cryptography/compare/46.0.5...46.0.6) --- updated-dependencies: - dependency-name: cryptography dependency-version: 46.0.6 dependency-type: direct:production dependency-group: pip ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- apps/api/requirements/base.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/api/requirements/base.txt b/apps/api/requirements/base.txt index 3000afde973..865590cb2eb 100644 --- a/apps/api/requirements/base.txt +++ b/apps/api/requirements/base.txt @@ -51,7 +51,7 @@ beautifulsoup4==4.12.3 # analytics posthog==3.5.0 # crypto -cryptography==46.0.5 +cryptography==46.0.6 # html validator lxml==6.0.0 # s3 From d7c80885fd4f4a505fc89e53b716d1bf073e7899 Mon Sep 17 00:00:00 2001 From: Saurabh Kumar <70131915+Saurabhkmr98@users.noreply.github.com> Date: Mon, 30 Mar 2026 15:29:16 +0530 Subject: [PATCH 37/62] [SILO-1087] feat: add IssueRelations external API (#8763) * add IssueRelations external API * update serializer methods and filter by slug --- apps/api/plane/api/serializers/__init__.py | 4 + apps/api/plane/api/serializers/issue.py | 179 ++++++++++++++ apps/api/plane/api/urls/work_item.py | 6 + apps/api/plane/api/views/__init__.py | 1 + apps/api/plane/api/views/issue.py | 256 ++++++++++++++++++++- apps/api/plane/utils/openapi/__init__.py | 2 + apps/api/plane/utils/openapi/decorators.py | 15 ++ 7 files changed, 451 insertions(+), 12 deletions(-) diff --git a/apps/api/plane/api/serializers/__init__.py b/apps/api/plane/api/serializers/__init__.py index 44e527a2dc5..5831b4898fb 100644 --- a/apps/api/plane/api/serializers/__init__.py +++ b/apps/api/plane/api/serializers/__init__.py @@ -25,6 +25,10 @@ IssueCommentCreateSerializer, IssueLinkCreateSerializer, IssueLinkUpdateSerializer, + IssueRelationCreateSerializer, + IssueRelationResponseSerializer, + IssueRelationSerializer, + RelatedIssueSerializer, ) from .state import StateLiteSerializer, StateSerializer from .cycle import ( diff --git a/apps/api/plane/api/serializers/issue.py b/apps/api/plane/api/serializers/issue.py index ba9ddae301d..6468ddbc84f 100644 --- a/apps/api/plane/api/serializers/issue.py +++ b/apps/api/plane/api/serializers/issue.py @@ -20,6 +20,7 @@ IssueComment, IssueLabel, IssueLink, + IssueRelation, Label, ProjectMember, State, @@ -479,6 +480,184 @@ class Meta: ] +class IssueRelationResponseSerializer(serializers.Serializer): + """ + Serializer for issue relations response showing grouped relation types. + + Returns issue IDs organized by relation type for efficient client-side processing. + """ + + blocking = serializers.ListField( + child=serializers.UUIDField(), + help_text="List of issue IDs that are blocking this issue", + ) + blocked_by = serializers.ListField( + child=serializers.UUIDField(), + help_text="List of issue IDs that this issue is blocked by", + ) + duplicate = serializers.ListField( + child=serializers.UUIDField(), + help_text="List of issue IDs that are duplicates of this issue", + ) + relates_to = serializers.ListField( + child=serializers.UUIDField(), + help_text="List of issue IDs that relate to this issue", + ) + start_after = serializers.ListField( + child=serializers.UUIDField(), + help_text="List of issue IDs that start after this issue", + ) + start_before = serializers.ListField( + child=serializers.UUIDField(), + help_text="List of issue IDs that start before this issue", + ) + finish_after = serializers.ListField( + child=serializers.UUIDField(), + help_text="List of issue IDs that finish after this issue", + ) + finish_before = serializers.ListField( + child=serializers.UUIDField(), + help_text="List of issue IDs that finish before this issue", + ) + + +class IssueRelationCreateSerializer(serializers.Serializer): + """ + Serializer for creating issue relations. + + Creates issue relations with the specified relation type and issues. + Validates relation types and ensures proper issue ID format. + """ + + RELATION_TYPE_CHOICES = [ + ("blocking", "Blocking"), + ("blocked_by", "Blocked By"), + ("duplicate", "Duplicate"), + ("relates_to", "Relates To"), + ("start_before", "Start Before"), + ("start_after", "Start After"), + ("finish_before", "Finish Before"), + ("finish_after", "Finish After"), + ] + + relation_type = serializers.ChoiceField( + choices=RELATION_TYPE_CHOICES, + required=True, + help_text="Type of relationship between work items", + ) + issues = serializers.ListField( + child=serializers.UUIDField(), + required=True, + min_length=1, + help_text="Array of work item IDs to create relations with", + ) + + def validate_issues(self, value): + """Validate that issues list is not empty and contains valid UUIDs.""" + if not value: + raise serializers.ValidationError("At least one issue ID is required.") + return value + + +class IssueRelationRemoveSerializer(serializers.Serializer): + """ + Serializer for removing issue relations. + + Removes existing relationships between work items by specifying + the related issue ID. + """ + + related_issue = serializers.UUIDField( + required=True, help_text="ID of the related work item to remove relation with" + ) + + +class IssueRelationSerializer(BaseSerializer): + """ + Serializer for issue relationships showing related issue details. + + Provides comprehensive information about related issues including + project context, sequence ID, and relationship type. + """ + + id = serializers.UUIDField(source="related_issue.id", read_only=True) + project_id = serializers.UUIDField(source="related_issue.project_id", read_only=True) + sequence_id = serializers.IntegerField(source="related_issue.sequence_id", read_only=True) + name = serializers.CharField(source="related_issue.name", read_only=True) + relation_type = serializers.CharField(read_only=True) + state_id = serializers.UUIDField(source="related_issue.state.id", read_only=True) + priority = serializers.CharField(source="related_issue.priority", read_only=True) + + class Meta: + model = IssueRelation + fields = [ + "id", + "project_id", + "sequence_id", + "relation_type", + "name", + "state_id", + "priority", + "created_by", + "created_at", + "updated_at", + "updated_by", + ] + read_only_fields = [ + "workspace", + "project", + "created_by", + "created_at", + "updated_by", + "updated_at", + ] + + +class RelatedIssueSerializer(BaseSerializer): + """ + Serializer for reverse issue relationships showing issue details. + + Provides comprehensive information about the source issue in a relationship + including project context, sequence ID, and relationship type. + """ + + id = serializers.UUIDField(source="issue.id", read_only=True) + project_id = serializers.PrimaryKeyRelatedField(source="issue.project_id", read_only=True) + sequence_id = serializers.IntegerField(source="issue.sequence_id", read_only=True) + name = serializers.CharField(source="issue.name", read_only=True) + type_id = serializers.UUIDField(source="issue.type.id", read_only=True) + relation_type = serializers.CharField(read_only=True) + is_epic = serializers.BooleanField(source="issue.type.is_epic", read_only=True) + state_id = serializers.UUIDField(source="issue.state.id", read_only=True) + priority = serializers.CharField(source="issue.priority", read_only=True) + + class Meta: + model = IssueRelation + fields = [ + "id", + "project_id", + "sequence_id", + "relation_type", + "name", + "type_id", + "is_epic", + "state_id", + "priority", + "created_by", + "created_at", + "updated_by", + "updated_at", + ] + read_only_fields = [ + "workspace", + "project", + "created_by", + "created_at", + "updated_by", + "updated_at", + ] + + class IssueAttachmentSerializer(BaseSerializer): """ Serializer for work item file attachments. diff --git a/apps/api/plane/api/urls/work_item.py b/apps/api/plane/api/urls/work_item.py index 48b1948dbe5..1a1704f2773 100644 --- a/apps/api/plane/api/urls/work_item.py +++ b/apps/api/plane/api/urls/work_item.py @@ -17,6 +17,7 @@ IssueAttachmentDetailAPIEndpoint, WorkspaceIssueAPIEndpoint, IssueSearchEndpoint, + IssueRelationListCreateAPIEndpoint, ) # Deprecated url patterns @@ -145,6 +146,11 @@ IssueAttachmentDetailAPIEndpoint.as_view(http_method_names=["get", "patch", "delete"]), name="work-item-attachment-detail", ), + path( + "workspaces//projects//work-items//relations/", + IssueRelationListCreateAPIEndpoint.as_view(http_method_names=["get", "post"]), + name="work-item-relation-list", + ), ] urlpatterns = old_url_patterns + new_url_patterns diff --git a/apps/api/plane/api/views/__init__.py b/apps/api/plane/api/views/__init__.py index 644d87edc86..e8549afb437 100644 --- a/apps/api/plane/api/views/__init__.py +++ b/apps/api/plane/api/views/__init__.py @@ -29,6 +29,7 @@ IssueAttachmentListCreateAPIEndpoint, IssueAttachmentDetailAPIEndpoint, IssueSearchEndpoint, + IssueRelationListCreateAPIEndpoint, ) from .cycle import ( diff --git a/apps/api/plane/api/views/issue.py b/apps/api/plane/api/views/issue.py index 20d4f604a66..97e8e7cee0a 100644 --- a/apps/api/plane/api/views/issue.py +++ b/apps/api/plane/api/views/issue.py @@ -23,7 +23,11 @@ Value, When, Subquery, + UUIDField, ) +from django.db.models.functions import Coalesce +from django.contrib.postgres.aggregates import ArrayAgg +from django.contrib.postgres.fields import ArrayField from django.utils import timezone from django.conf import settings @@ -45,6 +49,9 @@ IssueActivitySerializer, IssueCommentSerializer, IssueLinkSerializer, + IssueRelationCreateSerializer, + IssueRelationResponseSerializer, + IssueRelationSerializer, IssueSerializer, LabelSerializer, IssueAttachmentUploadSerializer, @@ -53,6 +60,7 @@ IssueLinkCreateSerializer, IssueLinkUpdateSerializer, LabelCreateUpdateSerializer, + RelatedIssueSerializer, ) from plane.app.permissions import ( ProjectEntityPermission, @@ -66,6 +74,7 @@ FileAsset, IssueComment, IssueLink, + IssueRelation, Label, Project, ProjectMember, @@ -76,10 +85,12 @@ from plane.bgtasks.storage_metadata_task import get_asset_object_metadata from .base import BaseAPIView from plane.utils.host import base_host +from plane.utils.issue_relation_mapper import get_actual_relation from plane.bgtasks.webhook_task import model_activity from plane.app.permissions import ROLE from plane.utils.openapi import ( work_item_docs, + work_item_relation_docs, label_docs, issue_link_docs, issue_comment_docs, @@ -1119,9 +1130,9 @@ def get(self, request, slug, project_id, issue_id): return self.paginate( request=request, queryset=(self.get_queryset()), - on_results=lambda issue_links: IssueLinkSerializer( - issue_links, many=True, fields=self.fields, expand=self.expand - ).data, + on_results=lambda issue_links: ( + IssueLinkSerializer(issue_links, many=True, fields=self.fields, expand=self.expand).data + ), ) @issue_link_docs( @@ -1226,9 +1237,9 @@ def get(self, request, slug, project_id, issue_id, pk): return self.paginate( request=request, queryset=(self.get_queryset()), - on_results=lambda issue_links: IssueLinkSerializer( - issue_links, many=True, fields=self.fields, expand=self.expand - ).data, + on_results=lambda issue_links: ( + IssueLinkSerializer(issue_links, many=True, fields=self.fields, expand=self.expand).data + ), ) issue_link = self.get_queryset().get(pk=pk) serializer = IssueLinkSerializer(issue_link, fields=self.fields, expand=self.expand) @@ -1377,9 +1388,9 @@ def get(self, request, slug, project_id, issue_id): return self.paginate( request=request, queryset=(self.get_queryset()), - on_results=lambda issue_comments: IssueCommentSerializer( - issue_comments, many=True, fields=self.fields, expand=self.expand - ).data, + on_results=lambda issue_comments: ( + IssueCommentSerializer(issue_comments, many=True, fields=self.fields, expand=self.expand).data + ), ) @issue_comment_docs( @@ -1688,9 +1699,9 @@ def get(self, request, slug, project_id, issue_id): return self.paginate( request=request, queryset=(issue_activities), - on_results=lambda issue_activity: IssueActivitySerializer( - issue_activity, many=True, fields=self.fields, expand=self.expand - ).data, + on_results=lambda issue_activity: ( + IssueActivitySerializer(issue_activity, many=True, fields=self.fields, expand=self.expand).data + ), ) @@ -2250,3 +2261,224 @@ def get(self, request, slug): )[: int(limit)] return Response({"issues": issue_results}, status=status.HTTP_200_OK) + + +class IssueRelationListCreateAPIEndpoint(BaseAPIView): + """Issue Relation List and Create Endpoint""" + + serializer_class = IssueRelationSerializer + model = IssueRelation + permission_classes = [ProjectEntityPermission] + use_read_replica = True + + @work_item_relation_docs( + operation_id="list_work_item_relations", + summary="List work item relations", + description="Retrieve all relationships for a work item including blocking, blocked_by, duplicate, relates_to, start_before, start_after, finish_before, and finish_after relations.", # noqa E501 + parameters=[ + ISSUE_ID_PARAMETER, + CURSOR_PARAMETER, + PER_PAGE_PARAMETER, + ORDER_BY_PARAMETER, + FIELDS_PARAMETER, + EXPAND_PARAMETER, + ], + responses={ + 200: OpenApiResponse( + description="Work item relations grouped by relation type", + response=IssueRelationResponseSerializer, + examples=[ + OpenApiExample( + name="Work Item Relations Response", + value={ + "blocking": [ + "550e8400-e29b-41d4-a716-446655440000", + "550e8400-e29b-41d4-a716-446655440001", + ], + "blocked_by": ["550e8400-e29b-41d4-a716-446655440002"], + "duplicate": [], + "relates_to": ["550e8400-e29b-41d4-a716-446655440003"], + "start_after": [], + "start_before": ["550e8400-e29b-41d4-a716-446655440004"], + "finish_after": [], + "finish_before": [], + }, + ) + ], + ), + 400: INVALID_REQUEST_RESPONSE, + 404: ISSUE_NOT_FOUND_RESPONSE, + }, + ) + def get(self, request, slug, project_id, issue_id): + """List work item relations + + Retrieve all relationships for a work item organized by relation type. + Returns a structured response with relations grouped by type. + """ + empty_uuid_array = Value([], output_field=ArrayField(UUIDField())) + + def _agg_ids(field, **filter_kwargs): + return Coalesce( + ArrayAgg(field, filter=Q(**filter_kwargs), distinct=True), + empty_uuid_array, + ) + + issue_relation_qs = IssueRelation.objects.filter( + Q(issue_id=issue_id) | Q(related_issue_id=issue_id), + workspace__slug=slug, + ) + + relation_ids = issue_relation_qs.aggregate( + blocking_ids=_agg_ids("issue_id", relation_type="blocked_by", related_issue_id=issue_id), + blocked_by_ids=_agg_ids("related_issue_id", relation_type="blocked_by", issue_id=issue_id), + duplicate_ids=_agg_ids("related_issue_id", relation_type="duplicate", issue_id=issue_id), + duplicate_ids_related=_agg_ids("issue_id", relation_type="duplicate", related_issue_id=issue_id), + relates_to_ids=_agg_ids("related_issue_id", relation_type="relates_to", issue_id=issue_id), + relates_to_ids_related=_agg_ids("issue_id", relation_type="relates_to", related_issue_id=issue_id), + start_after_ids=_agg_ids("issue_id", relation_type="start_before", related_issue_id=issue_id), + start_before_ids=_agg_ids("related_issue_id", relation_type="start_before", issue_id=issue_id), + finish_after_ids=_agg_ids("issue_id", relation_type="finish_before", related_issue_id=issue_id), + finish_before_ids=_agg_ids("related_issue_id", relation_type="finish_before", issue_id=issue_id), + ) + + response_data = { + "blocking": relation_ids["blocking_ids"], + "blocked_by": relation_ids["blocked_by_ids"], + "duplicate": list(set(relation_ids["duplicate_ids"] + relation_ids["duplicate_ids_related"])), + "relates_to": list(set(relation_ids["relates_to_ids"] + relation_ids["relates_to_ids_related"])), + "start_after": relation_ids["start_after_ids"], + "start_before": relation_ids["start_before_ids"], + "finish_after": relation_ids["finish_after_ids"], + "finish_before": relation_ids["finish_before_ids"], + } + + return Response(response_data, status=status.HTTP_200_OK) + + @work_item_relation_docs( + operation_id="create_work_item_relation", + summary="Create work item relation", + description="Create relationships between work items. Supports various relation types including blocking, blocked_by, duplicate, relates_to, start_before, start_after, finish_before, and finish_after.", # noqa E501 + parameters=[ + ISSUE_ID_PARAMETER, + ], + request=OpenApiRequest( + request=IssueRelationCreateSerializer, + examples=[ + OpenApiExample( + name="Create blocking relation", + value={ + "relation_type": "blocking", + "issues": [ + "550e8400-e29b-41d4-a716-446655440000", + "550e8400-e29b-41d4-a716-446655440001", + ], + }, + ) + ], + ), + responses={ + 201: OpenApiResponse( + description="Work item relations created successfully", + response=IssueRelationSerializer(many=True), + examples=[ + OpenApiExample( + name="Relations created", + value=[ + { + "id": "550e8400-e29b-41d4-a716-446655440000", + "name": "Fix authentication bug", + "sequence_id": 42, + "project_id": "550e8400-e29b-41d4-a716-446655440001", + "relation_type": "blocked_by", + "state_id": "550e8400-e29b-41d4-a716-446655440002", + "priority": "high", + "created_at": "2024-01-15T10:00:00Z", + "updated_at": "2024-01-15T10:00:00Z", + "created_by": "550e8400-e29b-41d4-a716-446655440004", + "updated_by": "550e8400-e29b-41d4-a716-446655440004", + } + ], + ) + ], + ), + 400: INVALID_REQUEST_RESPONSE, + 404: ISSUE_NOT_FOUND_RESPONSE, + }, + ) + def post(self, request, slug, project_id, issue_id): + """Create work item relation + + Create relationships between work items with specified relation type. + Automatically tracks relation creation activity. + """ + # Validate request data using serializer + serializer = IssueRelationCreateSerializer(data=request.data) + if not serializer.is_valid(): + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) + + relation_type = serializer.validated_data["relation_type"] + issues = serializer.validated_data["issues"] + project = Project.objects.get(pk=project_id, workspace__slug=slug) + + actual_relation = get_actual_relation(relation_type) + is_reverse = relation_type in ["blocking", "start_after", "finish_after"] + + IssueRelation.objects.bulk_create( + [ + IssueRelation( + issue_id=(issue if is_reverse else issue_id), + related_issue_id=(issue_id if is_reverse else issue), + relation_type=actual_relation, + project_id=project_id, + workspace_id=project.workspace_id, + created_by=request.user, + updated_by=request.user, + ) + for issue in issues + ], + batch_size=10, + ignore_conflicts=True, + ) + + issue_activity.delay( + type="issue_relation.activity.created", + requested_data=json.dumps(request.data, cls=DjangoJSONEncoder), + actor_id=str(request.user.id), + issue_id=str(issue_id), + project_id=str(project_id), + current_instance=None, + epoch=int(timezone.now().timestamp()), + notification=True, + origin=base_host(request=request, is_app=True), + ) + + # Re-fetch with select_related to avoid N+1 queries in serializers. + # bulk_create with ignore_conflicts=True may not return PKs, + # so query by the issue/related_issue pairs and relation type. + if is_reverse: + refetch_filter = Q( + issue_id__in=issues, + related_issue_id=issue_id, + relation_type=actual_relation, + ) + else: + refetch_filter = Q( + issue_id=issue_id, + related_issue_id__in=issues, + relation_type=actual_relation, + ) + + refetched_relations = IssueRelation.objects.filter( + refetch_filter, + workspace__slug=slug, + ).select_related( + "issue__state", + "related_issue__state", + ) + + serializer_class = RelatedIssueSerializer if is_reverse else IssueRelationSerializer + return Response( + serializer_class(refetched_relations, many=True).data, + status=status.HTTP_201_CREATED, + ) diff --git a/apps/api/plane/utils/openapi/__init__.py b/apps/api/plane/utils/openapi/__init__.py index d54caf584eb..4472e814162 100644 --- a/apps/api/plane/utils/openapi/__init__.py +++ b/apps/api/plane/utils/openapi/__init__.py @@ -157,6 +157,7 @@ user_docs, cycle_docs, work_item_docs, + work_item_relation_docs, label_docs, issue_link_docs, issue_comment_docs, @@ -307,6 +308,7 @@ "user_docs", "cycle_docs", "work_item_docs", + "work_item_relation_docs", "label_docs", "issue_link_docs", "issue_comment_docs", diff --git a/apps/api/plane/utils/openapi/decorators.py b/apps/api/plane/utils/openapi/decorators.py index 8b016f4c016..8edb5987e18 100644 --- a/apps/api/plane/utils/openapi/decorators.py +++ b/apps/api/plane/utils/openapi/decorators.py @@ -223,6 +223,21 @@ def issue_attachment_docs(**kwargs): return extend_schema(**_merge_schema_options(defaults, kwargs)) +def work_item_relation_docs(**kwargs): + """Decorator for work item relation endpoints""" + defaults = { + "tags": ["Work Item Relations"], + "parameters": [WORKSPACE_SLUG_PARAMETER, PROJECT_ID_PARAMETER], + "responses": { + 401: UNAUTHORIZED_RESPONSE, + 403: FORBIDDEN_RESPONSE, + 404: NOT_FOUND_RESPONSE, + }, + } + + return extend_schema(**_merge_schema_options(defaults, kwargs)) + + def module_docs(**kwargs): """Decorator for module management endpoints""" defaults = { From 9fa707b26077b5797f6435cdf346e43daef4d2af Mon Sep 17 00:00:00 2001 From: Saurabh Kumar <70131915+Saurabhkmr98@users.noreply.github.com> Date: Mon, 30 Mar 2026 15:30:02 +0530 Subject: [PATCH 38/62] [SILO-1026] feat: add estimates external API endpoints (#8664) * add project summary endpoint * update response structure * add estimates external API endpoints with migrations * fix invalid project and workspace error --- apps/api/plane/api/serializers/__init__.py | 2 +- apps/api/plane/api/serializers/estimate.py | 34 +- apps/api/plane/api/urls/estimate.py | 29 ++ apps/api/plane/api/views/estimate.py | 291 ++++++++++++++++++ .../db/migrations/0121_alter_estimate_type.py | 18 ++ apps/api/plane/db/models/estimate.py | 6 +- apps/api/plane/utils/openapi/__init__.py | 18 ++ apps/api/plane/utils/openapi/decorators.py | 26 ++ apps/api/plane/utils/openapi/examples.py | 83 +++++ apps/api/plane/utils/openapi/parameters.py | 8 + 10 files changed, 504 insertions(+), 11 deletions(-) create mode 100644 apps/api/plane/api/urls/estimate.py create mode 100644 apps/api/plane/api/views/estimate.py create mode 100644 apps/api/plane/db/migrations/0121_alter_estimate_type.py diff --git a/apps/api/plane/api/serializers/__init__.py b/apps/api/plane/api/serializers/__init__.py index 5831b4898fb..2ab639d5466 100644 --- a/apps/api/plane/api/serializers/__init__.py +++ b/apps/api/plane/api/serializers/__init__.py @@ -53,7 +53,7 @@ IntakeIssueCreateSerializer, IntakeIssueUpdateSerializer, ) -from .estimate import EstimatePointSerializer +from .estimate import EstimateSerializer, EstimatePointSerializer from .asset import ( UserAssetUploadSerializer, AssetUpdateSerializer, diff --git a/apps/api/plane/api/serializers/estimate.py b/apps/api/plane/api/serializers/estimate.py index e2a7c5e1d32..978003240b0 100644 --- a/apps/api/plane/api/serializers/estimate.py +++ b/apps/api/plane/api/serializers/estimate.py @@ -2,20 +2,36 @@ # SPDX-License-Identifier: AGPL-3.0-only # See the LICENSE file for details. +# Third party imports +from rest_framework import serializers + # Module imports -from plane.db.models import EstimatePoint +from plane.db.models import Estimate, EstimatePoint from .base import BaseSerializer -class EstimatePointSerializer(BaseSerializer): - """ - Serializer for project estimation points and story point values. +class EstimateSerializer(BaseSerializer): + class Meta: + model = Estimate + fields = "__all__" + read_only_fields = ["workspace", "project", "deleted_at"] - Handles numeric estimation data for work item sizing and sprint planning, - providing standardized point values for project velocity calculations. - """ + def create(self, validated_data): + validated_data["workspace"] = self.context["workspace"] + validated_data["project"] = self.context["project"] + return super().create(validated_data) + + +class EstimatePointSerializer(BaseSerializer): + def validate(self, data): + if not data: + raise serializers.ValidationError("Estimate points are required") + value = data.get("value") + if value and len(value) > 20: + raise serializers.ValidationError("Value can't be more than 20 characters") + return data class Meta: model = EstimatePoint - fields = ["id", "value"] - read_only_fields = fields + fields = "__all__" + read_only_fields = ["estimate", "workspace", "project"] diff --git a/apps/api/plane/api/urls/estimate.py b/apps/api/plane/api/urls/estimate.py new file mode 100644 index 00000000000..3fe5d3b7b43 --- /dev/null +++ b/apps/api/plane/api/urls/estimate.py @@ -0,0 +1,29 @@ +# Copyright (c) 2023-present Plane Software, Inc. and contributors +# SPDX-License-Identifier: AGPL-3.0-only +# See the LICENSE file for details. + +from django.urls import path + +from plane.api.views.estimate import ( + ProjectEstimateAPIEndpoint, + EstimatePointListCreateAPIEndpoint, + EstimatePointDetailAPIEndpoint, +) + +urlpatterns = [ + path( + "workspaces//projects//estimates/", + ProjectEstimateAPIEndpoint.as_view(http_method_names=["get", "post", "patch", "delete"]), + name="project-estimate", + ), + path( + "workspaces//projects//estimates//estimate-points/", + EstimatePointListCreateAPIEndpoint.as_view(http_method_names=["get", "post"]), + name="estimate-point-list-create", + ), + path( + "workspaces//projects//estimates//estimate-points//", + EstimatePointDetailAPIEndpoint.as_view(http_method_names=["patch", "delete"]), + name="estimate-point-detail", + ), +] diff --git a/apps/api/plane/api/views/estimate.py b/apps/api/plane/api/views/estimate.py new file mode 100644 index 00000000000..915cc8e5cc3 --- /dev/null +++ b/apps/api/plane/api/views/estimate.py @@ -0,0 +1,291 @@ +# Copyright (c) 2023-present Plane Software, Inc. and contributors +# SPDX-License-Identifier: AGPL-3.0-only +# See the LICENSE file for details. + +# Third party imports +from rest_framework.response import Response +from rest_framework import status +from drf_spectacular.utils import OpenApiRequest, OpenApiResponse + +# Module imports +from plane.app.permissions.project import ProjectEntityPermission +from plane.api.views.base import BaseAPIView +from plane.db.models import Estimate, EstimatePoint, Project, Workspace +from plane.api.serializers import EstimateSerializer, EstimatePointSerializer +from plane.utils.openapi.decorators import estimate_docs, estimate_point_docs +from plane.utils.openapi import ( + ESTIMATE_CREATE_EXAMPLE, + ESTIMATE_UPDATE_EXAMPLE, + ESTIMATE_POINT_CREATE_EXAMPLE, + ESTIMATE_POINT_UPDATE_EXAMPLE, + ESTIMATE_EXAMPLE, + ESTIMATE_POINT_EXAMPLE, + DELETED_RESPONSE, + WORKSPACE_SLUG_PARAMETER, + PROJECT_ID_PARAMETER, + ESTIMATE_ID_PARAMETER, +) + + +class ProjectEstimateAPIEndpoint(BaseAPIView): + permission_classes = [ProjectEntityPermission] + model = Estimate + serializer_class = EstimateSerializer + + def get_queryset(self): + return self.model.objects.filter(workspace__slug=self.workspace_slug, project_id=self.project_id) + + @estimate_docs( + operation_id="create_estimate", + summary="Create an estimate", + description="Create an estimate for a project", + request=OpenApiRequest( + request=EstimateSerializer, + examples=[ESTIMATE_CREATE_EXAMPLE], + ), + ) + def post(self, request, slug, project_id): + project = Project.objects.filter(id=project_id, workspace__slug=slug).first() + if not project: + return Response(status=status.HTTP_404_NOT_FOUND, data={"error": "Project not found"}) + + workspace = Workspace.objects.filter(slug=slug).first() + if not workspace: + return Response(status=status.HTTP_404_NOT_FOUND, data={"error": "Workspace not found"}) + + project_estimate = self.get_queryset().first() + if project_estimate: + # return 409 if the project estimate already exists + return Response( + status=status.HTTP_409_CONFLICT, + data={"error": "An estimate already exists for this project", "id": str(project_estimate.id)}, + ) + # create the project estimate + serializer = self.serializer_class(data=request.data, context={"workspace": workspace, "project": project}) + if not serializer.is_valid(): + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) + + serializer.save() + return Response(serializer.data, status=status.HTTP_201_CREATED) + + @estimate_docs( + operation_id="get_estimate", + summary="Get an estimate", + description="Get an estimate for a project", + responses={ + 200: OpenApiResponse( + description="Estimate", + response=EstimateSerializer, + examples=[ESTIMATE_EXAMPLE], + ), + }, + ) + def get(self, request, slug, project_id): + estimate = self.get_queryset().first() + if not estimate: + return Response(status=status.HTTP_404_NOT_FOUND, data={"error": "Estimate not found"}) + serializer = self.serializer_class(estimate) + return Response(serializer.data, status=status.HTTP_200_OK) + + @estimate_docs( + operation_id="update_estimate", + summary="Update an estimate", + description="Update an estimate for a project", + request=OpenApiRequest( + request=EstimateSerializer, + examples=[ESTIMATE_UPDATE_EXAMPLE], + ), + responses={ + 200: OpenApiResponse( + description="Estimate", + response=EstimateSerializer, + examples=[ESTIMATE_EXAMPLE], + ), + }, + ) + def patch(self, request, slug, project_id): + ALLOWED_FIELDS = ["name", "description"] + estimate = self.get_queryset().first() + if not estimate: + return Response(status=status.HTTP_404_NOT_FOUND, data={"error": "Estimate not found"}) + filtered_data = {k: v for k, v in request.data.items() if k in ALLOWED_FIELDS} + if not filtered_data: + serializer = self.serializer_class(estimate) + return Response(serializer.data, status=status.HTTP_200_OK) + serializer = self.serializer_class(estimate, data=filtered_data, partial=True) + if not serializer.is_valid(): + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) + serializer.save() + return Response(serializer.data, status=status.HTTP_200_OK) + + @estimate_docs( + operation_id="delete_estimate", + summary="Delete an estimate", + description="Delete an estimate for a project", + responses={ + 204: DELETED_RESPONSE, + }, + ) + def delete(self, request, slug, project_id): + estimate = self.get_queryset().first() + if not estimate: + return Response(status=status.HTTP_404_NOT_FOUND, data={"error": "Estimate not found"}) + estimate.delete() + return Response(status=status.HTTP_204_NO_CONTENT) + + +class EstimatePointListCreateAPIEndpoint(BaseAPIView): + """List and bulk create estimate points for an estimate.""" + + permission_classes = [ProjectEntityPermission] + model = EstimatePoint + serializer_class = EstimatePointSerializer + + def get_queryset(self): + return self.model.objects.filter( + estimate_id=self.kwargs["estimate_id"], + workspace__slug=self.kwargs["slug"], + project_id=self.kwargs["project_id"], + ).select_related("estimate", "workspace", "project") + + @estimate_point_docs( + operation_id="get_estimate_points", + summary="Get estimate points", + description="Get estimate points for an estimate", + parameters=[ + WORKSPACE_SLUG_PARAMETER, + PROJECT_ID_PARAMETER, + ESTIMATE_ID_PARAMETER, + ], + responses={ + 200: OpenApiResponse( + description="Estimate points", + response=EstimatePointSerializer(many=True), + examples=[ESTIMATE_POINT_EXAMPLE], + ), + }, + ) + def get(self, request, slug, project_id, estimate_id): + estimate = Estimate.objects.filter( + id=estimate_id, + workspace__slug=slug, + project_id=project_id, + ).first() + if not estimate: + return Response(status=status.HTTP_404_NOT_FOUND, data={"error": "Estimate not found"}) + estimate_points = self.get_queryset() + serializer = self.serializer_class(estimate_points, many=True) + return Response(serializer.data, status=status.HTTP_200_OK) + + @estimate_point_docs( + operation_id="create_estimate_points", + summary="Create estimate points", + description="Create estimate points for an estimate", + request=OpenApiRequest( + request=EstimatePointSerializer, + examples=[ESTIMATE_POINT_CREATE_EXAMPLE], + ), + responses={ + 201: OpenApiResponse( + description="Estimate points", + response=EstimatePointSerializer(many=True), + examples=[ESTIMATE_POINT_EXAMPLE], + ), + }, + ) + def post(self, request, slug, project_id, estimate_id): + estimate = Estimate.objects.filter( + id=estimate_id, + workspace__slug=slug, + project_id=project_id, + ).first() + if not estimate: + return Response(status=status.HTTP_404_NOT_FOUND, data={"error": "Estimate not found"}) + + estimate_points_data = ( + request.data if isinstance(request.data, list) else request.data.get("estimate_points", []) + ) + if not estimate_points_data: + return Response( + status=status.HTTP_400_BAD_REQUEST, + data={"error": "Estimate points are required"}, + ) + + serializer = self.serializer_class(data=estimate_points_data, many=True) + if not serializer.is_valid(): + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) + + estimate_points = [ + EstimatePoint( + estimate=estimate, + workspace=estimate.workspace, + project=estimate.project, + **item, + ) + for item in serializer.validated_data + ] + created = EstimatePoint.objects.bulk_create(estimate_points) + return Response( + self.serializer_class(created, many=True).data, + status=status.HTTP_201_CREATED, + ) + + +class EstimatePointDetailAPIEndpoint(BaseAPIView): + """Update and delete a single estimate point.""" + + permission_classes = [ProjectEntityPermission] + model = EstimatePoint + serializer_class = EstimatePointSerializer + + def get_queryset(self): + return self.model.objects.filter( + estimate_id=self.kwargs["estimate_id"], + workspace__slug=self.kwargs["slug"], + project_id=self.kwargs["project_id"], + ) + + @estimate_point_docs( + operation_id="update_estimate_point", + summary="Update an estimate point", + description="Update an estimate point for an estimate", + request=OpenApiRequest( + request=EstimatePointSerializer, + examples=[ESTIMATE_POINT_UPDATE_EXAMPLE], + ), + responses={ + 200: OpenApiResponse( + description="Estimate point", + response=EstimatePointSerializer, + examples=[ESTIMATE_POINT_EXAMPLE], + ), + }, + ) + def patch(self, request, slug, project_id, estimate_id, estimate_point_id): + estimate_point = self.get_queryset().filter(id=estimate_point_id).first() + if not estimate_point: + return Response(status=status.HTTP_404_NOT_FOUND, data={"error": "Estimate point not found"}) + ALLOWED_FIELDS = ["key", "value", "description"] + filtered_data = {k: v for k, v in request.data.items() if k in ALLOWED_FIELDS} + if not filtered_data: + return Response(self.serializer_class(estimate_point).data, status=status.HTTP_200_OK) + serializer = self.serializer_class(estimate_point, data=filtered_data, partial=True) + if not serializer.is_valid(): + return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) + serializer.save() + return Response(serializer.data, status=status.HTTP_200_OK) + + @estimate_point_docs( + operation_id="delete_estimate_point", + summary="Delete an estimate point", + description="Delete an estimate point for an estimate", + responses={ + 204: DELETED_RESPONSE, + }, + ) + def delete(self, request, slug, project_id, estimate_id, estimate_point_id): + estimate_point = self.get_queryset().filter(id=estimate_point_id).first() + if not estimate_point: + return Response(status=status.HTTP_404_NOT_FOUND, data={"error": "Estimate point not found"}) + estimate_point.delete() + return Response(status=status.HTTP_204_NO_CONTENT) diff --git a/apps/api/plane/db/migrations/0121_alter_estimate_type.py b/apps/api/plane/db/migrations/0121_alter_estimate_type.py new file mode 100644 index 00000000000..73b75123f63 --- /dev/null +++ b/apps/api/plane/db/migrations/0121_alter_estimate_type.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.28 on 2026-02-26 14:37 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('db', '0120_issueview_archived_at'), + ] + + operations = [ + migrations.AlterField( + model_name='estimate', + name='type', + field=models.CharField(choices=[('categories', 'Categories'), ('points', 'Points')], default='categories', max_length=255), + ), + ] diff --git a/apps/api/plane/db/models/estimate.py b/apps/api/plane/db/models/estimate.py index ded6f97bcf3..fb472a69bd4 100644 --- a/apps/api/plane/db/models/estimate.py +++ b/apps/api/plane/db/models/estimate.py @@ -10,11 +10,15 @@ # Module imports from .project import ProjectBaseModel +class EstimateType(models.TextChoices): + CATEGORIES = "categories", "Categories" + POINTS = "points", "Points" + class Estimate(ProjectBaseModel): name = models.CharField(max_length=255) description = models.TextField(verbose_name="Estimate Description", blank=True) - type = models.CharField(max_length=255, default="categories") + type = models.CharField(max_length=255, choices=EstimateType.choices, default=EstimateType.CATEGORIES) last_used = models.BooleanField(default=False) def __str__(self): diff --git a/apps/api/plane/utils/openapi/__init__.py b/apps/api/plane/utils/openapi/__init__.py index 4472e814162..090d076ecd1 100644 --- a/apps/api/plane/utils/openapi/__init__.py +++ b/apps/api/plane/utils/openapi/__init__.py @@ -47,6 +47,7 @@ CYCLE_VIEW_PARAMETER, FIELDS_PARAMETER, EXPAND_PARAMETER, + ESTIMATE_ID_PARAMETER, ) # Responses @@ -126,6 +127,10 @@ STATE_UPDATE_EXAMPLE, INTAKE_ISSUE_CREATE_EXAMPLE, INTAKE_ISSUE_UPDATE_EXAMPLE, + ESTIMATE_CREATE_EXAMPLE, + ESTIMATE_UPDATE_EXAMPLE, + ESTIMATE_POINT_CREATE_EXAMPLE, + ESTIMATE_POINT_UPDATE_EXAMPLE, # Response Examples CYCLE_EXAMPLE, TRANSFER_CYCLE_ISSUE_SUCCESS_EXAMPLE, @@ -145,6 +150,8 @@ PROJECT_MEMBER_EXAMPLE, CYCLE_ISSUE_EXAMPLE, STICKY_EXAMPLE, + ESTIMATE_EXAMPLE, + ESTIMATE_POINT_EXAMPLE, ) # Helper decorators @@ -166,6 +173,8 @@ module_docs, module_issue_docs, state_docs, + estimate_docs, + estimate_point_docs, ) # Schema processing hooks @@ -207,6 +216,7 @@ "CYCLE_VIEW_PARAMETER", "FIELDS_PARAMETER", "EXPAND_PARAMETER", + "ESTIMATE_ID_PARAMETER", # Responses "UNAUTHORIZED_RESPONSE", "FORBIDDEN_RESPONSE", @@ -280,6 +290,10 @@ "STATE_UPDATE_EXAMPLE", "INTAKE_ISSUE_CREATE_EXAMPLE", "INTAKE_ISSUE_UPDATE_EXAMPLE", + "ESTIMATE_CREATE_EXAMPLE", + "ESTIMATE_UPDATE_EXAMPLE", + "ESTIMATE_POINT_CREATE_EXAMPLE", + "ESTIMATE_POINT_UPDATE_EXAMPLE", # Response Examples "CYCLE_EXAMPLE", "TRANSFER_CYCLE_ISSUE_SUCCESS_EXAMPLE", @@ -299,6 +313,8 @@ "PROJECT_MEMBER_EXAMPLE", "CYCLE_ISSUE_EXAMPLE", "STICKY_EXAMPLE", + "ESTIMATE_EXAMPLE", + "ESTIMATE_POINT_EXAMPLE", # Decorators "workspace_docs", "project_docs", @@ -317,6 +333,8 @@ "module_docs", "module_issue_docs", "state_docs", + "estimate_docs", + "estimate_point_docs", # Hooks "preprocess_filter_api_v1_paths", "generate_operation_summary", diff --git a/apps/api/plane/utils/openapi/decorators.py b/apps/api/plane/utils/openapi/decorators.py index 8edb5987e18..7ded9fb10b3 100644 --- a/apps/api/plane/utils/openapi/decorators.py +++ b/apps/api/plane/utils/openapi/decorators.py @@ -297,3 +297,29 @@ def sticky_docs(**kwargs): } return extend_schema(**_merge_schema_options(defaults, kwargs)) + +def estimate_docs(**kwargs): + """Decorator for estimate-related endpoints""" + defaults = { + "tags": ["Estimates"], + "parameters": [WORKSPACE_SLUG_PARAMETER, PROJECT_ID_PARAMETER], + "responses": { + 401: UNAUTHORIZED_RESPONSE, + 403: FORBIDDEN_RESPONSE, + 404: NOT_FOUND_RESPONSE, + }, + } + return extend_schema(**_merge_schema_options(defaults, kwargs)) + +def estimate_point_docs(**kwargs): + """Decorator for estimate point-related endpoints""" + defaults = { + "tags": ["Estimate Points"], + "parameters": [WORKSPACE_SLUG_PARAMETER, PROJECT_ID_PARAMETER], + "responses": { + 401: UNAUTHORIZED_RESPONSE, + 403: FORBIDDEN_RESPONSE, + 404: NOT_FOUND_RESPONSE, + }, + } + return extend_schema(**_merge_schema_options(defaults, kwargs)) \ No newline at end of file diff --git a/apps/api/plane/utils/openapi/examples.py b/apps/api/plane/utils/openapi/examples.py index 5a2188e6951..20aff18958a 100644 --- a/apps/api/plane/utils/openapi/examples.py +++ b/apps/api/plane/utils/openapi/examples.py @@ -686,6 +686,69 @@ }, ) +# Estimate Examples +ESTIMATE_EXAMPLE = OpenApiExample( + name="Estimate", + value={ + "id": "550e8400-e29b-41d4-a716-446655440000", + "name": "Estimate 1", + "description": "Estimate 1 description", + }, + description="Example response for an estimate", +) + +ESTIMATE_POINT_EXAMPLE = OpenApiExample( + name="EstimatePoint", + value={ + "id": "550e8400-e29b-41d4-a716-446655440000", + "estimate": "550e8400-e29b-41d4-a716-446655440001", + "key": 1, + "value": "1", + }, + description="Example response for an estimate point", +) +ESTIMATE_CREATE_EXAMPLE = OpenApiExample( + name="EstimateCreateSerializer", + value={ + "name": "Estimate 1", + "description": "Estimate 1 description", + }, + description="Example request for creating an estimate", +) +ESTIMATE_UPDATE_EXAMPLE = OpenApiExample( + name="EstimateUpdateSerializer", + value={ + "name": "Estimate 1", + "description": "Estimate 1 description", + }, + description="Example request for updating an estimate", +) + +# Estimate Point Examples +ESTIMATE_POINT_CREATE_EXAMPLE = OpenApiExample( + name="EstimatePointCreateSerializer", + value=[ + { + "value": "1", + "description": "Estimate Point 1 description", + }, + { + "value": "2", + "description": "Estimate Point 2 description", + }, + ], + description="Example request for creating an estimate point", +) +ESTIMATE_POINT_UPDATE_EXAMPLE = OpenApiExample( + name="EstimatePointUpdateSerializer", + value={ + "value": "1", + "description": "Estimate Point 1 description", + }, + description="Example request for updating an estimate point", +) + + # Sample data for different entity types SAMPLE_ISSUE = { "id": "550e8400-e29b-41d4-a716-446655440000", @@ -801,6 +864,24 @@ "created_at": "2024-01-01T10:30:00Z", } +SAMPLE_ESTIMATE = { + "id": "550e8400-e29b-41d4-a716-446655440000", + "name": "Estimate 1", + "description": "Estimate 1 description", + "type": "categories", + "last_used": False, + "created_at": "2024-01-01T10:30:00Z", +} + +SAMPLE_ESTIMATE_POINT = { + "id": "550e8400-e29b-41d4-a716-446655440000", + "estimate": "550e8400-e29b-41d4-a716-446655440001", + "key": 1, + "value": "1", + "description": "Estimate Point 1 description", + "created_at": "2024-01-01T10:30:00Z", +} + # Mapping of schema types to sample data SCHEMA_EXAMPLES = { "Issue": SAMPLE_ISSUE, @@ -816,6 +897,8 @@ "Intake": SAMPLE_INTAKE, "CycleIssue": SAMPLE_CYCLE_ISSUE, "Sticky": SAMPLE_STICKY, + "Estimate": SAMPLE_ESTIMATE, + "EstimatePoint": SAMPLE_ESTIMATE_POINT, } diff --git a/apps/api/plane/utils/openapi/parameters.py b/apps/api/plane/utils/openapi/parameters.py index d0ceba6c526..2812892ec91 100644 --- a/apps/api/plane/utils/openapi/parameters.py +++ b/apps/api/plane/utils/openapi/parameters.py @@ -495,3 +495,11 @@ ), ], ) + +ESTIMATE_ID_PARAMETER = OpenApiParameter( + name="estimate_id", + description="Estimate ID", + required=True, + type=OpenApiTypes.UUID, + location=OpenApiParameter.PATH, +) From d8ed19f2041d682aada2387115604a9734efb243 Mon Sep 17 00:00:00 2001 From: Anmol Singh Bhatia <121005188+anmolsinghbhatia@users.noreply.github.com> Date: Tue, 31 Mar 2026 15:54:12 +0530 Subject: [PATCH 39/62] [WEB-6794] fix: align profile cover update with correct unsplash and upload handling (#8830) * fix: profile cover update * chore: code refactoring * chore: code refactoring --- .../profile/content/pages/general/form.tsx | 34 ++++++--- apps/web/helpers/cover-image.helper.ts | 69 +++++++++---------- 2 files changed, 55 insertions(+), 48 deletions(-) diff --git a/apps/web/core/components/settings/profile/content/pages/general/form.tsx b/apps/web/core/components/settings/profile/content/pages/general/form.tsx index 778e2024de8..e20245f8352 100644 --- a/apps/web/core/components/settings/profile/content/pages/general/form.tsx +++ b/apps/web/core/components/settings/profile/content/pages/general/form.tsx @@ -150,13 +150,32 @@ export const GeneralProfileSettingsForm = observer(function GeneralProfileSettin role: formData.role, }; - const updateCurrentUserDetail = updateCurrentUser(userPayload).finally(() => setIsLoading(false)); - const updateCurrentUserProfile = updateUserProfile(profilePayload).finally(() => setIsLoading(false)); + const updateCurrentUserDetail = updateCurrentUser(userPayload); + const promises: Promise[] = [updateCurrentUserDetail]; + if (profilePayload.role !== profile.role) { + const updateCurrentUserProfile = updateUserProfile(profilePayload); + promises.push(updateCurrentUserProfile); + } - const promises = [updateCurrentUserDetail, updateCurrentUserProfile]; - const updateUserAndProfile = Promise.all(promises); + const updatePromise = Promise.allSettled(promises) + .then((results) => { + const rejectedResult = results.find((result) => result.status === "rejected") as + | PromiseRejectedResult + | undefined; + if (rejectedResult) { + throw rejectedResult.reason ?? new Error("Failed to update profile"); + } + const values = results.map( + (result) => (result as PromiseFulfilledResult).value + ); + if (values.some((v) => v === undefined)) { + throw new Error("Failed to update profile"); + } + return values; + }) + .finally(() => setIsLoading(false)); - setPromiseToast(updateUserAndProfile, { + setPromiseToast(updatePromise, { loading: "Updating...", success: { title: "Success!", @@ -167,11 +186,6 @@ export const GeneralProfileSettingsForm = observer(function GeneralProfileSettin message: () => `There was some error in updating your profile. Please try again.`, }, }); - updateUserAndProfile - .then(() => { - return; - }) - .catch(() => {}); }; return ( diff --git a/apps/web/helpers/cover-image.helper.ts b/apps/web/helpers/cover-image.helper.ts index caac9df416f..6ef7b2854c5 100644 --- a/apps/web/helpers/cover-image.helper.ts +++ b/apps/web/helpers/cover-image.helper.ts @@ -84,7 +84,7 @@ export const DEFAULT_COVER_IMAGE_URL = STATIC_COVER_IMAGES.IMAGE_1; */ const STATIC_COVER_IMAGES_SET = new Set(Object.values(STATIC_COVER_IMAGES)); -export type TCoverImageType = "local_static" | "uploaded_asset"; +export type TCoverImageType = "local_static" | "uploaded_asset" | "unsplash"; export type TCoverImageResult = { needsUpload: boolean; @@ -114,6 +114,17 @@ export const getCoverImageType = (imageUrl: string): TCoverImageType => { // Check against the explicit set of static images if (isStaticCoverImage(imageUrl)) return "local_static"; + // Check if it's an Unsplash image by validating the hostname + try { + const url = new URL(imageUrl); + const hostname = url.hostname.toLowerCase(); + if (hostname === "unsplash.com" || hostname.endsWith(".unsplash.com")) { + return "unsplash"; + } + } catch { + // If URL parsing fails (e.g., relative path), fall through to other checks + } + if (imageUrl.startsWith("http")) return "uploaded_asset"; return "uploaded_asset"; @@ -136,7 +147,7 @@ export function getCoverImageDisplayURL( const imageType = getCoverImageType(imageUrl); - if (imageType === "local_static") { + if (imageType === "local_static" || imageType === "unsplash") { return imageUrl; } @@ -149,6 +160,7 @@ export function getCoverImageDisplayURL( /** * Analyzes cover image change and determines what action to take + * Merged with isUnsplashImage logic - now detects unsplash images as a separate type */ export const analyzeCoverImageChange = ( currentImage: string | null | undefined, @@ -164,10 +176,18 @@ export const analyzeCoverImageChange = ( }; } - const imageType = getCoverImageType(newImage ?? ""); + if (!newImage) { + return { + needsUpload: false, + imageType: "uploaded_asset", + shouldUpdate: true, + }; + } + + const imageType = getCoverImageType(newImage); return { - needsUpload: imageType === "local_static", + needsUpload: imageType === "local_static" || imageType === "unsplash", imageType, shouldUpdate: hasChanged, }; @@ -201,7 +221,7 @@ export const uploadCoverImage = async ( throw new Error("Invalid file type. Please select an image."); } - const fileName = imageUrl.split("/").pop() || "cover.jpg"; + const fileName = imageUrl.split("/").pop()?.split("?")[0] || "image.jpg"; const file = new File([blob], fileName, { type: blob.type }); // Upload based on context @@ -233,7 +253,6 @@ export const uploadCoverImage = async ( /** * Main utility to handle cover image changes with upload - * Returns the payload fields that should be updated */ export const handleCoverImageChange = async ( currentImage: string | null | undefined, @@ -244,46 +263,20 @@ export const handleCoverImageChange = async ( entityType: EFileAssetType; isUserAsset?: boolean; } -): Promise => { +): Promise => { const analysis = analyzeCoverImageChange(currentImage, newImage); + if (!analysis.shouldUpdate) return; - // No change detected - if (!analysis.shouldUpdate) { - return null; - } - - // Image removed if (!newImage) { - return { - cover_image: null, - cover_image_url: null, - cover_image_asset: null, - }; + return { cover_image: null, cover_image_url: null, cover_image_asset: null }; } - // Local static image - needs upload if (analysis.needsUpload) { - const uploadedUrl = await uploadCoverImage(newImage, uploadConfig); - - // For BOTH user assets AND project assets: - // The backend auto-links when entity_identifier is set correctly - // For project assets: auto-linked server-side, no payload needed - // For user assets: return URL for immediate UI feedback - - if (uploadConfig.isUserAsset) { - return { - cover_image: uploadedUrl, - }; - } else { - return null; - } + await uploadCoverImage(newImage, uploadConfig); + return; } - // External/uploaded asset (e.g., Unsplash URL, pre-uploaded asset) - // Return the URL to be saved in the backend - return { - cover_image: newImage, - }; + return { cover_image: newImage }; }; /** From f0ec84661ddb2430275b10a7538b1e3043014f3c Mon Sep 17 00:00:00 2001 From: sriram veeraghanta Date: Tue, 31 Mar 2026 16:32:31 +0530 Subject: [PATCH 40/62] chore(deps): update dependency overrides (#8831) Update brace-expansion override from 2.0.2 to 5.0.5 and add picomatch, yaml@1, and yaml@2 overrides to pin transitive dependency versions. Co-authored-by: Claude Opus 4.6 (1M context) --- package.json | 7 +- pnpm-lock.yaml | 403 ++++++++++++++++++++++++------------------------- 2 files changed, 206 insertions(+), 204 deletions(-) diff --git a/package.json b/package.json index 85f8f15de8d..d77bdf1d80c 100644 --- a/package.json +++ b/package.json @@ -45,7 +45,7 @@ "valibot": "1.2.0", "glob": "11.1.0", "js-yaml": "4.1.1", - "brace-expansion": "2.0.2", + "brace-expansion": "5.0.5", "nanoid": "3.3.8", "esbuild": "0.25.0", "@babel/helpers": "7.26.10", @@ -71,7 +71,10 @@ "ajv@6": "6.14.0", "ajv@8": "8.18.0", "undici@7": "7.24.0", - "flatted": "3.4.2" + "flatted": "3.4.2", + "picomatch": "2.3.2", + "yaml@1": "1.10.3", + "yaml@2": "2.8.3" }, "onlyBuiltDependencies": [ "@parcel/watcher", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4410dfe2d38..d3ca1e9a1d6 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -88,7 +88,7 @@ overrides: valibot: 1.2.0 glob: 11.1.0 js-yaml: 4.1.1 - brace-expansion: 2.0.2 + brace-expansion: 5.0.5 nanoid: 3.3.8 esbuild: 0.25.0 '@babel/helpers': 7.26.10 @@ -115,6 +115,9 @@ overrides: ajv@8: 8.18.0 undici@7: 7.24.0 flatted: 3.4.2 + picomatch: 2.3.2 + yaml@1: 1.10.3 + yaml@2: 2.8.3 importers: @@ -237,7 +240,7 @@ importers: version: link:../../packages/typescript-config '@react-router/dev': specifier: 'catalog:' - version: 7.13.1(@react-router/serve@7.13.1(react-router@7.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.8.3))(@types/node@22.12.0)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.30.2)(react-router@7.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(typescript@5.8.3)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))(yaml@2.8.1) + version: 7.13.1(@react-router/serve@7.13.1(react-router@7.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.8.3))(@types/node@22.12.0)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.30.2)(react-router@7.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(typescript@5.8.3)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))(yaml@2.8.3) '@types/lodash-es': specifier: 'catalog:' version: 4.17.12 @@ -255,10 +258,10 @@ importers: version: 5.8.3 vite: specifier: 7.3.1 - version: 7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1) + version: 7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3) vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.8.3)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + version: 5.1.4(typescript@5.8.3)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) apps/live: dependencies: @@ -391,7 +394,7 @@ importers: version: 8.18.1 '@vitest/coverage-v8': specifier: ^4.0.8 - version: 4.0.17(vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@22.12.0)(jiti@2.6.1)(jsdom@26.1.0)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + version: 4.0.17(vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@22.12.0)(jiti@2.6.1)(jsdom@26.1.0)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) pdf-parse: specifier: ^2.4.5 version: 2.4.5 @@ -403,7 +406,7 @@ importers: version: 5.8.3 vitest: specifier: ^4.0.8 - version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@22.12.0)(jiti@2.6.1)(jsdom@26.1.0)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1) + version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@22.12.0)(jiti@2.6.1)(jsdom@26.1.0)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3) apps/space: dependencies: @@ -521,7 +524,7 @@ importers: version: link:../../packages/typescript-config '@react-router/dev': specifier: 'catalog:' - version: 7.13.1(@react-router/serve@7.13.1(react-router@7.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.8.3))(@types/node@22.12.0)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.30.2)(react-router@7.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(typescript@5.8.3)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))(yaml@2.8.1) + version: 7.13.1(@react-router/serve@7.13.1(react-router@7.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.8.3))(@types/node@22.12.0)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.30.2)(react-router@7.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(typescript@5.8.3)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))(yaml@2.8.3) '@tailwindcss/typography': specifier: 0.5.19 version: 0.5.19 @@ -542,10 +545,10 @@ importers: version: 5.8.3 vite: specifier: 7.3.1 - version: 7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1) + version: 7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3) vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.8.3)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + version: 5.1.4(typescript@5.8.3)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) apps/web: dependencies: @@ -723,7 +726,7 @@ importers: version: link:../../packages/typescript-config '@react-router/dev': specifier: 'catalog:' - version: 7.13.1(@react-router/serve@7.13.1(react-router@7.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.8.3))(@types/node@22.12.0)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.30.2)(react-router@7.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(typescript@5.8.3)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))(yaml@2.8.1) + version: 7.13.1(@react-router/serve@7.13.1(react-router@7.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.8.3))(@types/node@22.12.0)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.30.2)(react-router@7.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(typescript@5.8.3)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))(yaml@2.8.3) '@tailwindcss/typography': specifier: 0.5.19 version: 0.5.19 @@ -747,10 +750,10 @@ importers: version: 5.8.3 vite: specifier: 7.3.1 - version: 7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1) + version: 7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3) vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.8.3)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + version: 5.1.4(typescript@5.8.3)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) packages/codemods: devDependencies: @@ -768,7 +771,7 @@ importers: version: 17.3.0 vitest: specifier: ^4.0.8 - version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@22.12.0)(jiti@2.6.1)(jsdom@26.1.0)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1) + version: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@22.12.0)(jiti@2.6.1)(jsdom@26.1.0)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3) packages/constants: dependencies: @@ -1152,13 +1155,13 @@ importers: version: link:../typescript-config '@storybook/addon-designs': specifier: 10.0.2 - version: 10.0.2(@storybook/addon-docs@9.1.10(@types/react@18.3.11)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))) + version: 10.0.2(@storybook/addon-docs@9.1.10(@types/react@18.3.11)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) '@storybook/addon-docs': specifier: 9.1.10 - version: 9.1.10(@types/react@18.3.11)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))) + version: 9.1.10(@types/react@18.3.11)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) '@storybook/react-vite': specifier: 9.1.10 - version: 9.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))(typescript@5.8.3)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + version: 9.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(typescript@5.8.3)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) '@types/react': specifier: 'catalog:' version: 18.3.11 @@ -1167,7 +1170,7 @@ importers: version: 18.3.1 storybook: specifier: 9.1.19 - version: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + version: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) tsdown: specifier: 'catalog:' version: 0.16.0(typescript@5.8.3)(unrun@0.2.34) @@ -1366,34 +1369,34 @@ importers: version: link:../typescript-config '@storybook/addon-essentials': specifier: ^8.1.1 - version: 8.6.14(@types/react@18.3.11)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))) + version: 8.6.14(@types/react@18.3.11)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) '@storybook/addon-interactions': specifier: ^8.1.1 - version: 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))) + version: 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) '@storybook/addon-links': specifier: ^8.1.1 - version: 8.6.14(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))) + version: 8.6.14(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) '@storybook/addon-onboarding': specifier: ^8.1.1 - version: 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))) + version: 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) '@storybook/addon-styling-webpack': specifier: ^1.0.0 - version: 1.0.1(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))(webpack@5.104.1(@swc/core@1.13.5(@swc/helpers@0.5.17))) + version: 1.0.1(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(webpack@5.104.1(@swc/core@1.13.5(@swc/helpers@0.5.17))) '@storybook/addon-webpack5-compiler-swc': specifier: ^1.0.2 version: 1.0.6(@swc/helpers@0.5.17)(webpack@5.104.1(@swc/core@1.13.5(@swc/helpers@0.5.17))) '@storybook/blocks': specifier: ^8.1.1 - version: 8.6.14(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))) + version: 8.6.14(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) '@storybook/react': specifier: ^8.1.1 - version: 8.6.14(@storybook/test@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))(typescript@5.8.3) + version: 8.6.14(@storybook/test@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(typescript@5.8.3) '@storybook/react-webpack5': specifier: ^8.1.1 - version: 8.6.14(@storybook/test@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))(typescript@5.8.3) + version: 8.6.14(@storybook/test@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(typescript@5.8.3) '@storybook/test': specifier: ^8.1.1 - version: 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))) + version: 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) '@types/lodash-es': specifier: 'catalog:' version: 4.17.12 @@ -1420,7 +1423,7 @@ importers: version: 6.2.0(postcss@8.5.6) storybook: specifier: 9.1.19 - version: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + version: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) tsdown: specifier: 'catalog:' version: 0.16.0(typescript@5.8.3)(unrun@0.2.34) @@ -4740,8 +4743,9 @@ packages: bail@2.0.2: resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==} - balanced-match@1.0.2: - resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} base64-js@0.0.8: resolution: {integrity: sha512-3XSA2cR/h/73EzlXXdU6YNycmYI7+kicTxks4eJg2g39biHR84slg2+des+p7iHYhbRg/udIS4TD53WabcOUkw==} @@ -4792,8 +4796,9 @@ packages: resolution: {integrity: sha512-j//dBVuyacJbvW+tvZ9HuH03fZ46QcaKvvhZickZqtB271DxJ7SNRSNxrV/dZX0085m7hISRZWbzWlJvx/rHSg==} engines: {node: '>=14.16'} - brace-expansion@2.0.2: - resolution: {integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==} + brace-expansion@5.0.5: + resolution: {integrity: sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==} + engines: {node: 18 || 20 || >=22} braces@3.0.3: resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} @@ -5640,7 +5645,7 @@ packages: resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} engines: {node: '>=12.0.0'} peerDependencies: - picomatch: ^3 || ^4 + picomatch: 2.3.2 peerDependenciesMeta: picomatch: optional: true @@ -7183,14 +7188,10 @@ packages: picocolors@1.1.1: resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} - picomatch@2.3.1: - resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} + picomatch@2.3.2: + resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} engines: {node: '>=8.6'} - picomatch@4.0.4: - resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} - engines: {node: '>=12'} - pidtree@0.6.0: resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} engines: {node: '>=0.10'} @@ -8550,7 +8551,7 @@ packages: sugarss: ^5.0.0 terser: ^5.16.0 tsx: ^4.8.1 - yaml: ^2.4.2 + yaml: 2.8.3 peerDependenciesMeta: '@types/node': optional: true @@ -8785,12 +8786,12 @@ packages: yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} - yaml@1.10.2: - resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==} + yaml@1.10.3: + resolution: {integrity: sha512-vIYeF1u3CjlhAFekPPAk2h/Kv4T3mAkMox5OymRiJQB0spDP10LHvt+K7G9Ny6NuuMAb25/6n1qyUjAcGNf/AA==} engines: {node: '>= 6'} - yaml@2.8.1: - resolution: {integrity: sha512-lcYcMxX2PO9XMGvAJkJ3OsNMw+/7FKes7/hgerGUYWIoWu5j/+YQqcZr5JnPZWzOsEBgMbSbiSTn/dv/69Mkpw==} + yaml@2.8.3: + resolution: {integrity: sha512-AvbaCLOO2Otw/lW5bmh9d/WEdcDFdQp2Z2ZUH3pX9U2ihyUY0nvLv7J6TrWowklRGPYbB/IuIMfYgxaCPg5Bpg==} engines: {node: '>= 14.6'} hasBin: true @@ -9233,10 +9234,10 @@ snapshots: dotenv: 17.2.1 eciesjs: 0.4.15 execa: 5.1.1 - fdir: 6.5.0(picomatch@4.0.4) + fdir: 6.5.0(picomatch@2.3.2) ignore: 5.3.2 object-treeify: 1.1.33 - picomatch: 4.0.4 + picomatch: 2.3.2 which: 4.0.0 '@ecies/ciphers@0.2.4(@noble/ciphers@1.3.0)': @@ -9677,12 +9678,12 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 - '@joshwooding/vite-plugin-react-docgen-typescript@0.6.1(typescript@5.8.3)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))': + '@joshwooding/vite-plugin-react-docgen-typescript@0.6.1(typescript@5.8.3)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))': dependencies: glob: 11.1.0 magic-string: 0.30.21 react-docgen-typescript: 2.4.0(typescript@5.8.3) - vite: 7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1) + vite: 7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3) optionalDependencies: typescript: 5.8.3 @@ -9972,7 +9973,7 @@ snapshots: detect-libc: 2.0.4 is-glob: 4.0.3 node-addon-api: 7.1.1 - picomatch: 4.0.4 + picomatch: 2.3.2 optionalDependencies: '@parcel/watcher-android-arm64': 2.5.4 '@parcel/watcher-darwin-arm64': 2.5.4 @@ -10368,7 +10369,7 @@ snapshots: '@react-pdf/primitives': 4.1.1 '@react-pdf/stylesheet': 6.1.2 - '@react-router/dev@7.13.1(@react-router/serve@7.13.1(react-router@7.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.8.3))(@types/node@22.12.0)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.30.2)(react-router@7.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(typescript@5.8.3)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))(yaml@2.8.1)': + '@react-router/dev@7.13.1(@react-router/serve@7.13.1(react-router@7.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.8.3))(@types/node@22.12.0)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.30.2)(react-router@7.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(typescript@5.8.3)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))(yaml@2.8.3)': dependencies: '@babel/core': 7.28.4 '@babel/generator': 7.28.5 @@ -10398,8 +10399,8 @@ snapshots: semver: 7.7.4 tinyglobby: 0.2.15 valibot: 1.2.0(typescript@5.8.3) - vite: 7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1) - vite-node: 3.2.4(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1) + vite: 7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3) + vite-node: 3.2.4(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3) optionalDependencies: '@react-router/serve': 7.13.1(react-router@7.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.8.3) typescript: 5.8.3 @@ -10552,7 +10553,7 @@ snapshots: dependencies: '@types/estree': 1.0.8 estree-walker: 2.0.2 - picomatch: 4.0.4 + picomatch: 2.3.2 optionalDependencies: rollup: 4.59.0 @@ -10633,133 +10634,133 @@ snapshots: '@standard-schema/spec@1.0.0': {} - '@storybook/addon-actions@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))': + '@storybook/addon-actions@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: '@storybook/global': 5.0.0 '@types/uuid': 9.0.8 dequal: 2.0.3 polished: 4.3.1 - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) uuid: 9.0.1 - '@storybook/addon-backgrounds@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))': + '@storybook/addon-backgrounds@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: '@storybook/global': 5.0.0 memoizerific: 1.11.3 - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) ts-dedent: 2.2.0 - '@storybook/addon-controls@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))': + '@storybook/addon-controls@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: '@storybook/global': 5.0.0 dequal: 2.0.3 - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) ts-dedent: 2.2.0 - '@storybook/addon-designs@10.0.2(@storybook/addon-docs@9.1.10(@types/react@18.3.11)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))': + '@storybook/addon-designs@10.0.2(@storybook/addon-docs@9.1.10(@types/react@18.3.11)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: '@figspec/react': 1.0.4(react@18.3.1) - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) optionalDependencies: - '@storybook/addon-docs': 9.1.10(@types/react@18.3.11)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))) + '@storybook/addon-docs': 9.1.10(@types/react@18.3.11)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@storybook/addon-docs@8.6.14(@types/react@18.3.11)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))': + '@storybook/addon-docs@8.6.14(@types/react@18.3.11)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: '@mdx-js/react': 3.1.0(@types/react@18.3.11)(react@18.3.1) - '@storybook/blocks': 8.6.14(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))) - '@storybook/csf-plugin': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))) - '@storybook/react-dom-shim': 8.6.14(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))) + '@storybook/blocks': 8.6.14(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + '@storybook/csf-plugin': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + '@storybook/react-dom-shim': 8.6.14(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) ts-dedent: 2.2.0 transitivePeerDependencies: - '@types/react' - '@storybook/addon-docs@9.1.10(@types/react@18.3.11)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))': + '@storybook/addon-docs@9.1.10(@types/react@18.3.11)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: '@mdx-js/react': 3.1.0(@types/react@18.3.11)(react@18.3.1) - '@storybook/csf-plugin': 9.1.10(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))) + '@storybook/csf-plugin': 9.1.10(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) '@storybook/icons': 1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/react-dom-shim': 9.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))) + '@storybook/react-dom-shim': 9.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) ts-dedent: 2.2.0 transitivePeerDependencies: - '@types/react' - '@storybook/addon-essentials@8.6.14(@types/react@18.3.11)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))': - dependencies: - '@storybook/addon-actions': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))) - '@storybook/addon-backgrounds': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))) - '@storybook/addon-controls': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))) - '@storybook/addon-docs': 8.6.14(@types/react@18.3.11)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))) - '@storybook/addon-highlight': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))) - '@storybook/addon-measure': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))) - '@storybook/addon-outline': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))) - '@storybook/addon-toolbars': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))) - '@storybook/addon-viewport': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))) - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + '@storybook/addon-essentials@8.6.14(@types/react@18.3.11)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': + dependencies: + '@storybook/addon-actions': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + '@storybook/addon-backgrounds': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + '@storybook/addon-controls': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + '@storybook/addon-docs': 8.6.14(@types/react@18.3.11)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + '@storybook/addon-highlight': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + '@storybook/addon-measure': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + '@storybook/addon-outline': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + '@storybook/addon-toolbars': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + '@storybook/addon-viewport': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) ts-dedent: 2.2.0 transitivePeerDependencies: - '@types/react' - '@storybook/addon-highlight@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))': + '@storybook/addon-highlight@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: '@storybook/global': 5.0.0 - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) - '@storybook/addon-interactions@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))': + '@storybook/addon-interactions@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: '@storybook/global': 5.0.0 - '@storybook/instrumenter': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))) - '@storybook/test': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))) + '@storybook/instrumenter': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + '@storybook/test': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) polished: 4.3.1 - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) ts-dedent: 2.2.0 - '@storybook/addon-links@8.6.14(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))': + '@storybook/addon-links@8.6.14(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: '@storybook/global': 5.0.0 - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) ts-dedent: 2.2.0 optionalDependencies: react: 18.3.1 - '@storybook/addon-measure@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))': + '@storybook/addon-measure@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: '@storybook/global': 5.0.0 - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) tiny-invariant: 1.3.3 - '@storybook/addon-onboarding@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))': + '@storybook/addon-onboarding@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) - '@storybook/addon-outline@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))': + '@storybook/addon-outline@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: '@storybook/global': 5.0.0 - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) ts-dedent: 2.2.0 - '@storybook/addon-styling-webpack@1.0.1(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))(webpack@5.104.1(@swc/core@1.13.5(@swc/helpers@0.5.17)))': + '@storybook/addon-styling-webpack@1.0.1(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(webpack@5.104.1(@swc/core@1.13.5(@swc/helpers@0.5.17)))': dependencies: - '@storybook/node-logger': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))) + '@storybook/node-logger': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) webpack: 5.104.1(@swc/core@1.13.5(@swc/helpers@0.5.17)) transitivePeerDependencies: - storybook - '@storybook/addon-toolbars@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))': + '@storybook/addon-toolbars@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) - '@storybook/addon-viewport@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))': + '@storybook/addon-viewport@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: memoizerific: 1.11.3 - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) '@storybook/addon-webpack5-compiler-swc@1.0.6(@swc/helpers@0.5.17)(webpack@5.104.1(@swc/core@1.13.5(@swc/helpers@0.5.17)))': dependencies: @@ -10769,25 +10770,25 @@ snapshots: - '@swc/helpers' - webpack - '@storybook/blocks@8.6.14(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))': + '@storybook/blocks@8.6.14(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: '@storybook/icons': 1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) ts-dedent: 2.2.0 optionalDependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@storybook/builder-vite@9.1.10(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))': + '@storybook/builder-vite@9.1.10(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))': dependencies: - '@storybook/csf-plugin': 9.1.10(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))) - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + '@storybook/csf-plugin': 9.1.10(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) ts-dedent: 2.2.0 - vite: 7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1) + vite: 7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3) - '@storybook/builder-webpack5@8.6.14(@swc/core@1.13.5(@swc/helpers@0.5.17))(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))(typescript@5.8.3)': + '@storybook/builder-webpack5@8.6.14(@swc/core@1.13.5(@swc/helpers@0.5.17))(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(typescript@5.8.3)': dependencies: - '@storybook/core-webpack': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))) + '@storybook/core-webpack': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) '@types/semver': 7.7.1 browser-assert: 1.2.1 case-sensitive-paths-webpack-plugin: 2.4.0 @@ -10801,7 +10802,7 @@ snapshots: path-browserify: 1.0.1 process: 0.11.10 semver: 7.7.4 - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) style-loader: 3.3.4(webpack@5.104.1(@swc/core@1.13.5(@swc/helpers@0.5.17))) terser-webpack-plugin: 5.3.16(@swc/core@1.13.5(@swc/helpers@0.5.17))(webpack@5.104.1(@swc/core@1.13.5(@swc/helpers@0.5.17))) ts-dedent: 2.2.0 @@ -10821,23 +10822,23 @@ snapshots: - uglify-js - webpack-cli - '@storybook/components@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))': + '@storybook/components@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) - '@storybook/core-webpack@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))': + '@storybook/core-webpack@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) ts-dedent: 2.2.0 - '@storybook/csf-plugin@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))': + '@storybook/csf-plugin@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) unplugin: 1.16.1 - '@storybook/csf-plugin@9.1.10(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))': + '@storybook/csf-plugin@9.1.10(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) unplugin: 1.16.1 '@storybook/global@5.0.0': {} @@ -10847,24 +10848,24 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@storybook/instrumenter@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))': + '@storybook/instrumenter@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: '@storybook/global': 5.0.0 '@vitest/utils': 2.1.9 - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) - '@storybook/manager-api@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))': + '@storybook/manager-api@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) - '@storybook/node-logger@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))': + '@storybook/node-logger@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) - '@storybook/preset-react-webpack@8.6.14(@storybook/test@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))(typescript@5.8.3)': + '@storybook/preset-react-webpack@8.6.14(@storybook/test@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(typescript@5.8.3)': dependencies: - '@storybook/core-webpack': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))) - '@storybook/react': 8.6.14(@storybook/test@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))(typescript@5.8.3) + '@storybook/core-webpack': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + '@storybook/react': 8.6.14(@storybook/test@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(typescript@5.8.3) '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.8.3)(webpack@5.104.1(@swc/core@1.13.5(@swc/helpers@0.5.17))) '@types/semver': 7.7.1 find-up: 5.0.0 @@ -10874,7 +10875,7 @@ snapshots: react-dom: 18.3.1(react@18.3.1) resolve: 1.22.10 semver: 7.7.4 - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) tsconfig-paths: 4.2.0 webpack: 5.104.1(@swc/core@1.13.5(@swc/helpers@0.5.17)) optionalDependencies: @@ -10887,9 +10888,9 @@ snapshots: - uglify-js - webpack-cli - '@storybook/preview-api@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))': + '@storybook/preview-api@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.8.3)(webpack@5.104.1(@swc/core@1.13.5(@swc/helpers@0.5.17)))': dependencies: @@ -10905,46 +10906,46 @@ snapshots: transitivePeerDependencies: - supports-color - '@storybook/react-dom-shim@8.6.14(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))': + '@storybook/react-dom-shim@8.6.14(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) - '@storybook/react-dom-shim@9.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))': + '@storybook/react-dom-shim@9.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) - '@storybook/react-vite@9.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))(typescript@5.8.3)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))': + '@storybook/react-vite@9.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(typescript@5.8.3)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))': dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.6.1(typescript@5.8.3)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.6.1(typescript@5.8.3)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) '@rollup/pluginutils': 5.2.0(rollup@4.59.0) - '@storybook/builder-vite': 9.1.10(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) - '@storybook/react': 9.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))(typescript@5.8.3) + '@storybook/builder-vite': 9.1.10(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + '@storybook/react': 9.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(typescript@5.8.3) find-up: 7.0.0 magic-string: 0.30.21 react: 18.3.1 react-docgen: 8.0.1 react-dom: 18.3.1(react@18.3.1) resolve: 1.22.10 - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) tsconfig-paths: 4.2.0 - vite: 7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1) + vite: 7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3) transitivePeerDependencies: - rollup - supports-color - typescript - '@storybook/react-webpack5@8.6.14(@storybook/test@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))(typescript@5.8.3)': + '@storybook/react-webpack5@8.6.14(@storybook/test@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(typescript@5.8.3)': dependencies: - '@storybook/builder-webpack5': 8.6.14(@swc/core@1.13.5(@swc/helpers@0.5.17))(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))(typescript@5.8.3) - '@storybook/preset-react-webpack': 8.6.14(@storybook/test@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))(typescript@5.8.3) - '@storybook/react': 8.6.14(@storybook/test@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))(typescript@5.8.3) + '@storybook/builder-webpack5': 8.6.14(@swc/core@1.13.5(@swc/helpers@0.5.17))(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(typescript@5.8.3) + '@storybook/preset-react-webpack': 8.6.14(@storybook/test@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(typescript@5.8.3) + '@storybook/react': 8.6.14(@storybook/test@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(typescript@5.8.3) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) optionalDependencies: typescript: 5.8.3 transitivePeerDependencies: @@ -10956,45 +10957,45 @@ snapshots: - uglify-js - webpack-cli - '@storybook/react@8.6.14(@storybook/test@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))(typescript@5.8.3)': + '@storybook/react@8.6.14(@storybook/test@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(typescript@5.8.3)': dependencies: - '@storybook/components': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))) + '@storybook/components': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) '@storybook/global': 5.0.0 - '@storybook/manager-api': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))) - '@storybook/preview-api': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))) - '@storybook/react-dom-shim': 8.6.14(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))) - '@storybook/theming': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))) + '@storybook/manager-api': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + '@storybook/preview-api': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + '@storybook/react-dom-shim': 8.6.14(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + '@storybook/theming': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) optionalDependencies: - '@storybook/test': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))) + '@storybook/test': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) typescript: 5.8.3 - '@storybook/react@9.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))(typescript@5.8.3)': + '@storybook/react@9.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(typescript@5.8.3)': dependencies: '@storybook/global': 5.0.0 - '@storybook/react-dom-shim': 9.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))) + '@storybook/react-dom-shim': 9.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) optionalDependencies: typescript: 5.8.3 - '@storybook/test@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))': + '@storybook/test@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: '@storybook/global': 5.0.0 - '@storybook/instrumenter': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))) + '@storybook/instrumenter': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) '@testing-library/dom': 10.4.0 '@testing-library/jest-dom': 6.5.0 '@testing-library/user-event': 14.5.2(@testing-library/dom@10.4.0) '@vitest/expect': 2.0.5 '@vitest/spy': 2.0.5 - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) - '@storybook/theming@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)))': + '@storybook/theming@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) '@swc/core-darwin-arm64@1.13.5': optional: true @@ -11692,7 +11693,7 @@ snapshots: '@ungap/structured-clone@1.3.0': {} - '@vitest/coverage-v8@4.0.17(vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@22.12.0)(jiti@2.6.1)(jsdom@26.1.0)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))': + '@vitest/coverage-v8@4.0.17(vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@22.12.0)(jiti@2.6.1)(jsdom@26.1.0)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))': dependencies: '@bcoe/v8-coverage': 1.0.2 '@vitest/utils': 4.0.17 @@ -11704,7 +11705,7 @@ snapshots: obug: 2.1.1 std-env: 3.10.0 tinyrainbow: 3.0.3 - vitest: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@22.12.0)(jiti@2.6.1)(jsdom@26.1.0)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1) + vitest: 4.0.15(@opentelemetry/api@1.9.0)(@types/node@22.12.0)(jiti@2.6.1)(jsdom@26.1.0)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3) '@vitest/expect@2.0.5': dependencies: @@ -11730,21 +11731,21 @@ snapshots: chai: 6.2.1 tinyrainbow: 3.0.3 - '@vitest/mocker@3.2.4(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))': + '@vitest/mocker@3.2.4(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1) + vite: 7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3) - '@vitest/mocker@4.0.15(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1))': + '@vitest/mocker@4.0.15(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))': dependencies: '@vitest/spy': 4.0.15 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1) + vite: 7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3) '@vitest/pretty-format@2.0.5': dependencies: @@ -11972,7 +11973,7 @@ snapshots: anymatch@3.1.3: dependencies: normalize-path: 3.0.0 - picomatch: 2.3.1 + picomatch: 2.3.2 arch@2.2.0: {} @@ -12061,7 +12062,7 @@ snapshots: bail@2.0.2: {} - balanced-match@1.0.2: {} + balanced-match@4.0.4: {} base64-js@0.0.8: {} @@ -12121,9 +12122,9 @@ snapshots: widest-line: 4.0.1 wrap-ansi: 8.1.0 - brace-expansion@2.0.2: + brace-expansion@5.0.5: dependencies: - balanced-match: 1.0.2 + balanced-match: 4.0.4 braces@3.0.3: dependencies: @@ -12439,7 +12440,7 @@ snapshots: import-fresh: 3.3.1 parse-json: 5.2.0 path-type: 4.0.0 - yaml: 1.10.2 + yaml: 1.10.3 create-react-class@15.7.0: dependencies: @@ -12962,9 +12963,9 @@ snapshots: fast-uri@3.0.6: {} - fdir@6.5.0(picomatch@4.0.4): + fdir@6.5.0(picomatch@2.3.2): optionalDependencies: - picomatch: 4.0.4 + picomatch: 2.3.2 fecha@4.2.3: {} @@ -13792,7 +13793,7 @@ snapshots: nano-spawn: 2.0.0 pidtree: 0.6.0 string-argv: 0.3.2 - yaml: 2.8.1 + yaml: 2.8.3 listr2@9.0.5: dependencies: @@ -14433,7 +14434,7 @@ snapshots: micromatch@4.0.8: dependencies: braces: 3.0.3 - picomatch: 2.3.1 + picomatch: 2.3.2 mime-db@1.33.0: {} @@ -14461,11 +14462,11 @@ snapshots: minimatch@10.2.3: dependencies: - brace-expansion: 2.0.2 + brace-expansion: 5.0.5 minimatch@3.1.4: dependencies: - brace-expansion: 2.0.2 + brace-expansion: 5.0.5 minimist@1.2.8: {} @@ -14811,9 +14812,7 @@ snapshots: picocolors@1.1.1: {} - picomatch@2.3.1: {} - - picomatch@4.0.4: {} + picomatch@2.3.2: {} pidtree@0.6.0: {} @@ -14866,7 +14865,7 @@ snapshots: postcss-load-config@5.1.0(jiti@2.6.1)(postcss@8.5.6): dependencies: lilconfig: 3.1.3 - yaml: 2.8.1 + yaml: 2.8.3 optionalDependencies: jiti: 2.6.1 postcss: 8.5.6 @@ -15323,7 +15322,7 @@ snapshots: readdirp@3.6.0: dependencies: - picomatch: 2.3.1 + picomatch: 2.3.2 recast@0.23.11: dependencies: @@ -15842,13 +15841,13 @@ snapshots: std-env@3.10.0: {} - storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)): + storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)): dependencies: '@storybook/global': 5.0.0 '@testing-library/jest-dom': 6.9.1 '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.0) '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + '@vitest/mocker': 3.2.4(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) '@vitest/spy': 3.2.4 better-opn: 3.0.2 esbuild: 0.25.0 @@ -16005,8 +16004,8 @@ snapshots: tinyglobby@0.2.15: dependencies: - fdir: 6.5.0(picomatch@4.0.4) - picomatch: 4.0.4 + fdir: 6.5.0(picomatch@2.3.2) + picomatch: 2.3.2 tinypool@2.1.0: {} @@ -16407,13 +16406,13 @@ snapshots: string_decoder: 1.3.0 util-deprecate: 1.0.2 - vite-node@3.2.4(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1): + vite-node@3.2.4(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3): dependencies: cac: 6.7.14 debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1) + vite: 7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3) transitivePeerDependencies: - '@types/node' - jiti @@ -16428,22 +16427,22 @@ snapshots: - tsx - yaml - vite-tsconfig-paths@5.1.4(typescript@5.8.3)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)): + vite-tsconfig-paths@5.1.4(typescript@5.8.3)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)): dependencies: debug: 4.4.3 globrex: 0.1.2 tsconfck: 3.1.6(typescript@5.8.3) optionalDependencies: - vite: 7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1) + vite: 7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3) transitivePeerDependencies: - supports-color - typescript - vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1): + vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3): dependencies: esbuild: 0.25.0 - fdir: 6.5.0(picomatch@4.0.4) - picomatch: 4.0.4 + fdir: 6.5.0(picomatch@2.3.2) + picomatch: 2.3.2 postcss: 8.5.6 rollup: 4.59.0 tinyglobby: 0.2.15 @@ -16453,12 +16452,12 @@ snapshots: jiti: 2.6.1 lightningcss: 1.30.2 terser: 5.43.1 - yaml: 2.8.1 + yaml: 2.8.3 - vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@22.12.0)(jiti@2.6.1)(jsdom@26.1.0)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1): + vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@22.12.0)(jiti@2.6.1)(jsdom@26.1.0)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3): dependencies: '@vitest/expect': 4.0.15 - '@vitest/mocker': 4.0.15(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1)) + '@vitest/mocker': 4.0.15(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) '@vitest/pretty-format': 4.0.15 '@vitest/runner': 4.0.15 '@vitest/snapshot': 4.0.15 @@ -16469,13 +16468,13 @@ snapshots: magic-string: 0.30.21 obug: 2.1.1 pathe: 2.0.3 - picomatch: 4.0.4 + picomatch: 2.3.2 std-env: 3.10.0 tinybench: 2.9.0 tinyexec: 1.0.4 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.1) + vite: 7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.0 @@ -16691,9 +16690,9 @@ snapshots: yallist@3.1.1: {} - yaml@1.10.2: {} + yaml@1.10.3: {} - yaml@2.8.1: {} + yaml@2.8.3: {} yargs-parser@21.1.1: {} From b73d6344adee8fa77cb202009067f3f6c295d33a Mon Sep 17 00:00:00 2001 From: sriram veeraghanta Date: Tue, 31 Mar 2026 16:55:17 +0530 Subject: [PATCH 41/62] chore(deps): replace dotenvx with dotenv and update overrides (#8832) * chore(deps): replace dotenvx with dotenv and update dependency overrides Co-Authored-By: Claude Opus 4.6 (1M context) * chore: sort devDependencies in package.json files Co-Authored-By: Claude Opus 4.6 (1M context) --------- Co-authored-by: Claude Opus 4.6 (1M context) --- apps/admin/package.json | 2 +- apps/admin/vite.config.ts | 2 +- apps/live/package.json | 2 +- apps/live/src/env.ts | 2 +- apps/space/package.json | 2 +- apps/space/vite.config.ts | 2 +- apps/web/package.json | 2 +- apps/web/vite.config.ts | 2 +- package.json | 5 +- pnpm-lock.yaml | 152 ++++++++------------------------------ pnpm-workspace.yaml | 2 +- 11 files changed, 41 insertions(+), 134 deletions(-) diff --git a/apps/admin/package.json b/apps/admin/package.json index d55d83b399c..1c1992c7e38 100644 --- a/apps/admin/package.json +++ b/apps/admin/package.json @@ -49,7 +49,6 @@ "uuid": "catalog:" }, "devDependencies": { - "@dotenvx/dotenvx": "catalog:", "@plane/tailwind-config": "workspace:*", "@plane/typescript-config": "workspace:*", "@react-router/dev": "catalog:", @@ -57,6 +56,7 @@ "@types/node": "catalog:", "@types/react": "catalog:", "@types/react-dom": "catalog:", + "dotenv": "catalog:", "typescript": "catalog:", "vite": "catalog:", "vite-tsconfig-paths": "^5.1.4" diff --git a/apps/admin/vite.config.ts b/apps/admin/vite.config.ts index c9d97157f41..f61d9b49eb5 100644 --- a/apps/admin/vite.config.ts +++ b/apps/admin/vite.config.ts @@ -1,5 +1,5 @@ import path from "node:path"; -import * as dotenv from "@dotenvx/dotenvx"; +import * as dotenv from "dotenv"; import { reactRouter } from "@react-router/dev/vite"; import { defineConfig } from "vite"; import tsconfigPaths from "vite-tsconfig-paths"; diff --git a/apps/live/package.json b/apps/live/package.json index 3b8778c7126..3e7993bdcf6 100644 --- a/apps/live/package.json +++ b/apps/live/package.json @@ -27,7 +27,6 @@ "clean": "rm -rf .turbo && rm -rf .next && rm -rf node_modules && rm -rf dist" }, "dependencies": { - "@dotenvx/dotenvx": "catalog:", "@effect/platform": "^0.94.0", "@effect/platform-node": "^0.104.0", "@fontsource/inter": "5.2.8", @@ -47,6 +46,7 @@ "axios": "catalog:", "compression": "1.8.1", "cors": "^2.8.5", + "dotenv": "catalog:", "effect": "3.20.0", "express": "catalog:", "express-ws": "^5.0.2", diff --git a/apps/live/src/env.ts b/apps/live/src/env.ts index 9b53835187e..c9b61bd433f 100644 --- a/apps/live/src/env.ts +++ b/apps/live/src/env.ts @@ -4,7 +4,7 @@ * See the LICENSE file for details. */ -import * as dotenv from "@dotenvx/dotenvx"; +import * as dotenv from "dotenv"; import { z } from "zod"; dotenv.config(); diff --git a/apps/space/package.json b/apps/space/package.json index 8140ef16d63..1ccb2095fd2 100644 --- a/apps/space/package.json +++ b/apps/space/package.json @@ -53,7 +53,6 @@ "uuid": "catalog:" }, "devDependencies": { - "@dotenvx/dotenvx": "catalog:", "@plane/tailwind-config": "workspace:*", "@plane/typescript-config": "workspace:*", "@react-router/dev": "catalog:", @@ -62,6 +61,7 @@ "@types/node": "catalog:", "@types/react": "catalog:", "@types/react-dom": "catalog:", + "dotenv": "catalog:", "typescript": "catalog:", "vite": "catalog:", "vite-tsconfig-paths": "^5.1.4" diff --git a/apps/space/vite.config.ts b/apps/space/vite.config.ts index 5368af0761c..1767562cec3 100644 --- a/apps/space/vite.config.ts +++ b/apps/space/vite.config.ts @@ -1,5 +1,5 @@ import path from "node:path"; -import * as dotenv from "@dotenvx/dotenvx"; +import * as dotenv from "dotenv"; import { reactRouter } from "@react-router/dev/vite"; import { defineConfig } from "vite"; import tsconfigPaths from "vite-tsconfig-paths"; diff --git a/apps/web/package.json b/apps/web/package.json index 17aa4f93d9a..3ccc03dc319 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -73,7 +73,6 @@ "uuid": "catalog:" }, "devDependencies": { - "@dotenvx/dotenvx": "catalog:", "@plane/tailwind-config": "workspace:*", "@plane/typescript-config": "workspace:*", "@react-router/dev": "catalog:", @@ -83,6 +82,7 @@ "@types/react": "catalog:", "@types/react-color": "^3.0.6", "@types/react-dom": "catalog:", + "dotenv": "catalog:", "typescript": "catalog:", "vite": "catalog:", "vite-tsconfig-paths": "^5.1.4" diff --git a/apps/web/vite.config.ts b/apps/web/vite.config.ts index b80e3b65eee..f94ebce9d00 100644 --- a/apps/web/vite.config.ts +++ b/apps/web/vite.config.ts @@ -1,5 +1,5 @@ import path from "node:path"; -import * as dotenv from "@dotenvx/dotenvx"; +import * as dotenv from "dotenv"; import { reactRouter } from "@react-router/dev/vite"; import { defineConfig } from "vite"; import tsconfigPaths from "vite-tsconfig-paths"; diff --git a/package.json b/package.json index d77bdf1d80c..101219bf355 100644 --- a/package.json +++ b/package.json @@ -67,14 +67,15 @@ "rollup": "4.59.0", "minimatch@3": "3.1.4", "minimatch@10": "10.2.3", - "serialize-javascript": "7.0.3", + "serialize-javascript": "7.0.5", "ajv@6": "6.14.0", "ajv@8": "8.18.0", "undici@7": "7.24.0", "flatted": "3.4.2", "picomatch": "2.3.2", "yaml@1": "1.10.3", - "yaml@2": "2.8.3" + "yaml@2": "2.8.3", + "path-to-regexp": "0.1.13" }, "onlyBuiltDependencies": [ "@parcel/watcher", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index d3ca1e9a1d6..7929b2669b8 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -18,9 +18,6 @@ catalogs: '@bprogress/core': specifier: ^1.3.4 version: 1.3.4 - '@dotenvx/dotenvx': - specifier: 1.51.1 - version: 1.51.1 '@react-router/dev': specifier: 7.13.1 version: 7.13.1 @@ -51,6 +48,9 @@ catalogs: axios: specifier: 1.13.5 version: 1.13.5 + dotenv: + specifier: 16.4.7 + version: 16.4.7 lucide-react: specifier: 0.469.0 version: 0.469.0 @@ -110,7 +110,7 @@ overrides: rollup: 4.59.0 minimatch@3: 3.1.4 minimatch@10: 10.2.3 - serialize-javascript: 7.0.3 + serialize-javascript: 7.0.5 ajv@6: 6.14.0 ajv@8: 8.18.0 undici@7: 7.24.0 @@ -118,6 +118,7 @@ overrides: picomatch: 2.3.2 yaml@1: 1.10.3 yaml@2: 2.8.3 + path-to-regexp: 0.1.13 importers: @@ -229,9 +230,6 @@ importers: specifier: 'catalog:' version: 13.0.0 devDependencies: - '@dotenvx/dotenvx': - specifier: 'catalog:' - version: 1.51.1 '@plane/tailwind-config': specifier: workspace:* version: link:../../packages/tailwind-config @@ -253,6 +251,9 @@ importers: '@types/react-dom': specifier: 'catalog:' version: 18.3.1 + dotenv: + specifier: 'catalog:' + version: 16.4.7 typescript: specifier: 5.8.3 version: 5.8.3 @@ -265,9 +266,6 @@ importers: apps/live: dependencies: - '@dotenvx/dotenvx': - specifier: 'catalog:' - version: 1.51.1 '@effect/platform': specifier: ^0.94.0 version: 0.94.1(effect@3.20.0) @@ -325,6 +323,9 @@ importers: cors: specifier: ^2.8.5 version: 2.8.5 + dotenv: + specifier: 'catalog:' + version: 16.4.7 effect: specifier: 3.20.0 version: 3.20.0 @@ -513,9 +514,6 @@ importers: specifier: 'catalog:' version: 13.0.0 devDependencies: - '@dotenvx/dotenvx': - specifier: 'catalog:' - version: 1.51.1 '@plane/tailwind-config': specifier: workspace:* version: link:../../packages/tailwind-config @@ -540,6 +538,9 @@ importers: '@types/react-dom': specifier: 'catalog:' version: 18.3.1 + dotenv: + specifier: 'catalog:' + version: 16.4.7 typescript: specifier: 5.8.3 version: 5.8.3 @@ -715,9 +716,6 @@ importers: specifier: 'catalog:' version: 13.0.0 devDependencies: - '@dotenvx/dotenvx': - specifier: 'catalog:' - version: 1.51.1 '@plane/tailwind-config': specifier: workspace:* version: link:../../packages/tailwind-config @@ -745,6 +743,9 @@ importers: '@types/react-dom': specifier: 'catalog:' version: 18.3.1 + dotenv: + specifier: 'catalog:' + version: 16.4.7 typescript: specifier: 5.8.3 version: 5.8.3 @@ -1826,16 +1827,6 @@ packages: '@date-fns/tz@1.4.1': resolution: {integrity: sha512-P5LUNhtbj6YfI3iJjw5EL9eUAG6OitD0W3fWQcpQjDRc/QIsL0tRNuO1PcDvPccWL1fSTXXdE1ds+l95DV/OFA==} - '@dotenvx/dotenvx@1.51.1': - resolution: {integrity: sha512-fqcQxcxC4LOaUlW8IkyWw8x0yirlLUkbxohz9OnWvVWjf73J5yyw7jxWnkOJaUKXZotcGEScDox9MU6rSkcDgg==} - hasBin: true - - '@ecies/ciphers@0.2.4': - resolution: {integrity: sha512-t+iX+Wf5nRKyNzk8dviW3Ikb/280+aEJAnw9YXvCp2tYGPSkMki+NRY+8aNLmVFv3eNtMdvViPNOPxS8SZNP+w==} - engines: {bun: '>=1', deno: '>=2', node: '>=16'} - peerDependencies: - '@noble/ciphers': ^1.0.0 - '@effect/cluster@0.56.1': resolution: {integrity: sha512-gnrsH6kfrUjn+82j/bw1IR4yFqJqV8tc7xZvrbJPRgzANycc6K1hu3LMg548uYbUkTzD8YYyqrSatMO1mkQpzw==} peerDependencies: @@ -2479,18 +2470,6 @@ packages: '@napi-rs/wasm-runtime@1.1.1': resolution: {integrity: sha512-p64ah1M1ld8xjWv3qbvFwHiFVWrq1yFvV4f7w+mzaqiR4IlSgkqhcRdHwsGgomwzBH51sRY4NEowLxnaBjcW/A==} - '@noble/ciphers@1.3.0': - resolution: {integrity: sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==} - engines: {node: ^14.21.3 || >=16} - - '@noble/curves@1.9.7': - resolution: {integrity: sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==} - engines: {node: ^14.21.3 || >=16} - - '@noble/hashes@1.8.0': - resolution: {integrity: sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==} - engines: {node: ^14.21.3 || >=16} - '@opentelemetry/api@1.9.0': resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==} engines: {node: '>=8.0.0'} @@ -5036,10 +5015,6 @@ packages: comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} - commander@11.1.0: - resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} - engines: {node: '>=16'} - commander@14.0.2: resolution: {integrity: sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==} engines: {node: '>=20'} @@ -5380,8 +5355,8 @@ packages: dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} - dotenv@17.2.1: - resolution: {integrity: sha512-kQhDYKZecqnM0fCnzI5eIv5L4cAe/iRI+HqMbO/hbRdTAeXDG+M9FjipUxNfbARuEg4iHIbhnhs78BCHNbSxEQ==} + dotenv@16.4.7: + resolution: {integrity: sha512-47qPchRCykZC03FhkYAhrvwU4xDBFIj1QPqaarj6mdM/hgUzfPHcpkHJOn3mJAufFeeAxAzeGsr5X0M4k6fLZQ==} engines: {node: '>=12'} dts-resolver@2.1.3: @@ -5400,10 +5375,6 @@ packages: eastasianwidth@0.2.0: resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - eciesjs@0.4.15: - resolution: {integrity: sha512-r6kEJXDKecVOCj2nLMuXK/FCPeurW33+3JRpfXVbjLja3XUYFfD9I/JBreH6sUyzcm3G/YQboBjMla6poKeSdA==} - engines: {bun: '>=1', deno: '>=2', node: '>=16'} - ee-first@1.1.1: resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} @@ -6047,10 +6018,6 @@ packages: ieee754@1.2.1: resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} - ignore@5.3.2: - resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} - engines: {node: '>= 4'} - imagesloaded@4.1.4: resolution: {integrity: sha512-ltiBVcYpc/TYTF5nolkMNsnREHW+ICvfQ3Yla2Sgr71YFwQ86bDwV9hgpFhFtrGPuwEx5+LqOHIrdXBdoWwwsA==} @@ -6201,10 +6168,6 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - isexe@3.1.1: - resolution: {integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==} - engines: {node: '>=16'} - isobject@3.0.1: resolution: {integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==} engines: {node: '>=0.10.0'} @@ -6990,10 +6953,6 @@ packages: resolution: {integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==} engines: {node: '>= 0.4'} - object-treeify@1.1.33: - resolution: {integrity: sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A==} - engines: {node: '>= 10'} - objectorarray@1.0.5: resolution: {integrity: sha512-eJJDYkhJFFbBBAxeh8xW+weHlkI28n2ZdQV/J/DNfWfSKlGEf2xcfAbZTv3riEXHAhL9SVOTs2pRmXiSTf78xg==} @@ -7156,11 +7115,8 @@ packages: resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} engines: {node: 20 || >=22} - path-to-regexp@0.1.12: - resolution: {integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==} - - path-to-regexp@3.3.0: - resolution: {integrity: sha512-qyCH421YQPS2WFDxDjftfc1ZR5WKQzVzqsp4n9M2kQhVOo/ByahFoUNJfl58kOcEGfQ//7weFTDhm+ss8Ecxgw==} + path-to-regexp@0.1.13: + resolution: {integrity: sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==} path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} @@ -7843,8 +7799,8 @@ packages: sentence-case@3.0.4: resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} - serialize-javascript@7.0.3: - resolution: {integrity: sha512-h+cZ/XXarqDgCjo+YSyQU/ulDEESGGf8AMK9pPNmhNSl/FzPl6L8pMp1leca5z6NuG6tvV/auC8/43tmovowww==} + serialize-javascript@7.0.5: + resolution: {integrity: sha512-F4LcB0UqUl1zErq+1nYEEzSHJnIwb3AF2XWB94b+afhrekOUijwooAYqFyRbjYkm2PAKBabx6oYv/xDxNi8IBw==} engines: {node: '>=20.0.0'} serve-handler@6.1.6: @@ -8688,11 +8644,6 @@ packages: engines: {node: '>= 8'} hasBin: true - which@4.0.0: - resolution: {integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==} - engines: {node: ^16.13.0 || >=18.0.0} - hasBin: true - why-is-node-running@2.3.0: resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} engines: {node: '>=8'} @@ -9228,22 +9179,6 @@ snapshots: '@date-fns/tz@1.4.1': {} - '@dotenvx/dotenvx@1.51.1': - dependencies: - commander: 11.1.0 - dotenv: 17.2.1 - eciesjs: 0.4.15 - execa: 5.1.1 - fdir: 6.5.0(picomatch@2.3.2) - ignore: 5.3.2 - object-treeify: 1.1.33 - picomatch: 2.3.2 - which: 4.0.0 - - '@ecies/ciphers@0.2.4(@noble/ciphers@1.3.0)': - dependencies: - '@noble/ciphers': 1.3.0 - '@effect/cluster@0.56.1(@effect/platform@0.94.1(effect@3.20.0))(@effect/rpc@0.73.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0))(@effect/sql@0.49.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0))(@effect/workflow@0.16.0(@effect/experimental@0.58.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0)(ioredis@5.7.0))(@effect/platform@0.94.1(effect@3.20.0))(@effect/rpc@0.73.0(@effect/platform@0.94.1(effect@3.20.0))(effect@3.20.0))(effect@3.20.0))(effect@3.20.0)': dependencies: '@effect/platform': 0.94.1(effect@3.20.0) @@ -9799,14 +9734,6 @@ snapshots: '@tybys/wasm-util': 0.10.1 optional: true - '@noble/ciphers@1.3.0': {} - - '@noble/curves@1.9.7': - dependencies: - '@noble/hashes': 1.8.0 - - '@noble/hashes@1.8.0': {} - '@opentelemetry/api@1.9.0': optional: true @@ -12375,8 +12302,6 @@ snapshots: comma-separated-tokens@2.0.3: {} - commander@11.1.0: {} - commander@14.0.2: {} commander@2.20.3: {} @@ -12698,7 +12623,7 @@ snapshots: no-case: 3.0.4 tslib: 2.8.1 - dotenv@17.2.1: {} + dotenv@16.4.7: {} dts-resolver@2.1.3: {} @@ -12710,13 +12635,6 @@ snapshots: eastasianwidth@0.2.0: {} - eciesjs@0.4.15: - dependencies: - '@ecies/ciphers': 0.2.4(@noble/ciphers@1.3.0) - '@noble/ciphers': 1.3.0 - '@noble/curves': 1.9.7 - '@noble/hashes': 1.8.0 - ee-first@1.1.1: {} effect@3.20.0: @@ -12930,7 +12848,7 @@ snapshots: methods: 1.1.2 on-finished: 2.4.1 parseurl: 1.3.3 - path-to-regexp: 0.1.12 + path-to-regexp: 0.1.13 proxy-addr: 2.0.7 qs: 6.14.2 range-parser: 1.2.1 @@ -13442,8 +13360,6 @@ snapshots: ieee754@1.2.1: {} - ignore@5.3.2: {} - imagesloaded@4.1.4: dependencies: ev-emitter: 1.1.1 @@ -13591,8 +13507,6 @@ snapshots: isexe@2.0.0: {} - isexe@3.1.1: {} - isobject@3.0.1: {} isomorphic.js@0.2.5: {} @@ -14606,8 +14520,6 @@ snapshots: object-keys@1.1.1: {} - object-treeify@1.1.33: {} - objectorarray@1.0.5: {} obug@2.1.1: {} @@ -14789,9 +14701,7 @@ snapshots: lru-cache: 11.2.1 minipass: 7.1.2 - path-to-regexp@0.1.12: {} - - path-to-regexp@3.3.0: {} + path-to-regexp@0.1.13: {} path-type@4.0.0: {} @@ -15670,7 +15580,7 @@ snapshots: tslib: 2.8.1 upper-case-first: 2.0.2 - serialize-javascript@7.0.3: {} + serialize-javascript@7.0.5: {} serve-handler@6.1.6: dependencies: @@ -15679,7 +15589,7 @@ snapshots: mime-types: 2.1.18 minimatch: 3.1.4 path-is-inside: 1.0.2 - path-to-regexp: 3.3.0 + path-to-regexp: 0.1.13 range-parser: 1.2.0 serve-static@1.16.2: @@ -15975,7 +15885,7 @@ snapshots: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 - serialize-javascript: 7.0.3 + serialize-javascript: 7.0.5 terser: 5.43.1 webpack: 5.104.1(@swc/core@1.13.5(@swc/helpers@0.5.17)) optionalDependencies: @@ -16601,10 +16511,6 @@ snapshots: dependencies: isexe: 2.0.0 - which@4.0.0: - dependencies: - isexe: 3.1.1 - why-is-node-running@2.3.0: dependencies: siginfo: 2.0.0 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index fd9689f85b0..011d59c6754 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -9,7 +9,7 @@ catalog: "@atlaskit/pragmatic-drag-and-drop-hitbox": 1.1.0 "@atlaskit/pragmatic-drag-and-drop": 1.7.4 "@bprogress/core": ^1.3.4 - "@dotenvx/dotenvx": 1.51.1 + "dotenv": 16.4.7 "@react-router/dev": 7.13.1 "@react-router/node": 7.13.1 "@react-router/serve": 7.13.1 From 00a51f5e6a703b0475cca3568c35f1e2acbab42a Mon Sep 17 00:00:00 2001 From: sriramveeraghanta Date: Tue, 31 Mar 2026 17:09:35 +0530 Subject: [PATCH 42/62] chore: version bump --- apps/admin/package.json | 2 +- apps/api/package.json | 2 +- apps/live/package.json | 2 +- apps/space/package.json | 2 +- apps/web/package.json | 2 +- package.json | 2 +- packages/codemods/package.json | 2 +- packages/constants/package.json | 2 +- packages/editor/package.json | 2 +- packages/hooks/package.json | 2 +- packages/i18n/package.json | 2 +- packages/logger/package.json | 2 +- packages/propel/package.json | 2 +- packages/services/package.json | 2 +- packages/shared-state/package.json | 2 +- packages/tailwind-config/package.json | 2 +- packages/types/package.json | 2 +- packages/typescript-config/package.json | 2 +- packages/ui/package.json | 2 +- packages/utils/package.json | 2 +- 20 files changed, 20 insertions(+), 20 deletions(-) diff --git a/apps/admin/package.json b/apps/admin/package.json index 1c1992c7e38..8a492643a5e 100644 --- a/apps/admin/package.json +++ b/apps/admin/package.json @@ -1,6 +1,6 @@ { "name": "admin", - "version": "1.2.3", + "version": "1.3.0", "private": true, "description": "Admin UI for Plane", "license": "AGPL-3.0", diff --git a/apps/api/package.json b/apps/api/package.json index a0bf53ab8e7..99f5de98794 100644 --- a/apps/api/package.json +++ b/apps/api/package.json @@ -1,6 +1,6 @@ { "name": "plane-api", - "version": "1.2.3", + "version": "1.3.0", "private": true, "description": "API server powering Plane's backend", "license": "AGPL-3.0" diff --git a/apps/live/package.json b/apps/live/package.json index 3e7993bdcf6..1570ed9d764 100644 --- a/apps/live/package.json +++ b/apps/live/package.json @@ -1,6 +1,6 @@ { "name": "live", - "version": "1.2.3", + "version": "1.3.0", "private": true, "description": "A realtime collaborative server powers Plane's rich text editor", "license": "AGPL-3.0", diff --git a/apps/space/package.json b/apps/space/package.json index 1ccb2095fd2..4500152f7d1 100644 --- a/apps/space/package.json +++ b/apps/space/package.json @@ -1,6 +1,6 @@ { "name": "space", - "version": "1.2.3", + "version": "1.3.0", "private": true, "license": "AGPL-3.0", "type": "module", diff --git a/apps/web/package.json b/apps/web/package.json index 3ccc03dc319..d84d9ff0f58 100644 --- a/apps/web/package.json +++ b/apps/web/package.json @@ -1,6 +1,6 @@ { "name": "web", - "version": "1.2.3", + "version": "1.3.0", "private": true, "license": "AGPL-3.0", "type": "module", diff --git a/package.json b/package.json index 101219bf355..ffe45b22fb1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "plane", - "version": "1.2.3", + "version": "1.3.0", "private": true, "description": "Open-source project management that unlocks customer value", "license": "AGPL-3.0", diff --git a/packages/codemods/package.json b/packages/codemods/package.json index 31b481c34f4..e335d735b68 100644 --- a/packages/codemods/package.json +++ b/packages/codemods/package.json @@ -1,6 +1,6 @@ { "name": "@plane/codemods", - "version": "1.2.3", + "version": "1.3.0", "private": true, "scripts": { "test": "vitest run", diff --git a/packages/constants/package.json b/packages/constants/package.json index f0d62718c9c..dabdd16129d 100644 --- a/packages/constants/package.json +++ b/packages/constants/package.json @@ -1,6 +1,6 @@ { "name": "@plane/constants", - "version": "1.2.3", + "version": "1.3.0", "private": true, "license": "AGPL-3.0", "type": "module", diff --git a/packages/editor/package.json b/packages/editor/package.json index 0651546ac7c..9235ba0cbca 100644 --- a/packages/editor/package.json +++ b/packages/editor/package.json @@ -1,6 +1,6 @@ { "name": "@plane/editor", - "version": "1.2.3", + "version": "1.3.0", "private": true, "description": "Core Editor that powers Plane", "keywords": [ diff --git a/packages/hooks/package.json b/packages/hooks/package.json index c76803af15f..2a6076951ef 100644 --- a/packages/hooks/package.json +++ b/packages/hooks/package.json @@ -1,6 +1,6 @@ { "name": "@plane/hooks", - "version": "1.2.3", + "version": "1.3.0", "private": true, "description": "React hooks that are shared across multiple apps internally", "license": "AGPL-3.0", diff --git a/packages/i18n/package.json b/packages/i18n/package.json index 90d01a4106c..5fd80fca39d 100644 --- a/packages/i18n/package.json +++ b/packages/i18n/package.json @@ -1,6 +1,6 @@ { "name": "@plane/i18n", - "version": "1.2.3", + "version": "1.3.0", "private": true, "description": "I18n shared across multiple apps internally", "license": "AGPL-3.0", diff --git a/packages/logger/package.json b/packages/logger/package.json index 7924a01dedf..82a149c6d70 100644 --- a/packages/logger/package.json +++ b/packages/logger/package.json @@ -1,6 +1,6 @@ { "name": "@plane/logger", - "version": "1.2.3", + "version": "1.3.0", "private": true, "description": "Logger shared across multiple apps internally", "license": "AGPL-3.0", diff --git a/packages/propel/package.json b/packages/propel/package.json index e0e1d15f821..fd0c162ef9f 100644 --- a/packages/propel/package.json +++ b/packages/propel/package.json @@ -1,6 +1,6 @@ { "name": "@plane/propel", - "version": "1.2.3", + "version": "1.3.0", "private": true, "license": "AGPL-3.0", "type": "module", diff --git a/packages/services/package.json b/packages/services/package.json index c3744d28857..e4590d17958 100644 --- a/packages/services/package.json +++ b/packages/services/package.json @@ -1,6 +1,6 @@ { "name": "@plane/services", - "version": "1.2.3", + "version": "1.3.0", "private": true, "license": "AGPL-3.0", "type": "module", diff --git a/packages/shared-state/package.json b/packages/shared-state/package.json index 950876974a7..87a2df2ab43 100644 --- a/packages/shared-state/package.json +++ b/packages/shared-state/package.json @@ -1,6 +1,6 @@ { "name": "@plane/shared-state", - "version": "1.2.3", + "version": "1.3.0", "private": true, "description": "Shared state shared across multiple apps internally", "license": "AGPL-3.0", diff --git a/packages/tailwind-config/package.json b/packages/tailwind-config/package.json index 89d0138684d..80ab13ff008 100644 --- a/packages/tailwind-config/package.json +++ b/packages/tailwind-config/package.json @@ -1,6 +1,6 @@ { "name": "@plane/tailwind-config", - "version": "1.2.3", + "version": "1.3.0", "private": true, "description": "common tailwind configuration across monorepo", "license": "AGPL-3.0", diff --git a/packages/types/package.json b/packages/types/package.json index 99f2ec6cb7f..4ce05a2c7ea 100644 --- a/packages/types/package.json +++ b/packages/types/package.json @@ -1,6 +1,6 @@ { "name": "@plane/types", - "version": "1.2.3", + "version": "1.3.0", "private": true, "license": "AGPL-3.0", "type": "module", diff --git a/packages/typescript-config/package.json b/packages/typescript-config/package.json index 22d562ce236..4fc7797f587 100644 --- a/packages/typescript-config/package.json +++ b/packages/typescript-config/package.json @@ -1,6 +1,6 @@ { "name": "@plane/typescript-config", - "version": "1.2.3", + "version": "1.3.0", "private": true, "license": "AGPL-3.0", "files": [ diff --git a/packages/ui/package.json b/packages/ui/package.json index 0527d98aa66..5801ff7052f 100644 --- a/packages/ui/package.json +++ b/packages/ui/package.json @@ -1,6 +1,6 @@ { "name": "@plane/ui", - "version": "1.2.3", + "version": "1.3.0", "private": true, "description": "UI components shared across multiple apps internally", "license": "AGPL-3.0", diff --git a/packages/utils/package.json b/packages/utils/package.json index 070702688a2..712c0a3cfa0 100644 --- a/packages/utils/package.json +++ b/packages/utils/package.json @@ -1,6 +1,6 @@ { "name": "@plane/utils", - "version": "1.2.3", + "version": "1.3.0", "private": true, "description": "Helper functions shared across multiple apps internally", "license": "AGPL-3.0", From a01b51fca5adff16923ad8148de0d0563f8cd738 Mon Sep 17 00:00:00 2001 From: sriram veeraghanta Date: Tue, 31 Mar 2026 17:43:35 +0530 Subject: [PATCH 43/62] fix: scope IssueBulkUpdateDateEndpoint query to workspace and project (#8834) The bulk update date endpoint fetched issues by ID without filtering by workspace or project, allowing any authenticated project member to modify start_date and target_date of issues in any workspace/project across the entire instance (IDOR - CWE-639). Scoped the query to include workspace__slug and project_id filters, consistent with other issue endpoints in the codebase. Ref: GHSA-4q54-h4x9-m329 --- apps/api/plane/app/views/issue/base.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/api/plane/app/views/issue/base.py b/apps/api/plane/app/views/issue/base.py index 98a59b6481c..bb331802c84 100644 --- a/apps/api/plane/app/views/issue/base.py +++ b/apps/api/plane/app/views/issue/base.py @@ -1118,7 +1118,7 @@ def post(self, request, slug, project_id): epoch = int(timezone.now().timestamp()) # Fetch all relevant issues in a single query - issues = list(Issue.objects.filter(id__in=issue_ids)) + issues = list(Issue.objects.filter(id__in=issue_ids, workspace__slug=slug, project_id=project_id)) issues_dict = {str(issue.id): issue for issue in issues} issues_to_update = [] From 799b9cbfc5deed97f6de13698194e023821bc818 Mon Sep 17 00:00:00 2001 From: sriramveeraghanta Date: Tue, 31 Mar 2026 17:54:47 +0530 Subject: [PATCH 44/62] chore: adding traget commit sha for the github release --- .github/workflows/build-branch.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build-branch.yml b/.github/workflows/build-branch.yml index 00fc16531d7..8ad71e7d68a 100644 --- a/.github/workflows/build-branch.yml +++ b/.github/workflows/build-branch.yml @@ -397,6 +397,7 @@ jobs: with: tag_name: ${{ env.REL_VERSION }} name: ${{ env.REL_VERSION }} + target_commitish: ${{ github.sha }} draft: false prerelease: ${{ env.IS_PRERELEASE }} generate_release_notes: true From d83944cc8d7820a71b371b18652cd642755fd476 Mon Sep 17 00:00:00 2001 From: Akshat Jain Date: Tue, 31 Mar 2026 17:56:32 +0530 Subject: [PATCH 45/62] [INFRA-346] chore: remove artifacts.plane.so references from community deployments (#8836) --- deployments/aio/community/Dockerfile | 12 ++++++------ deployments/aio/community/README.md | 4 ++-- deployments/cli/community/docker-compose.yml | 18 +++++++++--------- deployments/cli/community/install.sh | 4 ++-- deployments/swarm/community/swarm.sh | 4 ++-- 5 files changed, 21 insertions(+), 21 deletions(-) diff --git a/deployments/aio/community/Dockerfile b/deployments/aio/community/Dockerfile index 47e1227d975..642c9bac6e9 100644 --- a/deployments/aio/community/Dockerfile +++ b/deployments/aio/community/Dockerfile @@ -6,12 +6,12 @@ FROM --platform=$BUILDPLATFORM tonistiigi/binfmt AS binfmt # ************************************************** FROM node:22-alpine AS node -FROM artifacts.plane.so/makeplane/plane-frontend:${PLANE_VERSION} AS web-img -FROM artifacts.plane.so/makeplane/plane-backend:${PLANE_VERSION} AS backend-img -FROM artifacts.plane.so/makeplane/plane-space:${PLANE_VERSION} AS space-img -FROM artifacts.plane.so/makeplane/plane-admin:${PLANE_VERSION} AS admin-img -FROM artifacts.plane.so/makeplane/plane-live:${PLANE_VERSION} AS live-img -FROM artifacts.plane.so/makeplane/plane-proxy:${PLANE_VERSION} AS proxy-img +FROM makeplane/plane-frontend:${PLANE_VERSION} AS web-img +FROM makeplane/plane-backend:${PLANE_VERSION} AS backend-img +FROM makeplane/plane-space:${PLANE_VERSION} AS space-img +FROM makeplane/plane-admin:${PLANE_VERSION} AS admin-img +FROM makeplane/plane-live:${PLANE_VERSION} AS live-img +FROM makeplane/plane-proxy:${PLANE_VERSION} AS proxy-img # ************************************************** # STAGE 1: Runner diff --git a/deployments/aio/community/README.md b/deployments/aio/community/README.md index 96aab6737d4..8e945a826de 100644 --- a/deployments/aio/community/README.md +++ b/deployments/aio/community/README.md @@ -59,7 +59,7 @@ docker run --name plane-aio --rm -it \ -e AWS_ACCESS_KEY_ID=your-access-key \ -e AWS_SECRET_ACCESS_KEY=your-secret-key \ -e AWS_S3_BUCKET_NAME=your-bucket \ - artifacts.plane.so/makeplane/plane-aio-community:latest + makeplane/plane-aio-community:latest ``` ### Example with IP Address @@ -78,7 +78,7 @@ docker run --name myaio --rm -it \ -e AWS_S3_BUCKET_NAME=plane-app \ -e AWS_S3_ENDPOINT_URL=http://${MYIP}:19000 \ -e FILE_SIZE_LIMIT=10485760 \ - artifacts.plane.so/makeplane/plane-aio-community:latest + makeplane/plane-aio-community:latest ``` ## Configuration Options diff --git a/deployments/cli/community/docker-compose.yml b/deployments/cli/community/docker-compose.yml index d4de33a749a..2ed44f03718 100644 --- a/deployments/cli/community/docker-compose.yml +++ b/deployments/cli/community/docker-compose.yml @@ -61,7 +61,7 @@ x-app-env: &app-env services: web: - image: artifacts.plane.so/makeplane/plane-frontend:${APP_RELEASE:-stable} + image: makeplane/plane-frontend:${APP_RELEASE:-stable} deploy: replicas: ${WEB_REPLICAS:-1} restart_policy: @@ -71,7 +71,7 @@ services: - worker space: - image: artifacts.plane.so/makeplane/plane-space:${APP_RELEASE:-stable} + image: makeplane/plane-space:${APP_RELEASE:-stable} deploy: replicas: ${SPACE_REPLICAS:-1} restart_policy: @@ -82,7 +82,7 @@ services: - web admin: - image: artifacts.plane.so/makeplane/plane-admin:${APP_RELEASE:-stable} + image: makeplane/plane-admin:${APP_RELEASE:-stable} deploy: replicas: ${ADMIN_REPLICAS:-1} restart_policy: @@ -92,7 +92,7 @@ services: - web live: - image: artifacts.plane.so/makeplane/plane-live:${APP_RELEASE:-stable} + image: makeplane/plane-live:${APP_RELEASE:-stable} environment: <<: [*live-env, *redis-env] deploy: @@ -104,7 +104,7 @@ services: - web api: - image: artifacts.plane.so/makeplane/plane-backend:${APP_RELEASE:-stable} + image: makeplane/plane-backend:${APP_RELEASE:-stable} command: ./bin/docker-entrypoint-api.sh deploy: replicas: ${API_REPLICAS:-1} @@ -120,7 +120,7 @@ services: - plane-mq worker: - image: artifacts.plane.so/makeplane/plane-backend:${APP_RELEASE:-stable} + image: makeplane/plane-backend:${APP_RELEASE:-stable} command: ./bin/docker-entrypoint-worker.sh deploy: replicas: ${WORKER_REPLICAS:-1} @@ -137,7 +137,7 @@ services: - plane-mq beat-worker: - image: artifacts.plane.so/makeplane/plane-backend:${APP_RELEASE:-stable} + image: makeplane/plane-backend:${APP_RELEASE:-stable} command: ./bin/docker-entrypoint-beat.sh deploy: replicas: ${BEAT_WORKER_REPLICAS:-1} @@ -154,7 +154,7 @@ services: - plane-mq migrator: - image: artifacts.plane.so/makeplane/plane-backend:${APP_RELEASE:-stable} + image: makeplane/plane-backend:${APP_RELEASE:-stable} command: ./bin/docker-entrypoint-migrator.sh deploy: replicas: 1 @@ -216,7 +216,7 @@ services: # Comment this if you already have a reverse proxy running proxy: - image: artifacts.plane.so/makeplane/plane-proxy:${APP_RELEASE:-stable} + image: makeplane/plane-proxy:${APP_RELEASE:-stable} deploy: replicas: 1 restart_policy: diff --git a/deployments/cli/community/install.sh b/deployments/cli/community/install.sh index 582aa839413..accd89c812d 100755 --- a/deployments/cli/community/install.sh +++ b/deployments/cli/community/install.sh @@ -5,7 +5,7 @@ SCRIPT_DIR=$PWD SERVICE_FOLDER=plane-app PLANE_INSTALL_DIR=$PWD/$SERVICE_FOLDER export APP_RELEASE=stable -export DOCKERHUB_USER=artifacts.plane.so/makeplane +export DOCKERHUB_USER=makeplane export PULL_POLICY=${PULL_POLICY:-if_not_present} export GH_REPO=makeplane/plane export RELEASE_DOWNLOAD_URL="https://github.com/$GH_REPO/releases/download" @@ -690,7 +690,7 @@ if [ -f "$DOCKER_ENV_PATH" ]; then CUSTOM_BUILD=$(getEnvValue "CUSTOM_BUILD" "$DOCKER_ENV_PATH") if [ -z "$DOCKERHUB_USER" ]; then - DOCKERHUB_USER=artifacts.plane.so/makeplane + DOCKERHUB_USER=makeplane updateEnvFile "DOCKERHUB_USER" "$DOCKERHUB_USER" "$DOCKER_ENV_PATH" fi diff --git a/deployments/swarm/community/swarm.sh b/deployments/swarm/community/swarm.sh index d496c25e6de..02f170f4d37 100755 --- a/deployments/swarm/community/swarm.sh +++ b/deployments/swarm/community/swarm.sh @@ -5,7 +5,7 @@ SERVICE_FOLDER=plane-app SCRIPT_DIR=$PWD PLANE_INSTALL_DIR=$PWD/$SERVICE_FOLDER export APP_RELEASE="stable" -export DOCKERHUB_USER=artifacts.plane.so/makeplane +export DOCKERHUB_USER=makeplane export GH_REPO=makeplane/plane export RELEASE_DOWNLOAD_URL="https://github.com/$GH_REPO/releases/download" @@ -595,7 +595,7 @@ if [ -f "$DOCKER_ENV_PATH" ]; then APP_RELEASE=$(getEnvValue "APP_RELEASE" "$DOCKER_ENV_PATH") if [ -z "$DOCKERHUB_USER" ]; then - DOCKERHUB_USER=artifacts.plane.so/makeplane + DOCKERHUB_USER=makeplane updateEnvFile "DOCKERHUB_USER" "$DOCKERHUB_USER" "$DOCKER_ENV_PATH" fi From 5747dc6fd818d14ddc3d568ee8237b3444928985 Mon Sep 17 00:00:00 2001 From: sriramveeraghanta Date: Tue, 31 Mar 2026 18:26:41 +0530 Subject: [PATCH 46/62] chore: Intake snooze modal width --- .../core/components/inbox/modals/snooze-issue-modal.tsx | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/apps/web/core/components/inbox/modals/snooze-issue-modal.tsx b/apps/web/core/components/inbox/modals/snooze-issue-modal.tsx index 708458efbbd..1ad83a6b0e5 100644 --- a/apps/web/core/components/inbox/modals/snooze-issue-modal.tsx +++ b/apps/web/core/components/inbox/modals/snooze-issue-modal.tsx @@ -26,7 +26,13 @@ export function InboxIssueSnoozeModal(props: InboxIssueSnoozeModalProps) { const { t } = useTranslation(); return ( - +
Date: Tue, 31 Mar 2026 18:53:51 +0530 Subject: [PATCH 47/62] [INFRA-351] fix: correct directory and command for space program in supervisor.conf #8838 --- deployments/aio/community/supervisor.conf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/deployments/aio/community/supervisor.conf b/deployments/aio/community/supervisor.conf index 33b12985e4b..4474ee3b5cb 100644 --- a/deployments/aio/community/supervisor.conf +++ b/deployments/aio/community/supervisor.conf @@ -18,8 +18,8 @@ priority=10 [program:space] -directory=/app/space/apps/space/build/server -command=sh -c "npx react-router-serve index.js" +directory=/app/space/apps/space +command=sh -c "npx react-router-serve ./build/server/index.js" autostart=true autorestart=true stdout_logfile=/app/logs/access/space.log From a18d90da86e2d66b6f07475218175b0132302359 Mon Sep 17 00:00:00 2001 From: Anmol Singh Bhatia <121005188+anmolsinghbhatia@users.noreply.github.com> Date: Tue, 31 Mar 2026 23:39:34 +0530 Subject: [PATCH 48/62] [WEB-6813] fix: module not associated when accepting intake work items (#8839) * fix: intake module association on accept * chore: code refactoring --- .../components/issues/issue-modal/base.tsx | 102 +++++++++++------- 1 file changed, 66 insertions(+), 36 deletions(-) diff --git a/apps/web/core/components/issues/issue-modal/base.tsx b/apps/web/core/components/issues/issue-modal/base.tsx index c9131dcc92a..80a04f20e9d 100644 --- a/apps/web/core/components/issues/issue-modal/base.tsx +++ b/apps/web/core/components/issues/issue-modal/base.tsx @@ -5,7 +5,7 @@ */ import { useEffect, useRef, useState } from "react"; -import { xor } from "lodash-es"; +import { isEqual, xor } from "lodash-es"; import { observer } from "mobx-react"; import { useParams } from "next/navigation"; // Plane imports @@ -260,6 +260,67 @@ export const CreateUpdateIssueModalBase = observer(function CreateUpdateIssueMod } }; + const handleCycleChange = async (data: Partial | undefined, payload: Partial) => { + if (!workspaceSlug || !data?.project_id || !data?.id) return; + // return if user is not trying to change the cycle, i.e + // - cycle_id is not present in payload + // - cycle_id is the same as the current cycle id + if (!("cycle_id" in payload) || isEqual(data?.cycle_id, payload.cycle_id)) return; + + const slug = workspaceSlug.toString(); + + // Removing the cycle + const currentCycleId = data?.cycle_id; + if (currentCycleId && payload.cycle_id === null) { + await issues.removeIssueFromCycle(slug, data.project_id, currentCycleId, data.id); + fetchCycleDetails(slug, data.project_id, currentCycleId).catch((error) => { + console.error(error); + }); + } + + // Adding the cycle + const newCycleId = payload.cycle_id; + if (newCycleId && newCycleId !== "" && (payload.cycle_id !== cycleId || storeType !== EIssuesStoreType.CYCLE)) { + await addIssueToCycle(data as TBaseIssue, newCycleId); + } + }; + + const handleModuleChange = async (data: Partial, payload: Partial) => { + if (!workspaceSlug || !data?.project_id || !data?.id) return; + // return if user is not trying to change the module, i.e + // - module_ids is not present in payload + // - module_ids is not an array + // - module_ids is the same as the current module ids + if ( + !("module_ids" in payload) || + !Array.isArray(payload.module_ids) || + isEqual(data?.module_ids, payload.module_ids) + ) + return; + + const updatedModuleIds = xor(data.module_ids, payload.module_ids); + const modulesToAdd: string[] = []; + const modulesToRemove: string[] = []; + + for (const moduleId of updatedModuleIds) { + if (data.module_ids?.includes(moduleId)) { + modulesToRemove.push(moduleId); + } else { + modulesToAdd.push(moduleId); + } + } + // update modules if there are modules to add or remove + if (modulesToAdd.length > 0 || modulesToRemove.length > 0) { + await issues.changeModulesInIssue( + workspaceSlug.toString(), + data.project_id, + data.id, + modulesToAdd, + modulesToRemove + ); + } + }; + const handleUpdateIssue = async (payload: Partial): Promise => { if (!workspaceSlug || !payload.project_id || !data?.id) return; @@ -267,41 +328,10 @@ export const CreateUpdateIssueModalBase = observer(function CreateUpdateIssueMod if (isDraft) await draftIssues.updateIssue(workspaceSlug.toString(), data.id, payload); else if (updateIssue) await updateIssue(payload.project_id, data.id, payload); - // check if we should add/remove issue to/from cycle - if ( - payload.cycle_id && - payload.cycle_id !== "" && - (payload.cycle_id !== cycleId || storeType !== EIssuesStoreType.CYCLE) - ) { - await addIssueToCycle(data as TBaseIssue, payload.cycle_id); - } - if (data.cycle_id && !payload.cycle_id && data.project_id) { - await issues.removeIssueFromCycle(workspaceSlug.toString(), data.project_id, data.cycle_id, data.id); - fetchCycleDetails(workspaceSlug.toString(), data.project_id, data.cycle_id); - } - - if (data.module_ids && payload.module_ids && data.project_id) { - const updatedModuleIds = xor(data.module_ids, payload.module_ids); - const modulesToAdd: string[] = []; - const modulesToRemove: string[] = []; - - for (const moduleId of updatedModuleIds) { - if (data.module_ids.includes(moduleId)) { - modulesToRemove.push(moduleId); - } else { - modulesToAdd.push(moduleId); - } - } - await issues.changeModulesInIssue( - workspaceSlug.toString(), - data.project_id, - data.id, - modulesToAdd, - modulesToRemove - ); - } - - // add other property values + // Run cycle, module, and property changes sequentially to avoid + // optimistic store writes from racing against each other. + await handleCycleChange(data, payload); + await handleModuleChange(data, payload); await handleCreateUpdatePropertyValues({ issueId: data.id, issueTypeId: payload.type_id, From 587fe76032fb69275866fdeb655699a70a83c521 Mon Sep 17 00:00:00 2001 From: sriram veeraghanta Date: Mon, 6 Apr 2026 15:54:01 +0530 Subject: [PATCH 49/62] fix: prevent privilege escalation in project member role updates (GHSA-494h-3rcq-5g3c) (#8833) Restrict role modification in ProjectMemberViewSet.partial_update to Admins only and enforce that requesters cannot modify or assign roles equal to or higher than their own. Previously, Guests could demote Admins by exploiting a missing lower-bound check on role changes. Co-authored-by: Claude Opus 4.6 (1M context) --- apps/api/plane/app/views/project/member.py | 43 +++++++++++++++------- 1 file changed, 29 insertions(+), 14 deletions(-) diff --git a/apps/api/plane/app/views/project/member.py b/apps/api/plane/app/views/project/member.py index 1ad7639fb8b..7dfe7090013 100644 --- a/apps/api/plane/app/views/project/member.py +++ b/apps/api/plane/app/views/project/member.py @@ -226,21 +226,36 @@ def partial_update(self, request, slug, project_id, pk): is_active=True, ) - if workspace_role in [5] and int(request.data.get("role", project_member.role)) in [15, 20]: - return Response( - {"error": "You cannot add a user with role higher than the workspace role"}, - status=status.HTTP_400_BAD_REQUEST, - ) + if "role" in request.data: + # Only Admins can modify roles + if requested_project_member.role < ROLE.ADMIN.value and not is_workspace_admin: + return Response( + {"error": "You do not have permission to update roles"}, + status=status.HTTP_403_FORBIDDEN, + ) - if ( - "role" in request.data - and int(request.data.get("role", project_member.role)) > requested_project_member.role - and not is_workspace_admin - ): - return Response( - {"error": "You cannot update a role that is higher than your own role"}, - status=status.HTTP_400_BAD_REQUEST, - ) + # Cannot modify a member whose role is equal to or higher than your own + if project_member.role >= requested_project_member.role and not is_workspace_admin: + return Response( + {"error": "You cannot update the role of a member with a role equal to or higher than your own"}, + status=status.HTTP_403_FORBIDDEN, + ) + + new_role = int(request.data.get("role")) + + # Cannot assign a role equal to or higher than your own + if new_role >= requested_project_member.role and not is_workspace_admin: + return Response( + {"error": "You cannot assign a role equal to or higher than your own"}, + status=status.HTTP_403_FORBIDDEN, + ) + + # Cannot assign a role higher than the target's workspace role + if workspace_role in [5] and new_role in [15, 20]: + return Response( + {"error": "You cannot add a user with role higher than the workspace role"}, + status=status.HTTP_400_BAD_REQUEST, + ) serializer = ProjectMemberSerializer(project_member, data=request.data, partial=True) From 63fac3b8c488eb0afb8ec7d6731688c77ed72e24 Mon Sep 17 00:00:00 2001 From: sriram veeraghanta Date: Mon, 6 Apr 2026 16:04:43 +0530 Subject: [PATCH 50/62] fix: validate redirects in favicon fetching to prevent SSRF (#8858) * fix: validate redirects in favicon fetching to prevent SSRF The previous SSRF fix (GHSA-jcc6-f9v6-f7jw) only validated redirects for the main page URL but not for the favicon fetch path. An attacker could craft an HTML page with a favicon link that redirects to a private IP, bypassing the IP validation and leaking internal network data as base64. Extract a reusable `safe_get()` function that validates every redirect hop against private/internal IPs and use it for both page and favicon fetches. Resolves: GHSA-9fr2-pprw-pp9j Co-Authored-By: Claude Opus 4.6 (1M context) * fix: address PR review feedback for SSRF favicon fix - Fix off-by-one in redirect limit: only raise RuntimeError when the response is still a redirect after MAX_REDIRECTS hops, not when the final response is a successful 200 - Return final URL from safe_get() so favicon href resolution uses the correct origin after redirects instead of the original URL - Add unit tests for validate_url_ip and safe_get covering private IP blocking, redirect-following, and redirect limit enforcement Co-Authored-By: Claude Opus 4.6 (1M context) --------- Co-authored-by: Claude Opus 4.6 (1M context) --- apps/api/plane/bgtasks/work_item_link_task.py | 76 +++++++---- .../unit/bg_tasks/test_work_item_link_task.py | 126 ++++++++++++++++++ 2 files changed, 178 insertions(+), 24 deletions(-) create mode 100644 apps/api/plane/tests/unit/bg_tasks/test_work_item_link_task.py diff --git a/apps/api/plane/bgtasks/work_item_link_task.py b/apps/api/plane/bgtasks/work_item_link_task.py index 442396c7f02..5cf0fbb1908 100644 --- a/apps/api/plane/bgtasks/work_item_link_task.py +++ b/apps/api/plane/bgtasks/work_item_link_task.py @@ -13,7 +13,7 @@ from urllib.parse import urlparse, urljoin import base64 import ipaddress -from typing import Dict, Any +from typing import Dict, Any, Tuple from typing import Optional from plane.db.models import IssueLink from plane.utils.exception_logger import log_exception @@ -66,6 +66,52 @@ def validate_url_ip(url: str) -> None: MAX_REDIRECTS = 5 +def safe_get( + url: str, + headers: Optional[Dict[str, str]] = None, + timeout: int = 1, +) -> Tuple[requests.Response, str]: + """ + Perform a GET request that validates every redirect hop against private IPs. + Prevents SSRF by ensuring no redirect lands on a private/internal address. + + Args: + url: The URL to fetch + headers: Optional request headers + timeout: Request timeout in seconds + + Returns: + A tuple of (final Response object, final URL after redirects) + + Raises: + ValueError: If any URL in the redirect chain points to a private IP + requests.RequestException: On network errors + RuntimeError: If max redirects exceeded + """ + validate_url_ip(url) + + current_url = url + response = requests.get( + current_url, headers=headers, timeout=timeout, allow_redirects=False + ) + + redirect_count = 0 + while response.is_redirect: + if redirect_count >= MAX_REDIRECTS: + raise RuntimeError(f"Too many redirects for URL: {url}") + redirect_url = response.headers.get("Location") + if not redirect_url: + break + current_url = urljoin(current_url, redirect_url) + validate_url_ip(current_url) + redirect_count += 1 + response = requests.get( + current_url, headers=headers, timeout=timeout, allow_redirects=False + ) + + return response, current_url + + def crawl_work_item_link_title_and_favicon(url: str) -> Dict[str, Any]: """ Crawls a URL to extract the title and favicon. @@ -86,26 +132,8 @@ def crawl_work_item_link_title_and_favicon(url: str) -> Dict[str, Any]: title = None final_url = url - validate_url_ip(final_url) - try: - # Manually follow redirects to validate each URL before requesting - redirect_count = 0 - response = requests.get(final_url, headers=headers, timeout=1, allow_redirects=False) - - while response.is_redirect and redirect_count < MAX_REDIRECTS: - redirect_url = response.headers.get("Location") - if not redirect_url: - break - # Resolve relative redirects against current URL - final_url = urljoin(final_url, redirect_url) - # Validate the redirect target BEFORE making the request - validate_url_ip(final_url) - redirect_count += 1 - response = requests.get(final_url, headers=headers, timeout=1, allow_redirects=False) - - if redirect_count >= MAX_REDIRECTS: - logger.warning(f"Too many redirects for URL: {url}") + response, final_url = safe_get(url, headers=headers) soup = BeautifulSoup(response.content, "html.parser") title_tag = soup.find("title") @@ -113,8 +141,10 @@ def crawl_work_item_link_title_and_favicon(url: str) -> Dict[str, Any]: except requests.RequestException as e: logger.warning(f"Failed to fetch HTML for title: {str(e)}") + except (ValueError, RuntimeError) as e: + logger.warning(f"URL validation failed: {str(e)}") - # Fetch and encode favicon using final URL (after redirects) + # Fetch and encode favicon using final URL (after redirects) for correct relative href resolution favicon_base64 = fetch_and_encode_favicon(headers, soup, final_url) # Prepare result @@ -204,9 +234,7 @@ def fetch_and_encode_favicon( "favicon_base64": f"data:image/svg+xml;base64,{DEFAULT_FAVICON}", } - validate_url_ip(favicon_url) - - response = requests.get(favicon_url, headers=headers, timeout=1) + response, _ = safe_get(favicon_url, headers=headers) # Get content type content_type = response.headers.get("content-type", "image/x-icon") diff --git a/apps/api/plane/tests/unit/bg_tasks/test_work_item_link_task.py b/apps/api/plane/tests/unit/bg_tasks/test_work_item_link_task.py new file mode 100644 index 00000000000..2838260e890 --- /dev/null +++ b/apps/api/plane/tests/unit/bg_tasks/test_work_item_link_task.py @@ -0,0 +1,126 @@ +# Copyright (c) 2023-present Plane Software, Inc. and contributors +# SPDX-License-Identifier: AGPL-3.0-only +# See the LICENSE file for details. + +import pytest +from unittest.mock import patch, MagicMock +from plane.bgtasks.work_item_link_task import safe_get, validate_url_ip + + +def _make_response(status_code=200, headers=None, is_redirect=False, content=b""): + """Create a mock requests.Response.""" + resp = MagicMock() + resp.status_code = status_code + resp.is_redirect = is_redirect + resp.headers = headers or {} + resp.content = content + return resp + + +@pytest.mark.unit +class TestValidateUrlIp: + """Test validate_url_ip blocks private/internal IPs.""" + + def test_rejects_private_ip(self): + with patch("plane.bgtasks.work_item_link_task.socket.getaddrinfo") as mock_dns: + mock_dns.return_value = [(None, None, None, None, ("192.168.1.1", 0))] + with pytest.raises(ValueError, match="private/internal"): + validate_url_ip("http://example.com") + + def test_rejects_loopback(self): + with patch("plane.bgtasks.work_item_link_task.socket.getaddrinfo") as mock_dns: + mock_dns.return_value = [(None, None, None, None, ("127.0.0.1", 0))] + with pytest.raises(ValueError, match="private/internal"): + validate_url_ip("http://example.com") + + def test_rejects_non_http_scheme(self): + with pytest.raises(ValueError, match="Only HTTP and HTTPS"): + validate_url_ip("file:///etc/passwd") + + def test_allows_public_ip(self): + with patch("plane.bgtasks.work_item_link_task.socket.getaddrinfo") as mock_dns: + mock_dns.return_value = [(None, None, None, None, ("93.184.216.34", 0))] + validate_url_ip("https://example.com") # Should not raise + + +@pytest.mark.unit +class TestSafeGet: + """Test safe_get follows redirects safely and blocks SSRF.""" + + @patch("plane.bgtasks.work_item_link_task.requests.get") + @patch("plane.bgtasks.work_item_link_task.validate_url_ip") + def test_returns_response_for_non_redirect(self, mock_validate, mock_get): + final_resp = _make_response(status_code=200, content=b"OK") + mock_get.return_value = final_resp + + response, final_url = safe_get("https://example.com") + + assert response is final_resp + assert final_url == "https://example.com" + mock_validate.assert_called_once_with("https://example.com") + + @patch("plane.bgtasks.work_item_link_task.requests.get") + @patch("plane.bgtasks.work_item_link_task.validate_url_ip") + def test_follows_redirect_and_validates_each_hop(self, mock_validate, mock_get): + redirect_resp = _make_response( + status_code=301, + is_redirect=True, + headers={"Location": "https://other.com/page"}, + ) + final_resp = _make_response(status_code=200, content=b"OK") + mock_get.side_effect = [redirect_resp, final_resp] + + response, final_url = safe_get("https://example.com") + + assert response is final_resp + assert final_url == "https://other.com/page" + # Should validate both the initial URL and the redirect target + assert mock_validate.call_count == 2 + mock_validate.assert_any_call("https://example.com") + mock_validate.assert_any_call("https://other.com/page") + + @patch("plane.bgtasks.work_item_link_task.requests.get") + @patch("plane.bgtasks.work_item_link_task.validate_url_ip") + def test_blocks_redirect_to_private_ip(self, mock_validate, mock_get): + redirect_resp = _make_response( + status_code=302, + is_redirect=True, + headers={"Location": "http://192.168.1.1:8080"}, + ) + mock_get.return_value = redirect_resp + # First call (initial URL) succeeds, second call (redirect target) fails + mock_validate.side_effect = [None, ValueError("Access to private/internal networks is not allowed")] + + with pytest.raises(ValueError, match="private/internal"): + safe_get("https://evil.com/redirect") + + @patch("plane.bgtasks.work_item_link_task.requests.get") + @patch("plane.bgtasks.work_item_link_task.validate_url_ip") + def test_raises_on_too_many_redirects(self, mock_validate, mock_get): + redirect_resp = _make_response( + status_code=302, + is_redirect=True, + headers={"Location": "https://example.com/loop"}, + ) + mock_get.return_value = redirect_resp + + with pytest.raises(RuntimeError, match="Too many redirects"): + safe_get("https://example.com/start") + + @patch("plane.bgtasks.work_item_link_task.requests.get") + @patch("plane.bgtasks.work_item_link_task.validate_url_ip") + def test_succeeds_at_exact_max_redirects(self, mock_validate, mock_get): + """After exactly MAX_REDIRECTS hops, if the final response is 200, it should succeed.""" + redirect_resp = _make_response( + status_code=302, + is_redirect=True, + headers={"Location": "https://example.com/next"}, + ) + final_resp = _make_response(status_code=200, content=b"OK") + # 5 redirects then a 200 + mock_get.side_effect = [redirect_resp] * 5 + [final_resp] + + response, final_url = safe_get("https://example.com/start") + + assert response is final_resp + assert not response.is_redirect From bb128e3e1630707bceaed747d52d42a8c4966227 Mon Sep 17 00:00:00 2001 From: sriram veeraghanta Date: Mon, 6 Apr 2026 16:04:57 +0530 Subject: [PATCH 51/62] chore: upgrade turbo from v2.8.12 to v2.9.4 (#8859) --- apps/admin/Dockerfile.admin | 2 +- apps/live/Dockerfile.live | 2 +- apps/space/Dockerfile.space | 2 +- apps/web/Dockerfile.web | 2 +- package.json | 5 +- pnpm-lock.yaml | 170 ++++++++++++++++++------------------ pnpm-workspace.yaml | 2 +- 7 files changed, 94 insertions(+), 91 deletions(-) diff --git a/apps/admin/Dockerfile.admin b/apps/admin/Dockerfile.admin index 63b30a1c31d..19ad2c392a1 100644 --- a/apps/admin/Dockerfile.admin +++ b/apps/admin/Dockerfile.admin @@ -13,7 +13,7 @@ RUN corepack enable pnpm FROM base AS builder -RUN pnpm add -g turbo@2.8.12 +RUN pnpm add -g turbo@2.9.4 COPY . . diff --git a/apps/live/Dockerfile.live b/apps/live/Dockerfile.live index 58d3f58c713..801afca67f9 100644 --- a/apps/live/Dockerfile.live +++ b/apps/live/Dockerfile.live @@ -15,7 +15,7 @@ RUN apk update RUN apk add --no-cache libc6-compat # Set working directory WORKDIR /app -ARG TURBO_VERSION=2.8.12 +ARG TURBO_VERSION=2.9.4 RUN corepack enable pnpm && pnpm add -g turbo@${TURBO_VERSION} COPY . . RUN turbo prune --scope=live --docker diff --git a/apps/space/Dockerfile.space b/apps/space/Dockerfile.space index 10bc612f6c9..60d4a155aa8 100644 --- a/apps/space/Dockerfile.space +++ b/apps/space/Dockerfile.space @@ -13,7 +13,7 @@ RUN corepack enable pnpm FROM base AS builder -RUN pnpm add -g turbo@2.8.12 +RUN pnpm add -g turbo@2.9.4 COPY . . diff --git a/apps/web/Dockerfile.web b/apps/web/Dockerfile.web index ab1a4046296..38af19e74ba 100644 --- a/apps/web/Dockerfile.web +++ b/apps/web/Dockerfile.web @@ -14,7 +14,7 @@ RUN apk add --no-cache libc6-compat # Set working directory WORKDIR /app -ARG TURBO_VERSION=2.8.12 +ARG TURBO_VERSION=2.9.4 RUN corepack enable pnpm && pnpm add -g turbo@${TURBO_VERSION} COPY . . diff --git a/package.json b/package.json index ffe45b22fb1..ec1fdbc00d1 100644 --- a/package.json +++ b/package.json @@ -24,7 +24,7 @@ "lint-staged": "16.2.7", "oxfmt": "0.35.0", "oxlint": "1.51.0", - "turbo": "2.8.12" + "turbo": "2.9.4" }, "lint-staged": { "*.{js,jsx,ts,tsx,cjs,mjs,cts,mts,json,css,md}": [ @@ -75,7 +75,8 @@ "picomatch": "2.3.2", "yaml@1": "1.10.3", "yaml@2": "2.8.3", - "path-to-regexp": "0.1.13" + "path-to-regexp": "0.1.13", + "defu": "6.1.5" }, "onlyBuiltDependencies": [ "@parcel/watcher", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 7929b2669b8..e048c47f888 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -103,7 +103,7 @@ overrides: qs: 6.14.2 diff: 5.2.2 webpack: 5.104.1 - lodash-es: 4.17.23 + lodash-es: 4.18.0 '@isaacs/brace-expansion': 5.0.1 lodash: 4.17.23 markdown-it: 14.1.1 @@ -119,6 +119,7 @@ overrides: yaml@1: 1.10.3 yaml@2: 2.8.3 path-to-regexp: 0.1.13 + defu: 6.1.5 importers: @@ -137,8 +138,8 @@ importers: specifier: 1.51.0 version: 1.51.0 turbo: - specifier: 2.8.12 - version: 2.8.12 + specifier: 2.9.4 + version: 2.9.4 apps/admin: dependencies: @@ -194,8 +195,8 @@ importers: specifier: ^5.1.31 version: 5.1.31 lodash-es: - specifier: 4.17.23 - version: 4.17.23 + specifier: 4.18.0 + version: 4.18.0 lucide-react: specifier: 'catalog:' version: 0.469.0(react@18.3.1) @@ -472,8 +473,8 @@ importers: specifier: ^5.1.31 version: 5.1.31 lodash-es: - specifier: 4.17.23 - version: 4.17.23 + specifier: 4.18.0 + version: 4.18.0 lucide-react: specifier: 'catalog:' version: 0.469.0(react@18.3.1) @@ -644,8 +645,8 @@ importers: specifier: ^5.1.31 version: 5.1.31 lodash-es: - specifier: 4.17.23 - version: 4.17.23 + specifier: 4.18.0 + version: 4.18.0 lucide-react: specifier: 'catalog:' version: 0.469.0(react@18.3.1) @@ -937,8 +938,8 @@ importers: specifier: ^4.3.2 version: 4.3.2 lodash-es: - specifier: 4.17.23 - version: 4.17.23 + specifier: 4.18.0 + version: 4.18.0 lowlight: specifier: ^3.0.0 version: 3.3.0 @@ -1035,8 +1036,8 @@ importers: specifier: ^10.7.11 version: 10.7.16 lodash-es: - specifier: 4.17.23 - version: 4.17.23 + specifier: 4.18.0 + version: 4.18.0 mobx: specifier: 'catalog:' version: 6.12.0 @@ -1216,8 +1217,8 @@ importers: specifier: workspace:* version: link:../utils lodash-es: - specifier: 4.17.23 - version: 4.17.23 + specifier: 4.18.0 + version: 4.18.0 mobx: specifier: 'catalog:' version: 6.12.0 @@ -1332,8 +1333,8 @@ importers: specifier: ^2.0.0 version: 2.1.1 lodash-es: - specifier: 4.17.23 - version: 4.17.23 + specifier: 4.18.0 + version: 4.18.0 lucide-react: specifier: 'catalog:' version: 0.469.0(react@18.3.1) @@ -1456,8 +1457,8 @@ importers: specifier: ^10.1.2 version: 10.1.2 lodash-es: - specifier: 4.17.23 - version: 4.17.23 + specifier: 4.18.0 + version: 4.18.0 lucide-react: specifier: 'catalog:' version: 0.469.0(react@18.3.1) @@ -4188,6 +4189,36 @@ packages: '@tokenizer/token@0.3.0': resolution: {integrity: sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==} + '@turbo/darwin-64@2.9.4': + resolution: {integrity: sha512-ZSlPqJ5Vqg/wgVw8P3AOVCIosnbBilOxLq7TMz3MN/9U46DUYfdG2jtfevNDufyxyrg98pcPs/GBgDRaaids6g==} + cpu: [x64] + os: [darwin] + + '@turbo/darwin-arm64@2.9.4': + resolution: {integrity: sha512-9cjTWe4OiNlFMSRggPNh+TJlRs7MS5FWrHc96MOzft5vESWjjpvaadYPv5ykDW7b45mVHOF2U/W+48LoX9USWw==} + cpu: [arm64] + os: [darwin] + + '@turbo/linux-64@2.9.4': + resolution: {integrity: sha512-Cl1GjxqBXQ+r9KKowmXG+lhD1gclLp48/SE7NxL//66iaMytRw0uiphWGOkccD92iPiRjHLRUaA9lOTtgr5OCA==} + cpu: [x64] + os: [linux] + + '@turbo/linux-arm64@2.9.4': + resolution: {integrity: sha512-j2hPAKVmGNN2EsKigEWD+43y9m7zaPhNAs6ptsyfq0u7evHHBAXAwOfv86OEMg/gvC+pwGip0i1CIm1bR1vYug==} + cpu: [arm64] + os: [linux] + + '@turbo/windows-64@2.9.4': + resolution: {integrity: sha512-1jWPjCe9ZRmsDTXE7uzqfySNQspnUx0g6caqvwps+k/sc+fm9hC/4zRQKlXZLbVmP3Xxp601Ju71boegHdnYGw==} + cpu: [x64] + os: [win32] + + '@turbo/windows-arm64@2.9.4': + resolution: {integrity: sha512-dlko15TQVu/BFYmIY018Y3covWMRQlUgAkD+OOk+Rokcfj6VY02Vv4mCfT/Zns6B4q8jGbOd6IZhnCFYsE8Viw==} + cpu: [arm64] + os: [win32] + '@tybys/wasm-util@0.10.1': resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==} @@ -5259,8 +5290,8 @@ packages: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} engines: {node: '>= 0.4'} - defu@6.1.4: - resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==} + defu@6.1.5: + resolution: {integrity: sha512-pwdBJxJuJXmqrLO6s0VBmfbRz+G7FUzkjldAsdi9Yrv86mPyzq0ll1o8+8gB4Gsr6GJHbK1Lh3ngllgTInDCjA==} delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} @@ -6410,8 +6441,9 @@ packages: resolution: {integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==} engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} - lodash-es@4.17.23: - resolution: {integrity: sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==} + lodash-es@4.18.0: + resolution: {integrity: sha512-koAgswPPA+UTaPN64Etp+PGP+WT6oqOS2NMi5yDkMaiGw9qY4VxQbQF0mtKMyr4BlTznWyzePV5UpECTJQmSUA==} + deprecated: Bad release. Please use lodash-es@4.17.23 instead. lodash.debounce@4.0.8: resolution: {integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==} @@ -8222,38 +8254,8 @@ packages: tslib@2.8.1: resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} - turbo-darwin-64@2.8.12: - resolution: {integrity: sha512-EiHJmW2MeQQx+21x8hjMHw/uPhXt9PIxvDrxzOtyVwrXzL0tQmsxtO4qHf2l7uA+K6PUJ4+TjY1MHZDuCvWXrw==} - cpu: [x64] - os: [darwin] - - turbo-darwin-arm64@2.8.12: - resolution: {integrity: sha512-cbqqGN0vd7ly2TeuaM8k9AK9u1CABO4kBA5KPSqovTiLL3sORccn/mZzJSbvQf0EsYRfU34MgW5FotfwW3kx8Q==} - cpu: [arm64] - os: [darwin] - - turbo-linux-64@2.8.12: - resolution: {integrity: sha512-jXKw9j4r4q6s0goSXuKI3aKbQK2qiNeP25lGGEnq018TM6SWRW1CCpPMxyG91aCKrub7wDm/K45sGNT4ZFBcFQ==} - cpu: [x64] - os: [linux] - - turbo-linux-arm64@2.8.12: - resolution: {integrity: sha512-BRJCMdyXjyBoL0GYpvj9d2WNfMHwc3tKmJG5ATn2Efvil9LsiOsd/93/NxDqW0jACtHFNVOPnd/CBwXRPiRbwA==} - cpu: [arm64] - os: [linux] - - turbo-windows-64@2.8.12: - resolution: {integrity: sha512-vyFOlpFFzQFkikvSVhVkESEfzIopgs2J7J1rYvtSwSHQ4zmHxkC95Q8Kjkus8gg+8X2mZyP1GS5jirmaypGiPw==} - cpu: [x64] - os: [win32] - - turbo-windows-arm64@2.8.12: - resolution: {integrity: sha512-9nRnlw5DF0LkJClkIws1evaIF36dmmMEO84J5Uj4oQ8C0QTHwlH7DNe5Kq2Jdmu8GXESCNDNuUYG8Cx6W/vm3g==} - cpu: [arm64] - os: [win32] - - turbo@2.8.12: - resolution: {integrity: sha512-auUAMLmi0eJhxDhQrxzvuhfEbICnVt0CTiYQYY8WyRJ5nwCDZxD0JG8bCSxT4nusI2CwJzmZAay5BfF6LmK7Hw==} + turbo@2.9.4: + resolution: {integrity: sha512-wZ/kMcZCuK5oEp7sXSSo/5fzKjP9I2EhoiarZjyCm2Ixk0WxFrC/h0gF3686eHHINoFQOOSWgB/pGfvkR8rkgQ==} hasBin: true tween-functions@1.2.0: @@ -11367,6 +11369,24 @@ snapshots: '@tokenizer/token@0.3.0': {} + '@turbo/darwin-64@2.9.4': + optional: true + + '@turbo/darwin-arm64@2.9.4': + optional: true + + '@turbo/linux-64@2.9.4': + optional: true + + '@turbo/linux-arm64@2.9.4': + optional: true + + '@turbo/windows-64@2.9.4': + optional: true + + '@turbo/windows-arm64@2.9.4': + optional: true + '@tybys/wasm-util@0.10.1': dependencies: tslib: 2.8.1 @@ -12535,7 +12555,7 @@ snapshots: has-property-descriptors: 1.0.2 object-keys: 1.1.1 - defu@6.1.4: {} + defu@6.1.5: {} delayed-stream@1.0.0: {} @@ -13753,7 +13773,7 @@ snapshots: dependencies: p-locate: 6.0.0 - lodash-es@4.17.23: {} + lodash-es@4.18.0: {} lodash.debounce@4.0.8: {} @@ -15021,7 +15041,7 @@ snapshots: dependencies: '@icons/material': 0.2.4(react@18.3.1) lodash: 4.17.23 - lodash-es: 4.17.23 + lodash-es: 4.18.0 material-colors: 1.2.6 prop-types: 15.8.1 react: 18.3.1 @@ -16027,32 +16047,14 @@ snapshots: tslib@2.8.1: {} - turbo-darwin-64@2.8.12: - optional: true - - turbo-darwin-arm64@2.8.12: - optional: true - - turbo-linux-64@2.8.12: - optional: true - - turbo-linux-arm64@2.8.12: - optional: true - - turbo-windows-64@2.8.12: - optional: true - - turbo-windows-arm64@2.8.12: - optional: true - - turbo@2.8.12: + turbo@2.9.4: optionalDependencies: - turbo-darwin-64: 2.8.12 - turbo-darwin-arm64: 2.8.12 - turbo-linux-64: 2.8.12 - turbo-linux-arm64: 2.8.12 - turbo-windows-64: 2.8.12 - turbo-windows-arm64: 2.8.12 + '@turbo/darwin-64': 2.9.4 + '@turbo/darwin-arm64': 2.9.4 + '@turbo/linux-64': 2.9.4 + '@turbo/linux-arm64': 2.9.4 + '@turbo/windows-64': 2.9.4 + '@turbo/windows-arm64': 2.9.4 tween-functions@1.2.0: {} @@ -16079,7 +16081,7 @@ snapshots: unconfig@7.5.0: dependencies: '@quansync/fs': 1.0.0 - defu: 6.1.4 + defu: 6.1.5 jiti: 2.6.1 quansync: 1.0.0 unconfig-core: 7.5.0 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 011d59c6754..b20c3be19de 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -21,7 +21,7 @@ catalog: "@types/react": 18.3.11 axios: 1.13.5 express: 4.22.0 - lodash-es: 4.17.23 + lodash-es: 4.18.0 lucide-react: 0.469.0 mobx-react: 9.1.1 mobx-utils: 6.0.8 From d1db13c3a7cc9a341286af4558e4f0383488db0b Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 7 Apr 2026 13:18:46 +0530 Subject: [PATCH 52/62] chore(deps): bump vite in the npm_and_yarn group across 1 directory (#8863) Bumps the npm_and_yarn group with 1 update in the / directory: [vite](https://github.com/vitejs/vite/tree/HEAD/packages/vite). Updates `vite` from 7.3.1 to 7.3.2 - [Release notes](https://github.com/vitejs/vite/releases) - [Changelog](https://github.com/vitejs/vite/blob/v7.3.2/packages/vite/CHANGELOG.md) - [Commits](https://github.com/vitejs/vite/commits/v7.3.2/packages/vite) --- updated-dependencies: - dependency-name: vite dependency-version: 7.3.2 dependency-type: direct:production dependency-group: npm_and_yarn ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- pnpm-lock.yaml | 324 ++++++++++++++++++++++---------------------- pnpm-workspace.yaml | 2 +- 2 files changed, 163 insertions(+), 163 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index e048c47f888..a469bae0e3e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -99,7 +99,7 @@ overrides: prosemirror-view: 1.40.0 '@types/express': 4.17.23 typescript: 5.8.3 - vite: 7.3.1 + vite: 7.3.2 qs: 6.14.2 diff: 5.2.2 webpack: 5.104.1 @@ -239,7 +239,7 @@ importers: version: link:../../packages/typescript-config '@react-router/dev': specifier: 'catalog:' - version: 7.13.1(@react-router/serve@7.13.1(react-router@7.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.8.3))(@types/node@22.12.0)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.30.2)(react-router@7.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(typescript@5.8.3)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))(yaml@2.8.3) + version: 7.13.1(@react-router/serve@7.13.1(react-router@7.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.8.3))(@types/node@22.12.0)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.30.2)(react-router@7.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(typescript@5.8.3)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))(yaml@2.8.3) '@types/lodash-es': specifier: 'catalog:' version: 4.17.12 @@ -259,11 +259,11 @@ importers: specifier: 5.8.3 version: 5.8.3 vite: - specifier: 7.3.1 - version: 7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3) + specifier: 7.3.2 + version: 7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3) vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.8.3)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + version: 5.1.4(typescript@5.8.3)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) apps/live: dependencies: @@ -523,7 +523,7 @@ importers: version: link:../../packages/typescript-config '@react-router/dev': specifier: 'catalog:' - version: 7.13.1(@react-router/serve@7.13.1(react-router@7.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.8.3))(@types/node@22.12.0)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.30.2)(react-router@7.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(typescript@5.8.3)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))(yaml@2.8.3) + version: 7.13.1(@react-router/serve@7.13.1(react-router@7.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.8.3))(@types/node@22.12.0)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.30.2)(react-router@7.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(typescript@5.8.3)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))(yaml@2.8.3) '@tailwindcss/typography': specifier: 0.5.19 version: 0.5.19 @@ -546,11 +546,11 @@ importers: specifier: 5.8.3 version: 5.8.3 vite: - specifier: 7.3.1 - version: 7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3) + specifier: 7.3.2 + version: 7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3) vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.8.3)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + version: 5.1.4(typescript@5.8.3)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) apps/web: dependencies: @@ -725,7 +725,7 @@ importers: version: link:../../packages/typescript-config '@react-router/dev': specifier: 'catalog:' - version: 7.13.1(@react-router/serve@7.13.1(react-router@7.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.8.3))(@types/node@22.12.0)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.30.2)(react-router@7.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(typescript@5.8.3)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))(yaml@2.8.3) + version: 7.13.1(@react-router/serve@7.13.1(react-router@7.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.8.3))(@types/node@22.12.0)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.30.2)(react-router@7.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(typescript@5.8.3)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))(yaml@2.8.3) '@tailwindcss/typography': specifier: 0.5.19 version: 0.5.19 @@ -751,11 +751,11 @@ importers: specifier: 5.8.3 version: 5.8.3 vite: - specifier: 7.3.1 - version: 7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3) + specifier: 7.3.2 + version: 7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3) vite-tsconfig-paths: specifier: ^5.1.4 - version: 5.1.4(typescript@5.8.3)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + version: 5.1.4(typescript@5.8.3)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) packages/codemods: devDependencies: @@ -1157,13 +1157,13 @@ importers: version: link:../typescript-config '@storybook/addon-designs': specifier: 10.0.2 - version: 10.0.2(@storybook/addon-docs@9.1.10(@types/react@18.3.11)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + version: 10.0.2(@storybook/addon-docs@9.1.10(@types/react@18.3.11)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) '@storybook/addon-docs': specifier: 9.1.10 - version: 9.1.10(@types/react@18.3.11)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + version: 9.1.10(@types/react@18.3.11)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) '@storybook/react-vite': specifier: 9.1.10 - version: 9.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(typescript@5.8.3)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + version: 9.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(typescript@5.8.3)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) '@types/react': specifier: 'catalog:' version: 18.3.11 @@ -1172,7 +1172,7 @@ importers: version: 18.3.1 storybook: specifier: 9.1.19 - version: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + version: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) tsdown: specifier: 'catalog:' version: 0.16.0(typescript@5.8.3)(unrun@0.2.34) @@ -1371,34 +1371,34 @@ importers: version: link:../typescript-config '@storybook/addon-essentials': specifier: ^8.1.1 - version: 8.6.14(@types/react@18.3.11)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + version: 8.6.14(@types/react@18.3.11)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) '@storybook/addon-interactions': specifier: ^8.1.1 - version: 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + version: 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) '@storybook/addon-links': specifier: ^8.1.1 - version: 8.6.14(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + version: 8.6.14(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) '@storybook/addon-onboarding': specifier: ^8.1.1 - version: 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + version: 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) '@storybook/addon-styling-webpack': specifier: ^1.0.0 - version: 1.0.1(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(webpack@5.104.1(@swc/core@1.13.5(@swc/helpers@0.5.17))) + version: 1.0.1(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(webpack@5.104.1(@swc/core@1.13.5(@swc/helpers@0.5.17))) '@storybook/addon-webpack5-compiler-swc': specifier: ^1.0.2 version: 1.0.6(@swc/helpers@0.5.17)(webpack@5.104.1(@swc/core@1.13.5(@swc/helpers@0.5.17))) '@storybook/blocks': specifier: ^8.1.1 - version: 8.6.14(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + version: 8.6.14(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) '@storybook/react': specifier: ^8.1.1 - version: 8.6.14(@storybook/test@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(typescript@5.8.3) + version: 8.6.14(@storybook/test@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(typescript@5.8.3) '@storybook/react-webpack5': specifier: ^8.1.1 - version: 8.6.14(@storybook/test@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(typescript@5.8.3) + version: 8.6.14(@storybook/test@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(typescript@5.8.3) '@storybook/test': specifier: ^8.1.1 - version: 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + version: 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) '@types/lodash-es': specifier: 'catalog:' version: 4.17.12 @@ -1425,7 +1425,7 @@ importers: version: 6.2.0(postcss@8.5.6) storybook: specifier: 9.1.19 - version: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + version: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) tsdown: specifier: 'catalog:' version: 0.16.0(typescript@5.8.3)(unrun@0.2.34) @@ -2321,7 +2321,7 @@ packages: resolution: {integrity: sha512-J4BaTocTOYFkMHIra1JDWrMWpNmBl4EkplIwHEsV8aeUOtdWjwSnln9U7twjMFTAEB7mptNtSKyVi1Y2W9sDJw==} peerDependencies: typescript: 5.8.3 - vite: 7.3.1 + vite: 7.3.2 peerDependenciesMeta: typescript: optional: true @@ -3103,7 +3103,7 @@ packages: react-router: ^7.13.1 react-server-dom-webpack: ^19.2.3 typescript: 5.8.3 - vite: 7.3.1 + vite: 7.3.2 wrangler: ^3.28.2 || ^4.0.0 peerDependenciesMeta: '@react-router/serve': @@ -3603,7 +3603,7 @@ packages: resolution: {integrity: sha512-0ogI+toZJYaFptcFpRcRPOZ9/NrFUYhiaI09ggeEB1FF9ygHMVsobp4eaj4HjZI6V3x7cQwkd2ZmxAMQDBQuMA==} peerDependencies: storybook: ^9.1.10 - vite: 7.3.1 + vite: 7.3.2 '@storybook/builder-webpack5@8.6.14': resolution: {integrity: sha512-YZYAqc6NBKoMTKZpjxnkMch6zDtMkBZdS/yaji1+wJX2QPFBwTbSh7SpeBxDp1S11gXSAJ4f1btUWeqSqo8nJA==} @@ -3703,7 +3703,7 @@ packages: react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta storybook: ^9.1.10 - vite: 7.3.1 + vite: 7.3.2 '@storybook/react-webpack5@8.6.14': resolution: {integrity: sha512-ka0q9tQBLruhO38sybP/MkZzejqAltce7HJTJ2KKbUYUlbvuG7m56tBX7DVC5JaImbsO3b8fqOrKH7gRt4KYrQ==} @@ -4467,7 +4467,7 @@ packages: resolution: {integrity: sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==} peerDependencies: msw: ^2.4.9 - vite: 7.3.1 + vite: 7.3.2 peerDependenciesMeta: msw: optional: true @@ -4478,7 +4478,7 @@ packages: resolution: {integrity: sha512-CZ28GLfOEIFkvCFngN8Sfx5h+Se0zN+h4B7yOsPVCcgtiO7t5jt9xQh2E1UkFep+eb9fjyMfuC5gBypwb07fvQ==} peerDependencies: msw: ^2.4.9 - vite: 7.3.1 + vite: 7.3.2 peerDependenciesMeta: msw: optional: true @@ -8489,13 +8489,13 @@ packages: vite-tsconfig-paths@5.1.4: resolution: {integrity: sha512-cYj0LRuLV2c2sMqhqhGpaO3LretdtMn/BVX4cPLanIZuwwrkVl+lK84E/miEXkCHWXuq65rhNN4rXsBcOB3S4w==} peerDependencies: - vite: 7.3.1 + vite: 7.3.2 peerDependenciesMeta: vite: optional: true - vite@7.3.1: - resolution: {integrity: sha512-w+N7Hifpc3gRjZ63vYBXA56dvvRlNWRczTdmCBBa+CotUzAPf5b7YMdMR/8CQoeYE5LX3W4wj6RYTgonm1b9DA==} + vite@7.3.2: + resolution: {integrity: sha512-Bby3NOsna2jsjfLVOHKes8sGwgl4TT0E6vvpYgnAYDIF/tie7MRaFthmKuHx1NSXjiTueXH3do80FMQgvEktRg==} engines: {node: ^20.19.0 || >=22.12.0} hasBin: true peerDependencies: @@ -9615,12 +9615,12 @@ snapshots: wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 - '@joshwooding/vite-plugin-react-docgen-typescript@0.6.1(typescript@5.8.3)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))': + '@joshwooding/vite-plugin-react-docgen-typescript@0.6.1(typescript@5.8.3)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))': dependencies: glob: 11.1.0 magic-string: 0.30.21 react-docgen-typescript: 2.4.0(typescript@5.8.3) - vite: 7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3) + vite: 7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3) optionalDependencies: typescript: 5.8.3 @@ -10298,7 +10298,7 @@ snapshots: '@react-pdf/primitives': 4.1.1 '@react-pdf/stylesheet': 6.1.2 - '@react-router/dev@7.13.1(@react-router/serve@7.13.1(react-router@7.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.8.3))(@types/node@22.12.0)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.30.2)(react-router@7.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(typescript@5.8.3)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))(yaml@2.8.3)': + '@react-router/dev@7.13.1(@react-router/serve@7.13.1(react-router@7.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.8.3))(@types/node@22.12.0)(babel-plugin-macros@3.1.0)(jiti@2.6.1)(lightningcss@1.30.2)(react-router@7.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(terser@5.43.1)(typescript@5.8.3)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))(yaml@2.8.3)': dependencies: '@babel/core': 7.28.4 '@babel/generator': 7.28.5 @@ -10328,7 +10328,7 @@ snapshots: semver: 7.7.4 tinyglobby: 0.2.15 valibot: 1.2.0(typescript@5.8.3) - vite: 7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3) + vite: 7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3) vite-node: 3.2.4(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3) optionalDependencies: '@react-router/serve': 7.13.1(react-router@7.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.8.3) @@ -10563,133 +10563,133 @@ snapshots: '@standard-schema/spec@1.0.0': {} - '@storybook/addon-actions@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': + '@storybook/addon-actions@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: '@storybook/global': 5.0.0 '@types/uuid': 9.0.8 dequal: 2.0.3 polished: 4.3.1 - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) uuid: 9.0.1 - '@storybook/addon-backgrounds@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': + '@storybook/addon-backgrounds@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: '@storybook/global': 5.0.0 memoizerific: 1.11.3 - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) ts-dedent: 2.2.0 - '@storybook/addon-controls@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': + '@storybook/addon-controls@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: '@storybook/global': 5.0.0 dequal: 2.0.3 - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) ts-dedent: 2.2.0 - '@storybook/addon-designs@10.0.2(@storybook/addon-docs@9.1.10(@types/react@18.3.11)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': + '@storybook/addon-designs@10.0.2(@storybook/addon-docs@9.1.10(@types/react@18.3.11)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: '@figspec/react': 1.0.4(react@18.3.1) - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) optionalDependencies: - '@storybook/addon-docs': 9.1.10(@types/react@18.3.11)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + '@storybook/addon-docs': 9.1.10(@types/react@18.3.11)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@storybook/addon-docs@8.6.14(@types/react@18.3.11)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': + '@storybook/addon-docs@8.6.14(@types/react@18.3.11)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: '@mdx-js/react': 3.1.0(@types/react@18.3.11)(react@18.3.1) - '@storybook/blocks': 8.6.14(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) - '@storybook/csf-plugin': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) - '@storybook/react-dom-shim': 8.6.14(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + '@storybook/blocks': 8.6.14(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + '@storybook/csf-plugin': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + '@storybook/react-dom-shim': 8.6.14(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) ts-dedent: 2.2.0 transitivePeerDependencies: - '@types/react' - '@storybook/addon-docs@9.1.10(@types/react@18.3.11)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': + '@storybook/addon-docs@9.1.10(@types/react@18.3.11)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: '@mdx-js/react': 3.1.0(@types/react@18.3.11)(react@18.3.1) - '@storybook/csf-plugin': 9.1.10(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + '@storybook/csf-plugin': 9.1.10(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) '@storybook/icons': 1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@storybook/react-dom-shim': 9.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + '@storybook/react-dom-shim': 9.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) ts-dedent: 2.2.0 transitivePeerDependencies: - '@types/react' - '@storybook/addon-essentials@8.6.14(@types/react@18.3.11)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': - dependencies: - '@storybook/addon-actions': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) - '@storybook/addon-backgrounds': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) - '@storybook/addon-controls': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) - '@storybook/addon-docs': 8.6.14(@types/react@18.3.11)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) - '@storybook/addon-highlight': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) - '@storybook/addon-measure': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) - '@storybook/addon-outline': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) - '@storybook/addon-toolbars': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) - '@storybook/addon-viewport': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + '@storybook/addon-essentials@8.6.14(@types/react@18.3.11)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': + dependencies: + '@storybook/addon-actions': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + '@storybook/addon-backgrounds': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + '@storybook/addon-controls': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + '@storybook/addon-docs': 8.6.14(@types/react@18.3.11)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + '@storybook/addon-highlight': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + '@storybook/addon-measure': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + '@storybook/addon-outline': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + '@storybook/addon-toolbars': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + '@storybook/addon-viewport': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) ts-dedent: 2.2.0 transitivePeerDependencies: - '@types/react' - '@storybook/addon-highlight@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': + '@storybook/addon-highlight@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: '@storybook/global': 5.0.0 - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) - '@storybook/addon-interactions@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': + '@storybook/addon-interactions@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: '@storybook/global': 5.0.0 - '@storybook/instrumenter': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) - '@storybook/test': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + '@storybook/instrumenter': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + '@storybook/test': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) polished: 4.3.1 - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) ts-dedent: 2.2.0 - '@storybook/addon-links@8.6.14(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': + '@storybook/addon-links@8.6.14(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: '@storybook/global': 5.0.0 - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) ts-dedent: 2.2.0 optionalDependencies: react: 18.3.1 - '@storybook/addon-measure@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': + '@storybook/addon-measure@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: '@storybook/global': 5.0.0 - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) tiny-invariant: 1.3.3 - '@storybook/addon-onboarding@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': + '@storybook/addon-onboarding@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) - '@storybook/addon-outline@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': + '@storybook/addon-outline@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: '@storybook/global': 5.0.0 - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) ts-dedent: 2.2.0 - '@storybook/addon-styling-webpack@1.0.1(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(webpack@5.104.1(@swc/core@1.13.5(@swc/helpers@0.5.17)))': + '@storybook/addon-styling-webpack@1.0.1(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(webpack@5.104.1(@swc/core@1.13.5(@swc/helpers@0.5.17)))': dependencies: - '@storybook/node-logger': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + '@storybook/node-logger': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) webpack: 5.104.1(@swc/core@1.13.5(@swc/helpers@0.5.17)) transitivePeerDependencies: - storybook - '@storybook/addon-toolbars@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': + '@storybook/addon-toolbars@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) - '@storybook/addon-viewport@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': + '@storybook/addon-viewport@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: memoizerific: 1.11.3 - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) '@storybook/addon-webpack5-compiler-swc@1.0.6(@swc/helpers@0.5.17)(webpack@5.104.1(@swc/core@1.13.5(@swc/helpers@0.5.17)))': dependencies: @@ -10699,25 +10699,25 @@ snapshots: - '@swc/helpers' - webpack - '@storybook/blocks@8.6.14(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': + '@storybook/blocks@8.6.14(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: '@storybook/icons': 1.4.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) ts-dedent: 2.2.0 optionalDependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@storybook/builder-vite@9.1.10(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))': + '@storybook/builder-vite@9.1.10(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))': dependencies: - '@storybook/csf-plugin': 9.1.10(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + '@storybook/csf-plugin': 9.1.10(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) ts-dedent: 2.2.0 - vite: 7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3) + vite: 7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3) - '@storybook/builder-webpack5@8.6.14(@swc/core@1.13.5(@swc/helpers@0.5.17))(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(typescript@5.8.3)': + '@storybook/builder-webpack5@8.6.14(@swc/core@1.13.5(@swc/helpers@0.5.17))(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(typescript@5.8.3)': dependencies: - '@storybook/core-webpack': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + '@storybook/core-webpack': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) '@types/semver': 7.7.1 browser-assert: 1.2.1 case-sensitive-paths-webpack-plugin: 2.4.0 @@ -10731,7 +10731,7 @@ snapshots: path-browserify: 1.0.1 process: 0.11.10 semver: 7.7.4 - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) style-loader: 3.3.4(webpack@5.104.1(@swc/core@1.13.5(@swc/helpers@0.5.17))) terser-webpack-plugin: 5.3.16(@swc/core@1.13.5(@swc/helpers@0.5.17))(webpack@5.104.1(@swc/core@1.13.5(@swc/helpers@0.5.17))) ts-dedent: 2.2.0 @@ -10751,23 +10751,23 @@ snapshots: - uglify-js - webpack-cli - '@storybook/components@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': + '@storybook/components@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) - '@storybook/core-webpack@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': + '@storybook/core-webpack@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) ts-dedent: 2.2.0 - '@storybook/csf-plugin@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': + '@storybook/csf-plugin@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) unplugin: 1.16.1 - '@storybook/csf-plugin@9.1.10(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': + '@storybook/csf-plugin@9.1.10(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) unplugin: 1.16.1 '@storybook/global@5.0.0': {} @@ -10777,24 +10777,24 @@ snapshots: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - '@storybook/instrumenter@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': + '@storybook/instrumenter@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: '@storybook/global': 5.0.0 '@vitest/utils': 2.1.9 - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) - '@storybook/manager-api@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': + '@storybook/manager-api@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) - '@storybook/node-logger@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': + '@storybook/node-logger@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) - '@storybook/preset-react-webpack@8.6.14(@storybook/test@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(typescript@5.8.3)': + '@storybook/preset-react-webpack@8.6.14(@storybook/test@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(typescript@5.8.3)': dependencies: - '@storybook/core-webpack': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) - '@storybook/react': 8.6.14(@storybook/test@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(typescript@5.8.3) + '@storybook/core-webpack': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + '@storybook/react': 8.6.14(@storybook/test@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(typescript@5.8.3) '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@5.8.3)(webpack@5.104.1(@swc/core@1.13.5(@swc/helpers@0.5.17))) '@types/semver': 7.7.1 find-up: 5.0.0 @@ -10804,7 +10804,7 @@ snapshots: react-dom: 18.3.1(react@18.3.1) resolve: 1.22.10 semver: 7.7.4 - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) tsconfig-paths: 4.2.0 webpack: 5.104.1(@swc/core@1.13.5(@swc/helpers@0.5.17)) optionalDependencies: @@ -10817,9 +10817,9 @@ snapshots: - uglify-js - webpack-cli - '@storybook/preview-api@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': + '@storybook/preview-api@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) '@storybook/react-docgen-typescript-plugin@1.0.6--canary.9.0c3f3b7.0(typescript@5.8.3)(webpack@5.104.1(@swc/core@1.13.5(@swc/helpers@0.5.17)))': dependencies: @@ -10835,46 +10835,46 @@ snapshots: transitivePeerDependencies: - supports-color - '@storybook/react-dom-shim@8.6.14(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': + '@storybook/react-dom-shim@8.6.14(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) - '@storybook/react-dom-shim@9.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': + '@storybook/react-dom-shim@9.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) - '@storybook/react-vite@9.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(typescript@5.8.3)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))': + '@storybook/react-vite@9.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(rollup@4.59.0)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(typescript@5.8.3)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))': dependencies: - '@joshwooding/vite-plugin-react-docgen-typescript': 0.6.1(typescript@5.8.3)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + '@joshwooding/vite-plugin-react-docgen-typescript': 0.6.1(typescript@5.8.3)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) '@rollup/pluginutils': 5.2.0(rollup@4.59.0) - '@storybook/builder-vite': 9.1.10(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) - '@storybook/react': 9.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(typescript@5.8.3) + '@storybook/builder-vite': 9.1.10(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + '@storybook/react': 9.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(typescript@5.8.3) find-up: 7.0.0 magic-string: 0.30.21 react: 18.3.1 react-docgen: 8.0.1 react-dom: 18.3.1(react@18.3.1) resolve: 1.22.10 - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) tsconfig-paths: 4.2.0 - vite: 7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3) + vite: 7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3) transitivePeerDependencies: - rollup - supports-color - typescript - '@storybook/react-webpack5@8.6.14(@storybook/test@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(typescript@5.8.3)': + '@storybook/react-webpack5@8.6.14(@storybook/test@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(typescript@5.8.3)': dependencies: - '@storybook/builder-webpack5': 8.6.14(@swc/core@1.13.5(@swc/helpers@0.5.17))(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(typescript@5.8.3) - '@storybook/preset-react-webpack': 8.6.14(@storybook/test@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(typescript@5.8.3) - '@storybook/react': 8.6.14(@storybook/test@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(typescript@5.8.3) + '@storybook/builder-webpack5': 8.6.14(@swc/core@1.13.5(@swc/helpers@0.5.17))(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(typescript@5.8.3) + '@storybook/preset-react-webpack': 8.6.14(@storybook/test@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))))(@swc/core@1.13.5(@swc/helpers@0.5.17))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(typescript@5.8.3) + '@storybook/react': 8.6.14(@storybook/test@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(typescript@5.8.3) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) optionalDependencies: typescript: 5.8.3 transitivePeerDependencies: @@ -10886,45 +10886,45 @@ snapshots: - uglify-js - webpack-cli - '@storybook/react@8.6.14(@storybook/test@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(typescript@5.8.3)': + '@storybook/react@8.6.14(@storybook/test@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))))(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(typescript@5.8.3)': dependencies: - '@storybook/components': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + '@storybook/components': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) '@storybook/global': 5.0.0 - '@storybook/manager-api': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) - '@storybook/preview-api': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) - '@storybook/react-dom-shim': 8.6.14(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) - '@storybook/theming': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + '@storybook/manager-api': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + '@storybook/preview-api': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + '@storybook/react-dom-shim': 8.6.14(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + '@storybook/theming': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) optionalDependencies: - '@storybook/test': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + '@storybook/test': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) typescript: 5.8.3 - '@storybook/react@9.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(typescript@5.8.3)': + '@storybook/react@9.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))(typescript@5.8.3)': dependencies: '@storybook/global': 5.0.0 - '@storybook/react-dom-shim': 9.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + '@storybook/react-dom-shim': 9.1.10(react-dom@18.3.1(react@18.3.1))(react@18.3.1)(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) optionalDependencies: typescript: 5.8.3 - '@storybook/test@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': + '@storybook/test@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: '@storybook/global': 5.0.0 - '@storybook/instrumenter': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) + '@storybook/instrumenter': 8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))) '@testing-library/dom': 10.4.0 '@testing-library/jest-dom': 6.5.0 '@testing-library/user-event': 14.5.2(@testing-library/dom@10.4.0) '@vitest/expect': 2.0.5 '@vitest/spy': 2.0.5 - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) - '@storybook/theming@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': + '@storybook/theming@8.6.14(storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)))': dependencies: - storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + storybook: 9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) '@swc/core-darwin-arm64@1.13.5': optional: true @@ -11678,21 +11678,21 @@ snapshots: chai: 6.2.1 tinyrainbow: 3.0.3 - '@vitest/mocker@3.2.4(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))': + '@vitest/mocker@3.2.4(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))': dependencies: '@vitest/spy': 3.2.4 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3) + vite: 7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3) - '@vitest/mocker@4.0.15(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))': + '@vitest/mocker@4.0.15(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3))': dependencies: '@vitest/spy': 4.0.15 estree-walker: 3.0.3 magic-string: 0.30.21 optionalDependencies: - vite: 7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3) + vite: 7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3) '@vitest/pretty-format@2.0.5': dependencies: @@ -15771,13 +15771,13 @@ snapshots: std-env@3.10.0: {} - storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)): + storybook@9.1.19(@testing-library/dom@10.4.0)(prettier@3.7.4)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)): dependencies: '@storybook/global': 5.0.0 '@testing-library/jest-dom': 6.9.1 '@testing-library/user-event': 14.6.1(@testing-library/dom@10.4.0) '@vitest/expect': 3.2.4 - '@vitest/mocker': 3.2.4(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + '@vitest/mocker': 3.2.4(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) '@vitest/spy': 3.2.4 better-opn: 3.0.2 esbuild: 0.25.0 @@ -16324,7 +16324,7 @@ snapshots: debug: 4.4.3 es-module-lexer: 1.7.0 pathe: 2.0.3 - vite: 7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3) + vite: 7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3) transitivePeerDependencies: - '@types/node' - jiti @@ -16339,18 +16339,18 @@ snapshots: - tsx - yaml - vite-tsconfig-paths@5.1.4(typescript@5.8.3)(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)): + vite-tsconfig-paths@5.1.4(typescript@5.8.3)(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)): dependencies: debug: 4.4.3 globrex: 0.1.2 tsconfck: 3.1.6(typescript@5.8.3) optionalDependencies: - vite: 7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3) + vite: 7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3) transitivePeerDependencies: - supports-color - typescript - vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3): + vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3): dependencies: esbuild: 0.25.0 fdir: 6.5.0(picomatch@2.3.2) @@ -16369,7 +16369,7 @@ snapshots: vitest@4.0.15(@opentelemetry/api@1.9.0)(@types/node@22.12.0)(jiti@2.6.1)(jsdom@26.1.0)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3): dependencies: '@vitest/expect': 4.0.15 - '@vitest/mocker': 4.0.15(vite@7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) + '@vitest/mocker': 4.0.15(vite@7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3)) '@vitest/pretty-format': 4.0.15 '@vitest/runner': 4.0.15 '@vitest/snapshot': 4.0.15 @@ -16386,7 +16386,7 @@ snapshots: tinyexec: 1.0.4 tinyglobby: 0.2.15 tinyrainbow: 3.0.3 - vite: 7.3.1(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3) + vite: 7.3.2(@types/node@22.12.0)(jiti@2.6.1)(lightningcss@1.30.2)(terser@5.43.1)(yaml@2.8.3) why-is-node-running: 2.3.0 optionalDependencies: '@opentelemetry/api': 1.9.0 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index b20c3be19de..7e9519830e6 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -33,7 +33,7 @@ catalog: tsdown: 0.16.0 typescript: 5.8.3 uuid: 13.0.0 - vite: 7.3.1 + vite: 7.3.2 onlyBuiltDependencies: - turbo From 7c2fc2dd7f8f02ce16cac3f126871c98b614773f Mon Sep 17 00:00:00 2001 From: Niels Kaspers <153818647+nielskaspers@users.noreply.github.com> Date: Tue, 7 Apr 2026 13:04:54 +0300 Subject: [PATCH 53/62] fix: update Twitter icon and links to X (#8785) (#8790) --- README.md | 2 +- apps/api/templates/emails/invitations/project_invitation.html | 2 +- apps/api/templates/emails/notifications/issue-updates.html | 2 +- .../templates/emails/notifications/webhook-deactivate.html | 4 ++-- apps/api/templates/emails/user/email_updated.html | 2 +- apps/api/templates/emails/user/user_activation.html | 4 ++-- apps/api/templates/emails/user/user_deactivation.html | 4 ++-- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index d2117149da6..74688cd92c4 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@

WebsiteForum • - Twitter • + XDocumentation

diff --git a/apps/api/templates/emails/invitations/project_invitation.html b/apps/api/templates/emails/invitations/project_invitation.html index 36aecd60d82..f18579c6459 100644 --- a/apps/api/templates/emails/invitations/project_invitation.html +++ b/apps/api/templates/emails/invitations/project_invitation.html @@ -261,7 +261,7 @@ ­ - + ­ diff --git a/apps/api/templates/emails/notifications/issue-updates.html b/apps/api/templates/emails/notifications/issue-updates.html index c6fe3b2786c..d82614ded61 100644 --- a/apps/api/templates/emails/notifications/issue-updates.html +++ b/apps/api/templates/emails/notifications/issue-updates.html @@ -233,7 +233,7 @@
This email was sent to {{ receiver.email }}. If you'd rather not receive this kind of email, you can unsubscribe to the {{entity_type}} or manage your email preferences. - +
diff --git a/apps/api/templates/emails/notifications/webhook-deactivate.html b/apps/api/templates/emails/notifications/webhook-deactivate.html index 44aca67203a..c094eaa7636 100644 --- a/apps/api/templates/emails/notifications/webhook-deactivate.html +++ b/apps/api/templates/emails/notifications/webhook-deactivate.html @@ -155,7 +155,7 @@ ­
-

Despite our popularity, we are humbly early-stage. We are shipping fast, so please reach out to us with feature requests, major and minor nits, and anything else you find missing. We read every message, tweet, and conversation and update our public roadmap.

+

Despite our popularity, we are humbly early-stage. We are shipping fast, so please reach out to us with feature requests, major and minor nits, and anything else you find missing. We read every message, tweet, and conversation and update our public roadmap.

­ @@ -220,7 +220,7 @@ - + diff --git a/apps/api/templates/emails/user/email_updated.html b/apps/api/templates/emails/user/email_updated.html index cd13347ead2..cb1cad45966 100644 --- a/apps/api/templates/emails/user/email_updated.html +++ b/apps/api/templates/emails/user/email_updated.html @@ -831,7 +831,7 @@ " > , , Date: Wed, 8 Apr 2026 16:06:52 +0530 Subject: [PATCH 55/62] fix: strip whitespace and handle null values in instance configuration (#8744) When patching instance configuration values, the raw values from request.data were used directly without sanitization. This adds: - Whitespace stripping via str().strip() to prevent leading/trailing spaces from being stored - Explicit None handling so that null values become empty strings instead of the literal string "None" --- apps/api/plane/license/api/views/configuration.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/apps/api/plane/license/api/views/configuration.py b/apps/api/plane/license/api/views/configuration.py index bb9a9e00ee6..c5ad5f5788b 100644 --- a/apps/api/plane/license/api/views/configuration.py +++ b/apps/api/plane/license/api/views/configuration.py @@ -45,7 +45,8 @@ def patch(self, request): bulk_configurations = [] for configuration in configurations: - value = request.data.get(configuration.key, configuration.value) + raw_value = request.data.get(configuration.key, configuration.value) + value = "" if raw_value is None else str(raw_value).strip() if configuration.is_encrypted: configuration.value = encrypt_data(value) else: From 6023e8cfc81cc272279d126c6384464b18dc7722 Mon Sep 17 00:00:00 2001 From: b-saikrishnakanth <130811169+b-saikrishnakanth@users.noreply.github.com> Date: Thu, 9 Apr 2026 21:30:15 +0530 Subject: [PATCH 56/62] [WEB-6784] feat scrollbar in shortcuts modal (#8872) * fix: update border for project timezone * feat: added scrollbar in keyboard shortcuts modal * fix: remove unnecessary changes * fix: remove redundant overflow --- .../power-k/ui/modal/shortcuts-root.tsx | 38 +++++++++++-------- .../power-k/ui/renderer/shortcut.tsx | 2 +- 2 files changed, 23 insertions(+), 17 deletions(-) diff --git a/apps/web/core/components/power-k/ui/modal/shortcuts-root.tsx b/apps/web/core/components/power-k/ui/modal/shortcuts-root.tsx index 50b0e305098..acf392350cd 100644 --- a/apps/web/core/components/power-k/ui/modal/shortcuts-root.tsx +++ b/apps/web/core/components/power-k/ui/modal/shortcuts-root.tsx @@ -8,6 +8,7 @@ import { useState, Fragment } from "react"; import { Dialog, Transition } from "@headlessui/react"; // plane imports import { CloseIcon, SearchIcon } from "@plane/propel/icons"; +import { ScrollArea } from "@plane/propel/scrollarea"; import { Input } from "@plane/ui"; // hooks import { usePowerK } from "@/hooks/store/use-power-k"; @@ -61,28 +62,33 @@ export function ShortcutsModal(props: Props) { leaveTo="opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95" > -
- +
+ Keyboard shortcuts -
- - setQuery(e.target.value)} - placeholder="Search for shortcuts" - className="w-full border-none bg-transparent py-1 text-11 text-secondary outline-none" - autoFocus - tabIndex={1} - /> +
+
+ + setQuery(e.target.value)} + placeholder="Search for shortcuts" + className="w-full border-none bg-transparent py-1 text-11 text-secondary outline-none" + autoFocus + tabIndex={1} + /> +
- + + + +
diff --git a/apps/web/core/components/power-k/ui/renderer/shortcut.tsx b/apps/web/core/components/power-k/ui/renderer/shortcut.tsx index c2a9f04cf6d..9f4d5098430 100644 --- a/apps/web/core/components/power-k/ui/renderer/shortcut.tsx +++ b/apps/web/core/components/power-k/ui/renderer/shortcut.tsx @@ -78,7 +78,7 @@ export function ShortcutRenderer(props: Props) { const isShortcutsEmpty = groupedCommands.length === 0; return ( -
+
{!isShortcutsEmpty ? ( groupedCommands.map((group) => (
From e6b9d4c9bae58d1a932634ee2014c2c6ae0c9651 Mon Sep 17 00:00:00 2001 From: b-saikrishnakanth <130811169+b-saikrishnakanth@users.noreply.github.com> Date: Thu, 9 Apr 2026 21:30:48 +0530 Subject: [PATCH 57/62] [WEB-6785] fix: update border for project timezone (#8870) --- apps/web/core/components/project/form.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/web/core/components/project/form.tsx b/apps/web/core/components/project/form.tsx index b14b63cd61f..2d7575436f3 100644 --- a/apps/web/core/components/project/form.tsx +++ b/apps/web/core/components/project/form.tsx @@ -418,7 +418,7 @@ export function ProjectDetailsForm(props: IProjectDetailsForm) { onChange(value); }} error={Boolean(errors.timezone)} - buttonClassName="border-none" + buttonClassName="!border-subtle !shadow-none font-medium rounded-md" disabled={!isAdmin} /> From c21d2c6fb35fd93b2ddab5edf20a017bd12fef4a Mon Sep 17 00:00:00 2001 From: sriram veeraghanta Date: Fri, 10 Apr 2026 00:16:45 +0530 Subject: [PATCH 58/62] chore: remove Intercom integration and chat support components (#8875) Intercom is no longer used. This removes all related frontend components, hooks, custom events, API config, types, and i18n keys. --- .../app/(all)/(dashboard)/general/form.tsx | 19 +--- .../(all)/(dashboard)/general/intercom.tsx | 86 ------------------- apps/api/plane/license/api/views/instance.py | 15 ---- .../utils/instance_config_variables/core.py | 16 ---- .../power-k/config/help-commands.ts | 13 --- .../workspace/sidebar/help-section/root.tsx | 16 +--- apps/web/core/custom-events/chat-support.ts | 19 ---- apps/web/core/hooks/use-chat-support.ts | 31 ------- packages/i18n/src/locales/cs/translations.ts | 1 - packages/i18n/src/locales/de/translations.ts | 1 - packages/i18n/src/locales/en/translations.ts | 2 - packages/i18n/src/locales/es/translations.ts | 1 - packages/i18n/src/locales/fr/translations.ts | 1 - packages/i18n/src/locales/id/translations.ts | 1 - packages/i18n/src/locales/it/translations.ts | 1 - packages/i18n/src/locales/ja/translations.ts | 1 - packages/i18n/src/locales/ko/translations.ts | 1 - packages/i18n/src/locales/pl/translations.ts | 1 - .../i18n/src/locales/pt-BR/translations.ts | 1 - packages/i18n/src/locales/ro/translations.ts | 1 - packages/i18n/src/locales/ru/translations.ts | 2 - packages/i18n/src/locales/sk/translations.ts | 1 - .../i18n/src/locales/tr-TR/translations.ts | 1 - packages/i18n/src/locales/ua/translations.ts | 2 - .../i18n/src/locales/vi-VN/translations.ts | 1 - .../i18n/src/locales/zh-CN/translations.ts | 1 - .../i18n/src/locales/zh-TW/translations.ts | 1 - packages/types/src/instance/base.ts | 6 -- 28 files changed, 3 insertions(+), 240 deletions(-) delete mode 100644 apps/admin/app/(all)/(dashboard)/general/intercom.tsx delete mode 100644 apps/web/core/custom-events/chat-support.ts delete mode 100644 apps/web/core/hooks/use-chat-support.ts diff --git a/apps/admin/app/(all)/(dashboard)/general/form.tsx b/apps/admin/app/(all)/(dashboard)/general/form.tsx index 0b402b76c7a..e38d7848eb7 100644 --- a/apps/admin/app/(all)/(dashboard)/general/form.tsx +++ b/apps/admin/app/(all)/(dashboard)/general/form.tsx @@ -16,8 +16,6 @@ import { Input, ToggleSwitch } from "@plane/ui"; import { ControllerInput } from "@/components/common/controller-input"; // hooks import { useInstance } from "@/hooks/store"; -// components -import { IntercomConfig } from "./intercom"; export interface IGeneralConfigurationForm { instance: IInstance; @@ -27,14 +25,13 @@ export interface IGeneralConfigurationForm { export const GeneralConfigurationForm = observer(function GeneralConfigurationForm(props: IGeneralConfigurationForm) { const { instance, instanceAdmins } = props; // hooks - const { instanceConfigurations, updateInstanceInfo, updateInstanceConfigurations } = useInstance(); + const { updateInstanceInfo } = useInstance(); // form data const { handleSubmit, control, formState: { errors, isSubmitting }, - watch, } = useForm>({ defaultValues: { instance_name: instance?.instance_name, @@ -45,17 +42,6 @@ export const GeneralConfigurationForm = observer(function GeneralConfigurationFo const onSubmit = async (formData: Partial) => { const payload: Partial = { ...formData }; - // update the intercom configuration - const isIntercomEnabled = - instanceConfigurations?.find((config) => config.key === "IS_INTERCOM_ENABLED")?.value === "1"; - if (!payload.is_telemetry_enabled && isIntercomEnabled) { - try { - await updateInstanceConfigurations({ IS_INTERCOM_ENABLED: "0" }); - } catch (error) { - console.error(error); - } - } - await updateInstanceInfo(payload) .then(() => setToast({ @@ -112,8 +98,7 @@ export const GeneralConfigurationForm = observer(function GeneralConfigurationFo
-
Chat + telemetry
- +
Telemetry
diff --git a/apps/admin/app/(all)/(dashboard)/general/intercom.tsx b/apps/admin/app/(all)/(dashboard)/general/intercom.tsx deleted file mode 100644 index 656e2d69022..00000000000 --- a/apps/admin/app/(all)/(dashboard)/general/intercom.tsx +++ /dev/null @@ -1,86 +0,0 @@ -/** - * Copyright (c) 2023-present Plane Software, Inc. and contributors - * SPDX-License-Identifier: AGPL-3.0-only - * See the LICENSE file for details. - */ - -import { useState } from "react"; -import { observer } from "mobx-react"; -import useSWR from "swr"; -import { MessageSquare } from "lucide-react"; -import type { IFormattedInstanceConfiguration } from "@plane/types"; -import { ToggleSwitch } from "@plane/ui"; -// hooks -import { useInstance } from "@/hooks/store"; - -type TIntercomConfig = { - isTelemetryEnabled: boolean; -}; - -export const IntercomConfig = observer(function IntercomConfig(props: TIntercomConfig) { - const { isTelemetryEnabled } = props; - // hooks - const { instanceConfigurations, updateInstanceConfigurations, fetchInstanceConfigurations } = useInstance(); - // states - const [isSubmitting, setIsSubmitting] = useState(false); - - // derived values - const isIntercomEnabled = isTelemetryEnabled - ? instanceConfigurations - ? instanceConfigurations?.find((config) => config.key === "IS_INTERCOM_ENABLED")?.value === "1" - ? true - : false - : undefined - : false; - - const { isLoading } = useSWR(isTelemetryEnabled ? "INSTANCE_CONFIGURATIONS" : null, () => - isTelemetryEnabled ? fetchInstanceConfigurations() : null - ); - - const initialLoader = isLoading && isIntercomEnabled === undefined; - - const submitInstanceConfigurations = async (payload: Partial) => { - try { - await updateInstanceConfigurations(payload); - } catch (error) { - console.error(error); - } finally { - setIsSubmitting(false); - } - }; - - const enableIntercomConfig = () => { - void submitInstanceConfigurations({ IS_INTERCOM_ENABLED: isIntercomEnabled ? "0" : "1" }); - }; - - return ( - <> -
-
-
-
- -
-
- -
-
Chat with us
-
- Let your users chat with us via Intercom or another service. Toggling Telemetry off turns this off - automatically. -
-
- -
- -
-
-
- - ); -}); diff --git a/apps/api/plane/license/api/views/instance.py b/apps/api/plane/license/api/views/instance.py index a0d52d4912f..29c2521abd8 100644 --- a/apps/api/plane/license/api/views/instance.py +++ b/apps/api/plane/license/api/views/instance.py @@ -63,8 +63,6 @@ def get(self, request): POSTHOG_HOST, UNSPLASH_ACCESS_KEY, LLM_API_KEY, - IS_INTERCOM_ENABLED, - INTERCOM_APP_ID, ) = get_configuration_value( [ { @@ -124,15 +122,6 @@ def get(self, request): "key": "LLM_API_KEY", "default": os.environ.get("LLM_API_KEY", ""), }, - # Intercom settings - { - "key": "IS_INTERCOM_ENABLED", - "default": os.environ.get("IS_INTERCOM_ENABLED", "1"), - }, - { - "key": "INTERCOM_APP_ID", - "default": os.environ.get("INTERCOM_APP_ID", ""), - }, ] ) @@ -169,10 +158,6 @@ def get(self, request): # is smtp configured data["is_smtp_configured"] = bool(EMAIL_HOST) - # Intercom settings - data["is_intercom_enabled"] = IS_INTERCOM_ENABLED == "1" - data["intercom_app_id"] = INTERCOM_APP_ID - # Base URL data["admin_base_url"] = settings.ADMIN_BASE_URL data["space_base_url"] = settings.SPACE_BASE_URL diff --git a/apps/api/plane/utils/instance_config_variables/core.py b/apps/api/plane/utils/instance_config_variables/core.py index 274c6539af9..6eebf0b3adb 100644 --- a/apps/api/plane/utils/instance_config_variables/core.py +++ b/apps/api/plane/utils/instance_config_variables/core.py @@ -232,21 +232,6 @@ }, ] -intercom_config_variables = [ - { - "key": "IS_INTERCOM_ENABLED", - "value": os.environ.get("IS_INTERCOM_ENABLED", "1"), - "category": "INTERCOM", - "is_encrypted": False, - }, - { - "key": "INTERCOM_APP_ID", - "value": os.environ.get("INTERCOM_APP_ID", ""), - "category": "INTERCOM", - "is_encrypted": False, - }, -] - core_config_variables = [ *authentication_config_variables, *workspace_management_config_variables, @@ -257,5 +242,4 @@ *smtp_config_variables, *llm_config_variables, *unsplash_config_variables, - *intercom_config_variables, ] diff --git a/apps/web/core/components/power-k/config/help-commands.ts b/apps/web/core/components/power-k/config/help-commands.ts index 0543e6698df..79e47354d56 100644 --- a/apps/web/core/components/power-k/config/help-commands.ts +++ b/apps/web/core/components/power-k/config/help-commands.ts @@ -9,7 +9,6 @@ import { FileText, GithubIcon, MessageSquare, Rocket } from "lucide-react"; import type { TPowerKCommandConfig } from "@/components/power-k/core/types"; // hooks import { usePowerK } from "@/hooks/store/use-power-k"; -import { useChatSupport } from "@/hooks/use-chat-support"; /** * Help commands - Help related commands @@ -17,7 +16,6 @@ import { useChatSupport } from "@/hooks/use-chat-support"; export const usePowerKHelpCommands = (): TPowerKCommandConfig[] => { // store const { toggleShortcutsListModal } = usePowerK(); - const { isEnabled: isChatSupportEnabled, openChatSupport } = useChatSupport(); return [ { @@ -71,16 +69,5 @@ export const usePowerKHelpCommands = (): TPowerKCommandConfig[] => { isVisible: () => true, closeOnSelect: true, }, - { - id: "chat_with_us", - type: "action", - group: "help", - i18n_title: "power_k.help_actions.chat_with_us", - icon: MessageSquare, - action: () => openChatSupport(), - isEnabled: () => isChatSupportEnabled, - isVisible: () => isChatSupportEnabled, - closeOnSelect: true, - }, ]; }; diff --git a/apps/web/core/components/workspace/sidebar/help-section/root.tsx b/apps/web/core/components/workspace/sidebar/help-section/root.tsx index dea70d90aec..48cd1898a6e 100644 --- a/apps/web/core/components/workspace/sidebar/help-section/root.tsx +++ b/apps/web/core/components/workspace/sidebar/help-section/root.tsx @@ -6,7 +6,7 @@ import React, { useState } from "react"; import { observer } from "mobx-react"; -import { HelpCircle, MessagesSquare, User } from "lucide-react"; +import { HelpCircle, User } from "lucide-react"; import { useTranslation } from "@plane/i18n"; import { PageIcon } from "@plane/propel/icons"; // ui @@ -16,7 +16,6 @@ import { ProductUpdatesModal } from "@/components/global"; import { AppSidebarItem } from "@/components/sidebar/sidebar-item"; // hooks import { usePowerK } from "@/hooks/store/use-power-k"; -import { useChatSupport } from "@/hooks/use-chat-support"; // plane web components import { PlaneVersionNumber } from "@/plane-web/components/global"; @@ -24,7 +23,6 @@ export const HelpMenuRoot = observer(function HelpMenuRoot() { // store hooks const { t } = useTranslation(); const { toggleShortcutsListModal } = usePowerK(); - const { openChatSupport, isEnabled: isChatSupportEnabled } = useChatSupport(); // states const [isNeedHelpOpen, setIsNeedHelpOpen] = useState(false); const [isProductUpdatesModalOpen, setProductUpdatesModalOpen] = useState(false); @@ -56,18 +54,6 @@ export const HelpMenuRoot = observer(function HelpMenuRoot() { {t("documentation")}
- {isChatSupportEnabled && ( - - - - )} window.open("mailto:sales@plane.so", "_blank")}>
diff --git a/apps/web/core/custom-events/chat-support.ts b/apps/web/core/custom-events/chat-support.ts deleted file mode 100644 index 8c7d0fa5c35..00000000000 --- a/apps/web/core/custom-events/chat-support.ts +++ /dev/null @@ -1,19 +0,0 @@ -/** - * Copyright (c) 2023-present Plane Software, Inc. and contributors - * SPDX-License-Identifier: AGPL-3.0-only - * See the LICENSE file for details. - */ - -type ChatSupportType = "open"; - -type ChatSupportEventType = `chat-support:${ChatSupportType}`; - -export const CHAT_SUPPORT_EVENTS = { - open: "chat-support:open", -} satisfies Record; - -export class ChatSupportEvent extends CustomEvent { - constructor(type: ChatSupportType) { - super(CHAT_SUPPORT_EVENTS[type]); - } -} diff --git a/apps/web/core/hooks/use-chat-support.ts b/apps/web/core/hooks/use-chat-support.ts deleted file mode 100644 index b4e3e70a0cb..00000000000 --- a/apps/web/core/hooks/use-chat-support.ts +++ /dev/null @@ -1,31 +0,0 @@ -/** - * Copyright (c) 2023-present Plane Software, Inc. and contributors - * SPDX-License-Identifier: AGPL-3.0-only - * See the LICENSE file for details. - */ - -import { useCallback } from "react"; -// custom events -import { ChatSupportEvent } from "@/custom-events/chat-support"; -// hooks -import { useInstance } from "@/hooks/store/use-instance"; -import { useUser } from "@/hooks/store/user"; - -export interface IUseChatSupport { - openChatSupport: () => void; - isEnabled: boolean; -} - -export const useChatSupport = (): IUseChatSupport => { - const { data: user } = useUser(); - const { config } = useInstance(); - // derived values - const isEnabled = Boolean(user && config?.is_intercom_enabled && config?.intercom_app_id); - - const openChatSupport = useCallback(() => { - if (!isEnabled) return; - window.dispatchEvent(new ChatSupportEvent("open")); - }, [isEnabled]); - - return { openChatSupport, isEnabled }; -}; diff --git a/packages/i18n/src/locales/cs/translations.ts b/packages/i18n/src/locales/cs/translations.ts index 8a0aded99bd..d2a818f3b89 100644 --- a/packages/i18n/src/locales/cs/translations.ts +++ b/packages/i18n/src/locales/cs/translations.ts @@ -395,7 +395,6 @@ export default { time_tracking_description: "Zaznamenávejte čas strávený na pracovních položkách a projektech.", work_management_description: "Spravujte svou práci a projekty snadno.", documentation: "Dokumentace", - message_support: "Kontaktovat podporu", contact_sales: "Kontaktovat prodej", hyper_mode: "Hyper režim", keyboard_shortcuts: "Klávesové zkratky", diff --git a/packages/i18n/src/locales/de/translations.ts b/packages/i18n/src/locales/de/translations.ts index 2d54b10b85a..db4925f1f92 100644 --- a/packages/i18n/src/locales/de/translations.ts +++ b/packages/i18n/src/locales/de/translations.ts @@ -406,7 +406,6 @@ export default { time_tracking_description: "Erfassen Sie die auf Arbeitselemente und Projekte verwendete Zeit.", work_management_description: "Verwalten Sie Ihre Arbeit und Projekte mühelos.", documentation: "Dokumentation", - message_support: "Support kontaktieren", contact_sales: "Vertrieb kontaktieren", hyper_mode: "Hyper-Modus", keyboard_shortcuts: "Tastaturkürzel", diff --git a/packages/i18n/src/locales/en/translations.ts b/packages/i18n/src/locales/en/translations.ts index 9f3eff04d1a..2885fd3f0a1 100644 --- a/packages/i18n/src/locales/en/translations.ts +++ b/packages/i18n/src/locales/en/translations.ts @@ -229,7 +229,6 @@ export default { time_tracking_description: "Log time spent on work items and projects.", work_management_description: "Manage your work and projects with ease.", documentation: "Documentation", - message_support: "Message support", contact_sales: "Contact sales", hyper_mode: "Hyper Mode", keyboard_shortcuts: "Keyboard shortcuts", @@ -2697,7 +2696,6 @@ export default { open_plane_documentation: "Open Plane documentation", join_forum: "Join our Forum", report_bug: "Report a bug", - chat_with_us: "Chat with us", }, page_placeholders: { default: "Type a command or search", diff --git a/packages/i18n/src/locales/es/translations.ts b/packages/i18n/src/locales/es/translations.ts index 0d25038f17b..5ed015d06ca 100644 --- a/packages/i18n/src/locales/es/translations.ts +++ b/packages/i18n/src/locales/es/translations.ts @@ -406,7 +406,6 @@ export default { time_tracking_description: "Registra el tiempo dedicado a elementos de trabajo y proyectos.", work_management_description: "Gestiona tu trabajo y proyectos con facilidad.", documentation: "Documentación", - message_support: "Mensaje al soporte", contact_sales: "Contactar ventas", hyper_mode: "Modo Hyper", keyboard_shortcuts: "Atajos de teclado", diff --git a/packages/i18n/src/locales/fr/translations.ts b/packages/i18n/src/locales/fr/translations.ts index 38ef528359e..f7ace4c6914 100644 --- a/packages/i18n/src/locales/fr/translations.ts +++ b/packages/i18n/src/locales/fr/translations.ts @@ -402,7 +402,6 @@ export default { time_tracking_description: "Enregistrez le temps passé sur les éléments de travail et les projets.", work_management_description: "Gérez votre travail et vos projets facilement.", documentation: "Documentation", - message_support: "Contacter le support", contact_sales: "Contacter les ventes", hyper_mode: "Mode Hyper", keyboard_shortcuts: "Raccourcis clavier", diff --git a/packages/i18n/src/locales/id/translations.ts b/packages/i18n/src/locales/id/translations.ts index dfe4e198dd3..f933b215e04 100644 --- a/packages/i18n/src/locales/id/translations.ts +++ b/packages/i18n/src/locales/id/translations.ts @@ -398,7 +398,6 @@ export default { time_tracking_description: "Catat waktu yang dihabiskan untuk item kerja dan proyek.", work_management_description: "Kelola pekerjaan dan proyek Anda dengan mudah.", documentation: "Dokumentasi", - message_support: "Pesan dukungan", contact_sales: "Hubungi penjualan", hyper_mode: "Mode Hyper", keyboard_shortcuts: "Pintasan keyboard", diff --git a/packages/i18n/src/locales/it/translations.ts b/packages/i18n/src/locales/it/translations.ts index 247a0edee38..a0cb1b5c54f 100644 --- a/packages/i18n/src/locales/it/translations.ts +++ b/packages/i18n/src/locales/it/translations.ts @@ -400,7 +400,6 @@ export default { time_tracking_description: "Registra il tempo trascorso su elementi di lavoro e progetti.", work_management_description: "Gestisci il tuo lavoro e i tuoi progetti con facilità.", documentation: "Documentazione", - message_support: "Contatta il supporto", contact_sales: "Contatta le vendite", hyper_mode: "Modalità Hyper", keyboard_shortcuts: "Scorciatoie da tastiera", diff --git a/packages/i18n/src/locales/ja/translations.ts b/packages/i18n/src/locales/ja/translations.ts index 513d5e13293..6d79979904e 100644 --- a/packages/i18n/src/locales/ja/translations.ts +++ b/packages/i18n/src/locales/ja/translations.ts @@ -395,7 +395,6 @@ export default { time_tracking_description: "作業項目やプロジェクトに費やした時間を記録します。", work_management_description: "作業とプロジェクトを簡単に管理します。", documentation: "ドキュメント", - message_support: "サポートにメッセージ", contact_sales: "営業に問い合わせ", hyper_mode: "Hyper Mode", keyboard_shortcuts: "キーボードショートカット", diff --git a/packages/i18n/src/locales/ko/translations.ts b/packages/i18n/src/locales/ko/translations.ts index 5f86903d6ba..cf7e68d36a2 100644 --- a/packages/i18n/src/locales/ko/translations.ts +++ b/packages/i18n/src/locales/ko/translations.ts @@ -390,7 +390,6 @@ export default { time_tracking_description: "작업 항목 및 프로젝트에 소요된 시간을 기록하세요.", work_management_description: "작업 및 프로젝트를 쉽게 관리합니다.", documentation: "문서", - message_support: "지원 메시지", contact_sales: "영업 문의", hyper_mode: "하이퍼 모드", keyboard_shortcuts: "키보드 단축키", diff --git a/packages/i18n/src/locales/pl/translations.ts b/packages/i18n/src/locales/pl/translations.ts index fab1b96e85e..225859e9635 100644 --- a/packages/i18n/src/locales/pl/translations.ts +++ b/packages/i18n/src/locales/pl/translations.ts @@ -393,7 +393,6 @@ export default { time_tracking_description: "Rejestruj czas spędzony na elementach pracy i projektach.", work_management_description: "Łatwo zarządzaj swoją pracą i projektami.", documentation: "Dokumentacja", - message_support: "Skontaktuj się z pomocą", contact_sales: "Skontaktuj się z działem sprzedaży", hyper_mode: "Tryb Hyper", keyboard_shortcuts: "Skróty klawiaturowe", diff --git a/packages/i18n/src/locales/pt-BR/translations.ts b/packages/i18n/src/locales/pt-BR/translations.ts index 31b17890e0a..5282692a17b 100644 --- a/packages/i18n/src/locales/pt-BR/translations.ts +++ b/packages/i18n/src/locales/pt-BR/translations.ts @@ -402,7 +402,6 @@ export default { time_tracking_description: "Registre o tempo gasto em itens de trabalho e projetos.", work_management_description: "Gerencie seu trabalho e projetos com facilidade.", documentation: "Documentação", - message_support: "Suporte por mensagem", contact_sales: "Contatar vendas", hyper_mode: "Modo Hyper", keyboard_shortcuts: "Atalhos do teclado", diff --git a/packages/i18n/src/locales/ro/translations.ts b/packages/i18n/src/locales/ro/translations.ts index be20aa144fd..09a3312b6c8 100644 --- a/packages/i18n/src/locales/ro/translations.ts +++ b/packages/i18n/src/locales/ro/translations.ts @@ -399,7 +399,6 @@ export default { time_tracking_description: "Înregistrează timpul petrecut pe activități și proiecte.", work_management_description: "Gestionează-ți munca și proiectele cu ușurință.", documentation: "Documentație", - message_support: "Trimite mesaj la suport", contact_sales: "Contactează vânzările", hyper_mode: "Mod Hyper", keyboard_shortcuts: "Scurtături tastatură", diff --git a/packages/i18n/src/locales/ru/translations.ts b/packages/i18n/src/locales/ru/translations.ts index cbaa0081d00..52024d06cd1 100644 --- a/packages/i18n/src/locales/ru/translations.ts +++ b/packages/i18n/src/locales/ru/translations.ts @@ -402,7 +402,6 @@ export default { time_tracking_description: "Записывайте время, потраченное на рабочие элементы и проекты.", work_management_description: "Управление рабочими элементами и проектами", documentation: "Документация", - message_support: "Написать в поддержку", contact_sales: "Связаться с отделом продаж", hyper_mode: "Гиперрежим", keyboard_shortcuts: "Горячие клавиши", @@ -2869,7 +2868,6 @@ export default { open_plane_documentation: "Открыть документацию Plane", join_forum: "Присоединиться к Forum", report_bug: "Сообщить об ошибке", - chat_with_us: "Написать нам", }, page_placeholders: { default: "Введите команду или поиск", diff --git a/packages/i18n/src/locales/sk/translations.ts b/packages/i18n/src/locales/sk/translations.ts index 9d9343d0030..9a0c42e8e9e 100644 --- a/packages/i18n/src/locales/sk/translations.ts +++ b/packages/i18n/src/locales/sk/translations.ts @@ -395,7 +395,6 @@ export default { time_tracking_description: "Zaznamenajte čas strávený na pracovných položkách a projektoch.", work_management_description: "Spravujte svoju prácu a projekty jednoducho.", documentation: "Dokumentácia", - message_support: "Kontaktovať podporu", contact_sales: "Kontaktovať predaj", hyper_mode: "Hyper režim", keyboard_shortcuts: "Klávesové skratky", diff --git a/packages/i18n/src/locales/tr-TR/translations.ts b/packages/i18n/src/locales/tr-TR/translations.ts index 4b1240fba44..4e60e0cfbec 100644 --- a/packages/i18n/src/locales/tr-TR/translations.ts +++ b/packages/i18n/src/locales/tr-TR/translations.ts @@ -396,7 +396,6 @@ export default { time_tracking_description: "İş öğeleri ve projelerde harcanan zamanı kaydedin.", work_management_description: "İşlerinizi ve projelerinizi kolayca yönetin.", documentation: "Dokümantasyon", - message_support: "Destekle iletişim", contact_sales: "Satış Ekibiyle İletişim", hyper_mode: "Hiper Mod", keyboard_shortcuts: "Klavye Kısayolları", diff --git a/packages/i18n/src/locales/ua/translations.ts b/packages/i18n/src/locales/ua/translations.ts index 1da89e4a65d..0c949cf0567 100644 --- a/packages/i18n/src/locales/ua/translations.ts +++ b/packages/i18n/src/locales/ua/translations.ts @@ -402,7 +402,6 @@ export default { time_tracking_description: "Фіксуйте час, витрачений на робочі одиниці та проєкти.", work_management_description: "Зручно керуйте своєю роботою та проєктами.", documentation: "Документація", - message_support: "Звернутися в підтримку", contact_sales: "Зв’язатися з відділом продажів", hyper_mode: "Гіпер-режим", keyboard_shortcuts: "Гарячі клавіші", @@ -2861,7 +2860,6 @@ export default { open_plane_documentation: "Відкрити документацію Plane", join_forum: "Приєднатися до Forum", report_bug: "Повідомити про помилку", - chat_with_us: "Написати нам", }, page_placeholders: { default: "Введіть команду або виконайте пошук", diff --git a/packages/i18n/src/locales/vi-VN/translations.ts b/packages/i18n/src/locales/vi-VN/translations.ts index 62036fbe8ca..0cc12c75ea0 100644 --- a/packages/i18n/src/locales/vi-VN/translations.ts +++ b/packages/i18n/src/locales/vi-VN/translations.ts @@ -399,7 +399,6 @@ export default { time_tracking_description: "Ghi lại thời gian dành cho các mục công việc và dự án.", work_management_description: "Quản lý công việc và dự án của bạn một cách dễ dàng.", documentation: "Tài liệu", - message_support: "Liên hệ hỗ trợ", contact_sales: "Liên hệ bộ phận bán hàng", hyper_mode: "Chế độ siêu tốc", keyboard_shortcuts: "Phím tắt", diff --git a/packages/i18n/src/locales/zh-CN/translations.ts b/packages/i18n/src/locales/zh-CN/translations.ts index 9963936a36e..585ae13aa68 100644 --- a/packages/i18n/src/locales/zh-CN/translations.ts +++ b/packages/i18n/src/locales/zh-CN/translations.ts @@ -385,7 +385,6 @@ export default { time_tracking_description: "记录在工作项和项目上花费的时间。", work_management_description: "轻松管理您的工作和项目。", documentation: "文档", - message_support: "联系支持", contact_sales: "联系销售", hyper_mode: "超级模式", keyboard_shortcuts: "键盘快捷键", diff --git a/packages/i18n/src/locales/zh-TW/translations.ts b/packages/i18n/src/locales/zh-TW/translations.ts index e65359c4867..1fcf528fb1d 100644 --- a/packages/i18n/src/locales/zh-TW/translations.ts +++ b/packages/i18n/src/locales/zh-TW/translations.ts @@ -384,7 +384,6 @@ export default { time_tracking_description: "記錄在工作事項和專案上花費的時間。", work_management_description: "輕鬆管理您的工作和專案。", documentation: "文件", - message_support: "聯絡支援", contact_sales: "聯絡業務", hyper_mode: "極速模式", keyboard_shortcuts: "鍵盤快速鍵", diff --git a/packages/types/src/instance/base.ts b/packages/types/src/instance/base.ts index 431b09ac0f3..a93baef524f 100644 --- a/packages/types/src/instance/base.ts +++ b/packages/types/src/instance/base.ts @@ -65,9 +65,6 @@ export interface IInstanceConfig { space_base_url: string | undefined; admin_base_url: string | undefined; is_self_managed: boolean; - // intercom - is_intercom_enabled: boolean; - intercom_app_id: string | undefined; instance_changelog_url?: string; } @@ -83,14 +80,11 @@ export interface IInstanceAdmin { user_detail: IUserLite; } -export type TInstanceIntercomConfigurationKeys = "IS_INTERCOM_ENABLED" | "INTERCOM_APP_ID"; - export type TInstanceConfigurationKeys = | TInstanceAIConfigurationKeys | TInstanceEmailConfigurationKeys | TInstanceImageConfigurationKeys | TInstanceAuthenticationKeys - | TInstanceIntercomConfigurationKeys | TInstanceWorkspaceConfigurationKeys; export interface IInstanceConfiguration { From 39325d28a68c4b5abd8bbe42116dc1d2c57eebdc Mon Sep 17 00:00:00 2001 From: sriram veeraghanta Date: Fri, 10 Apr 2026 01:13:02 +0530 Subject: [PATCH 59/62] chore: update dependencies (Django, cryptography, axios, lodash) (#8880) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: update dependencies (Django, cryptography, axios, lodash) - Django 4.2.29 → 4.2.30 - cryptography 46.0.6 → 46.0.7 - axios 1.13.5 → 1.15.0 - lodash 4.17.23 → 4.18.0 * chore: update lodash from 4.18.0 to 4.18.1 --- apps/api/requirements/base.txt | 4 +-- package.json | 2 +- pnpm-lock.yaml | 57 +++++++++++++++++----------------- pnpm-workspace.yaml | 2 +- 4 files changed, 33 insertions(+), 32 deletions(-) diff --git a/apps/api/requirements/base.txt b/apps/api/requirements/base.txt index 865590cb2eb..7778a71a353 100644 --- a/apps/api/requirements/base.txt +++ b/apps/api/requirements/base.txt @@ -1,7 +1,7 @@ # base requirements # django -Django==4.2.29 +Django==4.2.30 # rest framework djangorestframework==3.15.2 # postgres @@ -51,7 +51,7 @@ beautifulsoup4==4.12.3 # analytics posthog==3.5.0 # crypto -cryptography==46.0.6 +cryptography==46.0.7 # html validator lxml==6.0.0 # s3 diff --git a/package.json b/package.json index ec1fdbc00d1..7c0ce03f1e8 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,7 @@ "webpack": "5.104.1", "lodash-es": "catalog:", "@isaacs/brace-expansion": "5.0.1", - "lodash": "4.17.23", + "lodash": "4.18.1", "markdown-it": "14.1.1", "rollup": "4.59.0", "minimatch@3": "3.1.4", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index a469bae0e3e..e0f2e9aa297 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -46,8 +46,8 @@ catalogs: specifier: 18.3.1 version: 18.3.1 axios: - specifier: 1.13.5 - version: 1.13.5 + specifier: 1.15.0 + version: 1.15.0 dotenv: specifier: 16.4.7 version: 16.4.7 @@ -105,7 +105,7 @@ overrides: webpack: 5.104.1 lodash-es: 4.18.0 '@isaacs/brace-expansion': 5.0.1 - lodash: 4.17.23 + lodash: 4.18.1 markdown-it: 14.1.1 rollup: 4.59.0 minimatch@3: 3.1.4 @@ -190,7 +190,7 @@ importers: version: 3.13.12 axios: specifier: 'catalog:' - version: 1.13.5 + version: 1.15.0 isbot: specifier: ^5.1.31 version: 5.1.31 @@ -317,7 +317,7 @@ importers: version: 2.26.2(@tiptap/core@2.26.3(@tiptap/pm@3.6.6))(@tiptap/pm@3.6.6) axios: specifier: 'catalog:' - version: 1.13.5 + version: 1.15.0 compression: specifier: 1.8.1 version: 1.8.1 @@ -462,7 +462,7 @@ importers: version: 7.13.1(react-router@7.12.0(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(typescript@5.8.3) axios: specifier: 'catalog:' - version: 1.13.5 + version: 1.15.0 clsx: specifier: ^2.0.0 version: 2.1.1 @@ -622,7 +622,7 @@ importers: version: 8.21.3(react-dom@18.3.1(react@18.3.1))(react@18.3.1) axios: specifier: 'catalog:' - version: 1.13.5 + version: 1.15.0 clsx: specifier: ^2.0.0 version: 2.1.1 @@ -1190,7 +1190,7 @@ importers: version: link:../types axios: specifier: 'catalog:' - version: 1.13.5 + version: 1.15.0 file-type: specifier: ^21.3.1 version: 21.3.3 @@ -4740,8 +4740,8 @@ packages: resolution: {integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==} engines: {node: '>= 0.4'} - axios@1.13.5: - resolution: {integrity: sha512-cz4ur7Vb0xS4/KUN0tPWe44eqxrIu31me+fbang3ijiNscE129POzipJJA6zniq2C/Z6sJCjMimjS8Lc/GAs8Q==} + axios@1.15.0: + resolution: {integrity: sha512-wWyJDlAatxk30ZJer+GeCWS209sA42X+N5jU2jy6oHTp7ufw8uzUTVFBX9+wTfAlhiJXGS0Bq7X6efruWjuK9Q==} babel-dead-code-elimination@1.0.10: resolution: {integrity: sha512-DV5bdJZTzZ0zn0DC24v3jD7Mnidh6xhKa4GfKCbq3sfW8kaWhDdZjP3i81geA8T33tdYqWKw4D3fVv0CwEgKVA==} @@ -6457,8 +6457,8 @@ packages: lodash.isarguments@3.1.0: resolution: {integrity: sha512-chi4NHZlZqZD18a0imDHnZPrDeBbTtVN7GXMwuGdRH9qotxAjYs3aVLKc7zNOG9eddR5Ksd8rvFEBc9SsggPpg==} - lodash@4.17.23: - resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==} + lodash@4.18.1: + resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} log-update@6.1.0: resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} @@ -7396,8 +7396,9 @@ packages: resolution: {integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==} engines: {node: '>= 0.10'} - proxy-from-env@1.1.0: - resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==} + proxy-from-env@2.1.0: + resolution: {integrity: sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==} + engines: {node: '>=10'} punycode.js@2.3.1: resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==} @@ -10317,7 +10318,7 @@ snapshots: exit-hook: 2.2.1 isbot: 5.1.31 jsesc: 3.0.2 - lodash: 4.17.23 + lodash: 4.18.1 p-map: 7.0.3 pathe: 1.1.2 picocolors: 1.1.1 @@ -11090,7 +11091,7 @@ snapshots: chalk: 3.0.0 css.escape: 1.5.1 dom-accessibility-api: 0.6.3 - lodash: 4.17.23 + lodash: 4.18.1 redent: 3.0.0 '@testing-library/jest-dom@6.9.1': @@ -11983,11 +11984,11 @@ snapshots: dependencies: possible-typed-array-names: 1.1.0 - axios@1.13.5: + axios@1.15.0: dependencies: follow-redirects: 1.15.11 form-data: 4.0.5 - proxy-from-env: 1.1.0 + proxy-from-env: 2.1.0 transitivePeerDependencies: - debug @@ -12836,7 +12837,7 @@ snapshots: express-winston@4.2.0(winston@3.17.0): dependencies: chalk: 2.4.2 - lodash: 4.17.23 + lodash: 4.18.1 winston: 3.17.0 express-ws@5.0.2(express@4.22.0): @@ -13315,7 +13316,7 @@ snapshots: dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 - lodash: 4.17.23 + lodash: 4.18.1 pretty-error: 4.0.0 tapable: 2.3.0 optionalDependencies: @@ -13783,7 +13784,7 @@ snapshots: lodash.isarguments@3.1.0: {} - lodash@4.17.23: {} + lodash@4.18.1: {} log-update@6.1.0: dependencies: @@ -14859,7 +14860,7 @@ snapshots: pretty-error@4.0.0: dependencies: - lodash: 4.17.23 + lodash: 4.18.1 renderkid: 3.0.0 pretty-format@27.5.1: @@ -14997,7 +14998,7 @@ snapshots: forwarded: 0.2.0 ipaddr.js: 1.9.1 - proxy-from-env@1.1.0: {} + proxy-from-env@2.1.0: {} punycode.js@2.3.1: {} @@ -15040,7 +15041,7 @@ snapshots: react-color@2.19.3(react@18.3.1): dependencies: '@icons/material': 0.2.4(react@18.3.1) - lodash: 4.17.23 + lodash: 4.18.1 lodash-es: 4.18.0 material-colors: 1.2.6 prop-types: 15.8.1 @@ -15146,7 +15147,7 @@ snapshots: create-react-class: 15.7.0 element-resize-detector: 1.2.4 imagesloaded: 4.1.4 - lodash: 4.17.23 + lodash: 4.18.1 masonry-layout: 4.2.2 prop-types: 15.8.1 react: 18.3.1 @@ -15237,7 +15238,7 @@ snapshots: reactcss@1.2.3(react@18.3.1): dependencies: - lodash: 4.17.23 + lodash: 4.18.1 react: 18.3.1 read-cache@1.0.0: @@ -15270,7 +15271,7 @@ snapshots: dependencies: clsx: 2.1.1 eventemitter3: 4.0.7 - lodash: 4.17.23 + lodash: 4.18.1 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) react-is: 18.3.1 @@ -15383,7 +15384,7 @@ snapshots: css-select: 4.3.0 dom-converter: 0.2.0 htmlparser2: 6.1.0 - lodash: 4.17.23 + lodash: 4.18.1 strip-ansi: 6.0.1 require-directory@2.1.1: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 7e9519830e6..5917b09c38e 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -19,7 +19,7 @@ catalog: "@types/node": 22.12.0 "@types/react-dom": 18.3.1 "@types/react": 18.3.11 - axios: 1.13.5 + axios: 1.15.0 express: 4.22.0 lodash-es: 4.18.0 lucide-react: 0.469.0 From db3c8f27dcd73e54229368152a034e272a3ca0c6 Mon Sep 17 00:00:00 2001 From: Anmol Singh Bhatia <121005188+anmolsinghbhatia@users.noreply.github.com> Date: Mon, 13 Apr 2026 18:24:12 +0530 Subject: [PATCH 60/62] [WEB-6840] feat: skip role & use-case steps for self-hosted instances (#8890) --- .../web/core/components/onboarding/header.tsx | 29 +++++++++---------- apps/web/core/components/onboarding/root.tsx | 14 +++++++-- 2 files changed, 26 insertions(+), 17 deletions(-) diff --git a/apps/web/core/components/onboarding/header.tsx b/apps/web/core/components/onboarding/header.tsx index 4ebf6a9c156..224fca5f09f 100644 --- a/apps/web/core/components/onboarding/header.tsx +++ b/apps/web/core/components/onboarding/header.tsx @@ -12,6 +12,7 @@ import type { TOnboardingStep } from "@plane/types"; import { EOnboardingSteps } from "@plane/types"; import { cn } from "@plane/utils"; // hooks +import { useInstance } from "@/hooks/store/use-instance"; import { useUser } from "@/hooks/store/user"; // local imports import { SwitchAccountDropdown } from "./switch-account-dropdown"; @@ -26,6 +27,8 @@ export const OnboardingHeader = observer(function OnboardingHeader(props: Onboar const { currentStep, updateCurrentStep, hasInvitations } = props; // store hooks const { data: user } = useUser(); + const { config: instanceConfig } = useInstance(); + const isSelfManaged = instanceConfig?.is_self_managed; // handle step back const handleStepBack = () => { @@ -37,7 +40,7 @@ export const OnboardingHeader = observer(function OnboardingHeader(props: Onboar updateCurrentStep(EOnboardingSteps.ROLE_SETUP); break; case EOnboardingSteps.WORKSPACE_CREATE_OR_JOIN: - updateCurrentStep(EOnboardingSteps.USE_CASE_SETUP); + updateCurrentStep(isSelfManaged ? EOnboardingSteps.PROFILE_SETUP : EOnboardingSteps.USE_CASE_SETUP); break; } }; @@ -45,22 +48,18 @@ export const OnboardingHeader = observer(function OnboardingHeader(props: Onboar // can go back const canGoBack = ![EOnboardingSteps.PROFILE_SETUP, EOnboardingSteps.INVITE_MEMBERS].includes(currentStep); - // Get current step number for progress tracking - const getCurrentStepNumber = (): number => { - const stepOrder: TOnboardingStep[] = [ - EOnboardingSteps.PROFILE_SETUP, - EOnboardingSteps.ROLE_SETUP, - EOnboardingSteps.USE_CASE_SETUP, - ...(hasInvitations - ? [EOnboardingSteps.WORKSPACE_CREATE_OR_JOIN] - : [EOnboardingSteps.WORKSPACE_CREATE_OR_JOIN, EOnboardingSteps.INVITE_MEMBERS]), - ]; - return stepOrder.indexOf(currentStep) + 1; - }; + // step order for progress tracking — include INVITE_MEMBERS if user is currently on it + const showInviteStep = !hasInvitations || currentStep === EOnboardingSteps.INVITE_MEMBERS; + const stepOrder: TOnboardingStep[] = [ + EOnboardingSteps.PROFILE_SETUP, + ...(isSelfManaged ? [] : [EOnboardingSteps.ROLE_SETUP, EOnboardingSteps.USE_CASE_SETUP]), + EOnboardingSteps.WORKSPACE_CREATE_OR_JOIN, + ...(showInviteStep ? [EOnboardingSteps.INVITE_MEMBERS] : []), + ]; // derived values - const currentStepNumber = getCurrentStepNumber(); - const totalSteps = hasInvitations ? 4 : 5; // 4 if invites available, 5 if not + const currentStepNumber = stepOrder.indexOf(currentStep) + 1; + const totalSteps = stepOrder.length; const userName = user?.display_name ? user?.display_name : user?.first_name diff --git a/apps/web/core/components/onboarding/root.tsx b/apps/web/core/components/onboarding/root.tsx index cc8e7cfe41f..395e19b0957 100644 --- a/apps/web/core/components/onboarding/root.tsx +++ b/apps/web/core/components/onboarding/root.tsx @@ -11,6 +11,7 @@ import { TOAST_TYPE, setToast } from "@plane/propel/toast"; import type { IWorkspaceMemberInvitation, TOnboardingStep, TOnboardingSteps, TUserProfile } from "@plane/types"; import { EOnboardingSteps } from "@plane/types"; // hooks +import { useInstance } from "@/hooks/store/use-instance"; import { useWorkspace } from "@/hooks/store/use-workspace"; import { useUser, useUserProfile } from "@/hooks/store/user"; // local components @@ -27,8 +28,10 @@ export const OnboardingRoot = observer(function OnboardingRoot({ invitations = [ const { data: user } = useUser(); const { data: userProfile, updateUserProfile, finishUserOnboarding } = useUserProfile(); const { workspaces } = useWorkspace(); + const { config: instanceConfig } = useInstance(); const workspacesList = Object.values(workspaces ?? {}); + const isSelfManaged = instanceConfig?.is_self_managed; // Calculate total steps based on whether invitations are available const hasInvitations = invitations.length > 0; @@ -68,7 +71,14 @@ export const OnboardingRoot = observer(function OnboardingRoot({ invitations = [ (step: EOnboardingSteps, skipInvites?: boolean) => { switch (step) { case EOnboardingSteps.PROFILE_SETUP: - setCurrentStep(EOnboardingSteps.ROLE_SETUP); + if (isSelfManaged) { + // Skip role & use case steps for self-hosted + stepChange({ profile_complete: true }); + if (workspacesList.length > 0) finishOnboarding(); + else setCurrentStep(EOnboardingSteps.WORKSPACE_CREATE_OR_JOIN); + } else { + setCurrentStep(EOnboardingSteps.ROLE_SETUP); + } break; case EOnboardingSteps.ROLE_SETUP: setCurrentStep(EOnboardingSteps.USE_CASE_SETUP); @@ -91,7 +101,7 @@ export const OnboardingRoot = observer(function OnboardingRoot({ invitations = [ break; } }, - [stepChange, finishOnboarding, workspacesList] + [stepChange, finishOnboarding, workspacesList, isSelfManaged] ); const updateCurrentStep = (step: EOnboardingSteps) => setCurrentStep(step); From bbf14fba31c0d8be9435eb32eedad9673ff1ed98 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 14 Apr 2026 13:54:04 +0530 Subject: [PATCH 61/62] chore(deps): bump pytest (#8891) Bumps the pip group with 1 update in the /apps/api/requirements directory: [pytest](https://github.com/pytest-dev/pytest). Updates `pytest` from 9.0.2 to 9.0.3 - [Release notes](https://github.com/pytest-dev/pytest/releases) - [Changelog](https://github.com/pytest-dev/pytest/blob/main/CHANGELOG.rst) - [Commits](https://github.com/pytest-dev/pytest/compare/9.0.2...9.0.3) --- updated-dependencies: - dependency-name: pytest dependency-version: 9.0.3 dependency-type: direct:production dependency-group: pip ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> --- apps/api/requirements/test.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps/api/requirements/test.txt b/apps/api/requirements/test.txt index c3149753572..bed38224a2f 100644 --- a/apps/api/requirements/test.txt +++ b/apps/api/requirements/test.txt @@ -1,6 +1,6 @@ -r base.txt # test framework -pytest==9.0.2 +pytest==9.0.3 pytest-django==4.5.2 pytest-cov==4.1.0 pytest-xdist==3.3.1 From 13db2f883f141f139b106f9459c44ad030772d73 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ph=E1=BA=A1m=20Nguy=C3=AAn=20Ph=C6=B0=C6=A1ng?= <69796528+PhuongPN6689@users.noreply.github.com> Date: Tue, 14 Apr 2026 15:24:28 +0700 Subject: [PATCH 62/62] enhance sub-issue query performance with optimized annotations and subqueries (#8889) --- apps/api/plane/app/views/issue/sub_issue.py | 165 ++++++++++++-------- 1 file changed, 98 insertions(+), 67 deletions(-) diff --git a/apps/api/plane/app/views/issue/sub_issue.py b/apps/api/plane/app/views/issue/sub_issue.py index b52e07564f6..5194148dd7b 100644 --- a/apps/api/plane/app/views/issue/sub_issue.py +++ b/apps/api/plane/app/views/issue/sub_issue.py @@ -7,7 +7,7 @@ # Django imports from django.utils import timezone -from django.db.models import OuterRef, Func, F, Q, Value, UUIDField, Subquery +from django.db.models import OuterRef, Func, F, Q, Value, UUIDField, Subquery, Count, IntegerField from django.utils.decorators import method_decorator from django.views.decorators.gzip import gzip_page from django.contrib.postgres.aggregates import ArrayAgg @@ -22,7 +22,7 @@ from .. import BaseAPIView from plane.app.serializers import IssueSerializer from plane.app.permissions import ProjectEntityPermission -from plane.db.models import Issue, IssueLink, FileAsset, CycleIssue +from plane.db.models import Issue, IssueLink, FileAsset, CycleIssue, IssueLabel, IssueAssignee, ModuleIssue from plane.bgtasks.issue_activities_task import issue_activity from plane.utils.timezone_converter import user_timezone_converter from collections import defaultdict @@ -37,70 +37,97 @@ class SubIssuesEndpoint(BaseAPIView): def get(self, request, slug, project_id, issue_id): sub_issues = ( Issue.issue_objects.filter(parent_id=issue_id, workspace__slug=slug) - .select_related("workspace", "project", "state", "parent") - .prefetch_related("assignees", "labels", "issue_module__module") .annotate( cycle_id=Subquery( CycleIssue.objects.filter(issue=OuterRef("id"), deleted_at__isnull=True).values("cycle_id")[:1] ) ) .annotate( - link_count=IssueLink.objects.filter(issue=OuterRef("id")) - .order_by() - .annotate(count=Func(F("id"), function="Count")) - .values("count") + link_count=Coalesce( + Subquery( + IssueLink.objects.filter(issue=OuterRef("id")) + .order_by() + .values("issue") + .annotate(count=Count("id")) + .values("count"), + output_field=IntegerField(), + ), + 0, + ) ) .annotate( - attachment_count=FileAsset.objects.filter( - issue_id=OuterRef("id"), - entity_type=FileAsset.EntityTypeContext.ISSUE_ATTACHMENT, + attachment_count=Coalesce( + Subquery( + FileAsset.objects.filter( + issue_id=OuterRef("id"), + entity_type=FileAsset.EntityTypeContext.ISSUE_ATTACHMENT, + ) + .order_by() + .values("issue_id") + .annotate(count=Count("id")) + .values("count"), + output_field=IntegerField(), + ), + 0, ) - .order_by() - .annotate(count=Func(F("id"), function="Count")) - .values("count") ) .annotate( - sub_issues_count=Issue.issue_objects.filter(parent=OuterRef("id")) - .order_by() - .annotate(count=Func(F("id"), function="Count")) - .values("count") + sub_issues_count=Coalesce( + Subquery( + Issue.issue_objects.filter(parent=OuterRef("id")) + .order_by() + .values("parent") + .annotate(count=Count("id")) + .values("count"), + output_field=IntegerField(), + ), + 0, + ) ) .annotate( label_ids=Coalesce( - ArrayAgg( - "labels__id", - distinct=True, - filter=Q(~Q(labels__id__isnull=True) & Q(label_issue__deleted_at__isnull=True)), + Subquery( + IssueLabel.objects.filter(issue_id=OuterRef("id"), deleted_at__isnull=True) + .order_by() + .values("issue_id") + .annotate(arr=ArrayAgg("label_id", distinct=True)) + .values("arr"), + output_field=ArrayField(UUIDField()), ), Value([], output_field=ArrayField(UUIDField())), ), assignee_ids=Coalesce( - ArrayAgg( - "assignees__id", - distinct=True, - filter=Q( - ~Q(assignees__id__isnull=True) - & Q(assignees__member_project__is_active=True) - & Q(issue_assignee__deleted_at__isnull=True) - ), + Subquery( + IssueAssignee.objects.filter( + issue_id=OuterRef("id"), + assignee__member_project__is_active=True, + deleted_at__isnull=True, + ) + .order_by() + .values("issue_id") + .annotate(arr=ArrayAgg("assignee_id", distinct=True)) + .values("arr"), + output_field=ArrayField(UUIDField()), ), Value([], output_field=ArrayField(UUIDField())), ), module_ids=Coalesce( - ArrayAgg( - "issue_module__module_id", - distinct=True, - filter=Q( - ~Q(issue_module__module_id__isnull=True) - & Q(issue_module__module__archived_at__isnull=True) - & Q(issue_module__deleted_at__isnull=True) - ), + Subquery( + ModuleIssue.objects.filter( + issue_id=OuterRef("id"), + module__archived_at__isnull=True, + deleted_at__isnull=True, + ) + .order_by() + .values("issue_id") + .annotate(arr=ArrayAgg("module_id", distinct=True)) + .values("arr"), + output_field=ArrayField(UUIDField()), ), Value([], output_field=ArrayField(UUIDField())), ), ) .annotate(state_group=F("state__group")) - .order_by("-created_at") ) # Ordering @@ -110,38 +137,42 @@ def get(self, request, slug, project_id, issue_id): if order_by_param: sub_issues, order_by_param = order_issue_queryset(sub_issues, order_by_param) + sub_issues = list( + sub_issues.values( + "id", + "name", + "state_id", + "sort_order", + "completed_at", + "estimate_point", + "priority", + "start_date", + "target_date", + "sequence_id", + "project_id", + "parent_id", + "cycle_id", + "module_ids", + "label_ids", + "assignee_ids", + "sub_issues_count", + "created_at", + "updated_at", + "created_by", + "updated_by", + "attachment_count", + "link_count", + "is_draft", + "archived_at", + "state_group", + ) + ) + # create's a dict with state group name with their respective issue id's result = defaultdict(list) for sub_issue in sub_issues: - result[sub_issue.state_group].append(str(sub_issue.id)) + result[sub_issue["state_group"]].append(str(sub_issue["id"])) - sub_issues = sub_issues.values( - "id", - "name", - "state_id", - "sort_order", - "completed_at", - "estimate_point", - "priority", - "start_date", - "target_date", - "sequence_id", - "project_id", - "parent_id", - "cycle_id", - "module_ids", - "label_ids", - "assignee_ids", - "sub_issues_count", - "created_at", - "updated_at", - "created_by", - "updated_by", - "attachment_count", - "link_count", - "is_draft", - "archived_at", - ) datetime_fields = ["created_at", "updated_at"] sub_issues = user_timezone_converter(sub_issues, datetime_fields, request.user.user_timezone) # Grouping