Skip to content

Releases: mozilla/application-services

v136.0

03 Feb 14:45
812e102
Compare
Choose a tag to compare

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 in rc_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; if ensure_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 authenticated
    • authenticate_with_primary_password(primary_password: &str): method for authenticate NSS key store against a user-provided primary password
    • get_or_create_aes256_key(name: &str): retrieve a key by name from the internal NSS key store. If none exists, create one, persist, and return.

Remote Settings

  • Added support of content signatures verification (#6534)

Full Changelog

v135.0

06 Jan 16:00
Compare
Choose a tag to compare

✨ What's New ✨

Nimbus SDK ⛅️🔬🔭

  • Updated getLocaleTag to be publicly accessible (#6510)

🦊 What's Changed 🦊

Glean

Places

  • PlacesConnection::get_visited() no longer considers unvisited-but-bookmarked pages to be visited, matching the behavior of both get_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.

Full Changelog

v134.0

25 Nov 16:23
31c5d2e
Compare
Choose a tag to compare

✨ What's New ✨

Relevancy

  • Added init, select and update methods for Thompson Sampling (multi-armed bandit)

🦊 What's Changed 🦊

Glean

FxA Client

  • Updated the iOS sendToDevice function to return the closeTab 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) and PlacesWriteConnection.noteHistoryMetadataObservation() (iOS)
    now take an optional NoteHistoryMetadataObservationOptions argument. The
    new if_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 new if_page_missing
    option to HistoryMetadataPageMissingBehavior::InsertPage.

Full Changelog

v133.0

28 Oct 14:13
90f7c28
Compare
Choose a tag to compare

⚠️ 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)

Full Changelog

v132.0

30 Sep 14:10
Compare
Choose a tag to compare

🦊 What's Changed 🦊

Glean

  • Updated to v61.1.0 (#6397)

Full Changelog: v131.0...v132.0

v131.0

30 Aug 20:24
2ff33eb
Compare
Choose a tag to compare

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

30 Aug 20:22
b206ca1
Compare
Choose a tag to compare

✨ 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

v129.0

08 Jul 14:03
Compare
Choose a tag to compare

⚠️ 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.

Full Changelog

v128.0.1

08 Jul 13:59
0e4777f
Compare
Choose a tag to compare

What's Changed

Full Changelog: v128.0...v128.0.1

v128.0

10 Jun 14:17
Compare
Choose a tag to compare

🦊 What's Changed 🦊

Glean

  • Updated to v60.1.0 (#6241)

Full Changelog