Couchbase Lite Changelog

What's new in Couchbase Lite 1.3.1-8

Sep 13, 2016
  • Performance Improvements:
  • #1379 ForestDB update_seq on view query less than db's update_seq
  • Enhancements:
  • #1400 Support for _oidc_refresh response without ID token
  • Bugs:
  • #1369 PSWebSocket crash iOS 10
  • #1379 ForestDB update_seq on view query less than db's update_seq
  • #1387 TvOS Unit Test Build has a lot of warnings
  • #1392 When OIDC Refresh token failed, there is no replication change notification sent.
  • #1403 CBLSocketChangeTracker endless loop of JSON Parsing Errors
  • #1406 Encryption is a no-op with the system libsqlite3 on macOS 12

New in Couchbase Lite 1.3.0 (Jul 15, 2016)

  • Noteworthy changes:
  • Support for OpenID Connect authentication, so you can log into Sync Gateway using a 3rd-party identity like a Google or Yahoo ID.
  • Timed expiration of documents can help keep your database from growing indefinitely.
  • Better performance with docs that have many revisions. Replication is faster, and older revisions are now automatically cleaned up in SQLite storage.
  • Optimized redisplay of UITableViews when using CBLUITableController.
  • Clearer error messages and better logging.
  • And of course many smaller optimizations, and lots of bug fixes.
  • Performance Improvements:
  • #1114 LiveQuery shouldn't re-run query if view index didn't change
  • #1150 Optimize & animate CBLUITableController by using the Levenshtein algorithm
  • #1165 Incrementally purge oldest revisions in SQLite databases
  • #1242 Fix inefficiencies replicating docs with many revisions
  • #1340 Optimized multipart download performance
  • Enhancements:
  • #394 Start using NSURLSession in the replicator
  • #984 Comparing CBLQuery objects
  • #1100 External property on kCBLDatabaseChangeNotification when CBL is remote
  • #1107 Logging overhaul
  • #1117 Redact passwords/tokens in URLs in log messages
  • #1118 API: Public method for inserting existing revisions (putExistingRevisionWithProperties:...)
  • #1148 API: Make -[View updateIndex] public; add async version
  • #1150 Optimize & animate CBLUITableController by using the Levenshtein algorithm
  • #1165 Incrementally purge oldest revisions in SQLite databases
  • #1181 API: Document expiration time (TTL)
  • #1201 Replicator should immediately fail if URL path is invalid
  • #1245 Expose server error messages in NSErrors from public API
  • #1266 OpenID Connect authenticator
  • #1271 Disable App Transport Security on Mac OSX LiteServ
  • #1291 Allow configuring revs_limit in LiteServ
  • #1334 Scope cookie storage by database, not by replication
  • Bugs:
  • #641 Enumerate sequence in descending order in CBForest not working
  • #966 CBLIS : Data loss
  • #1005 Replication fails without starting on wifi if network depends on a proxy
  • #1015 Crash when [CBLRemoteRequest connection:didFailWithError:]
  • #1045 POST _bulk_docs does not support HTTPBodyStream
  • #1071 [Testfest] Items not showing up in offline mode
  • #1085 CBLIS : NSIncrementalStore accessed by multiple context dispatch queues
  • #1095 Obsolete rows left in view index when documentType is used (1.1.1)
  • #1106 CBLListener readOnly property prevents pulls from updating the database
  • #1120 Warn if map function calls emit(nil, ...)
  • #1124 Multipart Uploader cannot upload the attachment when using basic auth
  • #1128 Crash pushing docs with non-downloaded attachments
  • #1129 CBLIS: NSSet was mutated while being enumerated.
  • #1131 CBLVersion() incorrectly returns "(unofficial)" in official releases
  • #1132 CBLReplicator.isDocumentPending is inaccurate when replicator is offline
  • #1138 Continuous puller with WebSocket not responding with 401 error when changing password
  • #1139 ChangeTracker POST request are incompatible with CouchDB
  • #1143 Swift API glitches
  • #1152 CBLRestReplicator does not properly end bgTask when app is foregrounded
  • #1163 Fixed macOS 10.10 dependency & updated deployment version to 10.9
  • #1180 Doc can be saved with missing attachment file, leading to errors
  • #1188 CBForest bad memory access while purging doc
  • #1191 Liteserv crashes with Forestdb option when creating local docs after delete operation
  • #1192 Manual compaction returns error if auto-compact is already running
  • #1200 Replication rejects attachments generated by PouchDB with revpos:0
  • #1216 REST API: POST /_replicate can start/stop once, but not restart?
  • #1228 One-shot push from empty db never stops
  • #1233 Failure to encrypt SQLite database when using WAL journaling
  • #1260 Inconsistent response when no conflicts are present and ?conflicts=true
  • #1263 Incorrect "error" property in REST response for GET of deleted doc
  • #1274 PendingDocumentIDs is incorrect
  • #1279 Don't stop replicator if one doc gets an error
  • #1292 _replicate between 2 dbs on same LiteServ fails
  • #1323 Cannot push encrypted attachments when testing with ToDoLite
  • #1325 LiteServ crash when delete dbs asyncronously
  • #1327 Archive build is missing symbols in iOS frameworks
  • #1335 Database upgrades from 1.1 not copying "content_type" of attachments
  • #1348 OIDC tokens in Keychain should be per-database

New in Couchbase Lite 1.3.0 Pre (Jul 6, 2016)

  • Noteworthy changes:
  • Support for OpenID Connect authentication, so you can log into Sync Gateway using a 3rd-party identity like a Google or Yahoo ID.
  • Timed expiration of documents can help keep your database from growing indefinitely.
  • Better performance with docs that have many revisions. Replication is faster, and older revisions are now automatically cleaned up in SQLite storage.
  • Optimized redisplay of UITableViews when using CBLUITableController.
  • Clearer error messages and better logging.
  • And of course many smaller optimizations, and lots of bug fixes.
  • Performance Improvements:
  • #1114 LiveQuery shouldn't re-run query if view index didn't change
  • #1150 Optimize & animate CBLUITableController by using the Levenshtein algorithm
  • #1165 Incrementally purge oldest revisions in SQLite databases
  • #1242 Fix inefficiencies replicating docs with many revisions
  • #1340 Optimized multipart download performance
  • Enhancements:
  • #394 Start using NSURLSession in the replicator
  • #984 Comparing CBLQuery objects
  • #1100 External property on kCBLDatabaseChangeNotification when CBL is remote
  • #1107 Logging overhaul
  • #1117 Redact passwords/tokens in URLs in log messages
  • #1118 API: Public method for inserting existing revisions (putExistingRevisionWithProperties:...)
  • #1148 API: Make -[View updateIndex] public; add async version
  • #1150 Optimize & animate CBLUITableController by using the Levenshtein algorithm
  • #1165 Incrementally purge oldest revisions in SQLite databases
  • #1181 API: Document expiration time (TTL)
  • #1201 Replicator should immediately fail if URL path is invalid
  • #1245 Expose server error messages in NSErrors from public API
  • #1266 OpenID Connect authenticator
  • #1271 Disable App Transport Security on Mac OSX LiteServ
  • #1291 Allow configuring revs_limit in LiteServ
  • Bugs:
  • #641 Enumerate sequence in descending order in CBForest not working
  • #966 CBLIS : Data loss
  • #1005 Replication fails without starting on wifi if network depends on a proxy
  • #1015 Crash when [CBLRemoteRequest connection:didFailWithError:]
  • #1045 POST _bulk_docs does not support HTTPBodyStream
  • #1071 [Testfest] Items not showing up in offline mode
  • #1085 CBLIS : NSIncrementalStore accessed by multiple context dispatch queues
  • #1095 Obsolete rows left in view index when documentType is used (1.1.1)
  • #1106 CBLListener readOnly property prevents pulls from updating the database
  • #1120 Warn if map function calls emit(nil, ...)
  • #1124 Multipart Uploader cannot upload the attachment when using basic auth
  • #1128 Crash pushing docs with non-downloaded attachments
  • #1129 CBLIS: NSSet was mutated while being enumerated.
  • #1131 CBLVersion() incorrectly returns "(unofficial)" in official releases
  • #1132 CBLReplicator.isDocumentPending is inaccurate when replicator is offline
  • #1138 Continuous puller with WebSocket not responding with 401 error when changing password
  • #1139 ChangeTracker POST request are incompatible with CouchDB
  • #1143 Swift API glitches
  • #1152 CBLRestReplicator does not properly end bgTask when app is foregrounded
  • #1163 Fixed macOS 10.10 dependency & updated deployment version to 10.9
  • #1188 CBForest bad memory access while purging doc
  • #1192 Manual compaction returns error if auto-compact is already running
  • #1200 Replication rejects attachments generated by PouchDB with revpos:0
  • #1216 REST API: POST /_replicate can start/stop once, but not restart?
  • #1228 One-shot push from empty db never stops
  • #1260 Inconsistent response when no conflicts are present and ?conflicts=true
  • #1263 Incorrect "error" property in REST response for GET of deleted doc
  • #1279 Don't stop replicator if one doc gets an error
  • #1292 _replicate between 2 dbs on same LiteServ fails
  • #1323 Cannot push encrypted attachments when testing with ToDoLite
  • #1327 Archive build is missing symbols in iOS frameworks
  • #1335 Database upgrades from 1.1 not copying "content_type" of attachments

New in Couchbase Lite 1.2.0 (Feb 4, 2016)

  • Highlights:
  • Improved ForestDB Storage Engine (Developer Preview) - Our developer preview for the ForestDB storage engine saw a number of major code improvements under the hood.
  • Improved database encryption - AES-256 on-disk encryption with your choice of provided storage library: SQLCipher or ForestDB
  • CBL Incremental Store improvements - Your CoreData apps benefit from significant performance improvements and bug fixes.
  • Performance Improvements:
  • #726 CBLListener.readOnly=YES prevents clients from storing checkpoints
  • #733 Peer replication checkpoints are lost if its hostname or port changes
  • #858 Attachment downloads should be resumeable
  • #860 Ignore redundant attachment downloads
  • #922 No auto-compact (db.forest getting very large)
  • #926 Enable HTTP compression for _changes feed requests (non-continuous)
  • #927 Compression for _changes feed requests (continuous)
  • #938 CBLIS - Very poor performances from 5000 documents locally
  • #960 CBLIS - Improve relationship cache invalidation
  • #972 ForestDB-based view indexes don't auto-compact
  • #991 Verify that ForestDB store's allDocs query is actually faster than SQLite store's allDocs
  • #1046 CBLLiveQuery notification throttling too aggressive by default
  • Enhancements:
  • #73 Disallow leading "_" in attachment name (for compatibility)
  • #79 Deferred attachment download
  • #82 Add SSL client cert support to replicator
  • #485 ForestDB: Reimplement geo-queries
  • #652 Add CBLJSViewCompiler to the framework
  • #702 Integrate new replicator
  • #729 Allow validations to distinguish local from remote changes
  • #806 Add "_conflicts" property to doc in map function when doc is in conflict
  • #808 Expose totalRows from CBLView to developers
  • #826 ForestDB: Implement database encryption
  • #836 Allow adding/removing db encryption, or changing the key
  • #858 Attachment downloads should be resumeable
  • #859 Attachment downloads should be more fault tolerant
  • #870 Migrating SQLite db to ForestDB
  • #879 Need a purge method from CoreData with CBLIncrementalStore
  • #918 Build for tvOS (AppleTV)
  • #926 Enable HTTP compression for _changes feed requests (non-continuous)
  • #927 Compression for _changes feed requests (continuous)
  • #928 Add Carthage support
  • #950 Update CouchbaseLiteViewer
  • #960 CBLIS - Improve relationship cache invalidation
  • #970 Add official openDatabase API for encryption/storage options
  • #976 Package a SQLCipher binary with our storage engine
  • #1029 Set custom user agent on HTTP Requests
  • #1052 Optimize first-time sync
  • Bugs:
  • #648 CBLModel has trouble with dynamic properties in Swift classes
  • #649 Attachment crash (CBL_BlobStoreWriter's initializer failed?)
  • #671 "_removed" properties received from SG cause errors pushing to another server
  • #681 Migrate v1.1.0 database file to cblite2 file structure
  • #683 All-docs queries ignore prefixMatchLevel property
  • #686 The bg replication server's database not getting closed
  • #695 Revise replaceDatabase signature and backward db support
  • #698 CBLReplicator could still be in the running status after closing the database
  • #728 Checkpoint ID shared by distinct pull replications
  • #733 Peer replication checkpoints are lost if its hostname or port changes
  • #800 "Unexpected CBForest exception iterating query"
  • #805 Crash after receiving 401 error from CBLReplication (ASSERTION FAILED: storage)
  • #807 CBLReplication.pendingDocIDs doesn't update while replicator not running
  • #838 Implement readOnly mode in CBLSyncListener
  • #841 Assertion failure when using invalid username/password with replication
  • #843 CBLDatabase not getting attachments from ancestry when processing attachments
  • #857 Cannot get result using CBLQueryBuilder with NSSortDescriptor
  • #877 Listener throws warnings even though there is no error
  • #889 Query builder can't index on descending sort descriptors
  • #892 Query.sortDescriptors doesn't gives expected result when '-limit' is applied.
  • #893 Query.postFilter with limit gives limit+1 results.
  • #895 Pusher doesn't send non-winning deletion replications (ForestDB)
  • #899 WARNING: Unexpected CBForest exception iterating query
  • #900 401 status from server not being propagated to CBLReplication.lastError
  • #901 -[ListenerHTTP_Tests test03_ReadOnly] fails in iOS 9 simulator
  • #903 Problem with relationship one-to-many when documents are created simultaneously on multiple devices
  • #908 ForestDB queries wrong key range for descending=true and prefixMatch
  • #909 New model objects created with +modelForDocument should set isNew flag to true
  • #917 CBL returns NO with no error when attempting to encrypt an SQLite database
  • #921 CBLQueryBuilder: Sorted property disappears from _valueTemplate (select)
  • #922 No auto-compact (db.forest getting very large)
  • #925 Crash in processing CBLIS changes when document has no type
  • #938 CBLIS - Very poor performances from 5000 documents locally
  • #942 CBLIS - Crash with relationships
  • #958 CBLIS doesn't handle accesses from multiple dispatch queues
  • #961 400 Invalid Attachment Warning / Error in Pull Replication
  • #963 Couchbase lite eventually sends invalid heartbeat value for longpoll feed
  • #964 WebSockets cannot be used with channel filtering for large amounts of channels
  • #965 CBLModel -propertiesToSave does not nil check for _document == nil
  • #973 LiteServ logs disconnect warnings
  • #974 Liteserv throws exception when invoked with relative paths
  • #979 AttachmentsPath of CBLManager replaceDatabaseNamed:... should be nullable
  • #982 CBL can't handle _removed (some of the time) and tags it as illegal and kills the replicator
  • #983 Full-text indexing fails for non-English-language users
  • #986 "Invalid revpos" warnings and attachment errors during pull replication
  • #987 ForestDB crashes with a fullTextQuery
  • #999 Unsafe threading closing ForestDB view index in low-memory situation
  • #1001 Attachment errors should not stop the replicator
  • #1025 CBLDatabaseUpgrade selects wrong noAtts column
  • #1039 The couchbase-lite-ios package doesn't contain tvOS binary
  • #1040 CBL tvOS scheme absent for building tvOS package.
  • #1041 DatabaseUpgrade not importing local docs
  • #1046 CBLLiveQuery notification throttling too aggressive by default
  • #1047 Adding Universal build of the 'releases/1.2' to Kitchen-Sync causes missing symbol during linking
  • #1048 Couchbase lite iOS binary has enable_bitcode' flag disabled
  • #1059 Workaround go multipart parser issue -- use different boundary?
  • #1061 Bug on to-many relationships with Core Data context
  • #1062 Liteserv binary doesn't use the ForestDB when specified via 'defaults' mac command
  • #1063 Debug LiteServ build fails: missing symbol _CBLRegisterJSViewCompiler
  • #1079 -[CBL_SQLiteStorage lowMemoryWarning]: unrecognized selector sent to instance
  • #1081 [tvOS] Cannot create databases in default CBLManager
  • #1082 Delete docs could cause missing undeleted docs in ForestDB view index
  • #1083 App needs trigger(going back to home screen and realunch) to sync/pull docs

New in Couchbase Lite 1.1.0 (Jun 22, 2015)

  • New features and enhancements including:
  • Pluggable storage engines. Couchbase Lite can now support multiple data persistance libraries. By default, it will continue to use SQLite.
  • [Experimental] Our new, super-fast ForestDB storage engine! Anyone who wants a preview of our future default storage engine can get started today by following these instructions for enabling the ForestDB storage engine.
  • Page-level database encryption via SQLCipher.
  • You can now query your database using NSPredicates thanks to CBLQueryBuilder, which provides an alternative to using map/reduce functions.
  • Our newly overhauled Core Data adapter, CBLIncrementalStore. Add sync to your Core Data applications by using Couchbase Lite as your backing store.
  • Improved replication and view indexing performance. Views are now stored more efficiently, which speeds up document indexing by roughly 10%.
  • Features and Improvements:
  • #684 iOS 8.2+ seems slower than 8.1 or lesser
  • #677 Test performance improvement replicating docs with large revision trees
  • #606 Inverse relation support for CBLModel
  • #605 CBLIncrementalStore - Support query via abstract entity
  • #571 Use CBLQueryBuilder in CBLIncrementalStore
  • #569 Support to-many without inverse relationship in CBLIncrementalStore
  • #526 Implement isStoredInExternalRecord support in CBLIncrementalStore
  • #514 Support feed=eventsource in _changes feed
  • #439 Support for encoding / decoding NSURL instances as properties of a CBLModel
  • #358 userProperties method on CBLModel.
  • #316 Can CBLModel define the "type" @property instead of making a subclass have to implement it?
  • Bug fixes:
  • #723 CBL 1.1 (iOS) Docs not syncing when I think they should
  • #718 Crash when create a document with attachment in one single revision
  • #712 CBLView updateIndex isn't public, but is in the API spec
  • #711 Potential database upgrade error
  • #709 CBLQuery fullTextRanking and fullTextSnippet properties were removed
  • #705 ForestDB native lib missing dev preview package
  • #701 Couchbase lite iOS memory consumption indexing views
  • #700 ForestDB fails in 32-bit OS due to bug in get_memory_size fn
  • #696 Start-restart replication problem in CBL 1.1.0
  • #691 Thread-safety issue in CBLReplication cookie methods
  • #687 Cannot get the database schema version while replace/upgrade a database
  • #684 iOS 8.2+ seems slower than 8.1 or lesser
  • #672 Pulled docs with a stub attachment failed to insert
  • #665 Multipart streams cannot be reopened when retrying to send the request
  • #662 ForestDB: fullTextSearch emmits wrong values
  • #608 Pull replication missing documents from SG channel
  • #592 CBL 1.0.4 - Rare/minor dealloc issue
  • #578 View not indexing older revisions
  • #576 New object notification not generated when using CBLIncrementalStore
  • #574 Query with limit and postFilter may not return enough rows
  • #566 save and lockForWriting issues
  • #543 Replicators should have independent cookie storage
  • #495 forestdb::RevTree:compact() causing crash
  • #479 ForestDB: Emitting dictionary key causes error
  • #390 Sync problem with Cloudant databases - puller or change tracker?

New in Couchbase Lite 1.0.4-2 (Apr 21, 2015)

  • Features and Improvements:
  • Limit puller memory use, by throttling ChangeTracker (090a279)
  • Added CBL_Replicator option to pin to a specific SSL cert (2ac3a00)
  • API: Added CBLReplication.serverCertificate (bd28768)
  • Propagate changes in CBLJSONEncoding array to its parent model (658f622)
  • Support log() function for JS map functions (3aa03f9)
  • Return a Bonjour (.local) hostname instead of a raw IPv4 address when calling the CBLListener's URL method (4e930bf)
  • Support for easily using an anonymous SSL identity in CBLListener (1db5f65)
  • Bug fixes:
  • Fix a crash found in CBLBatcher (18fa9e2)
  • Fix WebSocket connecting to a wrong port when the HTTPS URL had no port number specified (1ccd928)
  • Fix replicator overriding the cookies set in the request headers added to a replicator (1e0dc7f)
  • Fix CBLJSONEncoding array not propagate changes to its parent model (658f622)
  • Fix crash in CBLModel when setOnMutate is not defined in CBLJSONEncoding submodel (dd90db0)
  • Fix failures when adding revisions to resolve conflicts (7b3fca5)

New in Couchbase Lite 1.0.3 (Nov 6, 2014)

  • Unit tests: make certain databases are closed at end of each test
  • CBJSONEncoder: Use 6 decimal places, not 16, for 32-bit floats
  • API: Added CBLLiveQuery.updateInterval
  • Improvements to runloop task scheduling & live queries
  • Fixed insertion-speed regression with SQLite 3.8 (i.e. Yosemite)
  • Fixed a typo in a doc-comment in CBLReplication.
  • CBLJSViewCompiler target no longer links static JavaScriptCore framework
  • Don't convert CoreData relation names to lowercase
  • Tweaked LiveQuery unit test to avoid occasional timing-based failures
  • Remove unused-but-confusing duplicate GCDAsyncSocket.m from project
  • Change SSL settings to TLSv1, to avoid SSLv3 POODLE vulnerability
  • Add link to CRM demo app
  • Unit tests: More assertions around closing temp dbs
  • Router: Fixed a hang handling DELETE /db
  • Add a test to verify if the puller works correctly with DB Validation
  • Rework error status when no matched selectors in CBLRouter
  • Merge pull request #501 from couchbase/feature/issue_499
  • When indexing a view group, skip views with no map block registered yet
  • CBL_Shared fixes
  • Restore the "no map block registered" assertion when it makes sense
  • FMDB: Fixed locking calls to avoid a deadlock
  • Add CreateIdenticalParentContentRevisions Test and reorganize conflic
  • Added a constant for the "websocket" replicator option key
  • Limit puller memory use, by throttling ChangeTracker
  • Oops: Added an #import to fix iOS build break
  • Renamed classes and ext. vars to avoid collisions.
  • Speculative but harmless fix for crash in CBLBatcher
  • Merge pull request #507 from olivierpascal/bug/issue_506
  • Fixed: WebSocket connecting to wrong port if HTTPS URL had no port nu
  • Workaround + speculative fix for messed-up db revision tree
  • Fix conflict between function and class name in Swift
  • Merge pull request #513 from couchbase/feature/issue_512

New in Couchbase Lite 1.0.1 (Sep 5, 2014)

  • Fixed: Database-change notifications weren’t delivered on dispatch queues