@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 +2 -2
- package/package.json +55 -4
- package/release-manifest.json +34 -0
- package/validate.mjs +23 -0
package/README.md
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Tuda desktop distribution
|
|
2
2
|
|
|
3
|
-
This
|
|
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.
|
|
4
|
-
"
|
|
5
|
-
"
|
|
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}));
|