Repository navigation
Releases: underpostnet/engine-ghpkg-cyberia
Release list
v4.0.0
Changelog v4.0.0
2026-10-30
test
- Take the site provisioning client from the default conf (21686f367)
- Colour the coverage reports by an 80 to 90 band and cover more sources (c20557cfb)
- Provide metadata every file in ssr body components (619b1fcbf)
- Skip the instance map payload tests without a content artifact (05304a66f)
- Point the C client contract at its data directory (00b15b4ac)
- Measure only the sources that coverage can report (e07d30948)
- Register the player, root state and session sources (66ba832db)
- Skip the Google sign-in suites where a sliced tree lacks the API (6d65eebdb)
server
- Count a zombie process and a zombie group as ended in the host lock (337fb4d56)
- Build the API document from the mounted routers at runtime (ea4560fad)
- Run a release stage as a durable task that a timeout never loses (72ea502c3)
- Retry a domain read by one policy and mark an ambiguous write (746ee144d)
- Keep a cache read from joining a load that began before an invalidation (e14a8fbe8)
- Version the cache tokens and the client hints (12401bd9b)
- Name a consumed domain by its owner API instead of a fixed list (e4b7ba49e)
- Log an expected controller error as one warning line (61cd05ddd)
docs-graphify
- Update graphify code graph report (03e0c57fe)
cli
- Retire bin/deploy.js into site, cluster, release and cmt commands (adbb1af6d)
- Build and check the code graph of the engine and of each release repository (34a181fad)
- Limit the Socket audit to the free plan (18a44cf62)
- Read the commit identity and the ACME email from the environment (7e29814de)
- Drop the Git backup repositories from the cron jobs (0219a9fed)
- Delete a remote branch and fetch origin through the GitHub token (e799420f7)
- Count the unpushed commits of a branch the origin does not have (776e5bba2)
- Give the test runner the shell environment (8f6264039)
client
- Build the client once into an immutable bundle under a resource governor (9cd8b233c)
- Scroll the confirm modal body and name its action (8acfb55d6)
- Replace the object layer palette panel with the modal palette (dfa04a528)
- Act on a dropdown only while its instance owns the id (ad9314d65)
- Give the AG Grid viewport a finite width under a hidden parent (41c13a832)
- Page a list by cursor (63ca2a2db)
- Clone a document with its form values and answer a duplicate map code with 409 (f1e821e58)
- Fix development reload combined mode watches client and API changes (34b66bf45)
- Dispose the editor and list pager state on leave (bf41af039)
- Hold the session and theme state on the root element (c1f0b418a)
- Add the Google sign-in button to the log-in and sign-up forms (0a21edc23)
- Read the lists one page at a time with a shared pager (dedb1ec47)
- Share the grid query and the first-page rule of a filter change (0ec499436)
cyberia
- Scope the Google sign-in to the Cyberia deploy (6de929621)
- Read and write the render PNG with pngjs instead of jimp (181d5a148)
- Capture content baselines and resume a content release through durable publication tasks (a73c4c1c4)
- Save the population economy and the entity drafts in one Entity Studio save (758dc3226)
- Name the pending conf and the content database in a universe wallet defect (33edfd3f3)
- Add the working graph and the typed drafts to map populations (0fb090680)
- Keep the global content in the release database and the content artifact (3f48cf745)
- Import an Object Layer definition from its document alone (e32a76a31)
- Define the definition document format of the Cyberia profile (6083c5c9b)
- Add the population results lifecycle to the Procedural Engine (7db06a51b)
- Import object layer definitions into the item catalog (da13031a8)
- Add player moderation, restriction and batch operations to the Player Manager (42790e418)
- Add map populations and the sprite and floor generators to the Procedural Engine (094588275)
- Compose the map preview and the portal topology from map bounds (6e9839975)
- Rewrite the placed entities by the entity-type defaults they resolve to (1089cb1ed)
- Export the live content into a release (14ee42deb)
- Wire the economy, markets and player commits through the runtime (d91aa1c72)
- Add player session health, audit and the player manager (9993dc013)
- Add economy profiles, item policies, markets and world drops (b6d7a9b4c)
- Add the entry spawn and the action services to the instance map (ecdec9824)
- Sync the runtime indexes before the rollout and drop the legacy repairs (2744ab2e7)
- Compose the instance map from joined map bounds ([fcef54270](https://github.com/underpostnet/...
v3.5.0
Changelog v3.5.0
2026-10-11
test
- Drop the forward proxy test that fetches without an API key (35ad8dada)
- Cover the consumed API declarations (2ae09356c)
- Cover the deploy scaffolding commands (6e62aa354)
- Cover the runtime status contract (1797e97b1)
- Cover the event notification provider checks and contract file (6ce2ffa00)
- Cover the forward proxy refusals of an https fetch (17ca803e5)
- Check the listed components of every client in the default conf (fd1804c7d)
- Count a zombie process as dead in the runner suites (efa9d7b91)
- Skip the checks of dropped sources in a sliced template tree (8301600f8)
- Count a zombie orphan as dead in the batch process test (c351c5cab)
- Isolate the unconfigured-domain read from the local deploy environment (2687d5ae4)
- Skip the engine-tree checks where a sliced repository lacks their subject (4e985d710)
- Keep the content and private application assets out of Git (22b25f6b6)
- Run each batch in a fresh process and merge its reports (d12ebcc5e)
- Plan a test run into ordered batches under a footprint (9a09fe398)
cli-test
- Lower the host memory reserve of the safe and balanced footprints (2ca730ecb)
- Run each test batch inside a host memory budget (c734f62a5)
client
- Serve the PWA icons from the public root of each client (6ea25d95c)
- Move the app shells onto the navigation drawer (03be1f871)
- Add the shell layout and navigation drawer core (368d8cfac)
- Keep the markdown edit box in a neutral font (75dbb8baa)
- Share the page query and pager sync of the paged grids (37985fccd)
- Show a no-render placeholder in the admin lists (447f84fa6)
cli-run
- Stop template-deploy outside the engine package or on detected secrets (d1ae0262f)
- Forward the detected MongoDB primary pod in dev-cluster (675df8c8b)
client-cyberia
- Update stat ui-icons (17c89237e)
- Swap two map entities by index (d2eb72621)
- Update the registry icon (3bb901fd6)
- Keep the loaded map on any table page, reorder entities and follow the session role (49d2c5f2c)
- Add binding, preview column and URL paging to the item catalog (e4b11e186)
- Show one foundation context panel in the editors and the viewer (48e297510)
- Mount the document bar and tabs on the studio editors (2de36362b)
- Remove the admin button from the cyberia portal menu (26bf80d2d)
- Edit the map audio in the studio map editor (5b2cf6a4c)
- Add a global color replace to the object layer engine (740638993)
- Mutate imported frames in the object layer studio (57e06325f)
- Implement StudioCyberia main menu component (bff040c3c)
- Rename object-layer to objectlayer-studio path component directory (f7ef740ef)
- Open the editors from a cyberia-studio submenu (26b2134a4)
- Add underpost and cyberia client PWA assets (16b2d3c44)
ci
- Install a MongoDB server for the Cyberia coverage run (7460bc340)
- Pass BUILD_MODE to the cyberia-client image as a build argument (83e506cf6)
- Install git before the test workflows check out the repository (5bb854c5c)
- Trust the checkout in git before the test workflows run (0a0b794ae)
cyberia
- Cover the stored frames and the palette remap of the Procedural API (7ad586f7f)
- List unbound items and rebuild the world when a binding changes (c7a9e0d4b)
- Import frames exactly as stored unless Mutate is on (f30284498)
- Show the Procedural Engine view to every role and notify on denied changes (26bc1951b)
- Bind items to definitions through the catalog and split the project by capability (2142711a3)
- Add the Procedural Engine with templates and palettes from content (0c10b3dd1)
- Add the saga sync view and check its items against the catalog (1ee6dc6fd)
- Build a content release from the content revision its deployment locks (546f88e26)
- Build the local Docker stack images from the workspace sources (585088c5d)
- Declare the release content of dd-cyberia in one module (93d2b4fd9)
- Keep the other definitions of a label when a backup restores one (c24f62cf8)
- Reload the game servers that serve a written database (d78cb9a5c)
- Refresh the map preview a write touches (8c30558d5)
- Allow the object layer viewer on the itemledger client (0682a1980)
- Route an audio binding stated without settings by its event (dff963a77)
- Seed the default audio of one map through the map audio API (413662aea)
- Add the overhead-occlusion foreground behavior (b9bc2b017)
- Resolve sagas through instance defaults a...
v3.4.5
Changelog v3.4.5
2026-09-25
cli-cyberia
- Replace complete security workflow to only secrets ci workflow run in e2e-build command (7a62232fe)
test
- Skip tree-completeness checks in sliced template trees (2530e48f1)
- Gate platform suites that load Cyberia modules on the product context (7d4af40bd)
- Run product test projects only in their product context (bea8961f7)
- Move the remaining tests under their domain and level directories (b700fdfe9)
- Pin every app shell to its docs submenu and domain overview (d89c18ca8)
- Select tests by domain and level with change-impact selection (27d174656)
- Share the binary lookup for suite requirements (11684b26c)
package
- Keep dev dependencies when installing the deploy catalog pins (421793b3b)
- Remove the socketsecurity prepare hook (7df7bc558)
- Lock ethers and canonicalize, drop fast-json-stable-stringify (cd1961037)
hardhat
- Pin undici through the @actions/http-client override (3ff1c2364)
- Key ObjectLayerToken by content hash instead of item id (13d7c0784)
docs
- Fix migrated rename underpost conf module, replace conf.dd to underpost.config.dd (59c278f48)
- Add object-layer, item-ledger, cryptokoyn, and underpost domain documentation (da7236cab)
- Move nexodev documentation under the domain tree (c49f1674e)
- Move Cyberia documentation under the domain tree (a1fbf3e93)
- Build documentation navigation from the authored docs tree (e17f7ba4e)
release
- Fix underpost config clean artifacts (5fa88b0b7)
github-actions
- Select CI tests through the domain and level projects (bf77aa647)
- Reference the renamed underpost.config.js in CI (485798e22)
- Update repository owner gitlab CI (086bcb4d9)
- Add already published guard before every npm publish (fad2fd108)
- Mirror scope trimmed to ghpkg-only (81fdefde6)
api
- Name the versioned API path in the boot data comments (40f60a523)
- Name the versioned API path in Cyberia comments and preview URLs (9d5964607)
- Build API paths from the versioned contract (1dc99703f)
- Cache instance, map, and client-hints reads through CacheService (c0fc8ac55)
- Enforce owner-or-admin on instance and map writes (f6bf1924f)
- Restore default write guards on audio and global map registry routes (e101112ce)
- Add the versioned API path contract (2c4155e9d)
- Move the stable slug with the title on edits (243e738b9)
- Resolve public profiles by username (71ecc0aa7)
- Assign every created document a public stable slug (73730892b)
deploy
- Regenerate the deployment manifests for the objectlayer host and the v1 API (964cab45a)
- Sync the cyberia product checkouts beside the engine (792e51da2)
server
- Bound valkey memory with LRU eviction (752d54d56)
- Derive host ports and development origins from one port map (cd3288f66)
- Import fs-extra consistently for filesystem access (2a45c3c8d)
- Add a Valkey-backed cache-aside service (505db2695)
- Add cross-domain read/write infrastructure and service-key auth (bd543fbe0)
deploy-cyberia
- Build, validate, promote, and prune content releases in the sync deploy (dcd150c58)
- Backfill stable slugs in the sync deploy (45da440c2)
cyberia-cli
- Wire the item catalog, ledger, content releases, and CID identity through the Cyberia CLI (b5f3ca981)
engine
- Wire the API contract, domain consumption, and docs publishing through the runtime and client build (0116ed294)
- Render entry metadata into the served shell (397bd5944)
- Serve the PWA shell for dynamic public routes (722aecab0)
cyberia
- Resolve instance-map item types through the item catalog (2ae233b6e)
- Serve boot content through the item catalog, ledger bindings, and content view (995586acb)
- Declare which domain owns each host and API of the deploy (e7b94c92b)
- Add versioned content releases with promote and rollback (805d6d123)
- Read the server key from the shared guard module (94e299e07)
- Guard quest progress writes with the server key (701717376)
- Stop offering a draining server from the registry (db1c72d6d)
- Guard the server registry with the shared server key (c10f7629c)
- Add a shared server-key guard for engine to game-server routes (ed00ed6a7)
- Rework atlas-sprite-sheet around CID-addressed renders (64f33601e)
- Bind Cyberia item labels to Object Layer definitions (7caee1a9e)
client
- Normalize the cryptokoyn and itemledger PWA icon sets and metadata (486dfeeac)
- Enable the top and bottom bar layout in the default and dogmadual shells ([e9de7101f](underpostnet/engine@e9de710...
v3.4.0
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...
v3.3.77
Changelog v3.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)
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
ssrconfiguration inconf.dd-*.js(orconf.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 |
| ---------------- | ---------------------------------------------------------------...
v3.3.76
Changelog v3.3.76
2026-09-13
test-unit
- Skip cyberia product suites where the tree does not ship them (93c4f0906)
client-core
- Add top-left hamburger menu button while the top bar is collapsed (43b00dcd1)
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
v3.3.73
Changelog v3.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
- Remove clean script (809f225d7)
cli-host
- Fix traceback env (d1fd667d5)
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](ht...
v3.3.0
Changelog v3.3.0
2026-08-18
github-actions
- Add workflow_dispatch trigger event handling in .github/workflows/ghpkg.ci.yml (e21320cf)
- Reorder coverall test list (eb20336b)
- Replace default npm coverall test with scripts/coverall-test.sh (3471f300)
- Refactor move CD workflow commands into deployment scripts with run_quiet wrapper (222a18d7)
- Update .github/workflows/engine-test.cd.yml (94e42e58)
- Add import-default-items steps to cyberia CD (350444f9)
- Update.github/workflows/engine-cyberia.cd.yml (53e9da17)
- Update base node in engine-core CD pipeline (fa039f25)
cli-cyberia
- Include deploy strategies in generated projects (66bc733e)
- Refactor make data.item.id is now a unique index for every case (1391efce)
- Add WebSocket load test runner command (eebec67e)
engine
- Expand server module JSDoc annotations (213a5519)
- Move writeEnv helper into environment module (9c57e362)
- Fix SELinux host paths mounts logic and definition (6cf8dda1)
- Extract environment and cron deploy helpers into dedicated modules (6ba3fa4c)
- Enforce SELinux across cluster, SSH, and provisioning (9d57a359)
cli-wireguard
- Add SSH forwarding via VPS edge (54de1e6e)
- Extract forward proxy and systemd helpers into server modules (97be08d1)
- Implement HTTP/CONNECT forward proxy for WireGuard (a95163df)
- Implement idempotent in Restart, reconnect, and reset pipeline (65710c3b)
- Implement Edge Hub WireGuard and HAProxy CLI module (2e293b87)
catalog-cyberia
- Add coverall cyberia trigger script (c8e59eed)
scripts
- Mark scripts as executable (8f04cbc7)
release
- Fix missing file bump version scopes (4aa983a5)
deploy
- Mark deploy scripts as executable (b18151bf)
hardhat
- Update hardhat npm module version to sync current project scope v3.2.90 (8fc717b9)
- Update undici override dependency to v6.28.0 (fb2d2aa3)
dependabot
- Disable typescript autoupdate (8bd76183)
cli-client
- Add only ssr build workload flag option and logic (92026a66)
cli-cron
- Fix cron CLI setup flag and single job execution (84eab73d)
cli-repository
- Add getDefaultBranch resolve in switchRemote method (04bc8743)
cli-ssh
- Add initializeDefaultSshConfig method (84f5f869)
cli-vultr
- Add Vultr Bandwidth Monitor cron job CLI Module (22fb9249)
cli-dns
- Add blokc/unblock ingress/egress workflow handling (980fab35)
underpost-ingress
- Enable response compression in ingress and gateway (7763f9da)
test
- Fix missing pngjs import in object-layer test pipeline (20c1f24d)
- Add WebSocket load test for cyberia-server (e3ff2777)
engine-cyberia
- Remove eiri from entity default inventory (e8f8d03c)
- Add fallback world default items staging and hot reload (e646c430)
- Add playerBaseSpeed field to instance config defaults (7cdbd23d)
- Add WebSocket connection limit env to cyberia-server (c6f834c7)
client-cyberia
- Add Fallback World Engine editor view (cf61dfe8)
- Implement IPFS cid filters in ObjectLayerEngineViewer component (93eb6992)
docs
- Document moveAck reconciliation and move coalescing in Cyberia replication (24b14ca4)
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 │ ║
║ └──────────...
v3.2.90
Changelog v3.2.90
2026-08-11
cli-run
- Add version parameter in cluster runner cmd lines (bd909bc0)
- Handle multi-recipient keys in sops runners (92ecdc15)
- Trim ipfs expose to core host ports (dc473d4f)
- Add sops setup and status runners (a29fd394)
- Fix sub path handling probes in get-traffic runner (b65d0fe4)
- Add restore mongo statefulset runner (e9e1b224)
- In get-traffic runner retains every configured host row matching the input (a1654225)
- Rework get-traffic runner with CURRENT and OPPOSITE color state deployment (34e4a723)
- Rework expose runner to port list options (b6fe9cfe)
- Add status and expose runners (0d383e7d)
- Drop redundant rollout restart after node-move patch (b5399b13)
- Load project instance env builder by convention (8b226d07)
- Route instances through stable traffic Service (65c674e0)
- Refactor stop runner logic introduce stopPlanFactory method (aa972f12)
- Remove direct ssh remote runners (79ecee89)
- Integrate underpost gateway into run (ce02c328)
- Add Gateway API HTTPRoute rules for instance runners (c85c48e4)
test-secrets
- Fix rotate and apply manifest test workflow (5f0be40c)
hardhat
- Update transitive dependencies (59f18f31)
engine-cyberia
- Implement storageSlots capability workload in fallback world (c6bceef0)
- Implement storageSlots capability workload in fallback world (e5f4d1c9)
- Add assembler craft recipes to cyberia action system (c5072452)
- Add vendor shop catalog to cyberia action system (748533a0)
- Preserve variant base path through ingress (3daa9a18)
- Normalize instance topology and dispatch env builders (cd0309ae)
- Refactor gateway static to underpost gateway (9f35a007)
- Fix minor besu genesis generator update (6680d5a1)
- Fix sum stat response in fall back world static instance map endpoint (84ea1e4c)
- Add seeded random source for deterministic fallback world generation (74741187)
dependencies
- Update transitive dependencies (9c12f8fd)
github-actions
- Set dd-cyberia env before build manifest (3ec1c8e4)
- Update build and deployment manifests (b8aad935)
- Wait for underpost-gateway rollout (57fc7c22)
- Update engine-test CD deploy workflow (712cc9e1)
- Update build and deployment manifests (14965333)
- Update engine-cyberia docker-compose build and deployment manifests (8dcb10ab)
- Update engine-cyberia docker-compose build and deployment manifests (1cf4f753)
- Update build and deployment manifests (ba4f4a17)
- Update build and deployment manifests (9874b895)
- Update build and deployment manifests (c3a4ec9f)
- Update build and deployment manifests (a8bdbf05)
- Update engine-cyberia CD add prebuild manifest workflow (a1f4954f)
- Fix 404 page location in cyber ua-client docker image workflow (b52bdf89)
- Disable publish branch and sha docker images versions (12a37a46)
test
- Cover store adoption and recipient registration (e570d647)
- Cover sops encrypted secret store (7c41910b)
- Cover expose and curl status chain (c19471ae)
- Add deployment node placement tests (390e0aa7)
- Fix test/cluster-instances.test.js (481740db)
- Remove buildCyberiaMmoInstanceEnv tests in test/cluster-instances.test.js (46afd8ae)
docs
- Document joining a store created on another host (25a85b6c)
- Document shop transaction flow in action system (7091a506)
- Document sops age secret management (6b538a2f)
- Document expose port list examples (f9ba1808)
- Document run status and expose runners (bf9a83b4)
- Update node-move mechanics for template patch rollout (fb8d36f8)
cli-secret
- Add store adoption pre-flight and recipient registration (2d634dbb)
- Add managed secrets and repair creation rules (4661114a)
- Add sops age encrypted secret store (8de77fdd)
server-conf
- Derive remote ports from host ports in expose plan (45bec1ad)
- Add replica count and secure password factories (83320d06)
- Add expose port list and plan factories (928ad835)
- Add curl status chain factory (dfeef123)
- Support idempotent hosts blocks in etcHostFactory (aa45f40a)
ipfs
- Prefer sops store for cluster credentials ([62f40264](underpostnet/engine@62f...
v3.2.80
Changelog v3.2.80
2026-07-23
engine-cyberia
- Implement dynamically build cyberia instance package.json full reference (4127836f)
- Fix missing add cyberia dependency in engine-cyberia docker image (b3d6c4de)
- Fix dynamic build instance codes logic (cb380b33)
- Refactor INSTANCE_CODES Dynamic build inputs access docker image workflows (bf1cb6c7)
- Add map preview PNG rendering and preview route in instance map API (82150a18)
- Add multi-instance code support in Dockerfiles with saga copying (6b902ba8)
- Add multi-instance topology and per-variant compose routing (4336c024)
- Add hot reload endpoint and map preview route (3c765891)
- Add map preview caching for fallback world nodes (55052ec5)
- Fix demo quests with actions quest related (c41feae1)
- Add REST boot fallback endpoints for gRPC CyberiaDataService (57b69883)
- Add portalSubtype field and refactor instance map with presence POI system (fa551a11)
- Add map preview for Instance Map node backgrounds (849095cf)
- Add instance map REST endpoints (static graph + dynamic provider activity) (dc83f8dc)
- Update cyberia base lore and introduce Fragmentation concept and refactor weakness narrative of nova faction (823d69cc)
- Add more demo quests to fallback world (d0de569b)
- Increase portalHoldTimeMs default value (5d802812)
cli-release
- Add cyberia docker-compose bump version file match (f3eeefee)
cyberia-client
- Add instance selection view and portal navigation (9f8ebc5d)
- Improve cyberia portal landing (57dbaed2)
- Add Instance sub-path dashboard prefix handle (958f6592)
- Add hot reload UI in instance editor (ee90a201)
- Replace stat icons with PNG images in object layer engine (7f03972e)
- Add center action button to menu modal (f70ba2d3)
- Update default fontFamily in SharedDefaultsCyberia module (868dffa9)
cyberia-api
- Add fallback TEST world to instance selection list (b93f3058)
github-actions
- Fix cyberia github package publish workflow (fc1bac41)
- Fix cyberia-client 404 page build (a55bcb79)
- Update engine-cyberia.cd.yml clean assets directory (ce365cf7)
- Update engine-cyberia CD workflow add pull storage assets (0ee2404f)
- Fix npm install command in engine-cyberia CD workflow (7974ab42)
- Add image-pull-policy Always in cyberia-server and cyberia-client CD pipeline (a134c5be)
- Set default variant of underpost engine docker image in release workflow (f3e47bdc)
cli-cyberia
- Add multi-instance sub-path support to hot reload trigger (f0e0fda7)
- Add build-cyberia-404 workflow and 404 page (51d35594)
- Add Dynamically resolve instance codes in build-manifest runner (97997df1)
- Refactor multi-instance conf structure and respective workflows (0e607e4c)
- Add --reset option to dev-env runner (77f17140)
- Add revert option and multi-instance publish support with default-items asset copy (0913117a)
- Add UNDERPOST_DEPLOY_NODE env for deterministic deploy node resolution (41bb08ff)
- Add in import-default-items runner import FOREST dev instance (d3bf87a1)
client-cyberia
- Redesign server metrics dashboard with pixel-art assets and theme toggle (56378309)
- Update location href of enter button in landing cyberia portal (1c9efd55)
- Improve cyberia portal landing with new hero section (024d76b6)
cli-run
- Fix instance promote handle multi variant paths (c23e7502)
- Add flag 'branch' in default runner options (4e7a63df)
cli-repository
- Add init local repo in cmt cli (0255eb05)
cli-deploy
- Fix multi-instance blue/green deployment build manifests (99a9b526)
cli-fs
- Remove redundant logs (23761d60)
hardhat
- Update supply-chain dependency: overrides adm-zip to version 0.6.0 (fe5d9899)
cyberia-docs
- Document OFF-CHAIN economy players + bots, any victim loot (dbc4efa3)
- Document path-based multi-instance deployments (b028657f)
- Document REST boot fallback and gRPC transport refactor (a4b8006c)
- Update docs to reflect presence POI architecture and instance map changes (140568b8)
- Document instance map API, data flow and client overlay integration (a8f7c8ea)
- Update Off chain economy concepts from transfer to loot drop race (e93cafc8)
client
- Fix slide menu title style in dark/light themes (22c1224d)
- FIx center action button to menu modal (94d6940e)
cyberia-saga
- Add persistInstance helper for saga instance persistence (3f124c8b)
cyberia-cli
- Migrate IPFS registry to mfsPath unique key (e15cfda5)
- Add clean option in import default i...