First of all thanks for the kind words
In regards to the studio plugin it does work on the “Server & Client” option for testing. Sadly playtesting with “Test” or “Test here” is currently broken due to the latest roblox studio update. I’m hoping to reach out to the roblox team on Monday about it. There’s a new studio plugin update as well to make you aware of this.
1 Like
Scribe v2.2.0 - The Session Store
A server-owned store, budget-paced legacy imports, per-player prices on the client, and the Scribe.Big type-solver wall fixed. Read the behaviour changes first.
Behaviour changes
- Assigning to an accessor (
data.Coins = 5) is now a type error. It never worked: it overwrote the accessor.data.Coins.Set(5)and every method are unchanged. - A server store write inside
Data.Transactionis refused and aborts it, since a rollback cannot reach the store.
Added
ServerStore: a second tree owned by the server, not a player.Data.ServerStore.Waveon both realms, replicated as ordinary diffs, never saved.- Budget-paced legacy imports:
ImportLegacyDataandOnPlayerInitget a context withAwaitBudget(requestType, count?), which yields until the DataStore requests are spare.MigrationConcurrencybounds concurrent imports. - Per-player prices on the client:
Data.GetPrice("VIP")is what this player pays after Roblox Plus and regional pricing, withGetProductInfo,ObserveProductInfoandPrefetchProductInfo. A failed read staysnil. - UI adapters for Vide, React and Fusion in
adapters/. - Kick messages name the cause: throttled load, failed migration, schema rejection, import failure, version-ahead and session steal each have their own wording and option.
Data.Stop()on the client, plus an optionalReleasefor custom transports.- Budget metrics: waiters, queued, granted, timed out and wait time.
Fixed
Scribe.Biginside a container element no longer pushes the template past the type solver’s budget.- NaN, infinity and a gap in the
Argslist are refused as command arguments; the same gap inScribe.Derivedinputs is refused too. Owns,OwnsAsyncandObserveOwnedraise a named error on a non-string key instead of quietly answeringfalsein production.
Documentation
- New guide: The Server Store.
Scribe Plugin Note: I have updated it to support Play Solo studio sessions once again!
1 Like
Scribe v2.3.0 - The Policy Update
Paid random items, a product-state query for your shop UI, and bigger templates before Luau’s type solver gives up.
Behaviour changes
PromptPurchasenow refuses with the fixedScribe.ProductStatestrings ("not-loaded","owned", …) instead of prose.PurchaseReasonandGiftReasongainPaidRandomRestrictedandPolicyPending.
Added
PaidRandom = trueon a product. Scribe checks the player’s policy once and refuses the purchase, soft-currency purchase or gift for anyone restricted, or while the policy is still unknown. Products only.Data.GetProductStateon server and client tells you whether a product is purchasable, owned, restricted, pending or not loaded, the same answer the prompt gives.ObserveProductStateon the client updates your button when that changes.
Changed
- Much larger templates typecheck before “Code is too complex”. If yours still hits it, the templates guide has a one-line escape hatch.
- Container writes skip building an error string they rarely needed.