Releases: mozilla/application-services
v136.0
Logins
The Logins component has been rewritten to use a newly introduced EncryptorDecryptor
trait.
BREAKING CHANGE
The LoginsStore constructor and several API methods have been changed:
The signatures of the constructors are extended as follows:
pub fn new(path: impl AsRef<Path>, encdec: Arc<dyn EncryptorDecryptor>) -> ApiResult<Self>
pub fn new_from_db(db: LoginDb, encdec: Arc<dyn EncryptorDecryptor>) -> Self
pub fn new_in_memory(encdec: Arc<dyn EncryptorDecryptor>) -> ApiResult<Self>
The methods do not require an encryption key argument anymore, and return Login
objects instead of EncryptedLogin
:
pub fn list(&self) -> ApiResult<Vec<Login>>
pub fn get(&self, id: &str) -> ApiResult<Option<Login>>
pub fn get_by_base_domain(&self, base_domain: &str) -> ApiResult<Vec<Login>>
pub fn find_login_to_update(&self, entry: LoginEntry) -> ApiResult<Option<Login>>
pub fn update(&self, id: &str, entry: LoginEntry) -> ApiResult<Login>
pub fn add(&self, entry: LoginEntry) -> ApiResult<Login>
pub fn add_or_update(&self, entry: LoginEntry) -> ApiResult<Login>
New LoginsStore methods:
// Checking whether the database contains logins (does not utilize the `EncryptorDecryptor`):
is_empty(&self) -> ApiResult<bool>
// Checking for the Existence of Logins for a given base domain (also does not utilize the `EncryptorDecryptor`):
has_logins_by_base_domain(&self, base_domain: &str) -> ApiResult<bool>
The crypto primitives encrypt
, decrypt
, encrypt_struct
and decrypt_struct
are not exposed anymore via UniFFI, as well as EncryptedLogin
will not be exposed anymore. In addition we also do not expose the structs RecordFields
, LoginFields
and SecureLoginFields
anymore.
SyncEngine
The logins sync engine has been adapted for above EncryptorDecryptor trait and therefore does not support a set_local_encryption_key
method anymore.
Flattened Login Struct
The flattened Login struct now does not expose internal structuring to the consumer:
Login {
// record fields
string id;
i64 times_used;
i64 time_created;
i64 time_last_used;
i64 time_password_changed;
// login fields
string origin;
string? http_realm;
string? form_action_origin;
string username_field;
string password_field;
// secure login fields
string password;
string username;
}
rc_crypto
- New low level bindings for dealing with primary password.
- New feature flag
keydb
inrc_crypto/nss
, which enables NSS key persistence:ensure_initialized_with_profile_dir(path: impl AsRef<Path>)
initializes NSS with a profile directory and appropriate flags to persist keys (and certificates) in its internal PKCS11 software implementation. This function must be called first; ifensure_initialized
is called before, it will fail. - New methods for dealing with primary password and key persistence, available within the
keydb
feature:authentication_with_primary_password_is_needed()
: checks whether a primary password is set and needs to be authenticatedauthenticate_with_primary_password(primary_password: &str)
: method for authenticate NSS key store against a user-provided primary passwordget_or_create_aes256_key(name: &str)
: retrieve a key byname
from the internal NSS key store. If none exists, create one, persist, and return.
Remote Settings
- Added support of content signatures verification (#6534)
v135.0
✨ What's New ✨
Nimbus SDK ⛅️🔬🔭
- Updated
getLocaleTag
to be publicly accessible (#6510)
🦊 What's Changed 🦊
Glean
- Updated to v63.0.0 (bug 1933939)
Places
PlacesConnection::get_visited()
no longer considers unvisited-but-bookmarked pages to be visited, matching the behavior of bothget_visited_urls_in_range()
and Desktop (#6527).
rc_crypto
- New low level bindings for functions for key generation with persistence, for listing persisted keys, and for wrapping and unwrapping to get at the key material of stored keys.
⚠️ Breaking Changes ⚠️
Webext-Storage
- Exposed the bridged engine logic for use in desktop (#6473).
- This updated the signature of the
bridged_engine
function technically making this PR a breaking change though an imminent desktop patch will remove references to function calls with the old signature.
- This updated the signature of the
v134.0
✨ What's New ✨
Relevancy
- Added init, select and update methods for Thompson Sampling (multi-armed bandit)
🦊 What's Changed 🦊
Glean
- Updated to v62.0.0 (bug 1928630)
FxA Client
- Updated the iOS
sendToDevice
function to return thecloseTab
call's result when applicable. (#6448)
Nimbus SDK ⛅️🔬🔭
- Added a standalone method to calculate targeting context attributes that are based on values in the Nimbus persistence layer (#6493)
Places
PlacesConnection.noteHistoryMetadataObservation{ViewTime, DocumentType}()
(Android) andPlacesWriteConnection.noteHistoryMetadataObservation()
(iOS)
now take an optionalNoteHistoryMetadataObservationOptions
argument. The
newif_page_missing
option specifies what to do if the page for the
observation doesn't exist in the history database.
(#6443)
⚠️ Breaking Changes ⚠️
Nimbus SDK ⛅️🔬🔭
- Added methods to
RecordedContext
for retrieving event queries and setting their values back to the foreign object (#6322).
Places
- If an entry for a page doesn't exist in the history database, any
history observations for that page will no longer be recorded by default.
To revert to the old behavior, and automatically insert an entry for
the page before recording the observation, set the newif_page_missing
option toHistoryMetadataPageMissingBehavior::InsertPage
.
v133.0
⚠️ Breaking Changes ⚠️
Remote Settings
- Updated Error hierarchy. We don't need to update consumer code because the only consumer was
Android and it only caught exceptions using the base RemoteSettingsException class.
🦊 What's Changed 🦊
Android
- Upgraded NDK from r27 to r27c. (#6432)
Glean
- Updated to v61.2.0 (#6410)
v132.0
v131.0
What's Changed
Glean
- Updated to v60.5.0 (#6339)
Nimbus CLI
- Support for Firefox for Android and Focus v126+ (via gecko-dev).
Fixed a bug where manifests for Firefox for Android v110 were not available, due
to being fetched from the wrong repository
(#6347)
Full Changelog: v130.0...v131.0
v130.0
✨ What's New ✨
Suggest
- Added support for Fakespot suggestions.
- Added support for recording metrics
- Removed the
SuggestIngestionConstraints::max_suggestions
field. No consumers were using this.
🦊 What's Changed 🦊
Android
- Upgraded NDK from r26c to r27. (#6305)
Glean
- Updated to v60.4.0 (#6320)
Nimbus FML
- The output order should be deterministic again (#6283)
Full Changelog: v129.0...v130.0
v129.0
⚠️ Breaking Changes ⚠️
Suggest
- Removed the deprecated
remote_settings_config
method. No consumers were using this.
✨ What's New ✨
Glean
- Updated to v60.3.0 (#6279)
Suggest
- Added the
SuggestStoreBuilder.remote_settings_bucket_name
as a way to specify the bucket name.