website-xp-phone 2.2.11 → 2.2.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -56,6 +56,12 @@ Build for production:
|
|
|
56
56
|
npm run build
|
|
57
57
|
```
|
|
58
58
|
|
|
59
|
+
`npm run build:local` runs the full pre-push pipeline locally — the same
|
|
60
|
+
checks CI ("Website CI") runs on main: lockfile STABLE, the full build
|
|
61
|
+
(with checksums + drift report), and the drift-policy gate, plus
|
|
62
|
+
lint/tests/audit. `npm run check:ci` runs just the CI-equivalent subset
|
|
63
|
+
(lockfile + build + drift policy) without the content refresh.
|
|
64
|
+
|
|
59
65
|
Run linting:
|
|
60
66
|
|
|
61
67
|
```
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "website-xp-phone",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.12",
|
|
4
4
|
"license": "GPL v2",
|
|
5
5
|
"author": "Kirill <kine> Nevzorov <akinevz@outlook.com>",
|
|
6
6
|
"type": "module",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"refresh:content": "node ./scripts/refresh-content.mjs",
|
|
16
16
|
"render": "echo 'https://render.com/'",
|
|
17
17
|
"build": "vite build && npm run checksums && npm run render",
|
|
18
|
-
"build:local": "npm run refresh:content && npm run check:all && npm run build && npm run dev && git add -A && git commit",
|
|
18
|
+
"build:local": "npm run refresh:content && npm run check:lockfile && npm run check:all && npm run build && npm run verify:policy && npm run dev && git add -A && git commit",
|
|
19
19
|
"build:ready": "git add -A && npm run push",
|
|
20
20
|
"push": "git push origin main",
|
|
21
21
|
"preview": "vite preview --host 127.0.0.1 --port 8086",
|
|
@@ -26,6 +26,8 @@
|
|
|
26
26
|
"check:audit": "npm audit --audit-level=low",
|
|
27
27
|
"check:security": "npm run lint && npm run test",
|
|
28
28
|
"check:all": "npm run check:security && npm run check:audit",
|
|
29
|
+
"check:lockfile": "git diff --exit-code package-lock.json",
|
|
30
|
+
"check:ci": "npm run check:lockfile && npm run build && npm run verify:policy",
|
|
29
31
|
"checksums": "node ./scripts/write-dist-checksums.mjs",
|
|
30
32
|
"verify:policy": "node ./scripts/verify-policy.mjs",
|
|
31
33
|
"postinstall": "node ./scripts/ensure-xpcss.mjs"
|
package/public/checksums.txt
CHANGED
|
@@ -30,7 +30,6 @@ c53afc7432e19212cdc0c22c3bbfd87e2dbde6b76dd6eee560b5ddda2a1db7b8 addons/rueg-wa
|
|
|
30
30
|
98dea05b5d5a429c6f49e92d8e4501735f96615e5e2525093ab951a7eaf45192 addons/rueg-wa-rueg.txt
|
|
31
31
|
0fab27c7181385b8817de8a6ed3a547b044956af021043240d102dc8a83508bd addons/rueg-wa-shaman.txt
|
|
32
32
|
0a11450902acc459dacd274070c894590339e4134ca99e210169bf201dfe3462 addons/rueg-wa-warrior.txt
|
|
33
|
-
f4b9f4400d79673bfd2c6b4a0036983a2637b5ab9d0a15408e59864b47f7be58 addons/sidetip-0.1.19.zip
|
|
34
33
|
6ce859ccf2408b5b733815e79b9446ffa8e2879d5081ede5fb9bba076ebd0b8b addons/spirit-smash.txt
|
|
35
34
|
93f4825028c263e69ca4560f45ff54415fccad38c10e37ea1eefef3ab0ff3f29 assets/PerfectDOSVGA437Win-BZfDqYRn.woff2
|
|
36
35
|
c71295b97f51c2f199b8f1a0ef3cc55fbe5dec6f78daee9098b4dbfe942931a8 assets/PerfectDOSVGA437Win-C4lD4zTj.woff
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"baselineUrl": "https://akinevz.com/checksums.txt",
|
|
3
|
-
"generatedAt": "2026-10-23T21:
|
|
3
|
+
"generatedAt": "2026-10-23T21:26:15.171Z",
|
|
4
4
|
"mutablePaths": [
|
|
5
5
|
"index.html",
|
|
6
6
|
"404.html",
|
|
@@ -25,6 +25,8 @@
|
|
|
25
25
|
"projects/index.html",
|
|
26
26
|
"blog/",
|
|
27
27
|
"stories/",
|
|
28
|
+
"dist.7z",
|
|
29
|
+
"documents/drift-report.json",
|
|
28
30
|
"checksums.txt",
|
|
29
31
|
"assets/*.js"
|
|
30
32
|
],
|
|
@@ -50,6 +50,13 @@ export const MUTABLE_PATHS = Object.freeze([
|
|
|
50
50
|
// documents embedded into posts via blog.json.
|
|
51
51
|
"blog/",
|
|
52
52
|
"stories/",
|
|
53
|
+
// Git-LFS artifact: CI checkouts that do not smudge LFS see the pointer
|
|
54
|
+
// bytes, so its digest depends on the checkout environment — and the
|
|
55
|
+
// archive itself legitimately changes. Never a STABLE invariant.
|
|
56
|
+
"dist.7z",
|
|
57
|
+
// Self-referential sidecar: write-dist-checksums.mjs rewrites it on
|
|
58
|
+
// every build (generatedAt, violation counts), so it changes each run.
|
|
59
|
+
"documents/drift-report.json",
|
|
53
60
|
"checksums.txt",
|
|
54
61
|
"assets/*.js",
|
|
55
62
|
]);
|
|
@@ -20,6 +20,13 @@ test("blog pages remain mutable", () => {
|
|
|
20
20
|
assert.equal(isMutablePath("blog/index.html"), true);
|
|
21
21
|
});
|
|
22
22
|
|
|
23
|
+
test("LFS and self-referential artifacts are mutable", () => {
|
|
24
|
+
// LFS: digest depends on whether the checkout smudged the pointer
|
|
25
|
+
assert.equal(isMutablePath("dist.7z"), true);
|
|
26
|
+
// rewritten on every build by write-dist-checksums.mjs itself
|
|
27
|
+
assert.equal(isMutablePath("documents/drift-report.json"), true);
|
|
28
|
+
});
|
|
29
|
+
|
|
23
30
|
test("stable non-blog artifacts are not mutable", () => {
|
|
24
31
|
assert.equal(isMutablePath("configs.html"), false);
|
|
25
32
|
assert.equal(isMutablePath("spinner.svg"), false);
|
|
Binary file
|