-
FIX CRDT plugin
bulkInserthook not including schema default values in CRDT operations, causing data loss during conflict resolution rebuild when fields rely on schema defaults -
FIX
RxDocument.get$()on nested object/array paths emitting spurious values when unrelated document fields changed, becausedistinctUntilChanged()used reference equality which always fails for non-primitive values across document revisions -
FIX
incrementalUpsert()throwing a CONFLICT error when a concurrentupsert()/insert()creates the same document between the internalfindOne()andinsert()calls -
FIX
upsertLocal()on a previously removed local document keeping the document in deleted state instead of un-deleting it -
FIX push-only replication losing local writes that occur during a pause because
reSync()events were filtered out when no pull handler was configured -
FIX
getStartIndexStringFromUpperBound()incorrectly mappingINDEX_MINto'1'for boolean index fields, causing queries with exclusive bounds ($gt/$lt) on a field preceding a boolean index field to include boundary documents in the results -
FIX leader-election plugin not calling
die()on the LeaderElector when the database is closed, becauseLEADER_ELECTORS_OF_DBwas never populated due to a dead code branch -
FIX encryption plugin schema transformation not correctly handling nested dot-notation encrypted paths (e.g.
'nested.field'), causing validation failures when using a validator storage with non-string nested encrypted fields -
FIX dev-mode
checkSchema()not validating composite primary key fields for encryption (SC15), index (SC13), unique (SC14), and type (SC16) constraints because it compared property names against the primaryKey object instead of resolving the primary field path -
FIX
findOne().remove()crashing withTypeError: Cannot read properties of nullwhen no document matches the query, instead of returningnull -
ADD
findOne().remove(true)to throw when no document matches, consistent withfindOne().exec(true) -
FIX schema migration losing
_deletedstate when migration strategy returns a new object, causing deleted documents to be resurrected after migration -
FIX
RxPipeline.remove()not properly cleaning up checkpoint when called during active processing, causing a re-added pipeline with the same identifier to skip already-processed documents instead of starting fresh -
FIX cleanup plugin prematurely exiting its retry loop when
storageInstance.cleanup()returnsfalse(batched cleanup), becauseArray.find()returns the found valuefalseand!falseevaluates totrue, causingisDoneto be set incorrectly -
FIX encryption plugin
validatePassword()leaking the plaintext password inRxErrorparameters and error messages when password validation fails -
FIX
database.remove()not calling collectiononRemovehandlers, becauseclose()unsubscribed all listeners before the remove operation could trigger them -
FIX query-builder
eq()/equals()silently overwriting other operator conditions on the same field because the value was stored as a raw primitive instead of using the$eqoperator form -
FIX
deleted$observable emitting on every document revision instead of only when the deleted state changes, by addingdistinctUntilChanged() -
FIX
postSavecollection hook not receiving the RxDocument instance as the second argument, unlikepostInsertandpostRemovewhich correctly pass it -
FIX
getJsonSchemaWithoutMeta()not removing_revfrom schema properties, while correctly removing other internal meta properties (_deleted,_meta,_attachments) -
FIX
allAttachments$observable emitting attachments with a stale document reference, causingattachment.docto point to an outdated document version instead of the latest one -
FIX RxState not correctly recovering full-state replacements (via
set('', modifier)) from disk on database reopen, causing corrupted state -
FIX memory storage
count()returning incorrect results when the selector is not fully satisfied by the index and the query has alimitset -
FIX
replicateRxCollection().remove()on a never-started replication now creates the meta instance and deletes its data instead of skipping cleanup -
FIX
REPLICATION_STATE_BY_COLLECTIONnot cleaned up oncancel()/remove(), leaking replication state references -
FIX floating-point rounding overflow in index string decimal generation, where
Math.roundcould produce a value equal to the multiplier (e.g. 10 instead of max 9), creating a string one character too long and breaking sort order in compound indexes -
FIX
normalizeMangoQuery()skipped fully-matching indexes when choosing default sort order, falling back to the first index instead of using the best match -
FIX RxState
set('', modifier)passedundefinedto the modifier instead of the current state -
FIX
RxMigrationStatus.count.percentreturningNaNinstead of100when migrating a collection with 0 documents -
FIX
fillWithDefaultSettings()index deduplication was broken becauseArray.filter()return value was discarded, causing duplicate indexes in schemas when user-defined indexes become identical after adding_deletedprefix and primary key suffix -
FIX encryption plugin not stripping type-specific schema keywords (
maxLength,required,items, etc.) from encrypted fields, causing validation errors when using a validator storage with encryption -
FIX incorrect index string generation for negative decimal numbers causing wrong sort order and query results
-
FIX
rateQueryPlan()evaluatedstartKeystwice instead ofendKeys, causing suboptimal index selection for$lt/$ltequeries. -
FIX event-reduce mutating cached
docsDataMapcausing missing documents after insert-delete cycles -
FIX
modify()not deep-cloning document data, allowing the modifier to corrupt internal state via shared nested references -
FIX
fillObjectWithDefaultsshared mutable references for non-primitive schema defaults (arrays/objects) causing corrupted values on subsequent inserts
NOTICE: An overview about all releases can be found at the changelog