## 3.1.0+1 ### Fixes - Fixed error building MacOS library ## 3.1.0 ### Breaking Sorry for this breaking change. Unfortunately, it was necessary to fix stability issues on Android. - `directory` is now required for `Isar.open()` and `Isar.openSync()` ### Fixes - Fixed a crash that occasionally occurred when opening Isar - Fixed a schema migration issue - Fixed an issue where embedded class renaming didn't work correctly ### Enhancements - Many internal improvements - Performance improvements ## 3.0.6 ### Fixes - Add check to verify transactions are used for correct instance - Add check to verify that async transactions are still active - Fix upstream issue with opening databases ## 3.0.5 ### Enhancements - Improved performance for all operations - Added `maxSizeMiB` option to `Isar.open()` to specify the maximum size of the database file - Significantly reduced native library size - With the help of the community, the docs have been translated into a range of languages - Improved API docs - Added integration tests for more platforms to ensure high-quality releases - Support for unicode paths on Windows ### Fixes - Fixed crash while opening Isar - Fixed crash on older Android devices - Fixed a native port that was not closed correctly in some cases - Added swift version to podspec - Fixed crash on Windows - Fixed "IndexNotFound" error ## 3.0.4 REDACTED. ## 3.0.3 REDACTED. ## 3.0.2 ### Enhancements - The Inspector now supports creating objects and importing JSON - Added Inspector check to make sure Chrome is used ### Fixes - Added support for the latest analyzer - Fixed native ports that were not closed correctly in some cases - Added support for Ubuntu 18.04 and older - Fixed issue with aborting transactions - Fixed crash when invalid JSON was provided to `importJsonRaw()` - Added missing `exportJsonSync()` and `exportJsonRawSync()` - Fixed issue where secondary instance could not be selected in the Inspector ## 3.0.1 ### Enhancements - Support for arm64 iOS Simulators ### Fixes - Fixed issue where `.anyOf()`, `.allOf()`, and `.oneOf()` could not be negated - Fixed too low min-iOS version. The minimum supported is 11.0 - Fixed error during macOS App Store build ## 3.0.0 This release has been a lot of work! Thanks to everyone who contributed and joined the countless discussions. You are really awesome! Special thanks to [@Jtplouffe](https://github.com/Jtplouffe) and [@Peyman](https://github.com/Viper-Bit) for their incredible work. ### Web support This version does not support the web target yet. It will be back in the next version. Please continue using 2.5.0 if you need web support. ### Enhancements - Completely new Isar inspector that does not need to be installed anymore - Extreme performance improvements for almost all operations (up to 50%) - Support for embedded objects using `@embedded` - Support for enums using `@enumerated` - Vastly improved Isar binary format space efficiency resulting in about 20% smaller databases - Added `id`, `byte`, `short` and `float` typedefs - `IsarLinks` now support all `Set` methods based on the Isar `Id` of objects - Added `download` option to `Isar.initializeIsarCore()` to download binaries automatically - Added `replace` option for indexes - Added verification for correct Isar binary version - Added `collection.getSize()` and `collection.getSizeSync()` - Added `query.anyOf()` and `query.allOf()` query modifiers - Support for much more complex composite index queries - Support for logical XOR and the `.oneOf()` query modifier - Made providing a path optional - The default Isar name is now `default` and stored in `dir/name.isar` and `dir/name.isar.lock` - On non-web platforms, `IsarLink` and `IsarLinks` will load automatically - `.putSync()`, `.putAllSync()` etc. will now save links recursively by default - Added `isar.getSize()` and `isar.getSizeSync()` - Added `linksLengthEqualTo()`, `linksIsEmpty()`, `linksIsNotEmpty()`, `linksLengthGreaterThan()`, `linksLengthLessThan()`, `linksLengthBetween()` and `linkIsNull()` filters - Added `listLengthEqualTo()`, `listIsEmpty()`, `listIsNotEmpty()`, `listLengthGreaterThan()`, `listLengthLessThan()`, `listLengthBetween()` filters - Added `isNotNull()` filters - Added `compactOnLaunch` conditions to `Isar.open()` for automatic database compaction - Added `isar.copyToFile()` which copies a compacted version of the database to a path - Added check to verify that linked collections schemas are provided for opening an instance - Apply default values from constructor during deserialization - Added `isar.verify()` and `col.verify()` methods for checking database integrity in unit tests - Added missing float and double queries and an `epsilon` parameter ### Breaking changes - Removed `TypeConverter` support in favor of `@embedded` and `@enumerated` - Removed `@Id()` and `@Size32()` annotations in favor of the `Id` and `short` types - Changed the `schemas` parameter from named to positional - The maximum size of objects is now 16MB - Removed `replaceOnConflict` and `saveLinks` parameter from `collection.put()` and `collection.putAll()` - Removed `isar` parameter from `Isar.txn()`, `Isar.writeTxn()`, `Isar.txnSync()` and `Isar.writeTxnSync()` - Removed `query.repeat()` - Removed `query.sortById()` and `query.distinctById()` - Fixed `.or()` instead of `.and()` being used implicitly when combining filters - Renamed multi-entry where clauses from `.yourListAnyEqualTo()` to `.yourListElementEqualTo()` to avoid confusion - Isar will no longer create the provided directory. Make sure it exists before opening an Isar Instance. - Changed the default index type for all `List`s to `IndexType.hash` - Renamed `isar.getCollection()` to `isar.collection()` - It is no longer allowed to extend or implement another collection - Unsupported properties will no longer be ignored by default - Renamed the `initialReturn` parameter to `fireImmediately` - Renamed `Isar.initializeLibraries()` to `Isar.initializeIsarCore()` ### Fixes There are too many fixes to list them all. - A lot of link fixes and a slight behavior change to make them super reliable - Fixed missing symbols on older Android phones - Fixed composite queries - Fixed various generator issues - Fixed error retrieving the id property in a query - Fixed missing symbols on 32-bit Android 5 & 6 devices - Fixed inconsistent `null` handling in json export - Fixed default directory issue on Android - Fixed different where clauses returning duplicate results - Fixed hash index issue where multiple list values resulted in the same hash - Fixed edge case where creating a new index failed ## 2.5.0 ### Enhancements - Support for Android x86 (32 bit emulator) and macOS arm64 (Apple Silicon) - Greatly improved test coverage for sync methods - `col.clear()` now resets the auto increment counter to `0` - Significantly reduced Isar Core binary size (about 1.4MB -> 800KB) ### Minor Breaking - Changed `initializeLibraries(Map libraries)` to `initializeLibraries(Map libraries)` - Changed min Dart SDK to `2.16.0` ### Fixes - Fixed issue with `IsarLink.saveSync()` - Fixed `id` queries - Fixed error thrown by `BroadcastChannel` in Firefox - Fixed Isar Inspector connection issue ## 2.4.0 ### Enhancements - Support for querying links - Support for filtering and sorting links - Added methods to update and count links without loading them - Added `isLoaded` property to links - Added methods to count the number of objects in a collection - Big internal improvements ### Minor Breaking - There are now different kinds of where clauses for dynamic queries - `isar.getCollection()` no longer requires the name of the collection - `Isar.instanceNames` now returns a `Set` instead of a `List` ### Fixes - Fixed iOS crash that frequently happened on older devices - Fixed 32bit issue on Android - Fixed link issues - Fixed missing `BroadcastChannel` API for older Safari versions ## 2.2.1 ### Enhancements - Reduced Isar web code size by 50% - Made `directory` parameter of `Isar.open()` optional for web - Made `name` parameter of `Isar.getInstance()` optional - Added `Isar.defaultName` constant - Enabled `TypeConverter`s with supertypes - Added message if `TypeConverter` nullability doesn't match - Added more tests ### Fixes - Fixed issue with date queries - Fixed `FilterGroup.not` constructor (thanks for the PR @jtzell) ## 2.2.0 Isar now has full web support 🎉. No changes to your code required, just run it. _Web passes all unit tests but is still considered beta for now._ ### Minor Breaking - Added `saveLinks` parameter to `.put()` and `.putAll()` which defaults to `false` - Changed default `overrideChanges` parameter of `links.load()` to `true` to avoid unintended behavior ### Enhancements - Full web support! - Improved write performance - Added `deleteFromDisk` option to `isar.close()` - Added `.reset()` and `.resetSync()` methods to `IsarLink` and `IsarLinks` - Improved `links.save()` performance - Added many tests ### Fixed - Fixed value of `null` dates to be `DateTime.fromMillisecondsSinceEpoch(0)` - Fixed problem with migration - Fixed incorrect list values for new properties (`[]` instead of `null`) - Improved handling of link edge-cases ## 2.1.4 - Removed `path` dependency - Fixed incorrect return value of `deleteByIndex()` - Fixed wrong auto increment ids in some cases (thanks @robban112) - Fixed an issue with `Isar.close()` (thanks @msxenon) - Fixed `$` escaping in generated code (thanks @jtzell) - Fixed broken link in pub.dev example page ## 2.1.0 `isar_connect` is now integrated into `isar` ### Enhancements - Added check for outdated generated files - Added check for changed schema across isolates - Added `Isar.openSync()` - Added `col.importJsonRawSync()`, `col.importJsonSync()`, `query.exportJsonRawSync()`, `query.exportJsonSync()` - Improved performance for queries - Improved handling of ffi memory - More tests ### Fixed - Fixed issue where imported json required existing ids - Fixed issue with transaction handling (thanks @Peng-Qian for the awesome help) - Fixed issue with `@Ignore` annotation not always working - Fixed issue with `getByIndex()` not returning correct object id (thanks @jtzell) ## 2.0.0 ### Breaking - The id for non-final objects is now assigned automatically after `.put()` and `.putSync()` - `double` and `List` indexes can no longer be at the beginning of a composite index - `List` indexes can no longer be hashed - `.greaterThan()`, `.lessThan()` and `.between()` filters and are now excluding for `double` values (`>=` -> `>`) - Changed the default index type for lists to `IndexType.value` - `IsarLink` and `IsarLinks` will no longer be initialized by Isar and must not be `nullable` or `late`. - Dart `2.14` or higher is required ### Enhancements - Added API docs for all public methods - Added `isar.clear()`, `isar.clearSync()`, `col.clear()` and `col.clearSync()` - Added `col.filter()` as shortcut for `col.where().filter()` - Added `include` parameter to `.greaterThan()` and `.lessThan()` filters and where clauses - Added `includeLower` and `includeUpper` parameters to `.between()` filters and where clauses - Added `Isar.autoIncrement` to allow non-nullable auto-incrementing ids - `Isar.close()` now returns whether the last instance was closed - List values in composite indexes are now of type `IndexType.hash` automatically - Allowed multiple indexes on the same property - Removed exported packages from API docs - Improved generated code - Improved Isar Core error messages - Minor performance improvements - Automatic XCode configuration - Updated analyzer to `3.0.0` - More tests ### Fixed - `IsarLink` and `IsarLinks` can now be final - Fixed multi-entry index queries returning items multiple times in some cases - Fixed `.anyLessThan()` and `.anyGreaterThan()` issues - Fixed issues with backlinks - Fixed issue where query only returned the first `99999` results - Fixed issue with id where clauses - Fixed default index type for lists and bytes - Fixed issue where renaming indexes was not possible - Fixed issue where wrong index name was used for `.getByX()` and `.deleteByX()` - Fixed issue where composite indexes did not allow non-hashed Strings as last value - Fixed issue where `@Ignore()` fields were not ignored ## 1.0.5 ### Enhancements - Updated dependencies ### Fixes: - Included desktop binaries - Fixed "Cannot allocate memory" error on older iOS devices - Fixed stripped binaries for iOS release builds - Fixed IsarInspector issues (thanks to [RubenBez](https://github.com/RubenBez) and [rizzi37](https://github.com/rizzi37)) ## 1.0.0+1 Added missing binaries ## 1.0.0 Switched from liblmdb to libmdbx for better performance, more stability and many internal improvements. ### Breaking The internal database format has been changed to improve performance. Old databases do not work anymore! ### Fixes - Fix issue with links being removed after object update - Fix String index problems ### Enhancements - Support `greaterThan`, `lessThan` and `between` queries for String values - Support for inheritance (enabled by default) - Support for `final` properties and getters - Support for `freezed` and other code generators - Support getting / deleting objects by a key `col.deleteByName('Anne')` - Support for list indexes (hash an element based) - Generator now creates individual files instead of one big file - Allow specifying the collection accessor name - Unsupported properties are now ignored automatically - Returns the assigned ids after `.put()` operations (objects are no longer mutated) - Introduces `replaceOnConflict` option for `.put()` (instead of specifying it for index) - many more... ### Internal - Improve generated code - Many new unit tests ## 0.4.0 ### Breaking - Remove `.where...In()` and `...In()` extension methods - Split `.watch(lazy: bool)` into `.watch()` and `.watchLazy()` - Remove `include` option for filters ### Fixes - Generate id for JSON imports that don't have an id - Enable `sortBy` and `thenBy` generation ### Enhancements - Add `.optional()` and `.repeat()` query modifiers - Support property queries - Support query aggregation - Support dynamic queries (for custom query languages) - Support multi package configuration with `@ExternalCollection()` - Add `caseSensitive` option to `.distinctBy()` ### Internal - Change iOS linking - Improve generated code - Set up integration tests and improve unit tests - Use CORE/0.4.0 ## 0.2.0 - Link support - Many improvements and fixes ## 0.1.0 - Support for links and backlinks ## 0.0.4 - Bugfixes and many improvements ## 0.0.2 Fix dependency issue ## 0.0.1 Initial release