What's new
What changed in each release of NexusForge Persistence, and the compatibility promises that make upgrading boring.
0.2.0 — cloud, Editor tooling and verification#
Cloud, without lock-in. ICloudTransport is an opaque put/get/list/delete seam. A provider is supplied by the game, so the package ships no vendor SDK, no account and no credential. Adapter required
Conflict resolution by generation, never by clock. Two devices whose clocks disagree still agree about which save is newer, and the losing copy is written to its own *_conflict_<rev> slot before anything is replaced — so an automatic decision is always reversible. Available
Editor tooling. A guided Setup page with three presets, eleven sections that explain the consequence of each choice, a Validation page with two depths, a Platform page that renders the support matrix with its evidence, and generated code matched to your configuration. Available
Verification, including a defect it found. Fuzz and corruption tests, culture-independence tests, measured performance, and a probe that runs the whole pipeline inside a built IL2CPP player. That probe earned its keep: it found that timestamps were being written using the current culture, so a save written on a device using dd-MM-yyyy could be reinterpreted elsewhere. Fixed, and now covered by tests that fail without the fix. Verified
Documentation, samples and packaging. Twenty-one documents under Documentation~/, four importable samples, third-party notices and a package that passes its own export checks.
0.1.0 — the framework#
Initial framework: options and diagnostics, the result model, the document model and serializer abstraction, local storage with atomic writes and recovery, the save container and slots, versioning and migration, the operation coordinator, persistent object identity, autosave and checkpoints, and security (integrity, authentication, encryption, compression). Available
Compatibility promises#
Upgrading is designed to be boring, because saves are the contract:
| Surface | Promise |
|---|---|
| Save file format | An older file is always readable: the container records its format version and the reader accepts every version it has ever written. |
| Configuration | Removing or renaming a setting is a breaking change and is called out here. New settings arrive with defaults that match the previous behaviour. |
| Public API | Additive by default. A breaking change is a major version bump, naming the affected types. |
| Settings asset | A newer package opens an older asset; an older package leaves a newer asset alone rather than guessing at a layout it does not understand. |
| Schema versions | Yours, not ours. The framework version recorded in a save never forces a migration. |
The full history, including the phases the framework was built in, is on the changelog page.
Next#
- Installation — how to move to this version.
- Migration — migrating your save format, which is the part a package cannot do for you.
- Changelog — the complete record.
Something wrong on this page? Every page here describes behaviour that is checked in the repository. If a page and the package disagree, the package wins.
Report a documentation problem · Frequently asked questions · Troubleshooting