Skip to content

Scribe v2.4.0 - The Insight Update

Choose a tag to compare

@ericplane ericplane released this 17 Sep 21:18
· 28 commits to main since this release

Daily and weekly leaderboards, Discord telemetry, safer offline tools, and less work while your game is idle.

Behavior changes

  • Studio debug hooks now require StudioHook = true. Sessions without the plugin no longer collect its debug history.
  • The reserved _Scribe root gained leaderboard tracking, which changes the schema hash. Deploy your server and client together, even if you don't use periodic boards.
  • Data.Erase removes leaderboard entries before deleting the profile and saves its progress so interrupted erases can resume. Only the affected player's joins are blocked while erasing, with EraseJoinTimeout and ErasingMessage controlling the response.
  • The paid-random refusals in PurchaseReason and GiftReason now use readable sentences. PromptPurchase keeps its existing ProductState codes.

Added

  • Daily and weekly leaderboards, with Gain and Peak scoring, configurable reset times and previous-period reads. Scope = "Server" ranks players on the current server without DataStore requests.
  • Data.GetLeaderboardRefreshIn and Data.GetLeaderboardResetIn for countdowns in your leaderboard UI.
  • ScribeTelemetry, an optional Discord telemetry add-on for health alerts, errors, performance reports and summaries. Route reports to separate webhook destinations and preview every embed without causing real failures. Telemetry and UI adapters are available as separate .rbxm release downloads.
  • Data.UpdateOffline(userId, fn, { Validate = true }) checks changes against your template before saving and returns findings when refused. Raw updates remain the default.
  • Data.Batch(fn) on the client coalesces local writes so container listeners fire once per batch.
  • More performance measurements: client frame timings, per-command timings and errors, outgoing bytes by frame kind, and sample counts and age alongside percentiles.
  • Named constants for more public string types, including Scribe.Status, Scribe.LogLevel and Scribe.Visibility.

Fixed

  • Exchange discard and manual settlement could lose pending value during storage failures or crashes.
  • NoSave allowed offline writes and gift messages, and a refused reset could skip migrations or grant starter rewards again.
  • Slow ownership checks could clear a newly purchased gamepass from the cache.
  • Join-time replication could duplicate or lose changes, and RequestOnce retries could return a mutated reply.
  • Signal threads retained their first payload, and log truncation could split a Unicode character and prevent telemetry delivery.

Changed

  • Idle workers park until needed, and replication visits players with pending work. Autosaves and session-lock maintenance are unchanged.
  • Accessors accept narrower input types, including nested fields, instead of rejecting valid values as incompatible.
  • UI adapters moved to addons/ui/. The Fusion adapter now disconnects its listener when its scope is cleaned up.

Documentation

  • Added CONTRIBUTING.md with conventions for public string names, distinguishing states, stable codes and readable reasons.
  • Clarified which purchase and gift refusals can be shown to players and which indicate an incorrect call.
  • Corrected UI adapter examples, the GetStatus() example and the explanation of Shared replication costs.

Full Changelog: v2.3.0...v2.4.0