diff --git a/.github/workflows/update-manager-types.yaml b/.github/workflows/update-manager-types.yaml index 7933c7cbe2..9e240b87c8 100644 --- a/.github/workflows/update-manager-types.yaml +++ b/.github/workflows/update-manager-types.yaml @@ -99,4 +99,4 @@ jobs: labels: Manager delete-branch: true add-paths: | - src/types/generatedManagerTypes.ts + src/types/generatedManagerTypes.ts \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 5fe5dd6839..03267b8c19 100644 --- a/package-lock.json +++ b/package-lock.json @@ -456,6 +456,7 @@ "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-0.5.0.tgz", "integrity": "sha512-dKnk2xlAyC7rvTkpkHmu+Qy/2Zc3Vm/l8PtNyIOGDBtXPY3kThfU4ORNEp3V7SXw5XSOb+tOJaUYpfquPzL/Tg==", "dev": true, + "license": "MIT", "dependencies": { "package-manager-detector": "^0.2.5", "tinyexec": "^0.3.1" @@ -577,6 +578,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -630,6 +632,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -660,6 +663,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -919,9 +923,9 @@ } }, "node_modules/@babel/runtime": { - "version": "7.27.6", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.27.6.tgz", - "integrity": "sha512-vbavdySgbTTrmFE+EsiqUTzlOr5bzlnJtUv9PynGCAKvfQqjIXbvFdumPM/GxMDfyuGMJaJAU6TO4zc1Jf1i8Q==", + "version": "7.28.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.2.tgz", + "integrity": "sha512-KHp2IflsnGywDjBWDkR9iEqiWSpc8GIi0lgTT3mOElT0PP1tG26P4tmFI2YvAdzgq9RGyoHZQEIEdZy6Ec5xCA==", "license": "MIT", "engines": { "node": ">=6.9.0" @@ -2349,6 +2353,7 @@ "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-2.3.0.tgz", "integrity": "sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==", "dev": true, + "license": "MIT", "dependencies": { "@antfu/install-pkg": "^1.0.0", "@antfu/utils": "^8.1.0", @@ -2365,6 +2370,7 @@ "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-1.1.0.tgz", "integrity": "sha512-MGQsmw10ZyI+EJo45CdSER4zEb+p31LpDAFp2Z3gkSd1yqVZGi0Ebx++YTEMonJy4oChEMLsxZ64j8FH6sSqtQ==", "dev": true, + "license": "MIT", "dependencies": { "package-manager-detector": "^1.3.0", "tinyexec": "^1.0.1" @@ -2378,6 +2384,7 @@ "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-8.1.1.tgz", "integrity": "sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==", "dev": true, + "license": "MIT", "funding": { "url": "https://github.com/sponsors/antfu" } @@ -2386,13 +2393,15 @@ "version": "0.2.2", "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz", "integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@iconify/utils/node_modules/debug": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.3" }, @@ -2410,6 +2419,7 @@ "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.1.1.tgz", "integrity": "sha512-WunYko2W1NcdfAFpuLUoucsgULmgDBRkdxHxWQ7mK0cQqwPiy8E1enjuRBrhLtZkB5iScJ1XIPdhVEFK8aOLSg==", "dev": true, + "license": "MIT", "dependencies": { "mlly": "^1.7.4", "pkg-types": "^2.0.1", @@ -2426,19 +2436,22 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-1.3.0.tgz", "integrity": "sha512-ZsEbbZORsyHuO00lY1kV3/t72yp6Ysay6Pd17ZAlNGuGwmWDLCJxFpRs0IzfXfj1o4icJOkUEioexFHzyPurSQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@iconify/utils/node_modules/pathe": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@iconify/utils/node_modules/pkg-types": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.2.0.tgz", "integrity": "sha512-2SM/GZGAEkPp3KWORxQZns4M+WSeXbC2HEvmOIJe3Cmiv6ieAJvdVhDldtHqM5J1Y7MrR1XhkBT/rMlhh9FdqQ==", "dev": true, + "license": "MIT", "dependencies": { "confbox": "^0.2.2", "exsolve": "^1.0.7", @@ -2449,7 +2462,8 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.0.1.tgz", "integrity": "sha512-5uC6DDlmeqiOwCPmK9jMSdOuZTh8bU39Ys6yidB+UTt5hfZUPGAypSgFRiEp+jbi9qH40BLDvy85jIU88wKSqw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@inkjs/ui": { "version": "1.0.0", @@ -2558,6 +2572,18 @@ "js-yaml": "bin/js-yaml.js" } }, + "node_modules/@intlify/eslint-plugin-vue-i18n/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/@intlify/eslint-plugin-vue-i18n/node_modules/synckit": { "version": "0.9.3", "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.3.tgz", @@ -5233,7 +5259,8 @@ "version": "7.7.0", "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.0.tgz", "integrity": "sha512-k107IF4+Xr7UHjwDc7Cfd6PRQfbdkiRabXGRjo07b4WyPahFBZCZ1sE+BNxYIJPPg73UkfOsVOLwqVc/6ETrIA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/@types/stats.js": { "version": "0.17.3", @@ -6876,15 +6903,15 @@ } }, "node_modules/broker-factory": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/broker-factory/-/broker-factory-3.1.7.tgz", - "integrity": "sha512-RxbMXWq/Qvw9aLZMvuooMtVTm2/SV9JEpxpBbMuFhYAnDaZxctbJ+1b9ucHxADk/eQNqDijvWQjLVARqExAeyg==", + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/broker-factory/-/broker-factory-3.1.8.tgz", + "integrity": "sha512-xmVnYN0FZtynhPUmAnN+/MFRdbDi3syCuxWV7o7s78FcIN0pjDtn9mUrVqEgdjQkbfojRhlPWbYbXJkMCyddrg==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.27.6", "fast-unique-numbers": "^9.0.22", "tslib": "^2.8.1", - "worker-factory": "^7.0.43" + "worker-factory": "^7.0.44" } }, "node_modules/browserslist": { @@ -7464,7 +7491,8 @@ "version": "0.1.8", "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/config-chain": { "version": "1.1.13", @@ -8583,6 +8611,18 @@ "eslint": ">=6.0.0" } }, + "node_modules/eslint-compat-utils/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/eslint-config-prettier": { "version": "10.1.2", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.1.2.tgz", @@ -9297,7 +9337,8 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.7.tgz", "integrity": "sha512-VO5fQUzZtI6C+vx4w/4BWJpg3s/5l+6pRQEHzFRM8WFi4XffSP1Z+4qi7GbjWbvRQEbdIco5mIMq+zX4rPuLrw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/extend": { "version": "3.0.2", @@ -9320,53 +9361,53 @@ } }, "node_modules/extendable-media-recorder": { - "version": "9.2.27", - "resolved": "https://registry.npmjs.org/extendable-media-recorder/-/extendable-media-recorder-9.2.27.tgz", - "integrity": "sha512-2X+Ixi1cxLek0Cj9x9atmhQ+apG+LwJpP2p3ypP8Pxau0poDnicrg7FTfPVQV5PW/3DHFm/eQ16vbgo5Yk3HGQ==", + "version": "9.2.28", + "resolved": "https://registry.npmjs.org/extendable-media-recorder/-/extendable-media-recorder-9.2.28.tgz", + "integrity": "sha512-OIltlqo8rIUOcPn5c6aZ0qCvcTpXDnBgts8eRXK1VQKCI1omYBgZZyzkJ5vrQnB8xR34+GNOFs1Z+srq6tQsdQ==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.27.6", - "media-encoder-host": "^9.0.20", + "media-encoder-host": "^9.0.21", "multi-buffer-data-view": "^6.0.22", - "recorder-audio-worklet": "^6.0.48", + "recorder-audio-worklet": "^6.0.49", "standardized-audio-context": "^25.3.77", "subscribable-things": "^2.1.53", "tslib": "^2.8.1" } }, "node_modules/extendable-media-recorder-wav-encoder": { - "version": "7.0.129", - "resolved": "https://registry.npmjs.org/extendable-media-recorder-wav-encoder/-/extendable-media-recorder-wav-encoder-7.0.129.tgz", - "integrity": "sha512-/wqM2hnzvLy/iUlg/EU3JIF8MJcidy8I77Z7CCm5+CVEClDfcs6bH9PgghuisndwKTaud0Dh48RTD83gkfEjCw==", + "version": "7.0.130", + "resolved": "https://registry.npmjs.org/extendable-media-recorder-wav-encoder/-/extendable-media-recorder-wav-encoder-7.0.130.tgz", + "integrity": "sha512-tVroIOesnMarsm+iIRiWUEYgmQj/lGqeMVNwJla7/tTVkX3ZPamh0NW59deILANwDIJq9lARLQmsUhyDWW57PA==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.27.6", - "extendable-media-recorder-wav-encoder-broker": "^7.0.119", - "extendable-media-recorder-wav-encoder-worker": "^8.0.116", + "extendable-media-recorder-wav-encoder-broker": "^7.0.120", + "extendable-media-recorder-wav-encoder-worker": "^8.0.117", "tslib": "^2.8.1" } }, "node_modules/extendable-media-recorder-wav-encoder-broker": { - "version": "7.0.119", - "resolved": "https://registry.npmjs.org/extendable-media-recorder-wav-encoder-broker/-/extendable-media-recorder-wav-encoder-broker-7.0.119.tgz", - "integrity": "sha512-BLrFOnqFLpsmmNpSk/TfjNs4j6ImCSGtoryIpRlqNu5S/Avt6gRJI0s4UYvdK7h17PCi+8vaDr75blvmU1sYlw==", + "version": "7.0.120", + "resolved": "https://registry.npmjs.org/extendable-media-recorder-wav-encoder-broker/-/extendable-media-recorder-wav-encoder-broker-7.0.120.tgz", + "integrity": "sha512-wYRnDsHngGGR7LnEfl+tkNa7ck31KSV3PzqGLMCeKRmr02OrYxJUKyCeYf79TEe8O0EFtlBGBR9fiAj6OGDOhg==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.27.6", - "broker-factory": "^3.1.7", - "extendable-media-recorder-wav-encoder-worker": "^8.0.116", + "broker-factory": "^3.1.8", + "extendable-media-recorder-wav-encoder-worker": "^8.0.117", "tslib": "^2.8.1" } }, "node_modules/extendable-media-recorder-wav-encoder-worker": { - "version": "8.0.116", - "resolved": "https://registry.npmjs.org/extendable-media-recorder-wav-encoder-worker/-/extendable-media-recorder-wav-encoder-worker-8.0.116.tgz", - "integrity": "sha512-bJPR0B7ZHeoqi9YoSie+UXAfEYya3efQ9eLiWuyK4KcOv+SuYQvWCoyzX5kjvb6GqIBCUnev5xulfeHRlyCwvw==", + "version": "8.0.117", + "resolved": "https://registry.npmjs.org/extendable-media-recorder-wav-encoder-worker/-/extendable-media-recorder-wav-encoder-worker-8.0.117.tgz", + "integrity": "sha512-rnlIPkMB5F2sslesLXLdJ/Z0Kes4ROtdr+Kf/a6aF3233oJWK7165krWNZP5gpKZ4Z5Lhjx4fxVB12exZvlb2g==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.27.6", "tslib": "^2.8.1", - "worker-factory": "^7.0.43" + "worker-factory": "^7.0.44" } }, "node_modules/fast-deep-equal": { @@ -10072,6 +10113,7 @@ "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" }, @@ -11342,6 +11384,18 @@ "url": "https://opencollective.com/eslint" } }, + "node_modules/jsonc-eslint-parser/node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/jsondiffpatch": { "version": "0.6.0", "resolved": "https://registry.npmjs.org/jsondiffpatch/-/jsondiffpatch-0.6.0.tgz", @@ -12021,6 +12075,7 @@ "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-0.5.1.tgz", "integrity": "sha512-9rrA30MRRP3gBD3HTGnC6cDFpaE1kVDWxWgqWJUN0RvDNAo+Nz/9GxB+nHOH0ifbVFy0hSA1V6vFDvnx54lTEQ==", "dev": true, + "license": "MIT", "dependencies": { "mlly": "^1.7.3", "pkg-types": "^1.2.1" @@ -12577,40 +12632,40 @@ "license": "MIT" }, "node_modules/media-encoder-host": { - "version": "9.0.20", - "resolved": "https://registry.npmjs.org/media-encoder-host/-/media-encoder-host-9.0.20.tgz", - "integrity": "sha512-IyEYxw6az97RNuETOAZV4YZqNAPOiF9GKIp5mVZb4HOyWd6mhkWQ34ydOzhqAWogMyc4W05kjN/VCgTtgyFmsw==", + "version": "9.0.21", + "resolved": "https://registry.npmjs.org/media-encoder-host/-/media-encoder-host-9.0.21.tgz", + "integrity": "sha512-hL41jBYmTKxGB2Z82rcR2hx4JCFBR3fmSOLR+G7EEkZn+uwSXDJTRFiYd7XWKnpjiHXy7ewf0ByEpby+2mv4Qg==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.27.6", - "media-encoder-host-broker": "^8.0.19", - "media-encoder-host-worker": "^10.0.19", + "media-encoder-host-broker": "^8.0.20", + "media-encoder-host-worker": "^10.0.20", "tslib": "^2.8.1" } }, "node_modules/media-encoder-host-broker": { - "version": "8.0.19", - "resolved": "https://registry.npmjs.org/media-encoder-host-broker/-/media-encoder-host-broker-8.0.19.tgz", - "integrity": "sha512-lTpsNuaZdTCdtTHsOyww7Ae0Mwv+7mFS+O4YkFYWhXwVs0rm6XbRK5jRRn5JmcX3n1eTE1lQS5RgX8qbNaIjSg==", + "version": "8.0.20", + "resolved": "https://registry.npmjs.org/media-encoder-host-broker/-/media-encoder-host-broker-8.0.20.tgz", + "integrity": "sha512-Jab7frQx8d7Js+yBeMx7FeTrxRDjIpSmdARRkHSOtWNKJv9a+Hy2/OAPXoEJl6Y15jk1eiDwJkMMF6zvlnNMEA==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.27.6", - "broker-factory": "^3.1.7", + "broker-factory": "^3.1.8", "fast-unique-numbers": "^9.0.22", - "media-encoder-host-worker": "^10.0.19", + "media-encoder-host-worker": "^10.0.20", "tslib": "^2.8.1" } }, "node_modules/media-encoder-host-worker": { - "version": "10.0.19", - "resolved": "https://registry.npmjs.org/media-encoder-host-worker/-/media-encoder-host-worker-10.0.19.tgz", - "integrity": "sha512-I8fwc6f41peER3RFSiwDxnIHbqU7p3pc2ghQozcw9CQfL0mWEo4IjQJtyswrrlL/HO2pgVSMQbaNzE4q/0mfDQ==", + "version": "10.0.20", + "resolved": "https://registry.npmjs.org/media-encoder-host-worker/-/media-encoder-host-worker-10.0.20.tgz", + "integrity": "sha512-Ysqjwlcu4VP6FlM+atQJZFFJwvfrw603gnmhWfyBlcE5+pl7ctc0wo2dbPiBpz9pc1pY4N5N6PHHhywkqHxfnA==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.27.6", - "extendable-media-recorder-wav-encoder-broker": "^7.0.119", + "extendable-media-recorder-wav-encoder-broker": "^7.0.120", "tslib": "^2.8.1", - "worker-factory": "^7.0.43" + "worker-factory": "^7.0.44" } }, "node_modules/media-typer": { @@ -13358,6 +13413,7 @@ "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.4.tgz", "integrity": "sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==", "dev": true, + "license": "MIT", "dependencies": { "acorn": "^8.14.0", "pathe": "^2.0.1", @@ -13369,7 +13425,8 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/mri": { "version": "1.2.0", @@ -13970,6 +14027,7 @@ "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-0.2.11.tgz", "integrity": "sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==", "dev": true, + "license": "MIT", "dependencies": { "quansync": "^0.2.7" } @@ -14270,6 +14328,7 @@ "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", "dev": true, + "license": "MIT", "dependencies": { "confbox": "^0.1.8", "mlly": "^1.7.4", @@ -14280,7 +14339,8 @@ "version": "2.0.3", "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/playwright": { "version": "1.52.0", @@ -15022,7 +15082,8 @@ "type": "individual", "url": "https://github.com/sponsors/sxzz" } - ] + ], + "license": "MIT" }, "node_modules/queue-microtask": { "version": "1.2.3", @@ -15191,19 +15252,19 @@ } }, "node_modules/recorder-audio-worklet": { - "version": "6.0.48", - "resolved": "https://registry.npmjs.org/recorder-audio-worklet/-/recorder-audio-worklet-6.0.48.tgz", - "integrity": "sha512-PVlq/1hjCrPcUGqARg8rR30A303xDCao0jmlBTaUaKkN3Xme58RI7EQxurv8rw2eDwVrN+nrni0UoJoa5/v+zg==", + "version": "6.0.49", + "resolved": "https://registry.npmjs.org/recorder-audio-worklet/-/recorder-audio-worklet-6.0.49.tgz", + "integrity": "sha512-JLKSKh5rAWxReHqca/f3h9L8pzBF1KnB+N2oIP2jkTD37n2yupkCazKD2f20pUOGkaX6AJG998gtKNCHYJn4nw==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.27.6", - "broker-factory": "^3.1.7", + "broker-factory": "^3.1.8", "fast-unique-numbers": "^9.0.22", "recorder-audio-worklet-processor": "^5.0.35", "standardized-audio-context": "^25.3.77", "subscribable-things": "^2.1.53", "tslib": "^2.8.1", - "worker-factory": "^7.0.43" + "worker-factory": "^7.0.44" } }, "node_modules/recorder-audio-worklet-processor": { @@ -15811,6 +15872,7 @@ "version": "7.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "license": "ISC", "bin": { "semver": "bin/semver.js" }, @@ -16701,7 +16763,8 @@ "version": "0.3.2", "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/tinypool": { "version": "1.0.1", @@ -17598,6 +17661,7 @@ "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-2.3.5.tgz", "integrity": "sha512-RyWSb5AHmGtjjNQ6gIlA67sHOsWpsbWpwDokLwTcejVdOjEkJZh7QKu14J00gDDVSh8kGH4KYC/TNBceXFZhtw==", "dev": true, + "license": "MIT", "dependencies": { "acorn": "^8.14.1", "picomatch": "^4.0.2", @@ -17612,6 +17676,7 @@ "resolved": "https://registry.npmjs.org/unplugin-icons/-/unplugin-icons-0.22.0.tgz", "integrity": "sha512-CP+iZq5U7doOifer5bcM0jQ9t3Is7EGybIYt3myVxceI8Zuk8EZEpe1NPtJvh7iqMs1VdbK0L41t9+um9VuuLw==", "dev": true, + "license": "MIT", "dependencies": { "@antfu/install-pkg": "^0.5.0", "@antfu/utils": "^0.7.10", @@ -17658,6 +17723,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.3" }, @@ -17675,6 +17741,7 @@ "resolved": "https://registry.npmjs.org/unplugin-vue-components/-/unplugin-vue-components-0.28.0.tgz", "integrity": "sha512-jiTGtJ3JsRFBjgvyilfrX7yUoGKScFgbdNw+6p6kEXU+Spf/rhxzgvdfuMcvhCcLmflB/dY3pGQshYBVGOUx7Q==", "dev": true, + "license": "MIT", "dependencies": { "@antfu/utils": "^0.7.10", "@rollup/pluginutils": "^5.1.4", @@ -17721,6 +17788,7 @@ "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", "dev": true, + "license": "MIT", "dependencies": { "ms": "^2.1.3" }, @@ -17753,6 +17821,7 @@ "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz", "integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==", "dev": true, + "license": "MIT", "engines": { "node": ">=12" }, @@ -18873,7 +18942,8 @@ "version": "0.6.2", "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.2.tgz", "integrity": "sha512-66/V2i5hQanC51vBQKPH4aI8NMAcBW59FVBs+rC7eGHupMyfn34q7rZIE+ETlJ+XTevqfUhVVBgSUNSW2flEUQ==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/websocket-driver": { "version": "0.7.4", @@ -19040,9 +19110,9 @@ } }, "node_modules/worker-factory": { - "version": "7.0.43", - "resolved": "https://registry.npmjs.org/worker-factory/-/worker-factory-7.0.43.tgz", - "integrity": "sha512-SACVoj3gWKtMVyT9N+VD11Pd/Xe58+ZFfp8b7y/PagOvj3i8lU3Uyj+Lj7WYTmSBvNLC0JFaQkx44E6DhH5+WA==", + "version": "7.0.44", + "resolved": "https://registry.npmjs.org/worker-factory/-/worker-factory-7.0.44.tgz", + "integrity": "sha512-08AuUfWi+KeZI+KC7nU4pU/9tDeAFvE5NSWk+K9nIfuQc6UlOsZtjjeGVYVEn+DEchyXNJ5i10HCn0xRzFXEQA==", "license": "MIT", "dependencies": { "@babel/runtime": "^7.27.6", diff --git a/src/App.vue b/src/App.vue index 85b36240c4..1a4068a279 100644 --- a/src/App.vue +++ b/src/App.vue @@ -15,12 +15,14 @@ import ProgressSpinner from 'primevue/progressspinner' import { computed, onMounted } from 'vue' import GlobalDialog from '@/components/dialog/GlobalDialog.vue' +import { useConflictDetection } from '@/composables/useConflictDetection' import config from '@/config' import { useWorkspaceStore } from '@/stores/workspaceStore' import { electronAPI, isElectron } from './utils/envUtil' const workspaceStore = useWorkspaceStore() +const conflictDetection = useConflictDetection() const isLoading = computed(() => workspaceStore.spinner) const handleKey = (e: KeyboardEvent) => { workspaceStore.shiftDown = e.shiftKey @@ -47,5 +49,9 @@ onMounted(() => { if (isElectron()) { document.addEventListener('contextmenu', showContextMenu) } + + // Initialize conflict detection in background + // This runs async and doesn't block UI setup + void conflictDetection.initializeConflictDetection() }) diff --git a/src/components/dialog/GlobalDialog.vue b/src/components/dialog/GlobalDialog.vue index a8b60a60c3..6edd13d357 100644 --- a/src/components/dialog/GlobalDialog.vue +++ b/src/components/dialog/GlobalDialog.vue @@ -29,7 +29,7 @@ /> diff --git a/src/components/dialog/content/LoadWorkflowWarning.vue b/src/components/dialog/content/LoadWorkflowWarning.vue index d780f9a39c..3a38c339e4 100644 --- a/src/components/dialog/content/LoadWorkflowWarning.vue +++ b/src/components/dialog/content/LoadWorkflowWarning.vue @@ -36,7 +36,6 @@ size="md" :disabled="!!error || missingNodePacks.length === 0" :is-loading="isLoading" - :is-installing="isInstalling" :node-packs="missingNodePacks" :label=" isLoading @@ -55,15 +54,13 @@ import { computed, onMounted, ref } from 'vue' import NoResultsPlaceholder from '@/components/common/NoResultsPlaceholder.vue' import MissingCoreNodesMessage from '@/components/dialog/content/MissingCoreNodesMessage.vue' +import PackInstallButton from '@/components/dialog/content/manager/button/PackInstallButton.vue' import { useMissingNodes } from '@/composables/nodePack/useMissingNodes' import { useComfyManagerService } from '@/services/comfyManagerService' import { useDialogService } from '@/services/dialogService' -import { useComfyManagerStore } from '@/stores/comfyManagerStore' import type { MissingNodeType } from '@/types/comfy' import { ManagerTab } from '@/types/comfyManagerTypes' -import PackInstallButton from './manager/button/PackInstallButton.vue' - const props = defineProps<{ missingNodeTypes: MissingNodeType[] }>() @@ -72,17 +69,8 @@ const props = defineProps<{ const { missingNodePacks, isLoading, error, missingCoreNodes } = useMissingNodes() -const comfyManagerStore = useComfyManagerStore() const isLegacyManager = ref(false) -// Check if any of the missing packs are currently being installed -const isInstalling = computed(() => { - if (!missingNodePacks.value?.length) return false - return missingNodePacks.value.some((pack) => - comfyManagerStore.isPackInstalling(pack.id) - ) -}) - const uniqueNodes = computed(() => { const seenTypes = new Set() return props.missingNodeTypes diff --git a/src/components/dialog/content/manager/ManagerDialogContent.vue b/src/components/dialog/content/manager/ManagerDialogContent.vue index 18078912d4..9c637261f2 100644 --- a/src/components/dialog/content/manager/ManagerDialogContent.vue +++ b/src/components/dialog/content/manager/ManagerDialogContent.vue @@ -26,6 +26,35 @@ }" >
+ +
+ +
+

+ {{ $t('manager.conflicts.warningBanner.title') }} +

+

+ {{ $t('manager.conflicts.warningBanner.message') }} +

+

+ {{ $t('manager.conflicts.warningBanner.button') }} +

+
+ +
@@ -101,7 +133,8 @@ import { onMounted, onUnmounted, ref, - watch + watch, + watchEffect } from 'vue' import { useI18n } from 'vue-i18n' @@ -119,6 +152,7 @@ import { useManagerStatePersistence } from '@/composables/manager/useManagerStat import { useInstalledPacks } from '@/composables/nodePack/useInstalledPacks' import { usePackUpdateStatus } from '@/composables/nodePack/usePackUpdateStatus' import { useWorkflowPacks } from '@/composables/nodePack/useWorkflowPacks' +import { useConflictAcknowledgment } from '@/composables/useConflictAcknowledgment' import { useRegistrySearch } from '@/composables/useRegistrySearch' import { useComfyManagerStore } from '@/stores/comfyManagerStore' import { useComfyRegistryStore } from '@/stores/comfyRegistryStore' @@ -133,12 +167,13 @@ const { initialTab } = defineProps<{ const { t } = useI18n() const comfyManagerStore = useComfyManagerStore() const { getPackById } = useComfyRegistryStore() +const conflictAcknowledgment = useConflictAcknowledgment() const persistedState = useManagerStatePersistence() const initialState = persistedState.loadStoredState() const GRID_STYLE = { display: 'grid', - gridTemplateColumns: 'repeat(auto-fill, minmax(19rem, 1fr))', + gridTemplateColumns: 'repeat(auto-fill, minmax(17rem, 1fr))', padding: '0.5rem', gap: '1.5rem' } as const @@ -149,6 +184,13 @@ const { toggle: toggleSideNav } = useResponsiveCollapse() +// Use conflict acknowledgment state from composable +const { + shouldShowManagerBanner, + dismissWarningBanner, + dismissRedDotNotification +} = conflictAcknowledgment + const tabs = ref([ { id: ManagerTab.All, label: t('g.all'), icon: 'pi-list' }, { id: ManagerTab.Installed, label: t('g.installed'), icon: 'pi-box' }, @@ -312,6 +354,13 @@ watch([isAllTab, searchResults], () => { displayPacks.value = searchResults.value }) +const onClickWarningLink = () => { + window.open( + 'https://docs.comfy.org/troubleshooting/custom-node-issues', + '_blank' + ) +} + const onResultsChange = () => { switch (selectedTab.value?.id) { case ManagerTab.Installed: @@ -472,6 +521,10 @@ watch([searchQuery, selectedTab], () => { } }) +watchEffect(() => { + dismissRedDotNotification() +}) + onBeforeUnmount(() => { persistedState.persistState({ selectedTabId: selectedTab.value?.id, diff --git a/src/components/dialog/content/manager/NodeConflictDialogContent.vue b/src/components/dialog/content/manager/NodeConflictDialogContent.vue new file mode 100644 index 0000000000..ec00b42c53 --- /dev/null +++ b/src/components/dialog/content/manager/NodeConflictDialogContent.vue @@ -0,0 +1,244 @@ + + + + diff --git a/src/components/dialog/content/manager/NodeConflictFooter.vue b/src/components/dialog/content/manager/NodeConflictFooter.vue new file mode 100644 index 0000000000..c76f779080 --- /dev/null +++ b/src/components/dialog/content/manager/NodeConflictFooter.vue @@ -0,0 +1,54 @@ + + + diff --git a/src/components/dialog/content/manager/NodeConflictHeader.vue b/src/components/dialog/content/manager/NodeConflictHeader.vue new file mode 100644 index 0000000000..70e30d129e --- /dev/null +++ b/src/components/dialog/content/manager/NodeConflictHeader.vue @@ -0,0 +1,12 @@ + diff --git a/src/components/dialog/content/manager/PackStatusMessage.vue b/src/components/dialog/content/manager/PackStatusMessage.vue index b31f880e9f..ab2b38a450 100644 --- a/src/components/dialog/content/manager/PackStatusMessage.vue +++ b/src/components/dialog/content/manager/PackStatusMessage.vue @@ -17,9 +17,10 @@ diff --git a/src/components/dialog/content/manager/PackVersionBadge.test.ts b/src/components/dialog/content/manager/PackVersionBadge.test.ts index 9bd8979861..71d3383d81 100644 --- a/src/components/dialog/content/manager/PackVersionBadge.test.ts +++ b/src/components/dialog/content/manager/PackVersionBadge.test.ts @@ -6,11 +6,18 @@ import { nextTick } from 'vue' import { createI18n } from 'vue-i18n' import enMessages from '@/locales/en/main.json' -import { SelectedVersion } from '@/types/comfyManagerTypes' import PackVersionBadge from './PackVersionBadge.vue' import PackVersionSelectorPopover from './PackVersionSelectorPopover.vue' +// Mock config to prevent __COMFYUI_FRONTEND_VERSION__ error +vi.mock('@/config', () => ({ + default: { + app_title: 'ComfyUI', + app_version: '1.0.0' + } +})) + const mockNodePack = { id: 'test-pack', name: 'Test Pack', @@ -120,7 +127,7 @@ describe('PackVersionBadge', () => { const badge = wrapper.find('[role="button"]') expect(badge.exists()).toBe(true) - expect(badge.find('span').text()).toBe(SelectedVersion.NIGHTLY) + expect(badge.find('span').text()).toBe('nightly') }) it('falls back to NIGHTLY when nodePack.id is missing', () => { @@ -134,7 +141,7 @@ describe('PackVersionBadge', () => { const badge = wrapper.find('[role="button"]') expect(badge.exists()).toBe(true) - expect(badge.find('span').text()).toBe(SelectedVersion.NIGHTLY) + expect(badge.find('span').text()).toBe('nightly') }) it('toggles the popover when button is clicked', async () => { diff --git a/src/components/dialog/content/manager/PackVersionBadge.vue b/src/components/dialog/content/manager/PackVersionBadge.vue index 47975937eb..0129ba7efe 100644 --- a/src/components/dialog/content/manager/PackVersionBadge.vue +++ b/src/components/dialog/content/manager/PackVersionBadge.vue @@ -1,8 +1,8 @@