Skip to content

Releases: automerge/automerge-swift

0.5.8

02 Mar 22:58
Compare
Choose a tag to compare

In addition to the fixes and tweaks outlined below, this is the first Automerge release with a signed XCFramework and a privacy manifest included.

Apologies for the 0.5.7+3 release - it broke a number of systems, so we likely won't be doing SemVer 2.0 patch branches any longer. An experiment that started out OK, but ultimately failed. I was trying to keep the version number of this package aligned with the upstream core library, but with development and updates happening at different rates, that was becoming extremely unwieldy. This package will continue to strive to maintain SemVer major and minor equivalences with the Automerge-core rust library, but freely increment the patch version.

The package has also been updated to present an additional package: AutomergeUtilities (in addition to Automerge), primarily with extensions that make some debugging or schema introspection tasks a bit easier.

What's Changed

  • extending the documentation for heads() based on a slack conversation by @heckj in #101
  • adding discord link instead of slack by @heckj in #105
  • updated discord community link to one that doesn't expire by @heckj in #108
  • makes Document conform to ObservableObject by @heckj in #109
  • adding an AutomergeUtilities package by @heckj in #110
  • expanding errors to support localized error messages by @heckj in #111
  • added discord notes from Alex on how we might be able to leverage CloudKit by @heckj in #112
  • exposing AutomergeUtilities product, and including documentation by @heckj in #113
  • Adding automerge utility documentation organization by @heckj in #114
  • Support SwiftUI previews by @miguelangel-dev in #117
  • updates UniFFI from 0.24.1 to 0.26.1 by @heckj in #118
  • adding in privacy manifest for XCFramework by @heckj in #106
  • adding dictionary tests to illustrate encoding/decoding Dictionaries by @heckj in #121
  • Update README.md by @cciollaro in #122
  • Coding dictionaries by @heckj in #125

New Contributors

Full Changelog: 0.5.7...0.5.8

0.5.7+1

14 Feb 23:47
7e89039
Compare
Choose a tag to compare

What's Changed

  • extending the documentation for heads() based on a slack conversation by @heckj in #101
  • adding discord link instead of slack by @heckj in #105
  • updated discord community link to one that doesn't expire by @heckj in #108
  • makes Document conform to ObservableObject by @heckj in #109
  • adding an AutomergeUtilities package by @heckj in #110
  • expanding errors to support localized error messages by @heckj in #111
  • adding discord notes from Alex on how we might be able to leverage CloudKit by @heckj in #112

Full Changelog: 0.5.7...0.5.7+1

NOTE: This was an attempt to use SemVer 2.0 to release an incremental build that didn't update the Automerge core library, but added some additional functionality (specifically ObservableObject conformance, and exposing deeper layers of Automerge errors for debugging). However, Xcode and SwiftPM don't support SemVer 2.0 parsing, so the +1 extension isn't treated as a newer version automatically. To use this version, specify the branch for this repo: 0.5.7+1.

0.5.7

17 Jan 19:19
Compare
Choose a tag to compare

What's Changed

  • Support WebAssembly by @kateinoigakukun in #92
  • Bumping automerge-swift to layer over rust core library version 0.5.7 by @heckj in #93
    • Core Library updates: 0.5.7
      • Update itertools dependency to 0.12.0
      • Fix a bug in Read::get_marks which caused it to ignore any heads passed to it and always return the latest marks (only relevant if you ever passed Some(_) as the heads argument of Read::get_marks(objid, index, heads))
    • Core Library updates: 0.5.6
      • Add Transactable::update_text, which calculates a diff between the current value of a text field and a new value and converts that diff into a set of splice operations
  • Web assembly notes and updates for releasing libuniffi_automerge.a (WebAssembly) by @heckj in #96
    • the releases now include an archive of libuniffi_automerge.a, which is a WebAssembly compiled library from this package, equivalent to AutomergeUniffi, to allow someone to fully compile and use this library in WebAssembly.
  • adding update_text bindings through to core library by @heckj in #97
  • resolving opening the package in Xcode to find a duplicate modulemap by @heckj in #98
  • Text indexing - docs update, and fixing AutomergeText updating for multi-byte Characters by @heckj in #99
    • Fixes multiple issues stemming from Automerge using UnicodeScalars and not UTF-8 code points as originally believed. A huge thank you to the development team at GoodNotes for calling this out, and helping pave the way to updates that include fixes not only the documentation, but also the implementations for AutomergeText and serialization that now correct encode, decode, and update more complex text scenarios with the multi-part emoji structures (or other complex unicode characters)

New Contributors

Full Changelog: 0.5.5...0.5.7

0.5.5 release

13 Dec 22:06
Compare
Choose a tag to compare

0.5.5

A fast follow-on to the 0.5.4 release which resolves a sync backward incompatibility issue found and resolved in the core library. Same faster sync mechanisms, no with backwards compatibility with earlier Automerge sync instances.

# 0.5.4

13 Dec 18:10
Compare
Choose a tag to compare

This release primarily updates the core Automerge library used by the swift bindings to the latest version, 0.5.4

The changes for the core library are documented in https://github.com/automerge/automerge/blob/main/rust/CHANGELOG.md, with the summary:

  • Numerous performance improvements in 0.5.3 and 0.5.4, particularly around syncing automerge documents.
  • Modification of the sync protocol to send the entire document on an initial sync, which dramatically improves initial sync performance.

What's Changed

  • [docs] detail how to add Automerge-swift as a dependency by @heckj in #81
  • [docs] Fix a typo in Automerge.md by @wzso in #83
  • [feat] updates XCFramework to use version 0.5.3 of core Automerge library by @heckj in #84
  • [bug] partial work to consistently reproduce #82 by @heckj in #85
  • [chore] adding privacy label by @heckj in #87
  • [feat] updating core library to version 0.5.4 by @heckj in #88

New Contributors

  • @wzso made their first contribution in #83

Full Changelog: 0.5.2...0.5.4

0.5.2

19 Oct 20:41
Compare
Choose a tag to compare

0.5.2 release

Matching the version of the associated Rust crate, both the core library and the Swift language overlay provide notable updates.

The Rust library updates include supporting deeper rich-text tracking (Peritext) that exposes new types - Mark and Cursor - that annotate and reference specific locations or ranges within a string in order to represent that string as rich text.

The Swift updates exposes the new types (Mark, Cursor), as well as expanding support for the custom Codable capability to serialize and deserialize from cross-platform Automerge documents. The type Text in 0.3.x is renamed to AutomergeText for development ergonomics (the raw type name Text conflicts with common Swift libraries). AutomergeText and Counter have been converted to reference types so that updates to them a directly read and written from an Automerge document in memory, drastically increasing performance when updating these values within SwiftUI views.

This library is binary-compatible with Automerge 2.1 documents, and can be used for cross-platform interactions.

What's Changed

  • Update to automerge@0.5.0, implement marks by @alexjg in #39
  • Sendable fix by @heckj in #41
  • enables configurable log filtering on Automerge-swift by @heckj in #47
  • adds notes about possible SharePlay integration by @heckj in #49
  • adds implementation notes for the Automerge Encoder and Decoder by @heckj in #50
  • renaming Text to AutomergeText for ergonomics in consumption by @heckj in #51
  • adds a note about how the pre-release branch is structured for anyone… by @heckj in #52
  • Rich text/Peritext interop validation setup by @heckj in #48
  • test that illustrates failure scenario for issue #54 by @heckj in #55
  • fixing followup issue not resolves with #55 to fully resolve #54 by @heckj in #56
  • limits encode cleanup for encode(.., at: [..]) by @heckj in #58
  • Text as a reference type instead of a value type for performance of updates by @heckj in #59
  • AutomergeText encode/decode issue - lost data fix by @heckj in #61
  • another slight (but significant) error fixed by @heckj in #62
  • Codable Counter fixes by @heckj in #65
  • exploring default encodings of attributed strings in tests by @heckj in #68
  • Cursor main by @heckj in #70
  • Rebuild and re-orgnization of Swift API documentation on Automerge by @heckj in #53
  • adding a memory leak check into a few tests by @heckj in #73
  • transfer representation for an Automerge document by @heckj in #71
  • advance pinned version for nightly version of Rust to keep Catalyst support rolling by @heckj in #77
  • updating to latest released crate of the core Rust library for automerge by @heckj in #75
  • Convert Counter from value type to reference type, directly updating Automerge by @heckj in #63
  • cleaning up documentation by @heckj in #78
  • updating prerelease notes for consistency by @heckj in #79

Full Changelog: 0.3.2...0.5.2

0.5.0-alpha4

14 Aug 18:22
Compare
Choose a tag to compare
0.5.0-alpha4 Pre-release
Pre-release

Cursor support

A pre-release update of the upcoming 0.5.0 release of automerge-swift, that now includes Cursor support for tracking a position within a Automerge list or text object, floating with insertions and updates.

Full Changelog: 0.5.0-alpha3...0.5.0-alpha4

0.3.5

04 Aug 21:11
Compare
Choose a tag to compare

Bugfix release:

  • no changes to external functionality
  • fixes incorrect encoding and decoding Counter (#64)
    Full Changelog: 0.3.4...0.3.5

0.3.4 Release - bug fix

30 Jul 00:13
Compare
Choose a tag to compare

0.3.4 is a bug-fix release

  • no changes no external functionality.
  • resolves #54

Full Changelog: 0.3.2...0.3.4

0.5.0-alpha3 - getChanges

11 Jul 23:49
Compare
Choose a tag to compare
Pre-release
  • adds getChanges that provides a list of all changes to an existing document to be able to roughly scrub back through history.

Full Changelog: 0.5.0-alpha1...0.5.0-alpha3