From 43ce2fb2206d8c7aedff256e75fb79180b41608e Mon Sep 17 00:00:00 2001 From: alexander-yevsyukov Date: Fri, 30 Oct 2026 17:35:47 +0000 Subject: [PATCH 01/11] Get theme updates Brings in the theme from `site-commons` master, which compiles its styles with Dart Sass (SpineEventEngine/site-commons#40) and moves them to `@use`/`@forward` (SpineEventEngine/site-commons#41). Co-Authored-By: Claude Opus 5.5 --- site/go.mod | 2 +- site/go.sum | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/site/go.mod b/site/go.mod index 8e4a263d..544f69e4 100644 --- a/site/go.mod +++ b/site/go.mod @@ -4,7 +4,7 @@ go 1.27.3 require ( github.com/SpineEventEngine/documentation/docs v0.0.0-20261030164337-3045fa4e0dd6 // indirect - github.com/SpineEventEngine/site-commons v0.0.0-20261030153256-b79100d8a139 // indirect + github.com/SpineEventEngine/site-commons v0.0.0-20261030172811-9216e48eb656 // indirect github.com/SpineEventEngine/validation/docs v0.0.0-20260902132507-6465029c83b9 // indirect github.com/gohugoio/hugo-mod-bootstrap-scss/v5 v5.20300.20800 // indirect github.com/gohugoio/hugo-mod-jslibs-dist/popperjs/v2 v2.21100.20000 // indirect diff --git a/site/go.sum b/site/go.sum index a2b7fd06..a5b9f133 100644 --- a/site/go.sum +++ b/site/go.sum @@ -12,6 +12,8 @@ github.com/SpineEventEngine/site-commons v0.0.0-20261001182820-d2b63aedd0f4 h1:P github.com/SpineEventEngine/site-commons v0.0.0-20261001182820-d2b63aedd0f4/go.mod h1:tkAl4StIREKmz9r5PiJtuDhvwMMkFXKWcaTyxhIikho= github.com/SpineEventEngine/site-commons v0.0.0-20261030153256-b79100d8a139 h1:DOYFVaEw9v3dML+40FysPUaTczyqK5+LqWJZQkK4Hs0= github.com/SpineEventEngine/site-commons v0.0.0-20261030153256-b79100d8a139/go.mod h1:TfFFABXgPop1uc4eBdfWZF0Es06TGmNHfReiOzkZqrk= +github.com/SpineEventEngine/site-commons v0.0.0-20261030172811-9216e48eb656 h1:9H15KSiUrQP3U/uhDfVgSXMwqS7ehUppeqtQzRxR6LE= +github.com/SpineEventEngine/site-commons v0.0.0-20261030172811-9216e48eb656/go.mod h1:TfFFABXgPop1uc4eBdfWZF0Es06TGmNHfReiOzkZqrk= github.com/SpineEventEngine/validation/docs v0.0.0-20260205202311-181ba8844107 h1:2DHRIwwLudP6l3Kh7Nd4KR4uXcsDtIAXE9adW68ivME= github.com/SpineEventEngine/validation/docs v0.0.0-20260205202311-181ba8844107/go.mod h1:STHyjXejVvPmfrxujfDvhofmjg55mMk+fwI3TVL0b4Y= github.com/SpineEventEngine/validation/docs v0.0.0-20260522175555-cf09b4c706ea h1:YEMSlr5KJXkZdK7epMSnN+6HSr2K41n8O3c8OhtF8pM= From f835662ca45cd3efda2a76ef671da11e2dcc67e1 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 16 Oct 2026 09:39:05 +0000 Subject: [PATCH 02/11] Bump source-map-js from 1.2.1 to 1.2.2 in /site Bumps [source-map-js](https://github.com/7rulnik/source-map-js) from 1.2.1 to 1.2.2. - [Release notes](https://github.com/7rulnik/source-map-js/releases) - [Changelog](https://github.com/7rulnik/source-map-js/blob/main/CHANGELOG.md) - [Commits](https://github.com/7rulnik/source-map-js/compare/v1.2.1...v1.2.2) --- updated-dependencies: - dependency-name: source-map-js dependency-version: 1.2.2 dependency-type: indirect ... Signed-off-by: dependabot[bot] --- site/package-lock.json | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/site/package-lock.json b/site/package-lock.json index bf28e081..9e7065e1 100644 --- a/site/package-lock.json +++ b/site/package-lock.json @@ -1074,10 +1074,11 @@ } }, "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.2.tgz", + "integrity": "sha512-KGj/8Y43x35aZVDtt+J4mK1hoLGHULMYfSkODJNQjNDC3oW1PqPoxMwo0pLUsWM/UEGzON/NxeHywEfNXNP3Vw==", "dev": true, + "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } From 250a6ea0d04270b2f9038d5882e284628c5731ac Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Mon, 19 Oct 2026 19:25:16 +0000 Subject: [PATCH 03/11] Bump postcss-selector-parser and @fullhuman/postcss-purgecss in /site Bumps [postcss-selector-parser](https://github.com/postcss/postcss-selector-parser) to 7.1.6 and updates ancestor dependency [@fullhuman/postcss-purgecss](https://github.com/FullHuman/purgecss). These dependencies need to be updated together. Updates `postcss-selector-parser` from 6.1.4 to 7.1.6 - [Release notes](https://github.com/postcss/postcss-selector-parser/releases) - [Changelog](https://github.com/postcss/postcss-selector-parser/blob/main/CHANGELOG.md) - [Commits](https://github.com/postcss/postcss-selector-parser/compare/6.1.4...7.1.6) Updates `@fullhuman/postcss-purgecss` from 7.0.2 to 8.0.0 - [Release notes](https://github.com/FullHuman/purgecss/releases) - [Changelog](https://github.com/FullHuman/purgecss/blob/main/CHANGELOG.md) - [Commits](https://github.com/FullHuman/purgecss/compare/v7.0.2...v8.0.0) --- updated-dependencies: - dependency-name: postcss-selector-parser dependency-version: 7.1.6 dependency-type: indirect - dependency-name: "@fullhuman/postcss-purgecss" dependency-version: 8.0.0 dependency-type: direct:development ... Signed-off-by: dependabot[bot] --- site/package-lock.json | 490 +++++++++++------------------------------ site/package.json | 2 +- 2 files changed, 134 insertions(+), 358 deletions(-) diff --git a/site/package-lock.json b/site/package-lock.json index 9e7065e1..eb51e566 100644 --- a/site/package-lock.json +++ b/site/package-lock.json @@ -9,7 +9,7 @@ "version": "1.0.0", "license": "ISC", "devDependencies": { - "@fullhuman/postcss-purgecss": "^7.0.2", + "@fullhuman/postcss-purgecss": "^8.0.0", "autoprefixer": "^10.5.0", "intl-tel-input": "18.2.1", "postcss": "^8.5.14", @@ -19,111 +19,54 @@ } }, "node_modules/@fullhuman/postcss-purgecss": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/@fullhuman/postcss-purgecss/-/postcss-purgecss-7.0.2.tgz", - "integrity": "sha512-U4zAXNaVztbDxO9EdcLp51F3UxxYsb/7DN89rFxFJhfk2Wua2pvw2Kf3HdspbPhW/wpHjSjsxWYoIlbTgRSjbQ==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@fullhuman/postcss-purgecss/-/postcss-purgecss-8.0.0.tgz", + "integrity": "sha512-fSRaBGf6+DYdfQMxedWfnIW8FSYE1LBpgy16jpK1L2vNb1HgeBRRZ+UX4UokNmW7YEAwPdvwkKdYtlkYpH+Aqg==", "dev": true, + "license": "MIT", "dependencies": { - "purgecss": "^7.0.2" + "purgecss": "^8.0.0" }, "peerDependencies": { "postcss": "^8.0.0" } }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", - "dev": true, - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.2.2", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.2.2.tgz", - "integrity": "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.3", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.3.tgz", - "integrity": "sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, + "license": "MIT", "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 8" } }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.2.tgz", - "integrity": "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==", + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, + "license": "MIT", "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "node": ">= 8" } }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", - "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, + "license": "MIT", "dependencies": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + "node": ">= 8" } }, "node_modules/ansi-regex": { @@ -200,16 +143,6 @@ "postcss": "^8.1.0" } }, - "node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, "node_modules/baseline-browser-mapping": { "version": "2.11.22", "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.22.tgz", @@ -235,19 +168,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/brace-expansion": { - "version": "5.0.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.12.tgz", - "integrity": "sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "20 || >=22" - } - }, "node_modules/braces": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", @@ -376,24 +296,11 @@ "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", "dev": true, + "license": "MIT", "engines": { "node": ">=18" } }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "dev": true, - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", @@ -415,12 +322,6 @@ "node": ">=4" } }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, "node_modules/electron-to-chromium": { "version": "1.5.427", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.427.tgz", @@ -443,32 +344,43 @@ "node": ">=6" } }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", "dev": true, + "license": "MIT", "dependencies": { - "to-regex-range": "^5.0.1" + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" }, "engines": { - "node": ">=8" + "node": ">=8.6.0" + } + }, + "node_modules/fastq": { + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.3.tgz", + "integrity": "sha512-XKv5nnLs6nLF71NgiKJLIZFLkPyIEuOselLG7ujZnGrRfQK8HpvY+WqKhAJUAdLomwVHErVS4LfxFlPq0/FTAw==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" } }, - "node_modules/foreground-child": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.3.1.tgz", - "integrity": "sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==", + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", "dev": true, "dependencies": { - "cross-spawn": "^7.0.6", - "signal-exit": "^4.0.1" + "to-regex-range": "^5.0.1" }, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=8" } }, "node_modules/fraction.js": { @@ -521,29 +433,6 @@ "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/glob": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz", - "integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==", - "dev": true, - "dependencies": { - "foreground-child": "^3.3.1", - "jackspeak": "^4.1.1", - "minimatch": "^10.1.1", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^2.0.0" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", @@ -620,27 +509,6 @@ "node": ">=0.12.0" } }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", - "dev": true - }, - "node_modules/jackspeak": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.1.1.tgz", - "integrity": "sha512-zptv57P3GpL+O0I7VdMJNBZCu+BPHVQUk55Ft8/QCJjTVxrnJHuVuX/0Bl2A6/+2oyR/ZMEuFKwmzqqZ/U5nPQ==", - "dev": true, - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/jsonfile": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.2.0.tgz", @@ -665,38 +533,28 @@ "url": "https://github.com/sponsors/antonk52" } }, - "node_modules/lru-cache": { - "version": "11.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.2.tgz", - "integrity": "sha512-F9ODfyqML2coTIsQpSkRHnLSZMtkU8Q+mSfcaIyKwy58u+8k5nvAYeiNhsyMARvzNcXJ9QfWVrcPsC9e9rAxtg==", + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, + "license": "MIT", "engines": { - "node": "20 || >=22" + "node": ">= 8" } }, - "node_modules/minimatch": { - "version": "10.2.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.4.tgz", - "integrity": "sha512-oRjTw/97aTBN0RHbYCdtF1MQfvusSIBQM0IZEgzl6426+8jSC0nF1a/GmnVLpfB9yyr6g6FTqWqiZVbxrtaCIg==", + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dev": true, - "license": "BlueOak-1.0.0", + "license": "MIT", "dependencies": { - "brace-expansion": "^5.0.2" + "braces": "^3.0.3", + "picomatch": "^2.3.1" }, "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", - "dev": true, - "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=8.6" } }, "node_modules/nanoid": { @@ -737,37 +595,6 @@ "node": ">=0.10.0" } }, - "node_modules/package-json-from-dist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "dev": true - }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/path-scurry": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.1.tgz", - "integrity": "sha512-oWyT4gICAu+kaA7QWk/jvCHWarMKNs6pXOGWKDTr7cw4IGcUbW+PeTfbaQiLGheFRpjo6O9J0PmyMfQPjH71oA==", - "dev": true, - "dependencies": { - "lru-cache": "^11.0.0", - "minipass": "^7.1.2" - }, - "engines": { - "node": "20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/picocolors": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", @@ -868,20 +695,6 @@ "postcss": "^8.4.32" } }, - "node_modules/postcss-discard-comments/node_modules/postcss-selector-parser": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.6.tgz", - "integrity": "sha512-7qASPzhKF2l2KLboRZux8CCTRMdGiV08vWmyKzPz22qZ7ZjQBOeY7rNzNoCLSUiftJ7HUq0GERHmxw/t0dCdMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/postcss-load-config": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-5.1.0.tgz", @@ -948,9 +761,9 @@ } }, "node_modules/postcss-selector-parser": { - "version": "6.1.4", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.4.tgz", - "integrity": "sha512-bIoJLOmjCO1S9XdY/DcnR5hJxvrDir1PbGChrzXG3vw0/FOliy/fA3dmdhQ441kah4gKv+TwckGzex6wNS5cnQ==", + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.6.tgz", + "integrity": "sha512-7qASPzhKF2l2KLboRZux8CCTRMdGiV08vWmyKzPz22qZ7ZjQBOeY7rNzNoCLSUiftJ7HUq0GERHmxw/t0dCdMw==", "dev": true, "license": "MIT", "dependencies": { @@ -977,20 +790,42 @@ } }, "node_modules/purgecss": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-7.0.2.tgz", - "integrity": "sha512-4Ku8KoxNhOWi9X1XJ73XY5fv+I+hhTRedKpGs/2gaBKU8ijUiIKF/uyyIyh7Wo713bELSICF5/NswjcuOqYouQ==", + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-8.0.0.tgz", + "integrity": "sha512-QFJyps9y5oHeXnNA3Ql1EaAqWBivNwQn19Pw1lt9RxfB+4e+bIyqCyuombk79D6Fxe+lPXggVfI1WtRGEBwgbQ==", "dev": true, + "license": "MIT", "dependencies": { "commander": "^12.1.0", - "glob": "^11.0.0", + "fast-glob": "^3.3.2", "postcss": "^8.4.47", - "postcss-selector-parser": "^6.1.2" + "postcss-selector-parser": "^7.0.0" }, "bin": { "purgecss": "bin/purgecss.js" } }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/read-cache": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", @@ -1021,45 +856,47 @@ "node": ">=0.10.0" } }, - "node_modules/select2": { - "version": "4.1.0-rc.0", - "resolved": "https://registry.npmjs.org/select2/-/select2-4.1.0-rc.0.tgz", - "integrity": "sha512-Hr9TdhyHCZUtwznEH2CBf7967mEM0idtJ5nMtjvk3Up5tPukOLXbHUNmh10oRfeNIhj+3GD3niu+g6sVK+gK0A==", - "dev": true, - "license": "MIT" - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", "dev": true, - "dependencies": { - "shebang-regex": "^3.0.0" - }, + "license": "MIT", "engines": { - "node": ">=8" + "iojs": ">=1.0.0", + "node": ">=0.10.0" } }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, - "engines": { - "node": ">=8" + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", + "dependencies": { + "queue-microtask": "^1.2.2" } }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "node_modules/select2": { + "version": "4.1.0-rc.0", + "resolved": "https://registry.npmjs.org/select2/-/select2-4.1.0-rc.0.tgz", + "integrity": "sha512-Hr9TdhyHCZUtwznEH2CBf7967mEM0idtJ5nMtjvk3Up5tPukOLXbHUNmh10oRfeNIhj+3GD3niu+g6sVK+gK0A==", "dev": true, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } + "license": "MIT" }, "node_modules/slash": { "version": "5.1.0", @@ -1097,21 +934,6 @@ "node": ">=8" } }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/strip-ansi": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", @@ -1124,19 +946,6 @@ "node": ">=8" } }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/thenby": { "version": "1.3.4", "resolved": "https://registry.npmjs.org/thenby/-/thenby-1.3.4.tgz", @@ -1247,21 +1056,6 @@ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, - "node_modules/which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, "node_modules/wrap-ansi": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", @@ -1279,24 +1073,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, "node_modules/y18n": { "version": "5.0.8", "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", diff --git a/site/package.json b/site/package.json index 36a885e5..4e1f9943 100644 --- a/site/package.json +++ b/site/package.json @@ -9,7 +9,7 @@ "author": "", "license": "ISC", "devDependencies": { - "@fullhuman/postcss-purgecss": "^7.0.2", + "@fullhuman/postcss-purgecss": "^8.0.0", "autoprefixer": "^10.5.0", "intl-tel-input": "18.2.1", "postcss": "^8.5.14", From bec4c6fd417724ff30595e7690b5e160111f0bb4 Mon Sep 17 00:00:00 2001 From: alexander-yevsyukov Date: Fri, 30 Oct 2026 18:16:11 +0000 Subject: [PATCH 04/11] Move the styles from `@import` to `@use` Dart Sass 3.0 removes `@import`. `main.scss` now loads the theme and its partials with `@use`, in the same order, so the CSS comes out in the same order too. Each partial loads what it uses: the theme through `@use "theme-main" as *;`, and other partials by relative paths. Co-Authored-By: Claude Opus 5.5 --- site/assets/scss/base/_colors.scss | 2 + site/assets/scss/base/_common.scss | 2 + site/assets/scss/main.scss | 56 +++++++++---------- site/assets/scss/modules/_buttons.scss | 2 + site/assets/scss/modules/_call-to-action.scss | 3 + site/assets/scss/modules/_checkbox.scss | 2 + site/assets/scss/modules/_feature-cards.scss | 3 + site/assets/scss/modules/_footer.scss | 3 + site/assets/scss/modules/_forms.scss | 2 + site/assets/scss/modules/_go-top-button.scss | 2 + site/assets/scss/modules/_hero.scss | 3 + site/assets/scss/modules/_loader.scss | 2 + site/assets/scss/modules/_message-modal.scss | 2 + site/assets/scss/modules/_nav-search.scss | 2 + site/assets/scss/modules/_navbar.scss | 3 + .../assets/scss/modules/_redirect-screen.scss | 2 + site/assets/scss/modules/_result-panel.scss | 2 + .../scss/modules/_subscribe-container.scss | 3 + site/assets/scss/pages/_about.scss | 3 + site/assets/scss/pages/_checkout.scss | 6 +- site/assets/scss/pages/_faq.scss | 2 + site/assets/scss/pages/_getting-help.scss | 2 + site/assets/scss/pages/_landing.scss | 3 + site/assets/scss/pages/_licenses.scss | 4 ++ site/assets/scss/pages/_privacy.scss | 2 + .../scss/pages/blog/_blog-container.scss | 2 + site/assets/scss/pages/blog/_blog.scss | 2 + site/assets/scss/pages/blog/_index.scss | 10 ++-- site/assets/scss/pages/blog/_post-info.scss | 2 + .../scss/pages/blog/_post-navigation.scss | 2 + site/assets/scss/pages/blog/_post.scss | 2 + .../pages/release-notes/_release-notes.scss | 2 + .../scss/pages/release-notes/_sidenav.scss | 2 + 33 files changed, 107 insertions(+), 35 deletions(-) diff --git a/site/assets/scss/base/_colors.scss b/site/assets/scss/base/_colors.scss index 5f222922..7fad1bda 100755 --- a/site/assets/scss/base/_colors.scss +++ b/site/assets/scss/base/_colors.scss @@ -12,6 +12,8 @@ * and limitations under the License. */ +@use "theme-main" as *; + /* Extends colors from `site-commons`. */ $nav-blue-gradient: linear-gradient(152deg, #1378da 0%, #0b64cc 100%); diff --git a/site/assets/scss/base/_common.scss b/site/assets/scss/base/_common.scss index ee4a0406..3c543916 100755 --- a/site/assets/scss/base/_common.scss +++ b/site/assets/scss/base/_common.scss @@ -12,6 +12,8 @@ * and limitations under the License. */ +@use "theme-main" as *; + .intro-section { padding-top: 40px; padding-bottom: 48px; diff --git a/site/assets/scss/main.scss b/site/assets/scss/main.scss index ec9ba245..d2233f6a 100644 --- a/site/assets/scss/main.scss +++ b/site/assets/scss/main.scss @@ -13,34 +13,34 @@ */ /* Styles from `SpineEventEngine/site-commons`. */ -@import "theme-main"; +@use "theme-main"; -@import "base/colors"; -@import "base/common"; +@use "base/colors"; +@use "base/common"; -@import "modules/navbar"; -@import "modules/nav-search"; -@import "modules/buttons"; -@import "modules/footer"; -@import "modules/hero"; -@import "modules/feature-cards"; -@import "modules/call-to-action"; -@import "modules/go-top-button"; -@import "modules/subscribe-container"; -@import "modules/checkbox"; -@import "modules/redirect-screen"; -@import "modules/loader"; -@import "modules/forms"; -@import "modules/result-panel"; -@import "modules/message-modal"; +@use "modules/navbar"; +@use "modules/nav-search"; +@use "modules/buttons"; +@use "modules/footer"; +@use "modules/hero"; +@use "modules/feature-cards"; +@use "modules/call-to-action"; +@use "modules/go-top-button"; +@use "modules/subscribe-container"; +@use "modules/checkbox"; +@use "modules/redirect-screen"; +@use "modules/loader"; +@use "modules/forms"; +@use "modules/result-panel"; +@use "modules/message-modal"; -@import "pages/landing"; -@import "pages/release-notes/release-notes"; -@import "pages/release-notes/sidenav"; -@import "pages/faq"; -@import "pages/getting-help"; -@import "pages/about"; -@import "pages/licenses"; -@import "pages/privacy"; -@import "pages/checkout"; -@import "pages/blog"; +@use "pages/landing"; +@use "pages/release-notes/release-notes"; +@use "pages/release-notes/sidenav"; +@use "pages/faq"; +@use "pages/getting-help"; +@use "pages/about"; +@use "pages/licenses"; +@use "pages/privacy"; +@use "pages/checkout"; +@use "pages/blog"; diff --git a/site/assets/scss/modules/_buttons.scss b/site/assets/scss/modules/_buttons.scss index 19e55837..4fcc2bd6 100644 --- a/site/assets/scss/modules/_buttons.scss +++ b/site/assets/scss/modules/_buttons.scss @@ -12,6 +12,8 @@ * and limitations under the License. */ +@use "theme-main" as *; + $btn-font-size: 14px; $btn-border-radius: $border-radius-m; $btn-primary-color: $main-brand-color; diff --git a/site/assets/scss/modules/_call-to-action.scss b/site/assets/scss/modules/_call-to-action.scss index f2d41b52..4c3af023 100644 --- a/site/assets/scss/modules/_call-to-action.scss +++ b/site/assets/scss/modules/_call-to-action.scss @@ -12,6 +12,9 @@ * and limitations under the License. */ +@use "../base/colors" as *; +@use "theme-main" as *; + .call-to-action { background-image: $nav-blue-gradient; padding: 80px 0 84px; diff --git a/site/assets/scss/modules/_checkbox.scss b/site/assets/scss/modules/_checkbox.scss index 599498e1..bcefceb9 100644 --- a/site/assets/scss/modules/_checkbox.scss +++ b/site/assets/scss/modules/_checkbox.scss @@ -12,6 +12,8 @@ * and limitations under the License. */ +@use "theme-main" as *; + $checkbox-size: 18px; .checkbox-container { diff --git a/site/assets/scss/modules/_feature-cards.scss b/site/assets/scss/modules/_feature-cards.scss index 97a7a5b7..9f042bf2 100644 --- a/site/assets/scss/modules/_feature-cards.scss +++ b/site/assets/scss/modules/_feature-cards.scss @@ -12,6 +12,9 @@ * and limitations under the License. */ +@use "../base/colors" as *; +@use "theme-main" as *; + $feature-card-shadow: 0 1px 3px 0 rgba($footer-color, .08); .feature-section { diff --git a/site/assets/scss/modules/_footer.scss b/site/assets/scss/modules/_footer.scss index 49628f43..4799687e 100755 --- a/site/assets/scss/modules/_footer.scss +++ b/site/assets/scss/modules/_footer.scss @@ -12,6 +12,9 @@ * and limitations under the License. */ +@use "../base/colors" as *; +@use "theme-main" as *; + $footer-header-color: #54595c; $footer-link-color: #b4bcbf; $copyright-bg-color: #1e2021; diff --git a/site/assets/scss/modules/_forms.scss b/site/assets/scss/modules/_forms.scss index c83493f4..55e4f602 100644 --- a/site/assets/scss/modules/_forms.scss +++ b/site/assets/scss/modules/_forms.scss @@ -12,6 +12,8 @@ * and limitations under the License. */ +@use "theme-main" as *; + $form-error-color: $red; $form-success-color: $green; diff --git a/site/assets/scss/modules/_go-top-button.scss b/site/assets/scss/modules/_go-top-button.scss index 2d995a2c..14357c0f 100644 --- a/site/assets/scss/modules/_go-top-button.scss +++ b/site/assets/scss/modules/_go-top-button.scss @@ -12,6 +12,8 @@ * and limitations under the License. */ +@use "theme-main" as *; + #go-top-button { $top-button-size: 60px; $top-button-icon-size: $icon-size-l; diff --git a/site/assets/scss/modules/_hero.scss b/site/assets/scss/modules/_hero.scss index 949bebdc..299904f6 100755 --- a/site/assets/scss/modules/_hero.scss +++ b/site/assets/scss/modules/_hero.scss @@ -12,6 +12,9 @@ * and limitations under the License. */ +@use "../base/colors" as *; +@use "theme-main" as *; + .nav-hero-container { background-image: $nav-blue-gradient; position: relative; diff --git a/site/assets/scss/modules/_loader.scss b/site/assets/scss/modules/_loader.scss index 01320b8a..48ce9412 100644 --- a/site/assets/scss/modules/_loader.scss +++ b/site/assets/scss/modules/_loader.scss @@ -12,6 +12,8 @@ * and limitations under the License. */ +@use "theme-main" as *; + .loader-container { .loader { margin: 16px auto 12px; diff --git a/site/assets/scss/modules/_message-modal.scss b/site/assets/scss/modules/_message-modal.scss index 42983a3e..f658519a 100644 --- a/site/assets/scss/modules/_message-modal.scss +++ b/site/assets/scss/modules/_message-modal.scss @@ -12,6 +12,8 @@ * and limitations under the License. */ +@use "theme-main" as *; + .message-modal { position: fixed; inset: 0; diff --git a/site/assets/scss/modules/_nav-search.scss b/site/assets/scss/modules/_nav-search.scss index 44f5b407..4bb45cea 100644 --- a/site/assets/scss/modules/_nav-search.scss +++ b/site/assets/scss/modules/_nav-search.scss @@ -12,6 +12,8 @@ * and limitations under the License. */ +@use "theme-main" as *; + $docsearch-icon-color: rgba(white, .54); $docsearch-mobile-breakpoint: map-get($breakpoints, mobile-navbar); $docsearch-algolia-mobile: 750px; diff --git a/site/assets/scss/modules/_navbar.scss b/site/assets/scss/modules/_navbar.scss index 515a4b7a..bf5c747b 100755 --- a/site/assets/scss/modules/_navbar.scss +++ b/site/assets/scss/modules/_navbar.scss @@ -12,6 +12,9 @@ * and limitations under the License. */ +@use "../base/colors" as *; +@use "theme-main" as *; + .navigation-opened { @include breakpoint(mobile-navbar) { overflow: hidden; diff --git a/site/assets/scss/modules/_redirect-screen.scss b/site/assets/scss/modules/_redirect-screen.scss index 29550b8f..f97bb7ed 100644 --- a/site/assets/scss/modules/_redirect-screen.scss +++ b/site/assets/scss/modules/_redirect-screen.scss @@ -12,6 +12,8 @@ * and limitations under the License. */ +@use "theme-main" as *; + .redirect-screen { // The section will be hidden until the order request button is pressed. display: none; diff --git a/site/assets/scss/modules/_result-panel.scss b/site/assets/scss/modules/_result-panel.scss index 9f6facfe..5aaa4e6a 100644 --- a/site/assets/scss/modules/_result-panel.scss +++ b/site/assets/scss/modules/_result-panel.scss @@ -12,6 +12,8 @@ * and limitations under the License. */ +@use "theme-main" as *; + .error-pages { .main { display: flex; diff --git a/site/assets/scss/modules/_subscribe-container.scss b/site/assets/scss/modules/_subscribe-container.scss index 09f12e08..7ab27e2e 100644 --- a/site/assets/scss/modules/_subscribe-container.scss +++ b/site/assets/scss/modules/_subscribe-container.scss @@ -12,6 +12,9 @@ * and limitations under the License. */ +@use "../base/colors" as *; +@use "theme-main" as *; + .subscribe-container { $icon-size: 32px; diff --git a/site/assets/scss/pages/_about.scss b/site/assets/scss/pages/_about.scss index 84d08d80..fdf5942f 100755 --- a/site/assets/scss/pages/_about.scss +++ b/site/assets/scss/pages/_about.scss @@ -12,6 +12,9 @@ * and limitations under the License. */ +@use "../base/colors" as *; +@use "theme-main" as *; + .about { section { h2 { diff --git a/site/assets/scss/pages/_checkout.scss b/site/assets/scss/pages/_checkout.scss index a97fd887..0c96db96 100644 --- a/site/assets/scss/pages/_checkout.scss +++ b/site/assets/scss/pages/_checkout.scss @@ -12,8 +12,10 @@ * and limitations under the License. */ -@import 'libs/country-select/select2'; -@import 'libs/intl-tel-input/intl-tel-input'; +@use "../libs/country-select/select2"; +@use "../libs/intl-tel-input/intl-tel-input"; +@use "../modules/forms" as *; +@use "theme-main" as *; $checkout-panel-width: 790px; diff --git a/site/assets/scss/pages/_faq.scss b/site/assets/scss/pages/_faq.scss index f34688d6..f2571ae4 100644 --- a/site/assets/scss/pages/_faq.scss +++ b/site/assets/scss/pages/_faq.scss @@ -12,6 +12,8 @@ * and limitations under the License. */ +@use "theme-main" as *; + $icon-right-offset: 48px; $content-top-offset: 48px; $faq-title-padding: 16px $icon-right-offset; diff --git a/site/assets/scss/pages/_getting-help.scss b/site/assets/scss/pages/_getting-help.scss index 9a23c0e5..5ec6a347 100644 --- a/site/assets/scss/pages/_getting-help.scss +++ b/site/assets/scss/pages/_getting-help.scss @@ -12,6 +12,8 @@ * and limitations under the License. */ +@use "theme-main" as *; + :root { --pricing-card-side-padding: 32px; --pricing-card-header-side-padding: 32px; diff --git a/site/assets/scss/pages/_landing.scss b/site/assets/scss/pages/_landing.scss index f6b3ce1c..0ff583a7 100644 --- a/site/assets/scss/pages/_landing.scss +++ b/site/assets/scss/pages/_landing.scss @@ -12,6 +12,9 @@ * and limitations under the License. */ +@use "../base/colors" as *; +@use "theme-main" as *; + .landing-content-container { padding: 32px 0 56px; position: relative; diff --git a/site/assets/scss/pages/_licenses.scss b/site/assets/scss/pages/_licenses.scss index 3d7ba138..0f1e427e 100644 --- a/site/assets/scss/pages/_licenses.scss +++ b/site/assets/scss/pages/_licenses.scss @@ -12,6 +12,10 @@ * and limitations under the License. */ +@use "../base/colors" as *; +@use "../base/common" as *; +@use "theme-main" as *; + $panel-padding: 16px 56px; $open-panel-padding: 8px 56px 24px; $open-panel-padding-mobile: 0 0 24px; diff --git a/site/assets/scss/pages/_privacy.scss b/site/assets/scss/pages/_privacy.scss index 4c4cd9cc..a058e7fe 100644 --- a/site/assets/scss/pages/_privacy.scss +++ b/site/assets/scss/pages/_privacy.scss @@ -12,6 +12,8 @@ * and limitations under the License. */ +@use "theme-main" as *; + .privacy { background-color: var(--body-bg-color); diff --git a/site/assets/scss/pages/blog/_blog-container.scss b/site/assets/scss/pages/blog/_blog-container.scss index a30bb5de..6e0aedfe 100644 --- a/site/assets/scss/pages/blog/_blog-container.scss +++ b/site/assets/scss/pages/blog/_blog-container.scss @@ -12,6 +12,8 @@ * and limitations under the License. */ +@use "theme-main" as *; + .blog-container { $nav-col-width: 220px; $blog-one-column-breakpoint: 1024px; diff --git a/site/assets/scss/pages/blog/_blog.scss b/site/assets/scss/pages/blog/_blog.scss index b4f3bc1d..e294effb 100755 --- a/site/assets/scss/pages/blog/_blog.scss +++ b/site/assets/scss/pages/blog/_blog.scss @@ -12,6 +12,8 @@ * and limitations under the License. */ +@use "theme-main" as *; + .blog { background-color: var(--body-bg-color); diff --git a/site/assets/scss/pages/blog/_index.scss b/site/assets/scss/pages/blog/_index.scss index 1f988b54..722a93cc 100644 --- a/site/assets/scss/pages/blog/_index.scss +++ b/site/assets/scss/pages/blog/_index.scss @@ -12,8 +12,8 @@ * and limitations under the License. */ -@import "blog-container"; -@import "blog"; -@import "post-navigation"; -@import "post-info"; -@import "post"; +@use "blog-container"; +@use "blog"; +@use "post-navigation"; +@use "post-info"; +@use "post"; diff --git a/site/assets/scss/pages/blog/_post-info.scss b/site/assets/scss/pages/blog/_post-info.scss index 097e7637..3bfff2ac 100644 --- a/site/assets/scss/pages/blog/_post-info.scss +++ b/site/assets/scss/pages/blog/_post-info.scss @@ -12,6 +12,8 @@ * and limitations under the License. */ +@use "theme-main" as *; + .post-info { margin-bottom: 20px; diff --git a/site/assets/scss/pages/blog/_post-navigation.scss b/site/assets/scss/pages/blog/_post-navigation.scss index 93b514e4..af8f4329 100644 --- a/site/assets/scss/pages/blog/_post-navigation.scss +++ b/site/assets/scss/pages/blog/_post-navigation.scss @@ -12,6 +12,8 @@ * and limitations under the License. */ +@use "theme-main" as *; + .post-navigation { $nav-item-font-size: 12px; $nav-item-color: $gray-700; diff --git a/site/assets/scss/pages/blog/_post.scss b/site/assets/scss/pages/blog/_post.scss index 888b7407..51f188da 100644 --- a/site/assets/scss/pages/blog/_post.scss +++ b/site/assets/scss/pages/blog/_post.scss @@ -12,6 +12,8 @@ * and limitations under the License. */ +@use "theme-main" as *; + .post { background-color: var(--body-bg-color); diff --git a/site/assets/scss/pages/release-notes/_release-notes.scss b/site/assets/scss/pages/release-notes/_release-notes.scss index 6fc11785..1883a79d 100644 --- a/site/assets/scss/pages/release-notes/_release-notes.scss +++ b/site/assets/scss/pages/release-notes/_release-notes.scss @@ -12,6 +12,8 @@ * and limitations under the License. */ +@use "theme-main" as *; + .release-notes { .article-container { min-height: 350px; diff --git a/site/assets/scss/pages/release-notes/_sidenav.scss b/site/assets/scss/pages/release-notes/_sidenav.scss index fbd6d463..7c4d7c12 100644 --- a/site/assets/scss/pages/release-notes/_sidenav.scss +++ b/site/assets/scss/pages/release-notes/_sidenav.scss @@ -12,6 +12,8 @@ * and limitations under the License. */ +@use "theme-main" as *; + // Extends styles from `scss/docs/modules/_sidenav.scss`. $sidenav-first-level-left-padding: 24px; From 008a9b3de9e6fedf3e70789005ea71c5ee8ddece Mon Sep 17 00:00:00 2001 From: alexander-yevsyukov Date: Fri, 30 Oct 2026 18:16:12 +0000 Subject: [PATCH 05/11] Replace deprecated Sass functions `map-get()` becomes `map.get()`, and `fade-out()` becomes `color.adjust($alpha: ...)`, which computes the same color. Dart Sass 3.0 removes the global functions. Co-Authored-By: Claude Opus 5.5 --- site/assets/scss/base/_common.scss | 3 ++- site/assets/scss/modules/_footer.scss | 5 +++-- site/assets/scss/modules/_go-top-button.scss | 3 ++- site/assets/scss/modules/_message-modal.scss | 3 ++- site/assets/scss/modules/_nav-search.scss | 5 +++-- site/assets/scss/modules/_navbar.scss | 12 +++++++----- site/assets/scss/modules/_redirect-screen.scss | 3 ++- 7 files changed, 21 insertions(+), 13 deletions(-) diff --git a/site/assets/scss/base/_common.scss b/site/assets/scss/base/_common.scss index 3c543916..61a75a07 100755 --- a/site/assets/scss/base/_common.scss +++ b/site/assets/scss/base/_common.scss @@ -12,6 +12,7 @@ * and limitations under the License. */ +@use "sass:color"; @use "theme-main" as *; .intro-section { @@ -26,7 +27,7 @@ // Collapsible caret-icon in the mobile navigation and footer. .mobile-caret-icon { - background: fade-out($white, .97) url('img/icons/caret.svg') no-repeat center/cover; + background: color.adjust($white, $alpha: -.97) url('img/icons/caret.svg') no-repeat center/cover; opacity: 1; cursor: pointer; position: absolute; diff --git a/site/assets/scss/modules/_footer.scss b/site/assets/scss/modules/_footer.scss index 4799687e..088b3a12 100755 --- a/site/assets/scss/modules/_footer.scss +++ b/site/assets/scss/modules/_footer.scss @@ -12,6 +12,7 @@ * and limitations under the License. */ +@use "sass:color"; @use "../base/colors" as *; @use "theme-main" as *; @@ -61,7 +62,7 @@ footer { } &:focus { - color: fade-out($white, .1); + color: color.adjust($white, $alpha: -.1); } &::after { @@ -148,7 +149,7 @@ footer { .mobile-caret-icon { opacity: 1; background-size: contain; - background-color: fade-out($white, .97); + background-color: color.adjust($white, $alpha: -.97); border-radius: 50%; } } diff --git a/site/assets/scss/modules/_go-top-button.scss b/site/assets/scss/modules/_go-top-button.scss index 14357c0f..298fd36a 100644 --- a/site/assets/scss/modules/_go-top-button.scss +++ b/site/assets/scss/modules/_go-top-button.scss @@ -12,6 +12,7 @@ * and limitations under the License. */ +@use "sass:map"; @use "theme-main" as *; #go-top-button { @@ -31,7 +32,7 @@ height: $top-button-size; cursor: pointer; -webkit-transform: translate3d(0, 0, 0); // Prevents jumping on scroll in Chrome. - z-index: map_get($z-index, 'go-top-button'); + z-index: map.get($z-index, 'go-top-button'); &:after { content: ""; diff --git a/site/assets/scss/modules/_message-modal.scss b/site/assets/scss/modules/_message-modal.scss index f658519a..629f89c8 100644 --- a/site/assets/scss/modules/_message-modal.scss +++ b/site/assets/scss/modules/_message-modal.scss @@ -12,12 +12,13 @@ * and limitations under the License. */ +@use "sass:map"; @use "theme-main" as *; .message-modal { position: fixed; inset: 0; - z-index: map_get($z-index, 'redirect-screen'); + z-index: map.get($z-index, 'redirect-screen'); display: flex; align-items: center; justify-content: center; diff --git a/site/assets/scss/modules/_nav-search.scss b/site/assets/scss/modules/_nav-search.scss index 4bb45cea..50162283 100644 --- a/site/assets/scss/modules/_nav-search.scss +++ b/site/assets/scss/modules/_nav-search.scss @@ -12,10 +12,11 @@ * and limitations under the License. */ +@use "sass:map"; @use "theme-main" as *; $docsearch-icon-color: rgba(white, .54); -$docsearch-mobile-breakpoint: map-get($breakpoints, mobile-navbar); +$docsearch-mobile-breakpoint: map.get($breakpoints, mobile-navbar); $docsearch-algolia-mobile: 750px; $docsearch-border-color: #ebedf5; @@ -71,7 +72,7 @@ mark { } .DocSearch-Container { - z-index: map_get($z-index, 'search-mobile') !important; + z-index: map.get($z-index, 'search-mobile') !important; @include breakpoint($docsearch-algolia-mobile) { position: fixed; diff --git a/site/assets/scss/modules/_navbar.scss b/site/assets/scss/modules/_navbar.scss index bf5c747b..f09cc9a5 100755 --- a/site/assets/scss/modules/_navbar.scss +++ b/site/assets/scss/modules/_navbar.scss @@ -12,6 +12,8 @@ * and limitations under the License. */ +@use "sass:color"; +@use "sass:map"; @use "../base/colors" as *; @use "theme-main" as *; @@ -30,7 +32,7 @@ #header { width: 100%; min-height: $header-height; - z-index: map_get($z-index, 'header'); + z-index: map.get($z-index, 'header'); position: absolute; // Fixes the header on the page. @@ -81,7 +83,7 @@ @include breakpoint(mobile-navbar) { background-color: $footer-color; box-shadow: -1px 0px 8px 0px rgba(black, .25); - z-index: map_get($z-index, 'nav-mobile'); + z-index: map.get($z-index, 'nav-mobile'); display: block; position: fixed; top: 0; @@ -97,7 +99,7 @@ width: 100%; height: 56px; background-color: rgba($footer-color, .95); - z-index: map_get($z-index, 'header'); + z-index: map.get($z-index, 'header'); margin: -48px -24px; } } @@ -184,7 +186,7 @@ &:hover { opacity: 1; background-size: contain; - background-color: fade-out($white, .97); + background-color: color.adjust($white, $alpha: -.97); border-radius: 50%; } } @@ -273,7 +275,7 @@ position: relative; transform: rotate(0deg); transition: .5s ease-in-out; - z-index: map_get($z-index, 'hamburger-menu'); + z-index: map.get($z-index, 'hamburger-menu'); cursor: pointer; } diff --git a/site/assets/scss/modules/_redirect-screen.scss b/site/assets/scss/modules/_redirect-screen.scss index f97bb7ed..51407108 100644 --- a/site/assets/scss/modules/_redirect-screen.scss +++ b/site/assets/scss/modules/_redirect-screen.scss @@ -12,6 +12,7 @@ * and limitations under the License. */ +@use "sass:map"; @use "theme-main" as *; .redirect-screen { @@ -24,7 +25,7 @@ right: 0; bottom: 0; left: 0; - z-index: map_get($z-index, 'redirect-screen'); + z-index: map.get($z-index, 'redirect-screen'); background-color: rgba(255, 255, 255, .9); animation: fadeIn .23s linear forwards; } From 244ba115eb26070f2e4c0c86b49e4ad3960b7baf Mon Sep 17 00:00:00 2001 From: alexander-yevsyukov Date: Fri, 30 Oct 2026 18:16:13 +0000 Subject: [PATCH 06/11] Add task doc for the Dart Sass styles Co-Authored-By: Claude Opus 5.5 --- .agents/tasks/dart-sass-site-styles.md | 54 ++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 .agents/tasks/dart-sass-site-styles.md diff --git a/.agents/tasks/dart-sass-site-styles.md b/.agents/tasks/dart-sass-site-styles.md new file mode 100644 index 00000000..09b2151d --- /dev/null +++ b/.agents/tasks/dart-sass-site-styles.md @@ -0,0 +1,54 @@ +--- +slug: dart-sass-site-styles +branch: get-theme-updates-dart-sass +owner: claude +status: in-review +started: 2026-10-30 +--- + +## Goal + +The site builds on the Dart Sass `site-commons` theme, and its own styles use +the Sass module system, so `hugo --minify` prints no Sass warnings and the CSS +stays the same. + +## Context + +- SpineEventEngine/site-commons#38 — move the theme and its sites from LibSass + to Dart Sass. Hugo deprecated LibSass in v0.153.0; Dart Sass 3.0 removes `@import`. +- The theme update brings in site-commons#39 (jQuery served as a file), #40 + (Dart Sass) and #41 (`@use`/`@forward`). `theme-main.scss` forwards the theme + and Bootstrap, so `@use "theme-main" as *;` gives a partial what `@import` did. +- Hugo sets `silenceDependencyDeprecations`, which hides deprecations in every + file except the entry one. The `sass` CLI with `--verbose` shows them all. +- Also folds in the Dependabot bumps of #558 (`source-map-js`) and #560 + (`postcss-selector-parser`, `@fullhuman/postcss-purgecss` 8). Nothing loads + PurgeCSS; the CSS is byte-identical with and without them. + +## Plan + +- [x] `hugo mod get -u github.com/SpineEventEngine/site-commons` in `site/`. +- [x] Cherry-pick the bumps from #558 and #560. +- [x] `main.scss` and its partials: `@import` → `@use`, in the same order. + - Partials that use theme or Bootstrap members: `@use "theme-main" as *;`. + - Partials that use another partial's members `@use` it by a relative path: + `base/colors` (variables), `base/common` (`%expandable-title`) and + `modules/forms` (`$form-error-color`). `main.scss` loads each of them + before its users, so no CSS moves. +- [x] `map-get()` → `map.get()`, `fade-out()` → `color.adjust($alpha: …)`. +- [x] Verify: Sass warnings, and the CSS rule by rule against the previous build. + +## Log + +- 2026-10-30 — theme update: the only Sass warnings left are the 28 `@import`s + in `main.scss`. CSS differences are Dart Sass formatting and precision, folded + `calc()`, the code-tab indicator's `border-radius: 1px`, no `@extend`ed + `.h1`–`.h6`/`.small`/`.mark` selectors (no page uses them), and the medium + Roboto Mono `.eot` now pointing to `fonts/robotomono/` (site-commons#41). +- 2026-10-30 — `@use` move: `hugo --minify` prints no Sass warnings. The `sass` + CLI reports 52 fewer deprecations (382 → 330), all the site's own; the rest + come from Bootstrap. The CSS has the same 12,764 declarations; one + `@extend`ed selector list lists its two selectors in the other order. +- 2026-10-30 — the CSS now starts with the theme's license comment instead of + Bootstrap's. `@use "theme-main"` emits that file's `/*!` header first, and + the theme's PostCSS step keeps only the first comment. To fix in `site-commons`. From eae2f6d6e7f1a5693555cda55a19cf02a786c81a Mon Sep 17 00:00:00 2001 From: alexander-yevsyukov Date: Fri, 30 Oct 2026 18:22:21 +0000 Subject: [PATCH 07/11] Point the Gitter link to where Gitter redirects Lychee rejects the 301 of the old room URL. It used to miss the link, because it couldn't extract links past the jQuery inlined in every page. Co-Authored-By: Claude Opus 5.5 --- site/content/blog/spine-event-engine-1-0-is-out/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/content/blog/spine-event-engine-1-0-is-out/index.md b/site/content/blog/spine-event-engine-1-0-is-out/index.md index 1f55b9d6..9f53e94e 100644 --- a/site/content/blog/spine-event-engine-1-0-is-out/index.md +++ b/site/content/blog/spine-event-engine-1-0-is-out/index.md @@ -49,6 +49,6 @@ integration with web UI. We will announce the updates [@SpineEngine 𝕏][xtwitt [protobuf]: https://developers.google.com/protocol-buffers/ [key-concepts]: docs/introduction/concepts/ [examples]: https://github.com/spine-examples/ -[gitter-room]: https://gitter.im/SpineEventEngine/community +[gitter-room]: https://app.gitter.im/#/room/#SpineEventEngine_community:gitter.im [spine-github]: https://github.com/SpineEventEngine/ [xtwitter]: {{% get-site-data "socials.xtwitter" %}} From 424ffd91d25f9167168de3279cd5e14743052544 Mon Sep 17 00:00:00 2001 From: alexander-yevsyukov Date: Fri, 30 Oct 2026 18:22:21 +0000 Subject: [PATCH 08/11] Ignore links broken in the imported docs The theme no longer inlines jQuery (SpineEventEngine/site-commons#39), so Lychee now checks whole pages. It finds 13 broken links in the docs that come from `SpineEventEngine/documentation`, which only that repository and `SpineEventEngine/validation` can fix. `lychee.toml` comes from `config`, so they go to a repo-local `.lycheeignore`, as in SpineEventEngine/documentation#96. Co-Authored-By: Claude Opus 5.5 --- .lycheeignore | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 .lycheeignore diff --git a/.lycheeignore b/.lycheeignore new file mode 100644 index 00000000..9c09d7ef --- /dev/null +++ b/.lycheeignore @@ -0,0 +1,23 @@ +# Lychee skips the URLs matching these patterns. It reads this file from the +# directory it runs in, the repository root. `lychee.toml` comes from `config` +# and `./config/pull` overwrites it, so links specific to this site go here. +# +# Remove a pattern once the module update that fixes its link lands here. + +# Broken in the docs of `SpineEventEngine/documentation`, which +# `site/config/_default/hugo.toml` imports as a module. Fixed by +# https://github.com/SpineEventEngine/documentation/pull/96. +^https://stackoverflow\.com/a/31814967/3183076$ + +# Broken in the docs of `SpineEventEngine/validation`, which come in through +# `SpineEventEngine/documentation`, so they can only be fixed there. +# See https://github.com/SpineEventEngine/documentation/issues/97. +^https://github\.com/SpineEventEngine/validation/blob/master/\.agents/running-builds\.md$ +^https://github\.com/SpineEventEngine/validation/blob/master/\.agents/documentation-guidelines\.md$ +^https://github\.com/SpineEventEngine/embed-code-go/blob/master/EMBEDDING\.md$ +^https://github\.com/SpineEventEngine/embed-code-go/tree/master/bin$ +^https://plugins\.gradle\.org/plugin/io\.spine\.validation$ +# Relative links that resolve outside the module's pages. +^http://localhost:[0-9]+/06-developers-guide/$ +^http://localhost:[0-9]+/developer/$ +^http://localhost:[0-9]+/typical_custom_option\.jpg$ From 00d6795c01acc1370e24e563d117112d6f6407f5 Mon Sep 17 00:00:00 2001 From: alexander-yevsyukov Date: Fri, 30 Oct 2026 18:22:21 +0000 Subject: [PATCH 09/11] Log the link check in the task doc Co-Authored-By: Claude Opus 5.5 --- .agents/tasks/dart-sass-site-styles.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.agents/tasks/dart-sass-site-styles.md b/.agents/tasks/dart-sass-site-styles.md index 09b2151d..22c79733 100644 --- a/.agents/tasks/dart-sass-site-styles.md +++ b/.agents/tasks/dart-sass-site-styles.md @@ -37,6 +37,11 @@ stays the same. before its users, so no CSS moves. - [x] `map-get()` → `map.get()`, `fade-out()` → `color.adjust($alpha: …)`. - [x] Verify: Sass warnings, and the CSS rule by rule against the previous build. +- [x] Keep Check Links passing. With jQuery no longer inlined (site-commons#39), + Lychee reads whole pages and finds 14 links that were already broken. + - Point the Gitter link of the 1.0 blog post to where Gitter redirects. + - `.lycheeignore` lists the 13 broken in the imported docs, as in + SpineEventEngine/documentation#96. ## Log From 745f1b0e76fe4cd421833976be56c514097591dc Mon Sep 17 00:00:00 2001 From: alexander-yevsyukov Date: Fri, 30 Oct 2026 18:30:18 +0000 Subject: [PATCH 10/11] Run Check Links when `.lycheeignore` changes A PR that only adds or removes an ignored link should still get its links checked. `config` distributes this workflow, so it needs the same line, or the next `./config/pull` reverts it. Co-Authored-By: Claude Opus 5.5 --- .github/workflows/check-links.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/check-links.yml b/.github/workflows/check-links.yml index 3f9b1562..3b65629e 100644 --- a/.github/workflows/check-links.yml +++ b/.github/workflows/check-links.yml @@ -8,6 +8,7 @@ on: - 'docs/**' - 'site/**' - 'lychee.toml' + - '.lycheeignore' - '.github/workflows/check-links.yml' workflow_dispatch: From 3422c21da3e2363040494d9dcfc0dafb17c601e1 Mon Sep 17 00:00:00 2001 From: alexander-yevsyukov Date: Fri, 30 Oct 2026 20:06:31 +0000 Subject: [PATCH 11/11] Update `config` Brings in SpineEventEngine/config#825: `check-links` moves its actions off Node.js 20 and shows Lychee's report on the run page. The workflow keeps the `.lycheeignore` trigger added here, which `config` doesn't have yet. Co-Authored-By: Claude Opus 5.5 --- .github/workflows/check-links.yml | 39 ++++++++++++++++++++++++------- config | 2 +- 2 files changed, 32 insertions(+), 9 deletions(-) diff --git a/.github/workflows/check-links.yml b/.github/workflows/check-links.yml index 3b65629e..fa41d67b 100644 --- a/.github/workflows/check-links.yml +++ b/.github/workflows/check-links.yml @@ -111,13 +111,13 @@ jobs: if: steps.docs.outputs.present == 'true' run: hugo env | grep 'github.com/sass/dart-sass' - # `actions/setup-node@v4` ships with built-in npm caching that hashes + # `actions/setup-node` ships with built-in npm caching that hashes # the lockfile and restores `~/.npm`. We use that instead of a - # standalone `actions/cache@v4` block so there is only one source of + # standalone `actions/cache` block so there is only one source of # truth for the cache key (no drift between two layers). - name: Setup Node if: steps.docs.outputs.present == 'true' - uses: actions/setup-node@v4 + uses: actions/setup-node@v7 with: node-version: '26' cache: 'npm' @@ -129,7 +129,7 @@ jobs: # invalidates the cache deterministically regardless of site root. - name: Cache Hugo Modules if: steps.docs.outputs.present == 'true' - uses: actions/cache@v4 + uses: actions/cache@v6 with: path: /tmp/hugo_cache key: ${{ runner.os }}-hugomod-${{ hashFiles('docs/**/go.sum', 'site/**/go.sum') }} @@ -153,7 +153,7 @@ jobs: # `max_cache_age` expires. - name: Cache Lychee results if: steps.docs.outputs.present == 'true' - uses: actions/cache@v4 + uses: actions/cache@v6 with: path: .lycheecache key: cache-lychee-${{ runner.os }}-${{ hashFiles('lychee.toml') }} @@ -168,7 +168,7 @@ jobs: - name: Cache Lychee executable if: steps.docs.outputs.present == 'true' id: cache-lychee - uses: actions/cache@v4 + uses: actions/cache@v6 with: path: lychee key: ${{ runner.os }}-${{ env.LYCHEE_VERSION_TAG }}-${{ env.LYCHEE_RELEASE }} @@ -188,7 +188,7 @@ jobs: # string when the file is absent, so this guard runs the download iff # neither the exact key nor any restore-key restored the binary. - name: Download Lychee executable - uses: robinraju/release-downloader@v1.7 + uses: robinraju/release-downloader@v1.13 if: steps.docs.outputs.present == 'true' && hashFiles('lychee/lychee') == '' with: repository: "lycheeverse/lychee" @@ -240,9 +240,32 @@ jobs: exit 1 fi + # Lychee prints broken links to this step's log only; the run page + # shows just "Process completed with exit code 2". `tee` keeps the + # report in the log and saves a copy, which the next step adds to the + # run summary. (`--output` would not do: it moves the report from the + # log to the file.) `pipefail` keeps Lychee's exit code. Without it, + # the step would take `tee`'s 0 and pass despite broken links. - name: Check links if: steps.docs.outputs.present == 'true' run: | + set -o pipefail ./lychee/lychee --config lychee.toml --timeout 60 \ --base-url http://localhost:1313/ \ - '${{ steps.docs.outputs.work_dir }}/public/**/*.html' + '${{ steps.docs.outputs.work_dir }}/public/**/*.html' \ + | tee lychee-report.txt + + # Runs after a failed `Check links` too, which is when the report + # matters most. `hashFiles` skips this step when Lychee never ran. + # `!cancelled()` needs the `${{ }}` wrapper: a bare leading `!` is + # a YAML tag. + - name: Publish link report + if: ${{ !cancelled() && hashFiles('lychee-report.txt') != '' }} + run: | + { + echo '## Link check' + echo + echo '```text' + cat lychee-report.txt + echo '```' + } >> "$GITHUB_STEP_SUMMARY" diff --git a/config b/config index f5a8d409..0a2a559b 160000 --- a/config +++ b/config @@ -1 +1 @@ -Subproject commit f5a8d4093cd9d54b39a13f4da61c2932cc12a909 +Subproject commit 0a2a559ba37c0103f9135850bb770724370e8235