Skip to content

v4.0.0

Latest

Choose a tag to compare

@underpostnet underpostnet released this 30 Oct 21:08

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)
  • Keep the instance map payload tests free of the content artifact (d56a37be4)
  • Wire universes, social and registries through the runtime (4b3f14f94)
  • Compose the idle preview of a player identity (9bc189c89)
  • Serve the map registry and world previews (a9cb1786c)
  • Move friendships into the social graph (000a47854)
  • Add universe profiles and the server registry (22e0a67ee)
  • Guard the live changes of a content release (1e1c8480b)
  • Mark the instance map POIs on the client and drop the dynamic endpoint (f895dcd07)
  • Write the game origins into the instance env (b060c06b6)
  • Add player profiles, game sessions, tickets and friendships (e3c6f17c1)
  • Define the friend limits and chat emoji in the shared defaults (9f57564d1)
  • Generate the economy bounds and container rules into the stat contract (e2c66f1bc)
  • Define the container capacity and party limits in the shared defaults (085fb3e47)
  • Bound the economy rules and drop the portal and crafting fees (975e5d46c)
  • Heal a held consumable with the zero-waste skill and drop the buff factors (3bd5a5313)
  • Add loot, consumables and destructible obstacles to the entity-type defaults (621e34868)
  • Set the respawn time on each map entity (5ab5f9cda)

client-cyberia

  • Remove the population label of the instance selection (6f286df88)
  • Settle the portal session before a launch resumes (0738e75d3)
  • Launch a world from the portal with the launch bridge (6a74093d2)

cli-db

  • Back up the databases as sealed archives in the object store (1f8817430)
  • Dump and restore the partition databases of a host (779487eda)

object-layer

  • Bound every IPFS request and check each answer (1e4c07034)
  • Bound and verify the IPFS gateway reads of an import (023163de6)
  • Rebuild a definition's materializations from its pinned render (62c4b45ad)
  • Serve the full definition projection and the authority host to an import (d9daa57a5)
  • Keep the render of a definition a player owns (05fe0cf29)

client-core

  • Keep the editor crud state per editor (9ecd93295)

hardhat

package

deploy

  • Fetch origin through the token before the dependabot merge (8b026c63a)
  • Resolve the deploy node from the control node of deploy/nodes (7b8aa16b7)
  • Require the engine to serve its content release before the server rollout (67b40e8cf)
  • Name the development gRPC Service without the traffic colour (bc13b0fb8)
  • Name the gRPC Service without the traffic colour (5bc2a18ad)
  • Run the player commands in release jobs (05d685197)
  • Set the pod count of a Cyberia deploy with REPLICAS (9eb33ac6f)

docs

  • Describe map populations, the content artifact and the Studio painting (98f6ef2ca)
  • Describe the economy, the player session and the quest navigation (2b1a59636)
  • Describe universes, social, registries and identity previews (3725b5ee2)
  • Describe player accounts, persistence and the launch bridge (894e7b3cc)
  • Describe the session player identity, containers and social systems (ae56cd1f8)
  • Add the Google sign-in configuration guide (e95ba09e4)
  • Describe the joystick and the action cooldown of the Cyberia client (21439662e)

ci

  • Install mongod in the coverage job (8ec430eee)
  • Install git before the container jobs check out the repository (863999e5b)

client-build

  • Link each client to the origins of the custom instances (4f637674c)

cli-cyberia

  • Add the player maintenance commands (b83675ecb)

grpc

  • Serve the player service beside the data service (a51a4de5f)

auth

  • Store refresh tokens hashed, cap sessions and expire guests by id (3602777ae)

metrics

  • Share the Prometheus metric helpers (804b36b0c)

engine

  • Register the Google sign-in sources in the test projects (92673794f)

google-auth

user

  • Admit accounts without a password and answer a duplicate email or username with 409 (2c1503d18)

logger

  • Redact the code and state of an OAuth redirect (b2cd29b3c)

cli-run

  • Read --replicas as a positive pod count (a8ec5617a)

Cyberia

  • Event Replay - Delete snapshotRate, the server sends the state every tick (d7f9df213)
  • Folders - Point the comments at the server content package (f11a8635c)
  • Folders - Write the server stat contract to game/content/ (c3140ddcd)
  • Folders - Write the client stat contract header to src/content/ (3551885bf)

New release v:3.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 and summons (abf4514e9)
  • Show the saga of every item and map in the studio (e02ca69cb)
  • Rework the cyberia editors into the studio suite (607e74599)
  • Serve the authoring context of every map and item (cbc449589)
  • Serve content from the external content artifact (b323efdef)

document

  • Draw a new stable slug when a write loses the slug race (8ff24cf93)

docs

  • Update ecosystem landscape doc (5f4063db3)
  • Refresh the separate client and API servers guide (2ea783d0a)
  • Regenerate the CLI references (b95fb0844)
  • Fix the Socket badge URL in the readme (35d107392)
  • Land each domain on its white paper (a14de7c04)
  • Navigate each domain from one documentation view (32e31670b)

engine-cyberia

  • Install the dev dependencies of cyberia-content before the pack (01e1d20e1)

cli

  • Fetch the current branch with the GitHub token when counting unpushed commits (f3f78e9c8)
  • Run dev-cluster with the selected cluster type (3e4465fa0)
  • Render a Docker Compose stack from the stack a project declares (750341cc0)
  • Release a container image by the digest of an exact revision (8d53b3ccb)
  • Add the source-release command for source channels, mirrors and release jobs (87cd3ab8b)
  • Project the keys of one configuration scope into its own Secret (5a1e60999)
  • Promote the colour that --traffic names (9c2b6e790)
  • Remove the instance builds the topology no longer declares (2a5755313)
  • Add the footprint, batch timeout and diagnose options (35cf45ca3)

client-objectlayer

  • Show the first frame when the editor opens (1f46a0e06)

engine

  • Resolve the underpost CLI with a PATH lookup (3eebd5aa1)
  • Replace nodemon with a shared source watcher (307942884)
  • Defer a transient systemd unit behind a timer (e735cdcf6)
  • Build the template with every public tree a client reads (603eca5b7)
  • Run the suites a private test source publishes with it (ab992504b)
  • Fetch only the new history when publishing the private test source (5a94027df)
  • Keep the staged CLI package out of the base template (f9b125011)
  • Carry the Object Layer protocol in the base template (846fd1c53)
  • Extract the filter model and match no row on an empty set (c2a1f26d4)

mailer

  • Verify SMTP certificates unless the transport sets tls (c9d324c68)

cli-db

  • Quote every value in the MariaDB and MongoDB pod commands (a38f1d21a)

logger

  • Redact credentials inside quoted sh -c commands (17a70c3c8)

cli-baremetal

  • Accept bootstrap status events only for single path segments (907f2b8c7)

file

  • Refuse a missing or malformed file id and drop the id-less routes (4c98303e9)

package

  • Drop nodemon, add httpxy and pin shelljs (a3264de52)
  • Update proxy-addr and sharp transitive dependencia overrides (7d941f0be)
  • Keep the product checkouts out of the npm package (0811e0229)
  • Remove sharp override dependencie (8c9b615aa)

cluster

  • Render each host once in the owned hosts block (cbd460e26)
  • Pin the control-plane address at bring-up (ba4f70846)
  • Keep the Kind node image across a cluster reset (e6aa46942)

express

  • Keep the public routes the client host can render (9cd26c9b2)
  • Declare the dynamic public routes of a host in its conf (4e322acd4)

server-proxy

  • Serve the dev proxy through httpxy (be9229a9c)
  • Issue machine-local certificates from their own root (26f0ab5f6)

scripts

  • Pin the mkcert download to a verified build (35ec21fb1)
  • Show the event dispatcher state in the event monitor (41b8f2c2e)

runtime

  • Change the working directory with process.chdir (e3a32a5e5)

cli-dns

  • Pin the default interface IPv4 binding as a static profile (e08cb6d9b)

event

  • Warn of missing probe targets only for rules that read probes (a5722b38e)
  • Strip terminal colour codes from remediation output (e86a4b34e)
  • Bind the dispatcher service to the shared webhook token (07c418a2b)
  • Rebuild, restart and verify WireGuard in every tunnel repair (1ef916e29)

monitoring

  • Prune the series of targets the configuration no longer renders (6b0eb3dd5)
  • Let the Blackbox Exporter ping through an unprivileged socket (e11646633)
  • Silence dependent alerts while the control-plane tunnel is down (fb08c9015)
  • Verify that the dispatcher accepts the Alertmanager token (9e06709ab)

cli-wireguard

  • Leave an equivalent topology file unchanged (4ad566ae8)
  • Refuse a setup on a host with another node identity (44684d33a)

cli-cron

  • Load the scoped host configuration into the deploy environment (6b947b8e6)

deploy

  • Remove the private-to-public mirror stage (6daf072a5)
  • Pull the latest image on the public channel (0270915a7)
  • Ensure pull base image on cluster (e21e80ea6)
  • Skip the clone relocation when the pod clones the engine (5094bd482)
  • Deploy the runtimes only when SKIP_CONTENT_RELEASE is set (00ca8bbdf)
  • Release the Cyberia repositories from a source channel (bfd74ea94)
  • Run the lampp deploy from its own source repository (36810e827)

cyberia-catalog

  • Update sharp version to v0.35.5 (6138327c1)

object-layer

  • Store definitions by CID on IPFS and let the publisher purge them (3ee268823)
  • Leave the shared renders of a content release to its prune (9eb8883fe)
  • Lay out the object layer view in two columns (cbf6d2b6e)
  • Rebuild stored definitions in line with the current profile (cdda6e46b)
  • Share the object layer view button as a table column (72b329b8d)
  • Let the host name the list an object layer view leads back to (f4f1edddf)
  • Size the object layer view titles independently of the host theme (faa5e611a)
  • Lay out the object layer view in two columns on wide screens (18c465afb)
  • Keep the viewer button border on hover (df320dd2b)
  • Scale the idle preview to its full size with no margin (e26b7cb56)
  • Open each object layer view at its own path (db89f7de6)
  • Answer 404 for the metadata of an unknown definition (3ff34008b)
  • Describe each object layer page by its definition in the served shell (7583e0e21)
  • Declare the CID form in ObjectLayerProtocol (24b1d95fb)
  • Open each object layer in a viewer modal of its own (6a19fc4b0)
  • Paint the render editor source in the studio (98468a422)
  • Store the render editor source as indexed pixel frames (9275f11ab)

test-runner

  • Report each failed test, batch log and gate failure at the end of a run (98286a0ff)

client-core

  • Use a file-question icon for the documentation entry (32052ac0a)
  • Skip the file render when the requesting view is gone (d91254795)
  • Name the build manifest where the repository identity travels (bfa5d3082)
  • Replace the render payload with the Underpost Build Manifest (d2029e81d)
  • Declare the retro font faces once for the shells (55598778e)
  • Share the document bar and tabs across the studio editors (e793d8fa3)
  • Add the object layer public route (bd3ac31b4)
  • Give the route to the view raised last when a view closes (ba1769436)
  • Share the submenu landing across the shells (5b567a5fb)
  • Share undo, drafts and layout across the studio editors (b8566b16c)

client-conf

  • Ship every component the default client imports (3bf9b0f75)

client-build

  • Root the icon links and icon manifests at the base path of a sub-path build (bf0ad6819)

cyberia-cli

  • Add the release commands for the product repositories and their lock (c4fcc6eb8)
  • Sync stored object layers through the profile (eb2c3cb56)
  • Run both cleanup steps of import-content --clean (6048e72a5)
  • Skip stored item ids when importing content (89c69c0fe)
  • Remove semantic OL generator (3de15b401)

db

  • Serve one content database to every reader (203ccad6f)
  • Retry a database connection that fails while the runtime starts (181b0a5a3)
  • Close the Valkey connection of a short-lived process (88b6caad9)
  • Keep replica data on restore unless reset is explicit (1e1bde64d)
  • Start mongod only after its member name resolves (325f2f01b)

api

  • Invalidate the client hints when an instance conf changes (ed0efd5bc)

server

  • Fail a definition removal when ItemLedger does not answer (9dc6cc635)
  • Name the deploy host that owns an API in one helper (9ae7c062d)
  • Extract the shell metadata shared by public route pages (51ceafe1a)

client-itemledger

  • Open the object layer of each registry row (e682d9f4b)
  • Present object layer views at their own path (b0696cead)

cyberia-docker-compose

  • Update cyberia docker compose stack with new instance codes (dc5c56ec1)

deploy-cyberia

  • Publish the deployment images under the images tree (55bbd1f2c)
  • Deploy pinned content and drop public asset sync (c7fb96e0d)

cyberia-docs

  • Document the content artifact and retire the procedural saga (0ec4ee838)

New release v:3.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)
  • Point the menu GitHub entry at the organization (1bc113d61)
  • Add the admin-only user-management menu entry (24a0dff43)
  • Paint the SSR splash in the loaded app theme (43db105a2)

client-objectlayer

  • Scaffold the objectlayer PWA client app (907771c1e)

client-itemledger

  • Add the item-ledger registry view and documentation submenu (9afc51b6c)

client-cryptokoyn

  • Add the documentation submenu and wallet view styling (3989ce1c1)

client-cyberia

  • Inject the Cyberia profile into the object-layer views and wire documentation icons (9c644e4ee)

client-nexodev

  • Remove the retired wallet entry from the nexodev shell (cf3d8e587)

client-underpost

  • Reuse the shared markdown styles and drop the inline splash background toggle (2e71d6a01)

client-core

  • Show the account role and add wallet and panel translations (a0d923595)
  • Build the profile image URL with getApiBaseUrl (6f40710d4)
  • Style panels through theme-scoped classes (bbfb18b72)
  • Paint the SSR splash in the theme the app loads (214c009e3)
  • Add an in-app documentation viewer and submenu plumbing (c8cc852f6)
  • Resolve release and organization URLs from the repository identity (e07d69414)
  • Surface service failures instead of empty results (14940fa11)
  • Validate grid pages against the route that owns them (5e923dceb)
  • Animate modal maximize and confirm transitions (307a6afd4)
  • Sanitize user markup before it renders (d95880be3)
  • Title public routes for the resource they present (89d269809)
  • Refactor the dynamic column width rules (e88611d61)
  • Navigate public routes by canonical path (82dce41e8)

mailer

  • Link email templates through the versioned API path (d06d009fc)

object-layer

  • Drop the direction table now owned by ObjectLayerProtocol (3d50d3e8a)
  • Rework Object Layer to a CID-keyed canonical identity (26361dde8)

engine-cyberia

  • Publish every host port and build without the cyberia-server clone (02e8ec978)

grpc

  • Serve the CyberiaDataService schema from the engine (95011517a)

item-ledger

  • Add the ItemLedger domain projecting ObjectLayerToken events (f68bc117e)

ipfs

  • Move the Cyberia IPFS client into the generic ipfs domain (90facfbe9)

wallet

  • Add SIWE wallet sign-in, replacing the WebCrypto identity (9c1d76a33)

db

  • Add content-view partitions to serve versioned Cyberia content (9751cd1c6)

cli

  • Fall back to local files when --tracked selects nothing to upload (83d2dfbc3)
  • Consolidate inotify limit tuning into one sysctl file (2c3db4ead)
  • Apply Kubernetes manifests server-side (fa6e5a5a6)
  • Wrap shell-interpolated values in shellArgumentFactory (e53c064c9)
  • Rename conf.js to underpost.config.js (3b9e845cd)
  • Add the stable-slug migration to the db command (e74d71946)

New release v:3.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)