Releases: mozilla/rust-components-swift
93.0.2
v93.0.2 (2022-04-25)
Nimbus FML
What's fixed
- (iOS only) Made the extensions on
String
andVariables
public. The extended functions are used in the generated code and that didn't compile in consumers when internal.
93.0.1
v93.0.1 (2022-04-20)
Nimbus FML ⛅️🔬🔭🔧
What's Fixed
- Handling of optional types which require a mapping to a usable type. (#4915)
91.1.2
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
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
tolog:warn
to fix an issue where places was unnecessarily creating sentry noise.
Autofill
What's New
- Added
temp-store
,journal-mode
, andforeign-keys
pragmas to autofill component. (#4882)
93.0.0
v93.0.0 (2022-04-13)
Nimbus ⛅️🔭🔬 + Nimbus FML ⛅️🔬🔭🔧
What's New
- Add support for bundled resources in the FML in Swift. This corresponds to the
Image
andText
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.
- This must include an update to the megazord, as well re-downloading the
92.0.1
v92.0.1 (2022-03-24)
Note: none of the changes released in 92.0.1 on Applications Services impact this repository.
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
v92.0.0 (2022-03-17)
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 existingUnexpectedPlacesException
. (#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 viaMozillaRustComponents
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.
- If the file extension is
91.1.0
v91.1.0 (2022-02-11)
⛅️🔬🔭 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:
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
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.
Places
What's Changed
- The database initialization code now uses BEGIN IMMIDIATE to start a
transaction. This will hopefully preventdatabase is locked
errors when
opening a sync connection.
What's New
- The
HistoryVisitInfo
struct now has anis_remote
boolean which indicates whether the
represented visit happened locally or remotely. (#4810)
91.0.0
v91.0.0 (2022-01-31)
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 isMyNimbus
. - All the enums and objects defined in the manifest as idiomatic Swift code.
- a high level nimbus object, whose name is configurable using the
- 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)
- To access a feature's value:
⚠️ 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
90.0.0
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 byglean_parser
inGleanMetrics.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 runningVERSION
or higher. (#4752)- The
versionCompare
transform will return a positive number ifapp_version
is greater than
VERSION
, a negative number ifapp_version
is less thanVERSION
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 with95
or above (95.0
,95.1
,95.2.3-beta
,96
etc..)
- The