@petercjl/tuda-desktop 0.0.0-stage → 0.1.3

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
@@ -1,3 +1,3 @@
1
- # Temporary Holding Version
1
+ # Tuda desktop distribution
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ This package distributes verified Windows installer manifests and immutable payloads. Tuda itself checks and applies desktop updates. Plugin, CLI and Skill releases use the independent `@petercjl/tuda` package. Installation of this metadata package does not install or launch the desktop.
package/package.json CHANGED
@@ -1,6 +1,57 @@
1
1
  {
2
2
  "name": "@petercjl/tuda-desktop",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.1.3",
4
+ "description": "Tuda Windows desktop release manifest and immutable installer payload distribution",
5
+ "license": "MIT",
6
+ "type": "module",
7
+ "files": [
8
+ "release-manifest.json",
9
+ "README.md",
10
+ "validate.mjs"
11
+ ],
12
+ "scripts": {
13
+ "prepack": "node validate.mjs"
14
+ },
15
+ "repository": {
16
+ "type": "git",
17
+ "url": "https://github.com/petercjl/iterlay.git",
18
+ "directory": "desktop-package"
19
+ },
20
+ "publishConfig": {
21
+ "access": "public"
22
+ },
23
+ "tudaRelease": {
24
+ "schemaVersion": 1,
25
+ "applicationVersion": "0.1.3",
26
+ "installers": [
27
+ {
28
+ "version": "0.1.3",
29
+ "platform": "win32",
30
+ "arch": "x64",
31
+ "channel": "stable",
32
+ "downloadUrl": "https://registry.npmjs.org/@petercjl/tuda-desktop/-/tuda-desktop-0.0.0-payload.6eeda8c800a29d48c93974dfd8ef6346dd3e7224a9ca4cba72d10c5dae519de4.tgz",
33
+ "npmPayloads": [
34
+ {
35
+ "url": "https://registry.npmjs.org/@petercjl/tuda-desktop/-/tuda-desktop-0.0.0-payload.6eeda8c800a29d48c93974dfd8ef6346dd3e7224a9ca4cba72d10c5dae519de4.tgz",
36
+ "sha256": "6eeda8c800a29d48c93974dfd8ef6346dd3e7224a9ca4cba72d10c5dae519de4",
37
+ "fileSize": 50331648
38
+ },
39
+ {
40
+ "url": "https://registry.npmjs.org/@petercjl/tuda-desktop/-/tuda-desktop-0.0.0-payload.be7ddc2f57ff7ef0b35a3fb70fd44250d9fbc00e4265621f6f23f209fb6734f2.tgz",
41
+ "sha256": "be7ddc2f57ff7ef0b35a3fb70fd44250d9fbc00e4265621f6f23f209fb6734f2",
42
+ "fileSize": 50331648
43
+ },
44
+ {
45
+ "url": "https://registry.npmjs.org/@petercjl/tuda-desktop/-/tuda-desktop-0.0.0-payload.f911b5aaf7af1def6561de38d51f955b9dd1f7bdfc6bf4bb02521e26fb9e87fb.tgz",
46
+ "sha256": "f911b5aaf7af1def6561de38d51f955b9dd1f7bdfc6bf4bb02521e26fb9e87fb",
47
+ "fileSize": 21425140
48
+ }
49
+ ],
50
+ "sha256": "16b97eef71d46f685c9cc0d8251c3f802e3800d0036a2da6355b33ec13186060",
51
+ "fileSize": 122088436,
52
+ "publishedAt": "2026-11-12T17:39:31.797Z",
53
+ "releaseNotes": "Tuda · 图塔 0.1.3"
54
+ }
55
+ ]
56
+ }
57
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "applicationVersion": "0.1.3",
4
+ "installers": [
5
+ {
6
+ "version": "0.1.3",
7
+ "platform": "win32",
8
+ "arch": "x64",
9
+ "channel": "stable",
10
+ "downloadUrl": "https://registry.npmjs.org/@petercjl/tuda-desktop/-/tuda-desktop-0.0.0-payload.6eeda8c800a29d48c93974dfd8ef6346dd3e7224a9ca4cba72d10c5dae519de4.tgz",
11
+ "npmPayloads": [
12
+ {
13
+ "url": "https://registry.npmjs.org/@petercjl/tuda-desktop/-/tuda-desktop-0.0.0-payload.6eeda8c800a29d48c93974dfd8ef6346dd3e7224a9ca4cba72d10c5dae519de4.tgz",
14
+ "sha256": "6eeda8c800a29d48c93974dfd8ef6346dd3e7224a9ca4cba72d10c5dae519de4",
15
+ "fileSize": 50331648
16
+ },
17
+ {
18
+ "url": "https://registry.npmjs.org/@petercjl/tuda-desktop/-/tuda-desktop-0.0.0-payload.be7ddc2f57ff7ef0b35a3fb70fd44250d9fbc00e4265621f6f23f209fb6734f2.tgz",
19
+ "sha256": "be7ddc2f57ff7ef0b35a3fb70fd44250d9fbc00e4265621f6f23f209fb6734f2",
20
+ "fileSize": 50331648
21
+ },
22
+ {
23
+ "url": "https://registry.npmjs.org/@petercjl/tuda-desktop/-/tuda-desktop-0.0.0-payload.f911b5aaf7af1def6561de38d51f955b9dd1f7bdfc6bf4bb02521e26fb9e87fb.tgz",
24
+ "sha256": "f911b5aaf7af1def6561de38d51f955b9dd1f7bdfc6bf4bb02521e26fb9e87fb",
25
+ "fileSize": 21425140
26
+ }
27
+ ],
28
+ "sha256": "16b97eef71d46f685c9cc0d8251c3f802e3800d0036a2da6355b33ec13186060",
29
+ "fileSize": 122088436,
30
+ "publishedAt": "2026-11-12T17:39:31.797Z",
31
+ "releaseNotes": "Tuda · 图塔 0.1.3"
32
+ }
33
+ ]
34
+ }
package/validate.mjs ADDED
@@ -0,0 +1,23 @@
1
+ import { URL } from "node:url";
2
+ import console from "node:console";
3
+ import assert from "node:assert/strict";
4
+ import {readFile} from "node:fs/promises";
5
+ const read = async name => JSON.parse(await readFile(new URL(name, import.meta.url), "utf8"));
6
+ const p = await read("package.json"), m = await read("release-manifest.json");
7
+ assert.equal(p.name, "@petercjl/tuda-desktop");
8
+ assert.equal(p.version, m.applicationVersion);
9
+ assert.deepEqual(p.tudaRelease, m, "Prepare the verified Windows release before packing");
10
+ assert(m.installers.length > 0);
11
+ for (const item of m.installers) {
12
+ assert.equal(item.version, p.version);
13
+ assert.equal(item.platform, "win32");
14
+ assert.match(item.sha256, /^[a-f0-9]{64}$/);
15
+ assert(item.npmPayloads.length > 0);
16
+ assert.equal(item.fileSize, item.npmPayloads.reduce((n, part) => n + part.fileSize, 0));
17
+ for (const part of item.npmPayloads) {
18
+ assert.match(part.sha256, /^[a-f0-9]{64}$/);
19
+ assert(part.fileSize > 0 && part.fileSize <= 48 * 1024 * 1024);
20
+ assert.equal(part.url, `https://registry.npmjs.org/@petercjl/tuda-desktop/-/tuda-desktop-0.0.0-payload.${part.sha256}.tgz`);
21
+ }
22
+ }
23
+ console.log(JSON.stringify({ok:true, package:p.name, version:p.version}));