underpost 3.2.11 → 3.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/CHANGELOG.md CHANGED
@@ -2,6 +2,24 @@
2
2
 
3
3
  ## 2026-05-31
4
4
 
5
+ ### docs
6
+
7
+ - Refactor Underpost Platform documentation for clarity and structure ([e554d3d69](https://github.com/underpostnet/engine/commit/e554d3d6947d35f31b28319de024120c16cc2210))
8
+
9
+ ### engine-cyberia
10
+
11
+ - Refactor README and CLI command descriptions for clarity and consistency ([b322c77f1](https://github.com/underpostnet/engine/commit/b322c77f14347c3b9d94236c5d522a4decb6e5ee))
12
+
13
+ ### server-conf
14
+
15
+ - Refactor awaitDeployMonitor parameters inverse arg functionality and fianl deployment event handle ([c34661ad0](https://github.com/underpostnet/engine/commit/c34661ad039cafe55a3858c006ba9c54bad4a001))
16
+
17
+ ### server-start
18
+
19
+ - Remove error throw on unexpected deployment exit for improved error handling ([e6554e09c](https://github.com/underpostnet/engine/commit/e6554e09cc7274ed137a9860a751b0706a961284))
20
+
21
+ ## New release v:3.2.11 (2026-05-31)
22
+
5
23
  ### deploy
6
24
 
7
25
  - Fix deployment error handling: ensure global secret cleanup only occurs if container status is not 'error' ([83ef9d8cf](https://github.com/underpostnet/engine/commit/83ef9d8cf893c8fe8c07d445b324dd864d9ad842))
package/CLI-HELP.md CHANGED
@@ -1,4 +1,4 @@
1
- ## underpost ci/cd cli v3.2.11
1
+ ## underpost ci/cd cli v3.2.12
2
2
 
3
3
  ### Usage: `underpost [options] [command]`
4
4
  ```
package/README.md CHANGED
@@ -16,7 +16,7 @@
16
16
 
17
17
  <div align="center">
18
18
 
19
- [![Node.js CI](https://github.com/underpostnet/engine/actions/workflows/docker-image.ci.yml/badge.svg?branch=master)](https://github.com/underpostnet/engine/actions/workflows/docker-image.ci.yml) [![Test](https://github.com/underpostnet/engine/actions/workflows/coverall.ci.yml/badge.svg?branch=master)](https://github.com/underpostnet/engine/actions/workflows/coverall.ci.yml) [![Downloads](https://img.shields.io/npm/dm/underpost.svg)](https://www.npmjs.com/package/underpost) [![](https://data.jsdelivr.com/v1/package/npm/underpost/badge)](https://www.jsdelivr.com/package/npm/underpost) [![Socket Badge](https://socket.dev/api/badge/npm/package/underpost/3.2.11)](https://socket.dev/npm/package/underpost/overview/3.2.11) [![Coverage Status](https://coveralls.io/repos/github/underpostnet/engine/badge.svg?branch=master)](https://coveralls.io/github/underpostnet/engine?branch=master) [![Version](https://img.shields.io/npm/v/underpost.svg)](https://www.npmjs.org/package/underpost) [![License](https://img.shields.io/npm/l/underpost.svg)](https://www.npmjs.com/package/underpost)
19
+ [![Node.js CI](https://github.com/underpostnet/engine/actions/workflows/docker-image.ci.yml/badge.svg?branch=master)](https://github.com/underpostnet/engine/actions/workflows/docker-image.ci.yml) [![Test](https://github.com/underpostnet/engine/actions/workflows/coverall.ci.yml/badge.svg?branch=master)](https://github.com/underpostnet/engine/actions/workflows/coverall.ci.yml) [![Downloads](https://img.shields.io/npm/dm/underpost.svg)](https://www.npmjs.com/package/underpost) [![](https://data.jsdelivr.com/v1/package/npm/underpost/badge)](https://www.jsdelivr.com/package/npm/underpost) [![Socket Badge](https://socket.dev/api/badge/npm/package/underpost/3.2.12)](https://socket.dev/npm/package/underpost/overview/3.2.12) [![Coverage Status](https://coveralls.io/repos/github/underpostnet/engine/badge.svg?branch=master)](https://coveralls.io/github/underpostnet/engine?branch=master) [![Version](https://img.shields.io/npm/v/underpost.svg)](https://www.npmjs.org/package/underpost) [![License](https://img.shields.io/npm/l/underpost.svg)](https://www.npmjs.com/package/underpost)
20
20
 
21
21
  </div>
22
22
 
@@ -41,7 +41,7 @@ The project covers:
41
41
 
42
42
  ### Architectural roles (Cyberia stack)
43
43
 
44
- When the platform is hosting the Cyberia MMO extension, three runtime processes participate. Their boundaries are non-overlapping and their startup order is **strictly sequential** — not parallel.
44
+ When the platform is hosting the Cyberia MMO extension, three independent runtime processes participate. Their boundaries are non-overlapping.
45
45
 
46
46
  | Process | Role |
47
47
  | ------------------------------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
@@ -49,13 +49,9 @@ When the platform is hosting the Cyberia MMO extension, three runtime processes
49
49
  | **cyberia-server** (Go) | Authoritative simulation runtime: tick advancement, AOI replication, input command processing, snapshot generation. |
50
50
  | **cyberia-client** (C → WebAssembly) | Presentation runtime: rendering, UI, input capture, prediction, reconciliation, interpolation, client-side presentation defaults. |
51
51
 
52
- **Startup order sequential, in order:**
52
+ The ecosystem is **playable only when all three are running and healthy**. Each service is supervised independently and owns its own monitor/reconnector. If any one is unhealthy, the game enters standby and resumes automatically once all three are healthy again.
53
53
 
54
- 1. **Persistent backend / sidecar data layer** — databases, content backend (engine-cyberia), static asset backend, config and data services.
55
- 2. **cyberia-server** — authoritative Go simulation runtime; dials engine-cyberia gRPC at boot to load world configuration.
56
- 3. **cyberia-client** — rendering, UI, prediction, interpolation, reconciliation; connects to cyberia-server via WebSocket.
57
-
58
- <a target="_top" href="https://github.com/underpostnet/engine-cyberia/blob/master/src/client/public/cyberia-docs/ARCHITECTURE.md">See Detailed architecture.</a>
54
+ <a target="_top" href="https://github.com/underpostnet/engine-cyberia/blob/master/src/client/public/cyberia-docs/ARCHITECTURE.md">See detailed Cyberia architecture.</a>
59
55
 
60
56
  ## Create a new project
61
57
 
@@ -90,7 +86,7 @@ npm run dev
90
86
  <a target="_top" href="https://www.nexodev.org/docs?cid=src">See Docs.</a>
91
87
 
92
88
  <!-- cli-index-start -->
93
- ## underpost ci/cd cli v3.2.11
89
+ ## underpost ci/cd cli v3.2.12
94
90
 
95
91
  ### Usage: `underpost [options] [command]`
96
92
  ```
@@ -23,7 +23,7 @@ spec:
23
23
  spec:
24
24
  containers:
25
25
  - name: dd-cron-backup
26
- image: underpost/underpost-engine:v3.2.11
26
+ image: underpost/underpost-engine:v3.2.12
27
27
  command:
28
28
  - /bin/sh
29
29
  - -c
@@ -23,7 +23,7 @@ spec:
23
23
  spec:
24
24
  containers:
25
25
  - name: dd-cron-dns
26
- image: underpost/underpost-engine:v3.2.11
26
+ image: underpost/underpost-engine:v3.2.12
27
27
  command:
28
28
  - /bin/sh
29
29
  - -c
@@ -17,7 +17,7 @@ spec:
17
17
  spec:
18
18
  containers:
19
19
  - name: dd-default-development-blue
20
- image: underpost/underpost-engine:v3.2.11
20
+ image: underpost/underpost-engine:v3.2.12
21
21
  # resources:
22
22
  # requests:
23
23
  # memory: "124Ki"
@@ -98,7 +98,7 @@ spec:
98
98
  spec:
99
99
  containers:
100
100
  - name: dd-default-development-green
101
- image: underpost/underpost-engine:v3.2.11
101
+ image: underpost/underpost-engine:v3.2.12
102
102
  # resources:
103
103
  # requests:
104
104
  # memory: "124Ki"
@@ -20,7 +20,7 @@ spec:
20
20
  spec:
21
21
  containers:
22
22
  - name: dd-test-development-blue
23
- image: underpost/underpost-engine:v3.2.11
23
+ image: underpost/underpost-engine:v3.2.12
24
24
  imagePullPolicy: IfNotPresent
25
25
  envFrom:
26
26
  - secretRef:
@@ -148,7 +148,7 @@ spec:
148
148
  spec:
149
149
  containers:
150
150
  - name: dd-test-development-green
151
- image: underpost/underpost-engine:v3.2.11
151
+ image: underpost/underpost-engine:v3.2.12
152
152
  imagePullPolicy: IfNotPresent
153
153
  envFrom:
154
154
  - secretRef:
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "type": "module",
3
3
  "main": "src/index.js",
4
4
  "name": "underpost",
5
- "version": "3.2.11",
5
+ "version": "3.2.12",
6
6
  "description": "Underpost Platform — end-to-end CI/CD and application-delivery toolchain CLI. Covers bare metal, Kubernetes, K3s, kubeadm, LXD, container/image orchestration, secrets, databases, cron jobs, monitoring, SSH, runners, PWA + Workbox delivery, and release orchestration. Extensible via downstream CLIs.",
7
7
  "scripts": {
8
8
  "start": "node --max-old-space-size=8192 src/server",
package/src/cli/run.js CHANGED
@@ -1819,7 +1819,7 @@ EOF`);
1819
1819
  }`;
1820
1820
  shellExec(cmd, { async: true });
1821
1821
  }
1822
- await awaitDeployMonitor(true);
1822
+ await awaitDeployMonitor();
1823
1823
  {
1824
1824
  const cmd = `npm run dev:client ${deployId} ${subConf} ${host} ${_path} proxy${options.tls ? ' tls' : ''}`;
1825
1825
 
@@ -1827,7 +1827,7 @@ EOF`);
1827
1827
  async: true,
1828
1828
  });
1829
1829
  }
1830
- await awaitDeployMonitor(true);
1830
+ await awaitDeployMonitor();
1831
1831
  shellExec(
1832
1832
  `NODE_ENV=development node src/proxy proxy ${deployId} ${subConf} ${host} ${_path}${options.tls ? ' tls' : ''}`,
1833
1833
  );
package/src/index.js CHANGED
@@ -44,7 +44,7 @@ class Underpost {
44
44
  * @type {String}
45
45
  * @memberof Underpost
46
46
  */
47
- static version = 'v3.2.11';
47
+ static version = 'v3.2.12';
48
48
 
49
49
  /**
50
50
  * Required Node.js major version
@@ -1295,16 +1295,17 @@ const validateTemplatePath = (absolutePath = '') => {
1295
1295
  /**
1296
1296
  * @method awaitDeployMonitor
1297
1297
  * @description Waits for the deploy monitor.
1298
- * @param {boolean} [init=false] - The init flag.
1298
+ * @param {boolean} [isFinal=false] - If true, logs when the final (non-replica) deployment completes.
1299
1299
  * @param {number} [deltaMs=1000] - The delta ms.
1300
1300
  * @returns {Promise<void>} - The await deploy monitor.
1301
1301
  * @memberof ServerConfBuilder
1302
1302
  */
1303
- const awaitDeployMonitor = async (init = false, deltaMs = 1000) => {
1304
- if (init) Underpost.env.set('await-deploy', new Date().toISOString());
1303
+ const awaitDeployMonitor = async (isFinal = false, deltaMs = 1000) => {
1304
+ Underpost.env.set('await-deploy', new Date().toISOString());
1305
+ if (isFinal) logger.info('Final deployment running (no replica)');
1305
1306
  await timer(deltaMs);
1306
1307
  if (Underpost.env.get('container-status') === 'error') throw new Error('Container status error');
1307
- if (Underpost.env.get('await-deploy')) return await awaitDeployMonitor();
1308
+ if (Underpost.env.get('await-deploy')) return await awaitDeployMonitor(isFinal, deltaMs);
1308
1309
  };
1309
1310
 
1310
1311
  /**
@@ -211,7 +211,7 @@ class UnderpostStartUp {
211
211
  shellExec(`node bin env ${replica} ${env}`);
212
212
  const replicaCmd = `npm ${runCmd} ${replica}`;
213
213
  shellExec(replicaCmd, { async: true, callback: makeDeployCallback(replicaCmd) });
214
- await awaitDeployMonitor(true);
214
+ await awaitDeployMonitor();
215
215
  }
216
216
  }
217
217
  shellExec(`node bin env ${deployId} ${env}`);
@@ -221,9 +221,9 @@ class UnderpostStartUp {
221
221
  if (Underpost.env.get('container-status') !== 'error') {
222
222
  if (env === 'production' && Underpost.env.isInsideContainer()) Underpost.secret.globalSecretClean();
223
223
  Underpost.env.set('container-status', `${deployId}-${env}-running-deployment`);
224
+ } else {
225
+ Underpost.env.set('container-status', 'error');
224
226
  }
225
- Underpost.env.set('container-status', 'error');
226
- throw new Error('Deployment process exited unexpectedly');
227
227
  },
228
228
  };
229
229
  }