Posted August 13, 2026 by devgb
Version 1.42.1 is a dedicated stability release built from the full deep-code audit of v1.42.0.
Rather than adding new content, this update focuses on save integrity, browser storage, multi-tab safety, offline progression, Arcade persistence and itch.io package hardening.
All 19 findings from the audit have been addressed: 3 Critical, 5 High, 5 Medium and 6 Light.
The primary save payload is now treated as authoritative when the save itself is structurally valid, preventing stale or damaged sidecar metadata from incorrectly rejecting a newer valid save.
Under IndexedDB, the main save and its metadata are now written together in one atomic read/write transaction. The game only considers the write durable after the transaction has successfully completed.
Injected transaction-failure testing confirmed that an interrupted write leaves the previous save and metadata together instead of producing a torn save pair.
Writer ownership between multiple browser tabs has been hardened.
IndexedDB writer-lease acquisition now uses a single transactional read → check → write operation, preventing two persistent tabs from simultaneously believing that both own the save.
In the dedicated concurrency test, exactly one of two competing writers acquired the lease.
Several browser-storage race conditions have also been eliminated:
The three Crystalis Arcade games now merge standalone and Knights of Crystalis progress instead of blindly replacing one save with the other.
This applies to:
Higher progression is preserved, persistent discoveries are merged, and best valid stage times are retained.
Stronghold offline progression can no longer reuse the same excess offline backlog repeatedly.
A 24-hour-away test with an 8-hour Stronghold capacity correctly produced 16 cycles on the first processing pass and 0 additional cycles on an immediate repeated tick.
The global trusted-clock ceiling has also been raised from one hour to 24 hours so individual systems can correctly enforce their own offline caps.
Mobile resume handling now reconciles monotonic timing with bounded wall-clock hidden duration, improving behavior on browsers that suspend timers while the app is backgrounded.
Imported card and inventory identifiers are now validated against a bounded safe identifier format before normalization and rendering.
Critical HTML data-attribute contexts receive additional escaping protection.
Save imports also wait for the asynchronous persistence queue before reporting durable success.
The public build is now generated from an explicit runtime allowlist.
Only required game files and runtime assets are included. Historical QA reports, design notes, audit artifacts, fixture runners and .kocsave.json files are excluded from the public package.
Release metadata, PatchHerald, News defaults, boot text and cache metadata have also been synchronized to v1.42.1.