Patch Changes
-
4b1c8d3ea2b3de1a2ae852fd5631e33d28a82b15#4721 Thanks @giaBaoJS! - fix: assigninglengthon an observable array now respectsintercept. A cancelled or modified splice used to be overridden by a direct write to the backing array, which truncated it without notifying observers and made the next mutation throw "Modification exception". A non-integerlengthnow throws "Out of range" before touching the array. -
60be47cab0926d12f22449ec6c809fb5ec6601c4#4716 Thanks @AcEKaycgR! - fix:observable.box(array)no longer warns underobservableRequiresReactionwhen a spy is active. Thecreatespy event now reportsnewValueas the value itself rather than a string, matching the declaredIBoxDidChangetype. Previously the constructor stringified the value, and stringifying an observable array reads itslength, which counted as an observable read outside a reactive context. Spy listeners that relied onnewValuebeing a string forcreateevents will now receive the raw value. -
3551aeb051ff922717b03c4fbc04a6b98f7f3b3e#4717 Thanks @breken-ai! - Remove thesignalabort listener when a reaction disposes itself (r.dispose()or a resolvedwhen), so long-livedAbortSignals no longer accumulate listeners that keep disposed reactions in memory -
7e4e27dbfbf0b56770a11e9cba913e5d49c0c6f8#4718 Thanks @breken-ai! -observe/spyaddevents of an observable Set now report the value that was actually stored (e.g. the observable copy of a plain object), matching ObservableMap and observable arrays, soset.has(change.newValue)holds