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.11",
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"
@@ -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:21:29.982Z",
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