diff --git a/frontend-modern/browser-verification/2026-10-14-pbs-phone-consumers.json b/frontend-modern/browser-verification/2026-10-14-pbs-phone-consumers.json new file mode 100644 index 0000000000..7333274aa9 --- /dev/null +++ b/frontend-modern/browser-verification/2026-10-14-pbs-phone-consumers.json @@ -0,0 +1,86 @@ +{ + "version": 1, + "base_sha": "7d2c9b52581ec24e828dab6da9369621be79330d", + "verified_at": "2026-10-14T04:14:07.481847+00:00", + "result": "passed", + "changed_paths": [ + "frontend-modern/browser-tests/pbs-host-history-correlation.html" + ], + "content_sha256": { + "frontend-modern/browser-tests/pbs-host-history-correlation.html": "1952533ab3b823c4204a50d13006520bf4608f308d980356a7d0d6e7c1573ec7", + "frontend-modern/browser-tests/pbs-host-history-correlation.tsx": "5817353310efc2b89e9219e3ce304c01ce53b81acd75843ab40c6e1e10b17e12", + "frontend-modern/src/components/Infrastructure/ResourceDetailDrawer.tsx": "a9f6116d18eeb473aa86dd91c4b24b98fb1a2e59dda35347718bfb5dbb770f2b", + "frontend-modern/src/components/Workloads/GuestDrawerHistory.tsx": "11ffac0be9469fc1107e63c4e8c99fcd7df26fd401b76ac29664c29cde8a680a" + }, + "routes": [ + "/browser-tests/pbs-host-history-correlation.html?topology=guest", + "/browser-tests/pbs-host-history-correlation.html?topology=pbs-only", + "/browser-tests/pbs-host-history-correlation.html?topology=side-by-side" + ], + "states": [ + "Three genuine390px dark phone topologies use the production PBS table/drawer/history. Previous three desktop results are retained separately,not repeated.", + "Transient correlated-host omission preserves selected series; target withdrawal removes charts; restoration retains7d and drawer owner." + ], + "interactions": [ + "Real touch disclosure/range/phone charts; automatic/reordered snapshots; Overview/Manage switch and bounded5.5-second hidden-Overview polling control.", + "No guest action or external request. One unmatched read-only operator-state endpoint remains a404 safe-fixture limit." + ], + "viewports": [ + { + "width": 390, + "height": 844 + } + ], + "runtime": { + "playwright": "1.56.1", + "webkit": "26.0" + }, + "preview": { + "source": "6ced391ac3d4c832f2b7012a2397a6b9f76d990d", + "containing_source": "7d2c9b52581ec24e828dab6da9369621be79330d", + "archive_sha256": "0897dabec2bfdfb8beca6732fde7bbfd1e845985973ba7c5c543c0f617555719", + "source_input_validation": "All2819 original input hashes match except one unimported Docs test with explicit old/new containing bridge; all compiled inputs and176 artifact hashes match." + }, + "pixel_review": { + "tool": "native view_image", + "opened": [ + { + "file": "pbs-phone-guest-host-history.png", + "bytes": 77417, + "sha256": "68a28ae6229484c1cab52054441386077ed4ca1ad52731ca1636335974beb5fa", + "pixel_observation": "History and identity are readable within genuine390px; target withdrawal leaves no chart or measured zero." + }, + { + "file": "pbs-phone-guest-target-withdrawn.png", + "bytes": 24848, + "sha256": "9ffacbebadf8e0e0f2931abe5f8b60a3f2675ccf0763a844a52b095b391ea72c", + "pixel_observation": "History and identity are readable within genuine390px; target withdrawal leaves no chart or measured zero." + }, + { + "file": "pbs-phone-pbs-only-host-history.png", + "bytes": 88074, + "sha256": "1c46cee85e04d9e8e80d9cb28ac23b2ce3265510a9bebdc0a875e06b56a4b956", + "pixel_observation": "History and identity are readable within genuine390px; target withdrawal leaves no chart or measured zero." + }, + { + "file": "pbs-phone-pbs-only-target-withdrawn.png", + "bytes": 25264, + "sha256": "7aa87cff8397a1b3236e2bbe1fd52e38678e969397ca3f0f808b5f0be9a64a19", + "pixel_observation": "History and identity are readable within genuine390px; target withdrawal leaves no chart or measured zero." + }, + { + "file": "pbs-phone-side-by-side-host-history.png", + "bytes": 88092, + "sha256": "0269916f805f80f0dfc5d9191614c5907693c9493afb906b596ad61c40930f4b", + "pixel_observation": "History and identity are readable within genuine390px; target withdrawal leaves no chart or measured zero." + }, + { + "file": "pbs-phone-side-by-side-target-withdrawn.png", + "bytes": 25264, + "sha256": "7aa87cff8397a1b3236e2bbe1fd52e38678e969397ca3f0f808b5f0be9a64a19", + "pixel_observation": "History and identity are readable within genuine390px; target withdrawal leaves no chart or measured zero." + } + ] + }, + "proof_scope": "Completes missing phone PBS source-consumer proof only. Does not establish native PBS disappearance/restart/thaw,authentication golden acceptance,release inclusion or reporter resolution." +} diff --git a/frontend-modern/package-lock.json b/frontend-modern/package-lock.json index 78f8a43477..f6e1bb385a 100644 --- a/frontend-modern/package-lock.json +++ b/frontend-modern/package-lock.json @@ -15,7 +15,7 @@ "lucide-solid": "^0.577.0", "marked": "^17.0.1", "qrcode": "^1.5.4", - "solid-js": "^1.9.15" + "solid-js": "^1.9.16" }, "devDependencies": { "@eslint/js": "^9.39.2", @@ -23,21 +23,21 @@ "@tailwindcss/typography": "^0.5.19", "@tailwindcss/vite": "^4.3.3", "@testing-library/jest-dom": "^6.5.0", - "@types/node": "^26.6.3", + "@types/node": "^26.6.4", "@types/qrcode": "^1.5.6", - "@typescript-eslint/eslint-plugin": "^8.71.0", - "@typescript-eslint/parser": "^8.71.0", + "@typescript-eslint/eslint-plugin": "^8.71.1", + "@typescript-eslint/parser": "^8.71.1", "@vitest/coverage-v8": "^4.1.11", "eslint": "^9.20.0", "eslint-config-prettier": "^10.0.0", - "eslint-plugin-solid": "^0.18.0", - "globals": "^17.12.0", + "eslint-plugin-solid": "^0.18.1", + "globals": "^17.13.0", "jscpd": "^5.4.0", "jsdom": "^24.1.0", "prettier": "3.9.9", "tailwindcss": "^4.3.3", "typescript": "^5.3.0", - "typescript-eslint": "^8.71.0", + "typescript-eslint": "^8.71.1", "vite": "^6.4.3", "vite-plugin-solid": "^2.11.14", "vite-plugin-sri-gen": "^1.7.4", @@ -2126,9 +2126,9 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-26.6.3.tgz", - "integrity": "sha512-dsqMQQoeTLqu9wynDD00q573mNzso3IdQOAfHRJqLCcmCFPoGo9A1bDpUcv/9tnKpErQWv9uKeGfl37EIS02Yg==", + "version": "26.6.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-26.6.4.tgz", + "integrity": "sha512-ldVPDCzj7fsaGZrLB0NuHuTvJcsNasysBAqMolr/cgxrLd1xbqxIr3XJiPnHHJUCxj5sNF1vnRj9aWnrVh5Jcg==", "dev": true, "license": "MIT", "dependencies": { @@ -2153,17 +2153,17 @@ "optional": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.71.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.71.0.tgz", - "integrity": "sha512-pqcS9c1HxZTHt7End4nXqd0s5lJrrFzrgCkKFJrsbUnaL6M3+6oBFZaslg6Gjsl3argl2DDRFROnXARaZ2e4Nw==", + "version": "8.71.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.71.1.tgz", + "integrity": "sha512-nNlBf6HuotqMgZvSkWD5hNdemiBIxQ2NmrlgfcUIeZRs+BbakjscCQRq/Hb74EFVnFiSWWdL12JruqwBy3ERDw==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.71.0", - "@typescript-eslint/type-utils": "8.71.0", - "@typescript-eslint/utils": "8.71.0", - "@typescript-eslint/visitor-keys": "8.71.0", + "@typescript-eslint/scope-manager": "8.71.1", + "@typescript-eslint/type-utils": "8.71.1", + "@typescript-eslint/utils": "8.71.1", + "@typescript-eslint/visitor-keys": "8.71.1", "ignore": "^7.0.5", "natural-compare": "^1.4.0", "ts-api-utils": "^2.5.0" @@ -2176,22 +2176,22 @@ "url": "https://opencollective.com/typescript-eslint" }, "peerDependencies": { - "@typescript-eslint/parser": "^8.71.0", + "@typescript-eslint/parser": "^8.71.1", "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", "typescript": ">=4.8.4 <6.1.0" } }, "node_modules/@typescript-eslint/parser": { - "version": "8.71.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.71.0.tgz", - "integrity": "sha512-CG4nPk1f2zc8yw4pALqHsFYH2hdo+h1T9daSp21+Hnxi9LOE3GT9hAfTKJCBXVNM2GmYs1eMEP615wPoeOgk3A==", + "version": "8.71.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.71.1.tgz", + "integrity": "sha512-oM/5sAqz/l1v/zYK1qTOPrn2+JIrBGC1V6uNYucRO5gh6eT9vWJ/RhPbGE59byvZEUQ4VP6XkLBaS5Jti5jpvw==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/scope-manager": "8.71.0", - "@typescript-eslint/types": "8.71.0", - "@typescript-eslint/typescript-estree": "8.71.0", - "@typescript-eslint/visitor-keys": "8.71.0", + "@typescript-eslint/scope-manager": "8.71.1", + "@typescript-eslint/types": "8.71.1", + "@typescript-eslint/typescript-estree": "8.71.1", + "@typescript-eslint/visitor-keys": "8.71.1", "debug": "^4.4.3" }, "engines": { @@ -2207,14 +2207,14 @@ } }, "node_modules/@typescript-eslint/project-service": { - "version": "8.71.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.71.0.tgz", - "integrity": "sha512-aABjw5rjBacYONVPaPiWOCjJu0vEF4a25iQuodlmQYL1trtLZ0X/y+2Vzl3BKI1odM4LnwLE1oUDXYp1wzx1TQ==", + "version": "8.71.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.71.1.tgz", + "integrity": "sha512-Oijc9RUsohHjncg6iGi7gCtjnEjYt9FWv9u6ygK8uKcHK5eLjLAkqERQ9BaytbpceOFdk6kifPCS/zAZE+A99g==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.71.0", - "@typescript-eslint/types": "^8.71.0", + "@typescript-eslint/tsconfig-utils": "^8.71.1", + "@typescript-eslint/types": "^8.71.1", "debug": "^4.4.3" }, "engines": { @@ -2229,14 +2229,14 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "8.71.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.71.0.tgz", - "integrity": "sha512-gWF0BhUcnjZxSpLE8ngS/59n2SB0J3YqRxvX1+2aoRJk9hNtHSLOV+TcarFiOr5ipXm3yc1QrI4c9YZc8zyCxw==", + "version": "8.71.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.71.1.tgz", + "integrity": "sha512-1YUDZXdTnXLlob03SFHBipdyMBsDVm7zoSz0ytTJ39dk5J1TgsTK03VlR/dLXG/RLLUrPcYbD4rp23BmHxHP0w==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.71.0", - "@typescript-eslint/visitor-keys": "8.71.0" + "@typescript-eslint/types": "8.71.1", + "@typescript-eslint/visitor-keys": "8.71.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2247,9 +2247,9 @@ } }, "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.71.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.71.0.tgz", - "integrity": "sha512-Z1UlWHADEK2Mlb9NpWfDeSjqoZ5EyrOv4R3eQpbkzqn/EwaIdOpXXupEA1+0ZIOSJSZZDBHG0BrQyN8zUG6Pwg==", + "version": "8.71.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.71.1.tgz", + "integrity": "sha512-oTvkml5SxXhgg+WWKhod5qWQICDXtOB+/Hi9VdPKFAANJ2b7YOgMffgvzXuqog7R6A/JtrzRf128dsxummyWhg==", "dev": true, "license": "MIT", "engines": { @@ -2264,15 +2264,15 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "8.71.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.71.0.tgz", - "integrity": "sha512-i8uO1qbdxeKgRnS5sCRt6On3/nfo2d2DwQe3Yvjx543zLy7r8ySqRuPPiIIXAhS03U0v5NfAFx+rUgxFzKKwNw==", + "version": "8.71.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.71.1.tgz", + "integrity": "sha512-kH3t3jZCYv2PZSBEWPKTariLrCaoF1CLoPitYFBJOhAGEwWnSRAtGEifrfrpBa4K9JlwWNZotgA5w3/wLSk/FQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.71.0", - "@typescript-eslint/typescript-estree": "8.71.0", - "@typescript-eslint/utils": "8.71.0", + "@typescript-eslint/types": "8.71.1", + "@typescript-eslint/typescript-estree": "8.71.1", + "@typescript-eslint/utils": "8.71.1", "debug": "^4.4.3", "ts-api-utils": "^2.5.0" }, @@ -2289,9 +2289,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "8.71.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.71.0.tgz", - "integrity": "sha512-cJ4OoxPGWvFnBTnSZyaU+qJzGTqPTGJY+gDchj6cRyLRdmIdt4rcsE4twj+zPfrNiWuVi38wijHzShL++Z9atQ==", + "version": "8.71.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.71.1.tgz", + "integrity": "sha512-ybYnPTUwg3VQQOFEiBPLs8Jxl1ry2vXdn1kVKguomBbvxpetdu3MKTNDqFNUrlG8ylP9MpZosmXMFYlGQHk1oQ==", "dev": true, "license": "MIT", "engines": { @@ -2303,16 +2303,16 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.71.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.71.0.tgz", - "integrity": "sha512-PEEF4G5sLLWAS5BpPrUvms4ySZkiBQQZM4z+3ReI46axK5Vqr/vXBQatJQIZZOYdGyPUAKTtsrWzpqKuU+3DEw==", + "version": "8.71.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.71.1.tgz", + "integrity": "sha512-pSKSEK1JJpHs6KiKVtABCE4iJK5d7FLFzDXQNBQ2oRY7LEd3UwOt3TZemTgu9syTIf56dJWlTn/pdmrO9oKUXQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/project-service": "8.71.0", - "@typescript-eslint/tsconfig-utils": "8.71.0", - "@typescript-eslint/types": "8.71.0", - "@typescript-eslint/visitor-keys": "8.71.0", + "@typescript-eslint/project-service": "8.71.1", + "@typescript-eslint/tsconfig-utils": "8.71.1", + "@typescript-eslint/types": "8.71.1", + "@typescript-eslint/visitor-keys": "8.71.1", "debug": "^4.4.3", "minimatch": "^10.2.2", "semver": "^7.7.3", @@ -2331,16 +2331,16 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "8.71.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.71.0.tgz", - "integrity": "sha512-pKR/tEMVrXZG23UFKUn5BQf3zfmfk7KQceI2cGzywZ5nxM5Eu3hEJU1utjWzydtzBbcJAQhHN8iPCxobHpPcZQ==", + "version": "8.71.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.71.1.tgz", + "integrity": "sha512-CBjT6gfAz3DW2j9Q4moFnqt208Aq+506sVGXfpRcyAeqn0EpayL0mjdWoCO2t3RC7GewNrFxdeehuEaPg6DMzQ==", "dev": true, "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.71.0", - "@typescript-eslint/types": "8.71.0", - "@typescript-eslint/typescript-estree": "8.71.0" + "@typescript-eslint/scope-manager": "8.71.1", + "@typescript-eslint/types": "8.71.1", + "@typescript-eslint/typescript-estree": "8.71.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" @@ -2355,13 +2355,13 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.71.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.71.0.tgz", - "integrity": "sha512-8eQ9R218XORK+KLosnf4bu/QsUXvUyVwTbArg7/0NMB1Pu87OJKvj4nhFblkYE8gQV73mW1dx1ptlPCkwRGa7A==", + "version": "8.71.1", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.71.1.tgz", + "integrity": "sha512-0GxiUGqMU0qXJt58cBsiG3DP8lUmBaFo2vChtUX+CT7PnR3v/VGLLrzVP4K9r1lNiZXjHYefMBbPunplr09v6w==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/types": "8.71.0", + "@typescript-eslint/types": "8.71.1", "eslint-visitor-keys": "^5.0.0" }, "engines": { @@ -3348,9 +3348,9 @@ } }, "node_modules/eslint-plugin-solid": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-solid/-/eslint-plugin-solid-0.18.0.tgz", - "integrity": "sha512-Q3tSfb5EqU1nt8raRR8u7uMCLmB1779atKFxZ48TLor0rX+S0Bxt1gcTgYQTK+FK0T/iwFZJf13sSQncjFOBPg==", + "version": "0.18.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-solid/-/eslint-plugin-solid-0.18.1.tgz", + "integrity": "sha512-zxGSWGEfaVCujuOT358UVrBWuKEf91RP6bRbEIQaoX2d3VVP6R2+4NchdSajtpwNliw7eAJDjYBviuyPuSwmUQ==", "dev": true, "license": "MIT", "dependencies": { @@ -3736,9 +3736,9 @@ } }, "node_modules/globals": { - "version": "17.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-17.12.0.tgz", - "integrity": "sha512-cezEd/DTyyht9cvSSURyygXPfy04GtWO/5e6ZPvH7fCtjKz9PYOmuawphw1Ctd1f6C+5JypXfGD7ahNMXvevBA==", + "version": "17.13.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-17.13.0.tgz", + "integrity": "sha512-RwMTC61u7hrG3ZJMkZQOK4JLJrKS8QtoTii63EmWvFXHqycY9FObBJQCbsLxSO8kjKhWE5kV1GC+Vb1g3RI0Zg==", "dev": true, "license": "MIT", "engines": { @@ -5312,24 +5312,22 @@ } }, "node_modules/seroval": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/seroval/-/seroval-1.6.3.tgz", - "integrity": "sha512-5PwLbVPpT4DEki1hYVSSsoxWY6xCNMVucAVLK/CH0mXSDfp/I4KaAex72q80GNt5hpn7CCMGdSpIg4YGqH/wXQ==", - "license": "MIT", + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/seroval/-/seroval-1.6.8.tgz", + "integrity": "sha512-HlSgSAkTk4EqHcje1ptJjfZi1YDv5KbhVJ/d3P7T/nAXua2VmDu+AKDX5VTdFfZf48nDkWB2TKYt0DrCSa+3wg==", "engines": { "node": ">=10" } }, "node_modules/seroval-plugins": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/seroval-plugins/-/seroval-plugins-1.5.5.tgz", - "integrity": "sha512-+BDhqYM6CEn3x09v44dpa9p6974FuUB2dxk+Ctn04k0cO1Zt6QODTXfmEZK0eBaTe/fJBvP4NMGuNJ+R8T+QMg==", - "license": "MIT", - "engines": { - "node": ">=10" - }, + "version": "1.6.8", + "resolved": "https://registry.npmjs.org/seroval-plugins/-/seroval-plugins-1.6.8.tgz", + "integrity": "sha512-N7mWAMydj89EnYTHtRpS3LBrAz3J9O6oVrqpuXuvlAHfAUG8WEKqtbAd7SBiJNY5NfCAFhSdyAh7wI4Shjqy4g==", "peerDependencies": { "seroval": "^1.0" + }, + "engines": { + "node": ">=10" } }, "node_modules/set-blocking": { @@ -5369,14 +5367,14 @@ "license": "ISC" }, "node_modules/solid-js": { - "version": "1.9.15", - "resolved": "https://registry.npmjs.org/solid-js/-/solid-js-1.9.15.tgz", - "integrity": "sha512-EeiY2xfpZJqPLjXspVEKjAII4yv8NyG//NxZ3IpOFHdUNnnTyL0uJOeS9LWGvA7cFCz5y94cjFwYlmw5Luncsg==", + "version": "1.9.16", + "resolved": "https://registry.npmjs.org/solid-js/-/solid-js-1.9.16.tgz", + "integrity": "sha512-vESESWrNRebA0sQv+Vr9/2wOFOL6NK2QQow7F5/WCBH4c+OVoDyQNEbiVKVL7YqE1M7MPd7z7p27KElLkaD0bw==", "license": "MIT", "dependencies": { "csstype": "^3.1.0", - "seroval": "~1.5.4", - "seroval-plugins": "~1.5.4" + "seroval": "~1.6.8", + "seroval-plugins": "~1.6.8" } }, "node_modules/solid-refresh": { @@ -5676,16 +5674,16 @@ } }, "node_modules/typescript-eslint": { - "version": "8.71.0", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.71.0.tgz", - "integrity": "sha512-fBdHYiqQ14RW6mOMXD14Svn82ZsCYAoQSzGRzyEjR59S5A2Krh/l7fGTOQ7iCr8gGy/mHVXtEF7s5fgjEdV0Pw==", + "version": "8.71.1", + "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.71.1.tgz", + "integrity": "sha512-oiNVPC3/NbV1FpaHU07l8O6ynqG9v4PAiW2WvTrAmZdR0f2HI/gE668ElMLCK7Xbsu5k2fK5C4fXNiq05j7/nQ==", "dev": true, "license": "MIT", "dependencies": { - "@typescript-eslint/eslint-plugin": "8.71.0", - "@typescript-eslint/parser": "8.71.0", - "@typescript-eslint/typescript-estree": "8.71.0", - "@typescript-eslint/utils": "8.71.0" + "@typescript-eslint/eslint-plugin": "8.71.1", + "@typescript-eslint/parser": "8.71.1", + "@typescript-eslint/typescript-estree": "8.71.1", + "@typescript-eslint/utils": "8.71.1" }, "engines": { "node": "^18.18.0 || ^20.9.0 || >=21.1.0" diff --git a/frontend-modern/package.json b/frontend-modern/package.json index 9909821e4b..b207d4623f 100644 --- a/frontend-modern/package.json +++ b/frontend-modern/package.json @@ -58,7 +58,7 @@ "lucide-solid": "^0.577.0", "marked": "^17.0.1", "qrcode": "^1.5.4", - "solid-js": "^1.9.15" + "solid-js": "^1.9.16" }, "overrides": { "esbuild": "0.28.1", @@ -76,21 +76,21 @@ "@tailwindcss/typography": "^0.5.19", "@tailwindcss/vite": "^4.3.3", "@testing-library/jest-dom": "^6.5.0", - "@types/node": "^26.6.3", + "@types/node": "^26.6.4", "@types/qrcode": "^1.5.6", - "@typescript-eslint/eslint-plugin": "^8.71.0", - "@typescript-eslint/parser": "^8.71.0", + "@typescript-eslint/eslint-plugin": "^8.71.1", + "@typescript-eslint/parser": "^8.71.1", "@vitest/coverage-v8": "^4.1.11", "eslint": "^9.20.0", "eslint-config-prettier": "^10.0.0", - "eslint-plugin-solid": "^0.18.0", - "globals": "^17.12.0", + "eslint-plugin-solid": "^0.18.1", + "globals": "^17.13.0", "jscpd": "^5.4.0", "jsdom": "^24.1.0", "prettier": "3.9.9", "tailwindcss": "^4.3.3", "typescript": "^5.3.0", - "typescript-eslint": "^8.71.0", + "typescript-eslint": "^8.71.1", "vite": "^6.4.3", "vite-plugin-solid": "^2.11.14", "vite-plugin-sri-gen": "^1.7.4", diff --git a/frontend-modern/src/security/__tests__/dependencyTooling.test.ts b/frontend-modern/src/security/__tests__/dependencyTooling.test.ts index cdcf66dec5..42a5a41fb3 100644 --- a/frontend-modern/src/security/__tests__/dependencyTooling.test.ts +++ b/frontend-modern/src/security/__tests__/dependencyTooling.test.ts @@ -33,6 +33,26 @@ describe('reviewed formatter behaviour', () => { }); describe('patched transitive dependency compatibility', () => { + it.each([ + 'solid-js', + 'seroval', + 'seroval-plugins', + '@types/node', + '@typescript-eslint/eslint-plugin', + '@typescript-eslint/parser', + 'eslint-plugin-solid', + 'globals', + 'typescript-eslint', + ])('executes the exact committed %s version, not a stale offline install', (name) => { + const lock = JSON.parse( + readFileSync(new URL('../../../package-lock.json', import.meta.url), 'utf8'), + ) as { packages: Record }; + const installed = JSON.parse( + readFileSync(new URL(`../../../node_modules/${name}/package.json`, import.meta.url), 'utf8'), + ) as { version: string }; + expect(installed.version).toBe(lock.packages[`node_modules/${name}`].version); + }); + it.each([ ['solid-js', 'seroval'], ['seroval-plugins/web', 'seroval'],