Skip to content

Releases: mozilla/rust-components-swift

93.0.2

25 Apr 18:39
be7deba
Compare
Choose a tag to compare

v93.0.2 (2022-04-25)

Full Changelog

Nimbus FML

What's fixed

  • (iOS only) Made the extensions on String and Variables public. The extended functions are used in the generated code and that didn't compile in consumers when internal.

93.0.1

21 Apr 17:26
c53e3cc
Compare
Choose a tag to compare

v93.0.1 (2022-04-20)

Full Changelog

Nimbus FML ⛅️🔬🔭🔧

What's Fixed

  • Handling of optional types which require a mapping to a usable type. (#4915)

91.1.2

21 Apr 17:38
051f4d6
Compare
Choose a tag to compare

v91.1.2 (2022-04-19)

NOTE: This is not the latest release, and was made a patch release on a previous release to fix a bug on android, you most likely would like to pick up the latest release (93.0.1 at the time of this release). See https://github.com/mozilla/rust-components-swift/releases

Full Changelog

IMPORTANT: The following change was cherry-picked to 91.1.2 which was a release not from the main branch. The change then landed in v93.0.1. This means that versions v92.0.0 - v93.0.0 do not have the change.

Places

  • Downgraded places get_registered_sync_engine log:error to log:warn to fix an issue where places was unnecessarily creating sentry noise.

Autofill

What's New

  • Added temp-store, journal-mode, and foreign-keys pragmas to autofill component. (#4882)

93.0.0

14 Apr 19:41
6f813d2
Compare
Choose a tag to compare

v93.0.0 (2022-04-13)

Full Changelog

Nimbus ⛅️🔭🔬 + Nimbus FML ⛅️🔬🔭🔧

What's New

  • Add support for bundled resources in the FML in Swift. This corresponds to the Image and Text types. #4892
    • This must include an update to the megazord, as well re-downloading the nimbus-fml binary.
    • Kotlin support for the same has also changed to match the Swift implementation, which has increased performance.

92.0.1

28 Mar 16:51
603262d
Compare
Choose a tag to compare

v92.0.1 (2022-03-24)

Note: none of the changes released in 92.0.1 on Applications Services impact this repository.

Full Changelog

Nimbus FML ⛅️🔬🔭🔧

What's Fixed

  • Swift: a bug in our understanding of Swift optional chaining rules meant that maps with a mapping and merging produced invalid code. (#4885)

General

What's Changed

  • Added documentation of our sqlite pragma usage. (#4876)

92.0.0

24 Mar 18:23
5432686
Compare
Choose a tag to compare

v92.0.0 (2022-03-17)

Full Changelog

Places

⚠️ Breaking Changes ⚠️

  • Removed some functions related to sync interruption. These were never really completed and don't seem to be in use by iOS/Android code:
    • PlacesApi.new_sync_conn_interrupt_handle()
    • Swift only: PlacesAPI.interrupt()
  • The exception variant InternalPanic was removed. It's only use was replaced by the already existing UnexpectedPlacesException. (#4847)

What's New

  • The Places component will report more error variants to telemetry. (#4847)

Autofill / Logins / Places / Sync Manager, Webext-Storage

What's Changed

  • Updated interruption handling and added support for shutdown-mode which interrupts all operations.

Tabs

⚠️ Breaking Changes ⚠️

  • The tabs component's constructor now requires the path to the database file where remote tabs will be persisted to.
  • Requesting remote tabs before the first sync will now return the tabs in this database, so may be "stale".

Glean

⚠️ Breaking Changes ⚠️

Swift

  • GleanMetrics should now be imported under import Glean instead of importing via MozillaRustComponents

Nimbus FML

What's Changed

  • Papercut fixes for nicer developer experience #4867
    • More helpful validation error reporting
    • Better handling of defaults in objects and enum maps
    • More YAML syntactic checking.
  • Allow experimenter to output to a YAML file, as well as JSON. #4874
    • If the file extension is yaml, then output as YAML, otherwise, output as JSON.

91.1.0

16 Feb 20:42
29772c8
Compare
Choose a tag to compare

v91.1.0 (2022-02-11)

Full Changelog

⛅️🔬🔭 Nimbus SDK

What's fixed

  • Fixes a bug where disabling studies did not disable rollouts. (#4807)

✨ What's New ✨

  • A message helper is now available to apps wanting to build a Messaging System on both Android and iOS. Both of these access the variables
    provided by Nimbus, and can have app-specific variables added. This provides two functions:
    • JEXL evaluation (#4813) which evaluates boolean expressions.
    • String interpolation (#4831) which builds strings with templates at runtime.

Xcode

  • Bumped Xcode version from 13.1.0 -> 13.2.1

Nimbus FML

What's fixed

  • Fixes a bug where each time the fml is run, the ordering of features in the experimenter json is changed. (#4819)

91.0.1

03 Feb 18:16
001d704
Compare
Choose a tag to compare

v91.0.1 (2022-02-02)

This release has a significant change to how the components are published.

We now only publish one library, called MozillaAppServices. This is to fix problems with having multiple libraries dynamically loaded into the app.

Full Changelog

Places

What's Changed

  • The database initialization code now uses BEGIN IMMIDIATE to start a
    transaction. This will hopefully prevent database is locked errors when
    opening a sync connection.

What's New

  • The HistoryVisitInfo struct now has an is_remote boolean which indicates whether the
    represented visit happened locally or remotely. (#4810)

91.0.0

01 Feb 22:27
53d2f85
Compare
Choose a tag to compare

v91.0.0 (2022-01-31)

Full Changelog

Nimbus FML

What's New

  • The Nimbus FML can now generate swift code for the feature manifest. (#4780)
    • It can be invoked using:
    $ nimbus-fml <FEATURE_MANIFEST_YAML> -o <OUTPUT_NAME> ios features
    • You can check the support flags and options by running:
    $ nimbus-fml ios --help
    • The generated code exposes:
      • a high level nimbus object, whose name is configurable using the --classname option. By default the object is MyNimbus.
      • All the enums and objects defined in the manifest as idiomatic Swift code.
    • Usage:
      • To access a feature's value:
        // MyNimbus is the class that holds all the features supported by Nimbus
        // MyNimbus has an singleton instance, you can access it using the `shared` field:
        
        let nimbus = MyNimbus.shared
        
        // Then you can access the features using:
        // MyNimbus.features.<featureNameCamelCase>.value(), for example:
        
        let feature = nimbus.features.homepage.value()
      • To access a field in the feature:
        // feature.<propertyNameCamelCase>, for example:
        
        assert(feature.sectionsEnabled[HomeScreenSection.topSites] == true)

⚠️ Breaking Changes ⚠️

  • Android only: Accessing drawables has changed to give access to the resource identifier. (#4801)

    • Migration path to the old behaviour is:
    let drawable: Drawable = MyNimbus.features.exampleFeature.demoDrawable

    becomes:

    let drawable: Drawable = MyNimbus.features.exampleFeature.demoDrawable.resource

General iOS

What's changed

  • Moved SwiftKeychainWrapper from an external Swift Package to be bundled with FxA. This is due to issues Firefox iOS had with their dependency tree. (#4797)
  • Exposed all crates as targets for the XCFramework. (#4797)

90.0.0

25 Jan 16:46
4ca440b
Compare
Choose a tag to compare

90.0.0 (2022-01-25)

Places

⚠️ Breaking Changes ⚠️

  • Places has been completely UniFFI-ed

Glean

⚠️ Breaking Changes ⚠️

  • The bundled version of Glean has been updated to v43.0.2.
    See the Glean Changelog for full details.
    BREAKING CHANGE: Pass build info into initialize, which contains the build date.
    A suitable instance is generated by glean_parser in GleanMetrics.GleanBuild.info.

Nimbus

What's new

  • The Nimbus SDK now support application version targeting, where experiment creators can set app_version|versionCompare({VERSION}) >= 0 and the experiments will only target users running VERSION or higher. (#4752)
    • The versionCompare transform will return a positive number if app_version is greater than
      VERSION, a negative number if app_version is less than VERSION and zero if they are equal
    • VERSION must be passed in as a string, for example: app_version|versionCompare('95.!') >= 0 will target users who are on any version starting with 95 or above (95.0, 95.1, 95.2.3-beta, 96 etc..)