@push.rocks/smartvpn 2.3.0 → 2.3.1

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.
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "format": "tsrust.build-provenance.v2",
3
- "binarySha256": "bb4eeb71f5b13b197999ea809e05876625df2c93b7600fdfbe56db10970e6589",
3
+ "binarySha256": "d4e6f89ac9278183338ea8a83fd112ef8b7516576057234f7bab8181291089a1",
4
4
  "buildInfo": {
5
5
  "projectName": "@push.rocks/smartvpn",
6
- "projectVersion": "2.3.0",
7
- "gitCommit": "4fd05874f4792ba89c6b0fa6cb168434e5c9ee25",
6
+ "projectVersion": "2.3.1",
7
+ "gitCommit": "a96a22bd5ff5fe870e72c225b51f4715c1b25c40",
8
8
  "gitDirty": false,
9
- "builtAt": "2026-09-15T09:32:44.556Z",
9
+ "builtAt": "2026-09-17T15:20:47.136Z",
10
10
  "tsrustVersion": "1.13.0",
11
11
  "binary": "smartvpn_daemon",
12
12
  "target": "linux_amd64_musl"
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "format": "tsrust.build-provenance.v2",
3
- "binarySha256": "37bc9e0af746d3f799753b605fd6b025cfc3f83b3f225e6bece5ab8ec167f98d",
3
+ "binarySha256": "9c8bdf211d7bbb9425e7dcf44ead8b39b584e6fd1b18cfdddff07b51133fb16d",
4
4
  "buildInfo": {
5
5
  "projectName": "@push.rocks/smartvpn",
6
- "projectVersion": "2.3.0",
7
- "gitCommit": "4fd05874f4792ba89c6b0fa6cb168434e5c9ee25",
6
+ "projectVersion": "2.3.1",
7
+ "gitCommit": "a96a22bd5ff5fe870e72c225b51f4715c1b25c40",
8
8
  "gitDirty": false,
9
- "builtAt": "2026-09-15T09:32:44.845Z",
9
+ "builtAt": "2026-09-17T15:20:47.476Z",
10
10
  "tsrustVersion": "1.13.0",
11
11
  "binary": "smartvpn_daemon",
12
12
  "target": "linux_arm64_musl"
@@ -2,8 +2,8 @@
2
2
  * autocreated commitinfo by @push.rocks/commitinfo
3
3
  */
4
4
  export const commitinfo = {
5
- name: '@push.rocks/smartvpn',
6
- version: '2.3.0',
7
- description: 'A VPN solution with TypeScript control plane and Rust data plane daemon'
5
+ name: "@push.rocks/smartvpn",
6
+ version: "2.3.1",
7
+ description: "A VPN solution with TypeScript control plane and Rust data plane daemon"
8
8
  };
9
9
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiMDBfY29tbWl0aW5mb19kYXRhLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vdHMvMDBfY29tbWl0aW5mb19kYXRhLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHO0lBQ3hCLElBQUksRUFBRSxzQkFBc0I7SUFDNUIsT0FBTyxFQUFFLE9BQU87SUFDaEIsV0FBVyxFQUFFLHlFQUF5RTtDQUN2RixDQUFBIn0=
@@ -642,6 +642,7 @@ export interface IManagedNetworkNode {
642
642
  controlAddress: string;
643
643
  controlPolicyDomain: string;
644
644
  enabled: boolean;
645
+ /** Credential expiry (ISO 8601); renewing only this keeps the node's live session. */
645
646
  expiresAt?: string;
646
647
  workloadPrefixes: IManagedNetworkPrefix[];
647
648
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@push.rocks/smartvpn",
3
- "version": "2.3.0",
3
+ "version": "2.3.1",
4
4
  "private": false,
5
5
  "description": "A VPN solution with TypeScript control plane and Rust data plane daemon",
6
6
  "type": "module",
@@ -31,8 +31,8 @@
31
31
  "@git.zone/tsbuild": "^4.4.3",
32
32
  "@git.zone/tsrun": "^2.0.6",
33
33
  "@git.zone/tsrust": "^1.13.0",
34
- "@git.zone/tstest": "^6.0.0",
35
- "@types/node": "^26.5.0"
34
+ "@git.zone/tstest": "^6.1.1",
35
+ "@types/node": "^26.5.1"
36
36
  },
37
37
  "files": [
38
38
  "ts/**/*",
package/readme.md CHANGED
@@ -784,8 +784,16 @@ are never routed back to the hub merely because a grant involves them.
784
784
 
785
785
  Invalid preparation preserves active authority. A valid change quarantines and
786
786
  cancels only affected node generations, joins their packet work, prepares WG
787
- crypto and commits the whole snapshot atomically before acknowledging. Unchanged
788
- nodes keep their sessions. A post-drain failure leaves `state: 'failed'`, its
787
+ crypto and commits the whole snapshot atomically before acknowledging. A node is
788
+ affected when it is added or removed, or when its keys, control address or domain,
789
+ `enabled`, workload prefixes, or the grants and routes involving it change.
790
+ Unchanged nodes keep their sessions. A change to `expiresAt` alone does not affect
791
+ a node: its live native or WireGuard session stays connected and follows the
792
+ committed expiry in place. A later expiry keeps the session, an earlier future
793
+ expiry re-arms its deadline, and an expiry that has already passed ends it when
794
+ the snapshot commits. A session whose expiry passed is never revived, so renew
795
+ before expiry; after a late renewal the node can reconnect with its unchanged keys.
796
+ A post-drain failure leaves `state: 'failed'`, its
789
797
  `pendingRevision` and bounded `lastError`; old affected admission stays closed.
790
798
  Only the exact pending snapshot can retry. An IPC timeout or disconnected caller
791
799
  does not cancel the process-owned operation. Inspect status and replay that exact
@@ -2,7 +2,7 @@
2
2
  * autocreated commitinfo by @push.rocks/commitinfo
3
3
  */
4
4
  export const commitinfo = {
5
- name: '@push.rocks/smartvpn',
6
- version: '2.3.0',
7
- description: 'A VPN solution with TypeScript control plane and Rust data plane daemon'
5
+ name: "@push.rocks/smartvpn",
6
+ version: "2.3.1",
7
+ description: "A VPN solution with TypeScript control plane and Rust data plane daemon"
8
8
  }
@@ -553,6 +553,7 @@ export interface IManagedNetworkNode {
553
553
  controlAddress: string;
554
554
  controlPolicyDomain: string;
555
555
  enabled: boolean;
556
+ /** Credential expiry (ISO 8601); renewing only this keeps the node's live session. */
556
557
  expiresAt?: string;
557
558
  workloadPrefixes: IManagedNetworkPrefix[];
558
559
  }