Skip to content

Scribe v2.6.0 - The Reliability Update

Choose a tag to compare

@ericplane ericplane released this 14 Oct 20:45
· 4 commits to main since this release

Big currencies in purchases, safer saves, and more reliable derived fields, replication and session cleanup.

Behavior Changes

  • Reserved roots, derived fields and server-store names now have stricter write guards. Updating the whole player-data root is refused.
  • OnPlayerInit no longer exposes _Scribe. Finish edits inside the hook; attempts to replace the ledger are discarded and logged.
  • Autosave intervals are capped at 300 seconds. Overdue profiles receive additional save attempts.
  • The wipe guard now detects missing ledger tables and schema versions moving backwards, including on small profiles.
  • Purchase types accept Big amounts. roblox-ts purchase-history amounts now require narrowing between a number and a stored Big pair.
  • Commands normally send the caller’s data and store changes before replying. Snapshot repair can briefly delay replies.

Added

  • Big currency purchases: Data.Purchase supports Scribe.Big, with number, numeric-string or Big amounts. Includes Luau and roblox-ts types. Big’s 15-digit precision still applies, so small debits can round away or up at large balances.
  • CommandRepliesHeld and CommandReplyHoldsExpired metrics for replies waiting on snapshot repair.

Fixed

  • ServerStore no longer runs player-derived computations against store data or vice versa. Existing stray profile keys need a cleanup migration after upgrading old servers.
  • Clients preserve server-computed derived values when inputs are hidden. Record replacement and transaction rollback no longer produce temporary or stale derived values.
  • Writes with replicate = false correctly mark profiles dirty for saving.
  • Departing players no longer stretch remaining profiles’ autosave schedules. Saves during initialization preserve save tracking and wipe-guard checks.
  • Failed handshakes retry correctly, queued store changes survive snapshot failures, and loading clients no longer receive store updates before initialization.
  • Named and wrapped DataStore throttles receive correct health handling instead of falsely escalating each affected key toward an outage.
  • Names such as Count, Get and Max work correctly across purchases, ownership, leaderboards and exchanges.
  • Unload errors no longer interrupt remaining cleanup or leak sessions. Connected players whose sessions ended receive "not-ready" instead of request timeouts.

Changed

  • Updated Lune, StyLua, selene, Rojo and Jest development dependencies.

Documentation

  • Clarified offline retries, version-history failures, Big precision, migration safety and retired-product handling.
  • Updated npm installation guidance, simplified comments and guides, and corrected simulation coverage documentation.

Full Changelog: v2.5.0...v2.6.0