Skip to content

v3.4.0

Choose a tag to compare

@underpostnet underpostnet released this 16 Sep 08:47
· 33 commits to main since this release

Changelog v3.4.0

2026-09-15

github-actions

  • Remove Git LFS from GitLab mirror push pipeline (8be008098)
  • Drop the template Pages auto-enablement and owner build override (c6e9dfd08)
  • Publish the template Pages under the triggering owner (bbdbce2e4)
  • Scope the template package publish to the underpostnet owner (7bea0bdee)
  • Add new owner repository scope based on organization (7d9fdde93)
  • Dispatch the org mirror per pushed repository (cdc80e951)
  • Reject staged node_modules in the template package publish (2040f7717)
  • Mirror releases to the organization with owner-scoped packages (34eaadaf8)

engine-cyberia

  • Add the GitHub org name to the compose environment (4331754f1)

cyberia-docs

  • Document the wasm-driver stream diagnostic flags (9f4e122ef)
  • Reflow the economy and platform architecture docs (f7ce74cd2)

ssr-cyberia

  • Keep the Cyberia 404 page on the requested URI (3449cf79d)

client

  • Add a default NotFound status page for PWA clients (6d646ded8)
  • Mirror the Underpost 50px top and bottom bars in the SSR splash (7cc74f207)

deploy

  • Pin the per-deploy engine source repositories in the sync deploys (e0d01e2c1)
  • Open the merged stream before the error stream in run_quiet (ce2b9eba9)

cli-release

  • Run security audit and clean deploy ID artifacts in release pipeline (4163efe74)

package

  • Move nodemon to base dependencies (7732e00ad)

deploy-cyberia

  • Simplify sync-deploy script using build conf (65b5d8c05)

engine

  • Keep non-literal dynamic imports out of the esbuild graph walk (9b5634567)
  • Walk the runtime import graph with esbuild instead of regexes (067c86467)
  • Generate the template .gitignore from the engine rules (4f12f11e0)
  • Log the copied clipboard length instead of its content (6541792db)

client-core

  • Shell the Underpost menu around the sliding top and bottom bars (a748e88b9)
  • Add updateBarCustomVisibility to home button toggle to restore top scroll (451e5ce62)

cli

  • Redact the Maas token secret from the baremetal log (4f8c55c76)
  • Quote host command arguments in repository writes and pod exec (ce5b59260)
  • Add the Socket.dev supply-chain audit command (8294fb557)

api

  • Gate the full file listing behind the admin guard (32872740a)

cli-secrets

  • Rotate GitHub Actions secrets under user and org targets (3676dcdf5)

New release v:3.3.77 (2026-09-13)

test

  • Add cyberia instance data unit tests (2517a5d21)

client-core

  • Rework the collapsed menu badge, tooltip, and hamburger chrome (0b4bca3f4)

engine

  • Build the deploy sources with coverage from release and CI (b0fd53698)
  • Withdraw the host traces with force inside the container (e09a23a9d)
  • Read the fallback document body through the gateway pod (7d1151db5)

test-unit

  • Skip the catalog tier suites a sliced tree does not ship (d8280cb4e)

deploy

  • Keep the applied manifest echo off the sync output (ba3e915d8)
  • Sweep the legacy per-host Gateway API objects (a3f1890f5)
  • Apply the Lets Encrypt issuer through the Gateway API solver (fc42bec8e)
  • Pin the pod bootstrap source repos in the prototype sync (1328bed08)
  • Remove test variation in pod_bootstrap_cmd repository default (33513cd0a)

cli

  • Mirror deploy id source paths back into their public repos (9debaad02)
  • Compare the gateway status probe answer by status code (b7ce8de9c)

New release v:3.3.76 (2026-09-12)

test-unit

  • Skip cyberia product suites where the tree does not ship them (96d1de9e5)

client-core

  • Add top-left hamburger menu button while the top bar is collapsed (b91f72210)

Cyberia

  • Fix minified atlas sprite sheet workload and validations (b64cbf23a)
  • Reuse authored cells when importing an object layer (117e0e620)
  • Stage direction frames at one uniform size for webp (82b4acac6)
  • Preview items and entity maps by the atlas idle still (c5fb8ae62)
  • Cut an idle-preview still from each atlas render (0402a1243)
  • Wire signed stats and entity levels through boot payloads (56000de95)
  • Add entity levels and progression rules to the game defaults (208530c45)
  • Sign stat modifiers in the shared contract (29df5fc49)
  • Preview both atlas renders in the object-layer viewer (8e8441f6e)
  • Read the audio File fields from the reference registry (0e3ca2903)
  • Take the atlas renders when collapsing duplicate layers (8dcc9ed1a)
  • Purge an atlas and its renders through the store (943e9e4c5)
  • Add the File reference registry module (6b7610101)
  • Navigate editors by instance code and item id (d87a56818)
  • Store two atlas renders and refresh the minified one (73ffe183e)
  • Bind item-pickup and craft audio events (3b0f1069d)
  • Add dropChance to entity-type-default overrides (5014c7e33)
  • Generate pixel-faithful sprite sheet atlases (dfba47760)
  • Resolve object-layer item identity and map previews (2bd4f88d1)
  • Reference entity-type defaults by id and derive skills from content (f669fa94f)
  • Add audio assets and per-map audio configuration (3ec20cb33)
  • Fix mentions of wasm-driver.py (d748d11dc)
  • Cleared coments (602f984a0)

cyberia-client

  • Surface featured worlds on the portal landing (90c528be5)

object-layer-engine

  • Add axis rulers and cursor readout to the pixel canvas (cd4955c6b)
  • Add cut, copy, paste, and scale tools with toolbar UI fixes (e215b3583)

cyberia-docs

  • Document the idle-preview still (4344d73b9)
  • Document the signed stat contract and progression (b7a4c3301)
  • Reflow the audio option table and emphasis (8358fe5e8)
  • Document the ol atlas renders and rebuild options (888c7bcbf)
  • Reflow tables and emphasis across the architecture docs (64c7e3a2d)
  • Document the Data Server URL as a required command-line flag (28c4a51e4)
  • Document Data Server flags and manifest CLI (74a09d397)

cyberia-cli

  • Carry the idle still through ol minify and backups (f41f66f52)
  • Require an explicit source for the ol import commands (b7c759a2e)
  • Implement restore OL backup workflow for a single itemId version instance and related document (293a62db2)
  • Add copy manifests in cyberia-instance repository build workflow (0f40c2b82)
  • Rework sync-src as a bidirectional dry-run mirror (6f05a7dc6)
  • Integrated the cyberia public assets folders module into the cyberia repo's publish workflows (7e5c0e0a7)
  • Integrated the cyberia-audio project module into the cyberia repo publish workflows (07993ee93)

engine

  • Publish per-suite coverage reports as deploy artifacts (f37be7ba6)
  • Resolve instances and maps by their codes (2daca38b8)
  • Lower the default request timeouts to ten seconds (9fbb5c844)
  • Publish products with the engine runtime dependency set (8bd9a12a3)
  • Redact adjacent credentials in service error messages (e8ad83ae6)
  • Fail downloads that stop short of their declared length (2cb52c254)
  • Replace adm-zip with jszip and shared archive helpers (14e4857c4)
  • Allow cross-origin reads on CRUD controllers (7100c5ee4)

test

  • Fix cyberia stat-contract coverall (faf4f4378)
  • Move sprite atlas and object-layer minify tests to the cyberia tier (931d98277)

cli-cyberia

  • Add the stat balancing policies and contract generation to the CLI (d6f477f59)
  • Route drops and imports through the atlas store purge (0a103f6e8)
  • Rework the ol command on the stored atlas renders (73b5c2fa2)
  • Sync the cyberia-instances checkout on publish with cmt --switch-repo (66ffde978)
  • Keep CLI-name arguments through the underpost reroute (e898bf498)
  • Add ol --minify reprocessing scoped to instances (9b19bfc1e)

docs

  • Regenerate the CLI references for the storage and bundle options (4ce71e989)

cli

  • Warn when a container resolves no OCI env overlay (20dcb3897)
  • Rework push-bundle and pull-bundle as one client bundle transport (ead02902b)
  • Rework fs selection around storage manifests (26471a64b)
  • Resolve instance root path from conf in instance-build-manifest (fd08a771b)
  • Deploy Mongo Express through the cluster command (4a9d03fbb)

cli-wireguard

  • Install the landed source before any step runs it (96db68293)

deploy

  • Consolidate deploy scripts on shared constants and bundle sync (dd9d1d368)
  • Stream the deploy log verbatim in a new debug mode (1d41af6c0)
  • Fix git track storage in dd-cyberia sync-deploy (3ed3c297d)

runtime-cyberia-server

  • Upgrade go version v1.25 (2a14dd26a)
  • Pass Data Server endpoints to cyberia-server as flags (c8b4a1b54)

runtime-cyberia-client

  • Add CYBERIA_DATA_SERVER_URL on cyberia-client dockerfiles runtime (99738cc80)

package

  • Update qs version >= 6.16.0 via overrides (b7697d52b)

New release v:3.3.73 (2026-09-01)

test

  • Fix coverall template CI failures by handling stripped product surfaces (fb14840d4)
  • Move rerouted plain reads to the cyberia app tier (944ea302e)
  • Add unit suites for the propagation message resolution (78ac60a09)
  • Fix coverall post-migration secret source resolution (dedb70980)
  • Fix coverall config-scope and cron job previousEnv scope (d3d07e13b)
  • Move rerouted plain reads to the integration tier (b59fd9734)
  • Fake the system node candidates under a temp root (fcd3c8300)
  • Fix cyberia coverall base repository case (d470fb1e4)
  • Fix cyberia CLI assertion in build workflow (43df85d86)
  • Cover the sync source guard (90b965ef4)
  • Add unit suites for the execution profiles and offline build workflow (c86cdaab7)
  • Extended the suites for the node URIs and deploy logging changes (354c9efba)
  • Extended suites for the state, image build and fallback capture changes (355169317)
  • Fix coveralls: hardhat module dependencie scope (2f7dbb8bd)
  • Fix coveralls: event-targets alertmanager webhook receiver (b201c6dd7)
  • Add infra and unit suites and raise the coverage gate (22d11215a)
  • Fix coverage calculation excludes (87ce13fdd)
  • Run the API test suite against an in-process server (8ed062470)
  • Move suites into tiered unit, integration and e2e layouts (c17bf2e37)
  • Replace Mocha and c8 with the Vitest tiered runner (cb648a10b)
  • Update coverall execution order list (9a9ea3db7)
  • Add mocha test runner configuration (ab4e84bb1)

github-actions

  • Drop the engine repo from cyberia-scoped CI jobs (7e3dccd32)
  • Resolve propagation payloads through cmt --propagate-msg (bfecdf73e)
  • Point CI image flows at the package command (fffb75db1)
  • Align CD workflow comments with the renamed deploy logging library (1cfe400e4)
  • Carried the GitHub Actions runner marker through the deploy (b54fffa4f)
  • Add export RUN_QUIET_CI for github runner (fd34bf4ec)
  • Align CD workflow comments with current secrets (756bac9eb)
  • Rename the template test workflow to unit and infra (e1cf38135)
  • Run the tiered Vitest suites in the test pipelines (6ea5288e3)

cli-repository

  • Add --propagate-msg resolution to the cmt command (f3491fec4)
  • Add fastForwardEnginePair method (8db5d2d69)
  • Keep GitHub credentials out of child Git commands (329d8a177)
  • Derived the private conf repo from the engine sync pair (8d8a5b0bc)
  • Derive the private repo name from the shared factory (34b5f17e4)
  • Fix bare clone path removal in repository clone (b8df8ac25)
  • Scope deployment builds to the requested instances (00aeafa9e)
  • Skip backup commit when no changes are pending (022ef2f3d)

package

cli-host

build

  • FIx host environment entrypoint env scope (af8bfbee9)

docs

  • Document configuration scopes and node capability boundaries (4cebdacbe)
  • Document the package command and fleet sync flows (56622044c)
  • Regenerate the CLI references for the execution profile and DB flag changes (604d65eba)
  • Documented the node-based connection URIs across the CLI references (1c0eee0db)
  • Documented the CLI domains, staged image builds and fallback capture (c46dbe4fd)
  • Document the host, app, and state CLI domains (d9bc0bc2a)
  • Update and normalize dynamic status badges across repositories (51be9cf00)
  • Add Hybrid-Edge Cloud Distributed Infrastructure Scope document (80f9040ba)
  • Add the repository contribution and testing conventions (9b861e27f)
  • Document the tiered Vitest runner and the test command (aba90c472)
  • Normalize markdown formatting in observability reference (8c586e9bb)
  • Update nexodev reference docs for observability and cluster scoped users (2c0d6259b)

engine

  • Deliver cron environments from scoped projections and injected keys (b9262c9e8)
  • Gate cluster operations on a node role capability table (a6c71588e)
  • Split the host configuration into scoped durable sources (46bba77b5)
  • Keep the selected NODE_ENV through the OCI env overlay (99c738905)
  • Collapse the start bootstrap into one source pull (4ee41e393)
  • Harden command logging around credentials (3899bcba2)
  • Bundle the test coverage report into deployed artifacts (6b7ebaaed)
  • Serve CronJobs from a labeled engine mirror (687322acb)
  • Pin database PVs down to one claim under /data (97a53cbd6)
  • Prepare container storage for host-mounted volumes (3b5470a3d)
  • Add deploy package manifest generation and the package CLI (3ec0b5265)
  • Add execution profiles and the offline command gate (4e9b80d67)
  • Dropped the stale baked-CLI comments from the runtime Dockerfiles (26a328fbb)
  • Guarded the optional cron conf mirror in the private repo sync (b7e987f18)
  • Awaited the deployment build steps so the status endpoint stays live (6190fda26)
  • Captured the in-memory fallback world as a persisted instance (971ff629a)
  • Baked the runtime CLI into the images from a staged archive (ca46e5f5f)
  • Add OCI runtime env overlay context (8c625e42d)
  • Move container runtime status into a dedicated state store (b331c4ea7)
  • Drop stale API documentation comment headers (77b82ee74)
  • Ignore the .underpost directory in Docker builds (148d07a59)
  • Rebuild the template before each deploy id assembly (39b09cd0f)
  • Guard the template checkout and prune stale sources on build (1034ca412)
  • Move Valkey adapter to database layer (cce8cdb20)
  • Organize server modules by domain (4178f40b4)
  • Build product manifests declaratively (27c228299)
  • Ignore the local environment and test report directories (231eb84f1)
  • Harden server framing and CSP security headers (cb5f7a005)
  • Resolve repository identity in shared server and client modules (1bd92d6d8)
  • Extract systemd probe helpers and redact shell credentials (211ae10cc)
  • Extract deploy route registry into dedicated router module (4bd7bd3a7)
  • Verify nftables egress block chains and policies (4168f699d)
  • Harden database backup pipeline with exec-readiness gates and bounded retries (0ed2917b8)

cli

  • Report the underpost reroute at info level (b9c798b4b)
  • Add a build-only mode to the sync-cluster command (8d3ce9879)
  • Mirror generated deployment manifests into the project tree (225da8bc9)
  • Keep the node sync off the machine it runs from (4fbb9376a)
  • Pin re-entrant commands to executing package location (151ce5a10)
  • Centralize underpost resolution and drop the stale DB pod-ensure flag (3c1b61866)
  • Streamed the state domain as a live pod table with runtime telemetry (a6a25a24d)
  • Added a net-tables diagnostic run workflow (191febeef)
  • Applied the per-deployment OCI env overlay before manifest builds (b39768b99)
  • Resolved connection URIs by node name through the edge targets (9bb6285ff)
  • Carried the sub-configuration through the client build (951eb9740)
  • Reworked the state command into a runtime status domain (0a6c55a99)
  • Folded the env and config commands into the host configuration store (1acb5babf)
  • Report caught CLI errors to stderr instead of stdout (205fe6fea)
  • Add host, app, and state domains migrating the config commands (1ef280b3f)
  • Remove test CLI module and prune client assets (36750f961)

scripts

  • Restrict node setup to RHEL hosts with a system Node (e8f4a13b2)
  • Targeted instance flags in the test deploy monitor (5dcbeb0d8)
  • Remove the stale local underpost CLI link script (c3c1d2b46)
  • Add graceful node shutdown and auto-restore script (3a5958c00)
  • Update event monitor script with wireguard and envoy logs (14c83ec68)

cli-secrets

  • Rotate the GitHub token and seed cron env secrets (441b81a3f)
  • Rework the secret CLI around the shared domain actions (afa84003d)
  • Publish underpost-config only through the secret layer (588af5f06)
  • Add SOPS setup and status onboarding commands (ceb717e2b)

event

  • Report why a dispatcher Node binary is rejected (b615b9a80)
  • Report unreadable cluster as unknown in deployed event state (e184e6c2e)

cli-wireguard

  • Reconcile per-node-role services on fleet sync (bc03d54c8)
  • Add restart dispatcher on wireguard sync and update ingress recovery wait in ENGINE_SYNC_STEPS scripts steps (74936a404)
  • Refactor edge state into deployment topology (0b457088d)
  • Report peer public keys and unregistered identities in status (10ef0d140)

deploy

  • Add per-deploy package scripts and shared host preparation (076388a72)
  • FIx deploy npm install order (665c37f16)
  • FIx treat missing target-colour deployment as normal blue/green state (aa3097210)
  • Add the optional per-deployment env secret overlay to the dev manifests (a830b0213)
  • Streamed the runtime state and stamped the bootstrap container status (89a45ad30)
  • Renamed the deploy logging library to the GitHub Actions variant (10bce1a4a)
  • All in invocations now use one flag per -continued line (cb3adbec0)
  • Converted the deploy scripts to the shared deploy-step log contract (de350d199)
  • Add CD Node Source Pull pipeline logic (7f20ea0d5)
  • Fix cyberia deployment entry point script with cli surface scope (ed16da715)
  • Consolidate host prep and update pod start commands (104ac9c38)
  • Add a dd-core remote sync and deploy helper script (736fe2ec9)
  • Resolve the deployment environment from --env and --dev flags (1e04b3e00)
  • Rename run secret command to secret --from-cron-env in deploy scripts (101c77526)

cyberia-cli

  • Add related instance deploy paths in cyberia catalog (dec9e1175)

client-core

  • Fix Resolve Swagger UI 404 and incorrect API target in specs (aa6ba8606)

client

  • Fix typo SSRComponent (e92751afe)
  • Served the fullcalendar global build bundle (164cb0706)
  • Rename FullScreen.js to ViewModeController.js (35e250bd3)
  • Drop dead code from the wallet, file explorer and nexodev shell (9b4ec76dc)
  • Refresh the service worker and its cache policy (e0a270b35)
  • Rework the calendar, docs and translation surfaces (511afcc5e)

cli-cyberia

  • Resolve underpost invocations through the shared CLI resolver (04989793e)

lampp

  • Implement shared provisioning contract repositories (1730cced3)

monitoring

  • Refactor binary availability metrics to state timeline and stat panels (ae1f39223)
  • Document node exporter provisioning and role relabeling in observability docs (de8a72b56)
  • Provision node exporter on hubs and relabel node roles in dashboards (7454ec408)
  • Add Node Metrics dashboard, Node Exporter, and 5 cluster threshold alerts (40c3d6e71)

conf

  • Restore dev API config generation and CORS origin mapping (afaebcf16)

server-start

  • Hand off the build through a linked underpost CLI (42ae75c08)

cli-client

  • Extract the client build into a dedicated CLI module (86c38d8a2)

cli-cron

  • Fix vultr cronjob mounts collector host path (c674e1114)

release

  • Add bump version pattern target (52c30bf82)

engine-cyberia

  • Align the cyberia module with the tiered test runner (4ad1a9ea5)
  • Update sharp dependencie to sharp v0.35.3 (44b5df725)

server-conf

  • Default missing conf files and gate dev subconfigs to development (612d52577)

cli-run

  • Show probe count in get-traffic index column (efd2adc25)
  • Add index column # as the first column of the get-traffic host table in run.js (3540071e4)

cli-new

  • Add clusterDeployFactory method to generate base cluster deploy folder engine-private/deploy (8f2a070bf)

pwa-microservices-template

  • Add default template assets including favicons, splash screens, and PWA manifest (f7ab699f2)

cluster

  • Converge observability stack and provision secrets from cron env (944fb9882)

cli-dns

  • Add ingress port block and unblock workflows (28ee09f93)

cli-ssh

  • Make SSH users cluster scoped with shared registry (ba35a2c4d)

monitor

  • Add cluster observability stack and operational event dispatcher (4fd2097d0)

cron

  • Fix resolved deployId list related job defualt in cron main callback method (4d88f472a)

New release v:3.3.0 (2026-08-18)

github-actions

  • Add workflow_dispatch trigger event handling in .github/workflows/ghpkg.ci.yml (e21320cf7)
  • Reorder coverall test list (eb20336b2)
  • Replace default npm coverall test with scripts/coverall-test.sh (3471f3009)
  • Refactor move CD workflow commands into deployment scripts with run_quiet wrapper (222a18d71)
  • Update .github/workflows/engine-test.cd.yml (94e42e58e)
  • Add import-default-items steps to cyberia CD (350444f9f)
  • Update.github/workflows/engine-cyberia.cd.yml (53e9da171)
  • Update base node in engine-core CD pipeline (fa039f257)

cli-cyberia

  • Include deploy strategies in generated projects (66bc733eb)
  • Refactor make data.item.id is now a unique index for every case (1391efce3)
  • Add WebSocket load test runner command (eebec67ed)

engine

  • Expand server module JSDoc annotations (213a55191)
  • Move writeEnv helper into environment module (9c57e3629)
  • Fix SELinux host paths mounts logic and definition (6cf8dda11)
  • Extract environment and cron deploy helpers into dedicated modules (6ba3fa4c3)
  • Enforce SELinux across cluster, SSH, and provisioning (9d57a359d)

cli-wireguard

  • Add SSH forwarding via VPS edge (54de1e6e5)
  • Extract forward proxy and systemd helpers into server modules (97be08d10)
  • Implement HTTP/CONNECT forward proxy for WireGuard (a95163df2)
  • Implement idempotent in Restart, reconnect, and reset pipeline (65710c3bd)
  • Implement Edge Hub WireGuard and HAProxy CLI module (2e293b875)

catalog-cyberia

  • Add coverall cyberia trigger script (c8e59eed0)

scripts

release

  • Fix missing file bump version scopes (4aa983a5d)

deploy

  • Mark deploy scripts as executable (b18151bfa)

hardhat

  • Update hardhat npm module version to sync current project scope v3.2.90 (8fc717b99)
  • Update undici override dependency to v6.28.0 (fb2d2aa3b)

dependabot

cli-client

  • Add only ssr build workload flag option and logic (92026a66e)

cli-cron

  • Fix cron CLI setup flag and single job execution (84eab73d9)

cli-repository

  • Add getDefaultBranch resolve in switchRemote method (04bc8743b)

cli-ssh

  • Add initializeDefaultSshConfig method (84f5f8698)

cli-vultr

  • Add Vultr Bandwidth Monitor cron job CLI Module (22fb9249a)

cli-dns

  • Add blokc/unblock ingress/egress workflow handling (980fab35a)

underpost-ingress

  • Enable response compression in ingress and gateway (7763f9da2)

test

  • Fix missing pngjs import in object-layer test pipeline (20c1f24d8)
  • Add WebSocket load test for cyberia-server (e3ff27772)

engine-cyberia

  • Remove eiri from entity default inventory (e8f8d03c7)
  • Add fallback world default items staging and hot reload (e646c430d)
  • Add playerBaseSpeed field to instance config defaults (7cdbd23d2)
  • Add WebSocket connection limit env to cyberia-server (c6f834c7d)

client-cyberia

  • Add Fallback World Engine editor view (cf61dfe8e)
  • Implement IPFS cid filters in ObjectLayerEngineViewer component (93eb69928)

docs

  • Document moveAck reconciliation and move coalescing in Cyberia replication (24b14ca4e)

New release v:3.2.90 (2026-08-11)

cli-run

  • Add version parameter in cluster runner cmd lines (bd909bc04)
  • Handle multi-recipient keys in sops runners (92ecdc151)
  • Trim ipfs expose to core host ports (dc473d4fa)
  • Add sops setup and status runners (a29fd3947)
  • Fix sub path handling probes in get-traffic runner (b65d0fe4e)
  • Add restore mongo statefulset runner (e9e1b224b)
  • In get-traffic runner retains every configured host row matching the input (a16542254)
  • Rework get-traffic runner with CURRENT and OPPOSITE color state deployment (34e4a7234)
  • Rework expose runner to port list options (b6fe9cfe4)
  • Add status and expose runners (0d383e7d9)
  • Drop redundant rollout restart after node-move patch (b5399b134)
  • Load project instance env builder by convention (8b226d073)
  • Route instances through stable traffic Service (65c674e05)
  • Refactor stop runner logic introduce stopPlanFactory method (aa972f120)
  • Remove direct ssh remote runners (79ecee892)
  • Integrate underpost gateway into run (ce02c3282)
  • Add Gateway API HTTPRoute rules for instance runners (c85c48e43)

test-secrets

  • Fix rotate and apply manifest test workflow (5f0be40c5)

hardhat

engine-cyberia

  • Implement storageSlots capability workload in fallback world (c6bceef0b)
  • Implement storageSlots capability workload in fallback world (e5f4d1c9a)
  • Add assembler craft recipes to cyberia action system (c50724523)
  • Add vendor shop catalog to cyberia action system (748533a0c)
  • Preserve variant base path through ingress (3daa9a181)
  • Normalize instance topology and dispatch env builders (cd0309ae4)
  • Refactor gateway static to underpost gateway (9f35a007d)
  • Fix minor besu genesis generator update (6680d5a16)
  • Fix sum stat response in fall back world static instance map endpoint (84ea1e4ca)
  • Add seeded random source for deterministic fallback world generation (747411872)

dependencies

github-actions

  • Set dd-cyberia env before build manifest (3ec1c8e46)
  • Update build and deployment manifests (b8aad9359)
  • Wait for underpost-gateway rollout (57fc7c22f)
  • Update engine-test CD deploy workflow (712cc9e17)
  • Update build and deployment manifests (149653332)
  • Update engine-cyberia docker-compose build and deployment manifests (8dcb10ab2)
  • Update engine-cyberia docker-compose build and deployment manifests (1cf4f753f)
  • Update build and deployment manifests (ba4f4a173)
  • Update build and deployment manifests (9874b895d)
  • Update build and deployment manifests (c3a4ec9f1)
  • Update build and deployment manifests (a8bdbf050)
  • Update engine-cyberia CD add prebuild manifest workflow (a1f4954f7)
  • Fix 404 page location in cyber ua-client docker image workflow (b52bdf89e)
  • Disable publish branch and sha docker images versions (12a37a468)

test

  • Cover store adoption and recipient registration (e570d6472)
  • Cover sops encrypted secret store (7c41910bd)
  • Cover expose and curl status chain (c19471ae2)
  • Add deployment node placement tests (390e0aa7d)
  • Fix test/cluster-instances.test.js (481740db8)
  • Remove buildCyberiaMmoInstanceEnv tests in test/cluster-instances.test.js (46afd8aed)

docs

  • Document joining a store created on another host (25a85b6ce)
  • Document shop transaction flow in action system (7091a506a)
  • Document sops age secret management (6b538a2f6)
  • Document expose port list examples (f9ba18083)
  • Document run status and expose runners (bf9a83b42)
  • Update node-move mechanics for template patch rollout (fb8d36f89)

cli-secret

  • Add store adoption pre-flight and recipient registration (2d634dbbb)
  • Add managed secrets and repair creation rules (4661114a0)
  • Add sops age encrypted secret store (8de77fdd6)

server-conf

  • Derive remote ports from host ports in expose plan (45bec1ad9)
  • Add replica count and secure password factories (83320d061)
  • Add expose port list and plan factories (928ad8350)
  • Add curl status chain factory (dfeef123b)
  • Support idempotent hosts blocks in etcHostFactory (aa45f40ac)

ipfs

  • Prefer sops store for cluster credentials (62f402649)

engine

  • Generate per-replica mongo volumes with static storage class (703b8bbac)

cli-cluster

  • Prefer sops store in cluster secret seeding (7be50059a)
  • Hot-reload shared ingress host table (d6328a5e0)
  • Add shared underpost ingress front for dual ingress stacks (041debe99)
  • Update Gateway API versions and integrate underpost gateway (12eefb86e)
  • Add Gateway API control plane and CRI socket resolution (97565eea7)

underpost-gateway

  • Fix path replicas handling in deploy pwa workfloads (702f48e4b)
  • Validate and rollback gateway config on reload failure (4f7ce8795)

cli-deploy

  • Add resolveSchedulableNode method (c62ee86d0)
  • Fix merged Gateway listener isolation (a34f0b936)
  • Remove expose and status options (e55227eb0)
  • Add node placement to deployment manifest (9487ad169)
  • Add stable traffic Service for blue/green routing (838d1ec0c)
  • Fall back to other ingress stack for traffic colour (3115cc84b)
  • Fix deploy status workflow logic (35e1af024)
  • Integrate underpost gateway into deploy (e95a46d64)
  • Add gateway.yaml and httproute.yaml to build manifest mirror (afb7bcf9d)
  • Add Gateway API deploy manifests and gateway static utility (073231ca5)

scripts

  • Use run expose in test monitor (b19c49318)
  • Add firewall UDP range for QUIC/HTTP3 to nat-iptables (3bdacec35)

cli

  • Update run and deploy option flags (0dfb9ce6c)

underpost-ingress

  • Add multi node work load handling (3dccb3de3)

cli-cyberia

  • Add testPaths in dev-env runner (b087f4afd)
  • Install Docker host aliases in compose workflows (a9fb75070)

docker-compose

  • Implement project-agnostic docker-compose workflow (e0d07689c)
  • Update subpath handling logic (69fb72fcb)

bin-deploy

  • Fix add --ignore-not-found in 'pw-conf' runner (2f14d2ab6)

cyberia-docs

  • Update docs for gateway and CLI changes (c064f82ad)
  • Document edge tier architecture and CLI updates (72760e40e)

cyberia-cli

  • Refactor SSH port wait to shared utility (cdf4c4f92)
  • Add status page build and instance project resolution (b1b0a840e)
  • Fix SSR html views locations path (1bf2843c8)
  • Remove redundant logs (3adba85fe)

cli-image

  • Implement crictlCommandFactory in image build (69d24d668)

db

  • Fix MongoDB replica set orphan recovery and improve bootstrap (71b5f1a3e)

cyberia-client

  • Fix instance selection play URL for default instance code (efec4a34e)

CYBERIA Network Object Layer Engine

CYBERIA

Network Object Layers

Stackable Rendering Layers as a Unified Tokenized Reality

rockylinux npm nodedotjs mongodb

Node.js CI Test Coverage Status Socket Badge

Version Downloads jsDelivr License

Cyberia is an MMORPG extension built on the Underpost Platform. The platform owns the
toolchain, deployment surface, PWA delivery, and base infrastructure. Cyberia adds a three-service MMO
runtime: engine-cyberia, cyberia-server, and cyberia-client.

engine-cyberia is the sidecar-backed data layer: a Node.js sidecar that owns content,
validation, persistence, the gRPC/REST data services, and asset metadata. It backs the authoritative
Go server and the WASM client with data — it does not run the simulation or the presentation.


Ecosystem at a glance

                         ┌───────────────────────────────────────────────┐
                         │              UNDERPOST PLATFORM               │
                         │  toolchain · deploy · PWA build · static      │
                         │  delivery · cluster/image/db · monitoring     │
                         │                                               │
                         │   underpost CLI  ──▶  builds & deploys all    │
                         └───────────────────────────────────────────────┘
                                            │  hosts / delivers
                                            ▼
   ╔═══════════════════════════════ CYBERIA MMO ═══════════════════════════════════╗
   ║                                                                               ║
   ║   ┌──────────────────┐   gRPC    ┌──────────────────┐   WebSocket             ║
   ║   │  engine-cyberia  │ ────────▶ │  cyberia-server  │ ───────────┐            ║
   ║   │     (Node.js)    │           │       (Go)       │            │            ║
   ║   │                  │           │                  │            ▼            ║
   ║   │ content          │           │ authoritative    │    ┌──────────────────┐ ║
   ║   │ validation       │           │ simulation       │    │  cyberia-client  │ ║
   ║   │ persistence      │           │ world tick       │    │    (C / WASM)    │ ║
   ║   │ gRPC/REST data   │           │ AOI replication  │    │                  │ ║
   ║   │ asset metadata   │           │                  │    │ rendering        │ ║
   ║   └──────────────────┘           └──────────────────┘    │ input            │ ║
   ║            │                                             │ prediction       │ ║
   ║            └──────────────── REST (content/assets) ─────▶│ presentation     │ ║
   ║                                                          └──────────────────┘ ║
   ╚═══════════════════════════════════════════════════════════════════════════════╝

   One source of truth per concern:
     content & world config ── engine-cyberia
     real-time world state  ── cyberia-server
     presentation & input   ── cyberia-client

1. Toolchain and base infrastructure

Underpost Platform is the operational backbone and the source of truth for deploy IDs, runtime
selection, host/path layout, generated client assets, and environment resolution.

Area What it owns
Toolchain underpost CLI, build, deploy, release, metadata, secrets, environment selection
Infrastructure bare metal, LXD, Kubernetes, K3s, kubeadm, images, SSH, runners
Data operations MongoDB, MariaDB where needed, backups, cron, monitoring
Delivery static build, SSR views, PWA packaging, service worker generation, host/path routing

underpost is the shared control surface for everything infrastructural. Cyberia-specific work belongs
in the cyberia CLI, never in parallel platform commands. When a concern already exists in underpost,
reuse it instead of forking a Cyberia variant.


2. PWA workflow

Every deployed client ships as a static application shell with PWA support. The pipeline has exactly two
inputs:

  • the deploy ssr configuration in conf.dd-*.js (or conf.ssr.json)
  • the service worker source in src/client/sw/core.sw.js

Everything else — index.html pages, sw.js, the precache list — is generated during the client
build. Treat them as outputs only; never hand-edit them.

Runtime service-worker behavior:

Request Strategy
static assets stale-while-revalidate
API GET network-first + short cache
API mutations network-only + background replay
navigation network-first + fallback shells

Fallback selection: offline network → offline fallback view; origin/server failure → maintenance
fallback view. Only fallback-marked views are guaranteed precached.


3. Cyberia MMO extension

Responsibility split

Service Owns Must not own
engine-cyberia content, validation, persistence, gRPC/REST data services, asset metadata authoritative simulation, render policy
cyberia-server authoritative simulation, world tick, gameplay mutation, AOI replication content authority, presentation metadata
cyberia-client rendering, input, prediction, interpolation, presentation authoritative world state, gameplay authority

Two boundaries are non-negotiable:

  • Do not move authoritative logic into the client.
  • Do not move content-authority logic into the Go runtime.

Data flow

engine-cyberia ──gRPC──▶ cyberia-server ──WebSocket──▶ cyberia-client
engine-cyberia ──REST──────────────────────────────▶ cyberia-client

engine-cyberia as the sidecar-backed data layer

engine-cyberia is the only Cyberia service that owns content-backed data and asset metadata.

  • Boot-time world configuration flows from engine-cyberia to cyberia-server over gRPC GetFullInstance.
  • Client-facing assets, object layers, dialogues, and presentation hints flow from engine-cyberia to cyberia-client over REST.
  • Simulation never migrates into the sidecar, and presentation policy never migrates out of the client.

Runtime / health model

Three supervised processes run in parallel, each with its own monitor and reconnect loop. Gameplay is live only when all three are healthy at once.

        ┌──────────────────────────────────────────────────────────────┐
        │                    SUPERVISION (parallel)                    │
        │                                                              │
        │   engine-cyberia        cyberia-server        cyberia-client │
        │   ┌────────────┐        ┌────────────┐        ┌────────────┐ │
        │   │  monitor   │        │  monitor   │        │  monitor   │ │
        │   │ +reconnect │        │ +reconnect │        │ +reconnect │ │
        │   └─────┬──────┘        └─────┬──────┘        └─────┬──────┘ │
        │         │                     │                     │        │
        │         └──────────┬──────────┴──────────┬──────────┘        │
        │                    ▼                     ▼                   │
        │            all three up & connected?                         │
        └────────────────────────────┬─────────────────────────────────┘
                                      │
                ┌─────────────────────┼─────────────────────┐
                ▼                     ▼                     ▼
          ┌───────────┐        ┌───────────┐         ┌───────────┐
          │  HEALTHY  │        │ DEGRADED  │         │  STANDBY  │
          │ all 3 up  │        │ ≥1 service│         │ gameplay  │
          │ gameplay  │        │ reconnect-│         │ paused    │
          │ live      │        │ ing / down│         │ until all │
          │           │        │           │         │ 3 healthy │
          └───────────┘        └───────────┘         └───────────┘
State Meaning
healthy all three Cyberia services are up and connected
degraded at least one service is reconnecting or unavailable
standby gameplay is paused because the full three-service set is not healthy

User commands

Use underpost for platform, infrastructure, build, and deploy. Use cyberia for MMO content and
extension workflows. Both share the same helpers — never duplicate config, env, or path logic.

Platform (underpost)

# Bootstrap a new app (local app serves on http://localhost:4001)
underpost new app-name

# Build the client bundle / static + PWA output
underpost client
npm run build            # node bin client

# Deploy and operate
underpost deploy <deploy-id>
underpost monitor

Cyberia (cyberia) — bin/cyberia.js

Group Command Purpose
ol cyberia ol [item-id] ObjectLayer import, procedural generation, atlas/sprite
instance cyberia instance [instance-code] export / import / drop a Cyberia instance and its data
client-hints cyberia client-hints [instance-code] per-instance presentation hints (palette, camera, icons)
chain cyberia chain <sub> Hyperledger Besu + ERC-1155 ObjectLayerToken lifecycle
run-workflow cyberia run-workflow <name> named maintenance/build scripts from scripts/

Common examples:

# Object layer content
cyberia ol hatchet,sword --import                 # import specific items
cyberia ol --import-types skin,floors             # batch import by type (or: all)
cyberia ol floor-desert --generate --seed fx-42   # procedural generation
cyberia ol hatchet --to-atlas-sprite-sheet        # build atlas sprite sheet
cyberia ol --drop --client-public                 # drop data + static asset folders

# Instance data
cyberia instance FOREST --export ./backup
cyberia instance FOREST --import ./backup
cyberia instance FOREST --drop

# Presentation hints
cyberia client-hints cyberia-main --seed-defaults

# Chain / token lifecycle
cyberia chain deploy --chain-id 777771
cyberia chain status
cyberia chain register / mint / transfer / burn / pause / unpause

# Named workflows
cyberia run-workflow import-default-items
cyberia run-workflow seed-skills
cyberia run-workflow seed-dialogues
cyberia run-workflow build-manifest
cyberia run-workflow build-server-dashboard

Run the MMO services

# engine-cyberia (Node.js data/content services)
npm start                                          # node src/server

# cyberia-server (Go authoritative simulation)
cd cyberia-server && go run main.go                # dev
cd cyberia-server && go build -o cyberia-server . && ./cyberia-server

# cyberia-client (C / WASM presentation)
cd cyberia-client && make -f Web.mk clean && make -f Web.mk web
cd cyberia-client && make -f Web.mk serve-development     # serves on :8082

Operational guardrails

  • Prefer one source of truth for config, deploy IDs, runtime selection, startup behavior, and generated assets.
  • Reuse existing helpers and conventions instead of creating parallel implementations.
  • Do not duplicate parsing, env resolution, or path normalization logic across modules.
  • Treat generated artifacts (sw.js, static pages, atlases, README, manifests) as outputs only.
  • Host-level changes must be idempotent, reversible, and explicit; validate before mutating; keep
    orchestration scripts safe to rerun.
  • engine-private/ is a private external dependency. Reference it only as private input; never assume
    its contents exist locally.