{
  "commits": {
    "1a2dca6a09fc": {
      "author": "Serban Stanca",
      "avatar": "https://www.gravatar.com/avatar/977312186062f329a7e4302ab972ae7b?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "This reverts commit 8132b55297b94bc792249e46e5cce47a8214092f.\n\nThis reverts commit e409460d0c7fa7ee2a2db32cff78a10ee6438b92.",
      "email": "sstanca@mozilla.com",
      "hash": "1a2dca6a09fc5c6bfd2c4817b73ce7acb61513c1",
      "subject": "Revert \"Bug 2064194 part 6 - Say what an underscore means in the tabbrowser. r=tabbrowser-reviewers,jsudiaman\" for causig mass failures."
    },
    "24e7e7d9427f": {
      "author": "Serban Stanca",
      "avatar": "https://www.gravatar.com/avatar/977312186062f329a7e4302ab972ae7b?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "This reverts commit 66c33e3582b44059ecfe89360acf9c2d442fd2f7.\n\nThis reverts commit 37da1a1f02c822f149c59164912bcb7970224aa1.\n\nThis reverts commit c1fee0f90153108b6c3646c37f371ee5b420de84.\n\nThis reverts commit d8126c141566ca9659e49e15264976612373f31e.",
      "email": "sstanca@mozilla.com",
      "hash": "24e7e7d9427ff16112c80ec1d63cdb3e13cef65a",
      "subject": "Revert \"Bug 2061058, Bug 2049039 - Replace activate Boolean with a data class r=android-reviewers,Roger,sfamisa\" for causing fenix-debug failures."
    },
    "2cf08bc2fb02": {
      "author": "rperta",
      "avatar": "https://www.gravatar.com/avatar/95787d55656c719bd5b0c6754f5449a3?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "This reverts commit e58cc33eaf2db0fb8f57c1d147d07ce0e7812f86.",
      "email": "rperta@mozilla.com",
      "hash": "2cf08bc2fb025b884e71a4a3c81985479efdded9",
      "subject": "Revert \"Bug 2065649 - Build option list by deeply traversing select subtree r=emilio,firefox-style-system-reviewers,layout-reviewers\" for causing wpt failures"
    },
    "42345bb294f8": {
      "author": "Emilio Cobos Álvarez",
      "avatar": "https://www.gravatar.com/avatar/1d91d22a4892f16f744b31fd4286144e?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "Don't restrict values for now.\n\nPull request: https://github.com/mozilla-firefox/firefox/pull/337",
      "email": "emilio@crisal.io",
      "hash": "42345bb294f868c391e5db6d2588457d807aeac0",
      "subject": "Bug 2064471 - Make -moz-appearance a legacy shorthand of appearance. r#style r=dshin"
    },
    "5b17b585c394": {
      "author": "Serban Stanca",
      "avatar": "https://www.gravatar.com/avatar/977312186062f329a7e4302ab972ae7b?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "This reverts commit 5e6464a1784f42e1335d910049c3dbba57001bcb.",
      "email": "sstanca@mozilla.com",
      "hash": "5b17b585c394a469267f65da3f9794162dd9c5a5",
      "subject": "Revert \"Bug 2030831 - Relax `a-s` version ping on try r=nalexander,android-reviewers\" for causing lint failures."
    },
    "633327a1873b": {
      "author": "Serban Stanca",
      "avatar": "https://www.gravatar.com/avatar/977312186062f329a7e4302ab972ae7b?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "This reverts commit b1c11649010b66c9157551332c5dd3c182a3c404.",
      "email": "sstanca@mozilla.com",
      "hash": "633327a1873bc0dbde089b28f9c17e9cb2fe803e",
      "subject": "Revert \"Bug 2065236 - Remove EmbedderInnerWindowId field from BrowsingContext, r=dom-core-reviewers,smaug\" for causing mochitests failures in browser_multiselect_tabs_unload.js."
    },
    "71e4cb606601": {
      "author": "Serban Stanca",
      "avatar": "https://www.gravatar.com/avatar/977312186062f329a7e4302ab972ae7b?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "This reverts commit 5e6464a1784f42e1335d910049c3dbba57001bcb.",
      "email": "sstanca@mozilla.com",
      "hash": "71e4cb606601abae7f44499e35b5a054713d133b",
      "subject": "Revert \"Bug 2030831 - Relax `a-s` version ping on try r=nalexander,android-reviewers\" for causing lint failures."
    },
    "756ec13a4237": {
      "author": "rperta",
      "avatar": "https://www.gravatar.com/avatar/95787d55656c719bd5b0c6754f5449a3?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "This reverts commit 8d06e19717ccb451a4ec25f07a951b8afbe716ab.",
      "email": "rperta@mozilla.com",
      "hash": "756ec13a42375920c345a97b2f5bf2d743b8e2a3",
      "subject": "Revert \"Bug 2065022: Fix incorrect platform check in LaunchOnLogin code. r=hsohaney,firefox-desktop-core-reviewers ,mconley\" for causing bc failures at browser_startup.js"
    },
    "9200f19daa8e": {
      "author": "Serban Stanca",
      "avatar": "https://www.gravatar.com/avatar/977312186062f329a7e4302ab972ae7b?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "This reverts commit 9e286ada72d20f5a25a11ca9e99d9f6dfafd8454.\n\nThis reverts commit 36de50e088f563e77e9cb5de735ea01bc373e9aa.",
      "email": "sstanca@mozilla.com",
      "hash": "9200f19daa8eac3fc1558f224f9eb0d504d8b1da",
      "subject": "Revert \"Bug 2062896 - Stop exposing the search mode switcher as a combobox wrapping a button. r=Jamie,daleharvey\" for causing mochitests failures in browser_searchbar_new.js."
    },
    "961c083faa64": {
      "author": "pstanciu",
      "avatar": "https://www.gravatar.com/avatar/cd361de239f63fe1459e93f742450a3d?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "This reverts commit a00651a7905c9bc6c799c82353cc5ca8e49b283c.\n\nRevert \"Bug 2055613 - Prepare telemetry/addons tests for legacy environment addons removal r=chutten,robwu\"\n\nThis reverts commit 654092cd49be56678404397fb1ea77b86e60f360.",
      "email": "pstanciu@mozilla.com",
      "hash": "961c083faa64dd7412ee0b1713871408f0833b08",
      "subject": "Revert \"Bug 2055613 - Remove activeAddons/theme/activeGMPlugins from the legacy Telemetry environment r=chutten,robwu,urlbar-reviewers,jteow\" for causing xpc failures @ test_provider_markSafe.js"
    },
    "D292594": {
      "author": "Alex Hochheiden",
      "avatar": "https://www.gravatar.com/avatar/d543df9ea6c80e41387222577084eec1?d=identicon\u0026s=64",
      "cl": "D292594",
      "clUrl": "https://phabricator.services.mozilla.com/D292594",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D292594",
      "email": "ahochheiden@mozilla.com",
      "hash": "5e6464a1784f42e1335d910049c3dbba57001bcb",
      "subject": "Bug 2030831 - Relax `a-s` version ping on try r=nalexander,android-reviewers"
    },
    "D311211": {
      "author": "Sammy Khamis",
      "avatar": "https://www.gravatar.com/avatar/8fe753dbe031a3e6a198606619cb5201?d=identicon\u0026s=64",
      "cl": "D311211",
      "clUrl": "https://phabricator.services.mozilla.com/D311211",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D311211",
      "email": "skhamis@mozilla.com",
      "hash": "0254efd8e78b1d64dde56b5e8182619b0d13bbef",
      "subject": "Bug 2053622: about:sync-log UX Refresh r=fluent-reviewers,bolsson,simonf,tschuster,emilio,mstriemer"
    },
    "D311721": {
      "author": "Ryan VanderMeulen",
      "avatar": "https://www.gravatar.com/avatar/51823ded02903fa76c961fe2a3c1318a?d=identicon\u0026s=64",
      "cl": "D311721",
      "clUrl": "https://phabricator.services.mozilla.com/D311721",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D311721",
      "email": "rvandermeulen@mozilla.com",
      "hash": "4ed2f2cfe77d334ae8cb8bb34a8417a2a435a8f1",
      "subject": "Bug 2054370 - Update AFL++ to version v5.02c. r=truber"
    },
    "D314254": {
      "author": "Dale Harvey",
      "avatar": "https://www.gravatar.com/avatar/030451d8cfc268d666bae9a7fe8d10ec?d=identicon\u0026s=64",
      "cl": "D314254",
      "clUrl": "https://phabricator.services.mozilla.com/D314254",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D314254",
      "email": "dale@arandomurl.com",
      "hash": "3f18d69dc1a0db011820c71555853e06d53b6f4c",
      "subject": "Bug 2056488 - Show disabled quickactions as disabled. r=daisuke,desktop-theme-reviewers,urlbar-reviewers,Jamie"
    },
    "D314355": {
      "author": "Swarup Ukil",
      "avatar": "https://www.gravatar.com/avatar/90738734b8b0eb5d3747092a43db4fc3?d=identicon\u0026s=64",
      "cl": "D314355",
      "clUrl": "https://phabricator.services.mozilla.com/D314355",
      "description": "nsAttributeTextNode is used by MozLabelContent and MozAltContent, which\nmakes complete removal tough, but overall the node is now leaner.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D314355",
      "email": "sukil@mozilla.com",
      "hash": "911e6275fa7f6bb66bc1318b0b79adb41dbfe582",
      "subject": "Bug 1986641 - Remove the legacy content: attr() path. r=emilio,devtools-reviewers,firefox-style-system-reviewers,layout-reviewers,nchevobbe"
    },
    "D316118": {
      "author": "Arnaud Bienner",
      "avatar": "https://www.gravatar.com/avatar/4ce6cc4210e212c94d690c9c8c5c19bb?d=identicon\u0026s=64",
      "cl": "D316118",
      "clUrl": "https://phabricator.services.mozilla.com/D316118",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D316118",
      "email": "abienner@mozilla.com",
      "hash": "d5df6027070fc947b293232fff28f96c0654c2d8",
      "subject": "Bug 2053492 - Quota manager: add telemetry to investigate further where drift/underflow are coming from. r=dom-storage-reviewers,asuth"
    },
    "D316336": {
      "author": "Andrey Zinovyev",
      "avatar": "https://www.gravatar.com/avatar/a9cb7610ad22d5e1f679429c84ec2683?d=identicon\u0026s=64",
      "cl": "D316336",
      "clUrl": "https://phabricator.services.mozilla.com/D316336",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D316336",
      "email": "azinovyev@mozilla.com",
      "hash": "d1afce6771bcb7ac02d4ed4aade97b86d1e3680b",
      "subject": "Bug 2060611 - Fix background audio playback r=webcompat-reviewers,twisniewski,android-reviewers,beth,jonalmeida,geckoview-reviewers"
    },
    "D316382": {
      "author": "mike a",
      "avatar": "https://www.gravatar.com/avatar/fdb71788c694eea6a9e8a29cddd6e606?d=identicon\u0026s=64",
      "cl": "D316382",
      "clUrl": "https://phabricator.services.mozilla.com/D316382",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D316382",
      "email": "mavduevskiy@mozilla.com",
      "hash": "d8126c141566ca9659e49e15264976612373f31e",
      "subject": "Bug 2049039 - Part 1: Persist ip protection location selection r=android-reviewers,jonalmeida,Roger"
    },
    "D316453": {
      "author": "Omar Gonzalez",
      "avatar": "https://www.gravatar.com/avatar/177d9c601741c3356478bd66495030f9?d=identicon\u0026s=64",
      "cl": "D316453",
      "clUrl": "https://phabricator.services.mozilla.com/D316453",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D316453",
      "email": "s9tpepper@apache.org",
      "hash": "88e7560519099be5bec92c1ac4abe94711894738",
      "subject": "Bug 2058221 - Add Smart Form Fill autocomplete row item to trigger SFF r=desktop-theme-reviewers,credential-management-reviewers,mlucks,fluent-reviewers,flod,kcochrane,dimi,Mardak,mshillabeer"
    },
    "D316540": {
      "author": "yazan",
      "avatar": "https://www.gravatar.com/avatar/245b769556bb6cfddcaf1e7bcf95ef9a?d=identicon\u0026s=64",
      "cl": "D316540",
      "clUrl": "https://phabricator.services.mozilla.com/D316540",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D316540",
      "email": "yalmacki@mozilla.com",
      "hash": "520993a420ef920f7d283a7994886be6cd3baaab",
      "subject": "Bug 2058727 - Guard against nsIURI.host throwing on originalLocation in checkURLMatch. r=omc-reviewers,emcminn"
    },
    "D316945": {
      "author": "Ryan VanderMeulen",
      "avatar": "https://www.gravatar.com/avatar/51823ded02903fa76c961fe2a3c1318a?d=identicon\u0026s=64",
      "cl": "D316945",
      "clUrl": "https://phabricator.services.mozilla.com/D316945",
      "description": "BitmapFactory decodes at full resolution unless it is handed an explicit sample size, so an image\nserved larger than the view it is bound for stays in memory at that larger size.\n\nAdd File.toSampledBitmap and InputStream.toSampledBitmap to support-ktx. They read the image bounds\nfirst and pick the largest power-of-two sample size that still covers the requested target, so the\nresult is never smaller than asked for and callers can scale the rest of the way without visible\nloss. The stream overload has to buffer to read the bounds, so it takes a byte ceiling; prefer the\nfile one where the image is already on disk. Decode the add-on icons fetched from AMO through it,\nwhich also makes explicit that an icon that fails to decode is skipped rather than stored in the\ncache.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316945",
      "email": "rvandermeulen@mozilla.com",
      "hash": "6f1c946abb7a7b421bc8ebf04ee273f1a7c8e507",
      "subject": "Bug 2061502 - Add a subsampling bitmap decode helper and use it for AMO add-on icons r=android-reviewers,jdelorenzo"
    },
    "D316946": {
      "author": "Ryan VanderMeulen",
      "avatar": "https://www.gravatar.com/avatar/51823ded02903fa76c961fe2a3c1318a?d=identicon\u0026s=64",
      "cl": "D316946",
      "clUrl": "https://phabricator.services.mozilla.com/D316946",
      "description": "Identity credential icons arrive as data URIs from a third party provider and are drawn no larger\nthan 32dp, so base64ToBitmap now takes the size its result will be displayed at and subsamples to\nsuit. The decode also moves off the main thread, since it runs while the dialog composes, and the\nsizes handed to it come from the Acorn tokens the icons are drawn with rather than dp literals\nrepeated beside them. Each icon slot is held open while its decode runs so that nothing moves\nonce the bitmap lands.\n\nA data URI can be well formed and still carry a payload that is not base64, which threw out of\nbase64ToBitmap instead of returning null the way its documentation promises. It now returns null,\nso a provider cannot take the dialog down with a malformed icon.\n\nThe bounds of an already-decoded byte array are free to inspect, so this adds a ByteArray overload\nof toSampledBitmap, kept internal to support-ktx since base64ToBitmap is its only caller.\n\nSearch engine icons are left alone. Routing them through AndroidImageDecoder looked like it would\nmake the JPEG and PNG branch consistent with the SVG and ICO ones beside it, but that decoder\nrejects any image whose longest side is more than twice its target, so an icon served at 128px\nwould have been replaced by the generic fallback. Its neighbours do not behave that way: one\nrenders a vector at the requested size and the other picks a frame out of a container. The test\nadded here covers the oversized case that made this visible.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316946",
      "email": "rvandermeulen@mozilla.com",
      "hash": "48b3e2aba2187cca70b608a59c2969b0c9beec73",
      "subject": "Bug 2061502 - Decode identity credential icons at the size they are displayed at r=android-reviewers,jdelorenzo"
    },
    "D316947": {
      "author": "Ryan VanderMeulen",
      "avatar": "https://www.gravatar.com/avatar/51823ded02903fa76c961fe2a3c1318a?d=identicon\u0026s=64",
      "cl": "D316947",
      "clUrl": "https://phabricator.services.mozilla.com/D316947",
      "description": "The account avatar, both wallpaper assets and Google Lens captures were each decoded at full\nresolution and only then scaled down or bound to a much smaller view. Wallpapers are served at one\nresolution for every device and a Lens capture is at the camera's full sensor resolution, so this\nis tens of megabytes for images that are about to be shrunk anyway.\n\nDecode all of them with a sample size derived from the size they are actually used at. Lens reuses\nthe subsampling its remote path already does so both of its inputs behave the same way; the rest go\nthrough the new support-ktx helpers. Thumbnails take their target from the composable that draws\nthem and pass it to the use case, rather than the use case rebuilding it from copies of the\nlayout's numbers, so the decode cannot drift from what reaches the screen.\n\nWhile here, stop the thumbnail load turning a cancellation into a null result: it caught every\nthrowable through runCatching, where the full screen load beside it already rethrows\nCancellationException so callers cannot mistake a cancelled load for a missing wallpaper.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316947",
      "email": "rvandermeulen@mozilla.com",
      "hash": "f656e951c26b45d324c0a89b4505440435302bb6",
      "subject": "Bug 2061502 - Decode Fenix bitmaps at the size they are displayed at r=android-reviewers,jdelorenzo"
    },
    "D316948": {
      "author": "Ryan VanderMeulen",
      "avatar": "https://www.gravatar.com/avatar/51823ded02903fa76c961fe2a3c1318a?d=identicon\u0026s=64",
      "cl": "D316948",
      "clUrl": "https://phabricator.services.mozilla.com/D316948",
      "description": "Saving a QR code to the Downloads folder decoded the cached image into a bitmap and compressed it\nback to PNG. The source is already a PNG the app itself wrote, so the bytes can be copied straight\nthrough: lossless, and with no bitmap allocated at all.\n\nWhile here, tighten up the failure paths. A save that cannot be opened, does not finish, or finds\nnothing to copy now reports failure and leaves nothing behind, where before it could claim success\nor leave a truncated PNG in Downloads. The MediaStore entry is also held back until its bytes are\nwritten, so no other app sees a half written download.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316948",
      "email": "rvandermeulen@mozilla.com",
      "hash": "820020e865c1147308d2bf9bcf3049c512657455",
      "subject": "Bug 2061502 - Copy the QR code bytes when saving rather than re-encoding them r=android-reviewers,jdelorenzo"
    },
    "D316949": {
      "author": "Ryan VanderMeulen",
      "avatar": "https://www.gravatar.com/avatar/51823ded02903fa76c961fe2a3c1318a?d=identicon\u0026s=64",
      "cl": "D316949",
      "clUrl": "https://phabricator.services.mozilla.com/D316949",
      "description": "A bounds pass always returns a null bitmap by contract, reporting the size through the Options\ninstead. decodeDownsampledStream treated that null as \"the stream could not be opened\" and threw,\nso decoding a QR code from a URI failed on every device below API 28, which is the only path that\ndoes not go through ImageDecoder.\n\nKey off the decoded dimensions instead, which stay at zero when the stream really cannot be opened.\n\nThe decode that follows reported a failure to open for both a missing stream and a null bitmap, so\nit now says which of the two happened.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D316949",
      "email": "rvandermeulen@mozilla.com",
      "hash": "cd50073a3b3db620abacba88e20ad0ae15eae01d",
      "subject": "Bug 2061502 - Fix the QR code bounds decode discarding every image on API 26 and 27 r=android-reviewers,tthibaud"
    },
    "D317135": {
      "author": "Rolf Rando",
      "avatar": "https://www.gravatar.com/avatar/cd5950d6cea4249dece18a9b1f5ac0da?d=identicon\u0026s=64",
      "cl": "D317135",
      "clUrl": "https://phabricator.services.mozilla.com/D317135",
      "description": "The 'two head' model is a newer architecture that we released to Nightly a little over a week ago.\n\nIt seems to be performing ok (though there was a telemetry change that landed the same day that has made it harder to check), but it would be good to have an option to turn it off for a/b/ testing.\n\nAlso adding Nimbus config for engine timeout, keeping the same default. -1 can be set to keep the engine running all the time.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D317135",
      "email": "rrando@mozilla.com",
      "hash": "d1744f6b82a720b8647a2887d316a93404d2b05e",
      "subject": "Bug 2061823 - Add config for two head model r=NeilDeakin,perftest-reviewers,credential-management-reviewers,ai-platform-reviewers,nordzilla,sparky"
    },
    "D317144": {
      "author": "mike a",
      "avatar": "https://www.gravatar.com/avatar/fdb71788c694eea6a9e8a29cddd6e606?d=identicon\u0026s=64",
      "cl": "D317144",
      "clUrl": "https://phabricator.services.mozilla.com/D317144",
      "description": "...vpn location is no longer available.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D317144",
      "email": "mavduevskiy@mozilla.com",
      "hash": "c1fee0f90153108b6c3646c37f371ee5b420de84",
      "subject": "Bug 2049039 - Part 2: Show error snackbar when the previously selected r=android-reviewers,android-l10n-reviewers,jonalmeida,Roger,gmalekpour,parker"
    },
    "D317627": {
      "author": "Tom Ritter",
      "avatar": "https://www.gravatar.com/avatar/31e32ecb7309ad47e1ecdd34f4c26529?d=identicon\u0026s=64",
      "cl": "D317627",
      "clUrl": "https://phabricator.services.mozilla.com/D317627",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D317627",
      "email": "tom@ritter.vg",
      "hash": "f6ed93e5c457391c247801abc8acbafa31e5c780",
      "subject": "Bug 1737207: Add documentation describing concerns surrounding global callbacks r=shravanrn"
    },
    "D317632": {
      "author": "Luca Greco",
      "avatar": "https://www.gravatar.com/avatar/cb15f57474d95eb43c5d903ae3fa34ae?d=identicon\u0026s=64",
      "cl": "D317632",
      "clUrl": "https://phabricator.services.mozilla.com/D317632",
      "description": "Removes activeAddons/theme/GMPlugins test coverage from TelemetryEnvironment and\nAddonManager tests, ahead of removing the environment addons properties as part\nof the child revision.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D317632",
      "email": "lgreco@mozilla.com",
      "hash": "654092cd49be56678404397fb1ea77b86e60f360",
      "subject": "Bug 2055613 - Prepare telemetry/addons tests for legacy environment addons removal r=chutten,robwu"
    },
    "D317633": {
      "author": "Luca Greco",
      "avatar": "https://www.gravatar.com/avatar/cb15f57474d95eb43c5d903ae3fa34ae?d=identicon\u0026s=64",
      "cl": "D317633",
      "clUrl": "https://phabricator.services.mozilla.com/D317633",
      "description": "Removes environment.addons along with cleaning up about:telemetry and EnvironmentAddonBuilder from\nlogic that was mainly needed due to the legacy telemetry environment.\n\nAlso updates the docs and and decrements the arewegleanyet Legacy/Glean counters.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D317633",
      "email": "lgreco@mozilla.com",
      "hash": "a00651a7905c9bc6c799c82353cc5ca8e49b283c",
      "subject": "Bug 2055613 - Remove activeAddons/theme/activeGMPlugins from the legacy Telemetry environment r=chutten,robwu,urlbar-reviewers,jteow"
    },
    "D317827": {
      "author": "Caleb Chan",
      "avatar": "https://www.gravatar.com/avatar/2238a75309adf73255119dfc6f497cf3?d=identicon\u0026s=64",
      "cl": "D317827",
      "clUrl": "https://phabricator.services.mozilla.com/D317827",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D317827",
      "email": "cachan@mozilla.com",
      "hash": "6cb11d11503e70c3cf2825842c208b1e9f373e66",
      "subject": "Bug 2061005 - added errorPage source value for serp/sap telemetry impressions. r=Standard8"
    },
    "D317922": {
      "author": "mike a",
      "avatar": "https://www.gravatar.com/avatar/fdb71788c694eea6a9e8a29cddd6e606?d=identicon\u0026s=64",
      "cl": "D317922",
      "clUrl": "https://phabricator.services.mozilla.com/D317922",
      "description": "The previous `activate: Boolean?` did not allow for switching between\nlocations: the `true` flag would result in an activation, but clearing\nonly happened when the proxy reported a change in state from `ready` to\n`active`. In case of a location switch, proxy would not report any new data,\nso there was a need to help the observer (IPProtectionFeature) to\nreact to activation request even if the flag was not cleared.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D317922",
      "email": "mavduevskiy@mozilla.com",
      "hash": "66c33e3582b44059ecfe89360acf9c2d442fd2f7",
      "subject": "Bug 2061058 - Replace activate Boolean with a data class r=android-reviewers,Roger,sfamisa"
    },
    "D318004": {
      "author": "mike a",
      "avatar": "https://www.gravatar.com/avatar/fdb71788c694eea6a9e8a29cddd6e606?d=identicon\u0026s=64",
      "cl": "D318004",
      "clUrl": "https://phabricator.services.mozilla.com/D318004",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D318004",
      "email": "mavduevskiy@mozilla.com",
      "hash": "37da1a1f02c822f149c59164912bcb7970224aa1",
      "subject": "Bug 2049039 - Part 3: Remove cached location code when user logs out r=android-reviewers,sfamisa,gmalekpour"
    },
    "D318108": {
      "author": "Valentin Pollet",
      "avatar": "https://www.gravatar.com/avatar/ec6bbf3c5be00645b45d5aac7ae9923c?d=identicon\u0026s=64",
      "cl": "D318108",
      "clUrl": "https://phabricator.services.mozilla.com/D318108",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D318108",
      "email": "vpollet@mozilla.com",
      "hash": "c2fb3b6e9ead2507f9a0df659216bb6a9b3cf689",
      "subject": "Bug 2062422 - Use best-onnx to replace MLSuggest handrolled fallback mechanism r=nordzilla,urlbar-reviewers,ai-platform-reviewers,Standard8"
    },
    "D318140": {
      "author": "Meg Viar",
      "avatar": "https://www.gravatar.com/avatar/99c3c115911cba94429ff3eb14fbae0a?d=identicon\u0026s=64",
      "cl": "D318140",
      "clUrl": "https://phabricator.services.mozilla.com/D318140",
      "description": "Add new style configurability for aboutwelcome screens to support the new splash screen design (see below, actual asset with be an animation of a fox running from the side of the screen and turning into the logo).\n\n{F77596513}\n\nDifferential Revision: https://phabricator.services.mozilla.com/D318140",
      "email": "lmegviar@gmail.com",
      "hash": "91dfd79ed7529dc9cd4a20a7f549267b778da3a1",
      "subject": "Bug 2060303 - FRO Template Updates to Support New Splash Screen Design r=omc-reviewers,emcminn"
    },
    "D318221": {
      "author": "az",
      "avatar": "https://www.gravatar.com/avatar/788a42b35c139431ccaf9575c6626a93?d=identicon\u0026s=64",
      "cl": "D318221",
      "clUrl": "https://phabricator.services.mozilla.com/D318221",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D318221",
      "email": "azebrowski@mozilla.com",
      "hash": "976bbc9aef179896a65ec7c96007fc36c547d662",
      "subject": "Bug 2056051: Don't cancel the ImageDecoder read request from cycle-collection unlink r=dom-core-reviewers,media-playback-reviewers,smaug,aosmond"
    },
    "D318222": {
      "author": "az",
      "avatar": "https://www.gravatar.com/avatar/788a42b35c139431ccaf9575c6626a93?d=identicon\u0026s=64",
      "cl": "D318222",
      "clUrl": "https://phabricator.services.mozilla.com/D318222",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D318222",
      "email": "azebrowski@mozilla.com",
      "hash": "4abd4a22c56c3945bc5d0d3aab969a05cf5564f0",
      "subject": "Bug 2063064: Restructure ImageDecoderReadRequest teardown to remove its CAN_RUN_SCRIPT_BOUNDARY r=media-playback-reviewers,aosmond,jolin"
    },
    "D318520": {
      "author": "Kalen Lu",
      "avatar": "https://www.gravatar.com/avatar/b5323b1c1a332208ff8ec77c68131471?d=identicon\u0026s=64",
      "cl": "D318520",
      "clUrl": "https://phabricator.services.mozilla.com/D318520",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D318520",
      "email": "kalenblu@icloud.com",
      "hash": "22631af3000c6bd25351c92ae8a8c6c9b80cf7e8",
      "subject": "Bug 2063246 - Restore autocomplete default scrollbar width and trim inline padding. r=desktop-theme-reviewers,jules"
    },
    "D318531": {
      "author": "Valentin Pollet",
      "avatar": "https://www.gravatar.com/avatar/ec6bbf3c5be00645b45d5aac7ae9923c?d=identicon\u0026s=64",
      "cl": "D318531",
      "clUrl": "https://phabricator.services.mozilla.com/D318531",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D318531",
      "email": "vpollet@mozilla.com",
      "hash": "f4bb3859add0de1304f14b136a19357fea062e3b",
      "subject": "Bug 2063024 - Add a onnxruntime native availability telemetry probe r=nordzilla,ai-platform-reviewers"
    },
    "D318646": {
      "author": "James Teh",
      "avatar": "https://www.gravatar.com/avatar/749580f8bd5af77c57367e6c2717e283?d=identicon\u0026s=64",
      "cl": "D318646",
      "clUrl": "https://phabricator.services.mozilla.com/D318646",
      "description": "accessibility.force_disabled=-1 is meant to force enable accessibility, but previously, nothing acted on it centrally.\nGetOrCreateAccService only checked the force disabled case, leaving the force enabled case to platform specific code.\nAside from being hard to reason about, this meant there was different (sometimes broken) behaviour on different platforms.\nWindows was the only platform that proactively started accessibility in nsWindow::Create.\nOn Mac and Linux, the force enabled state allowed accessibility to be enabled where it otherwise wouldn't have been (e.g. no detected client), but it still only activated based on specific platform signals.\nAndroid never read the pref at all.\n\nTo fix this, add a11y::MaybeStartForceEnabled, called once from nsAppRunner.cpp just before the main run loop starts.\nThis only ever runs in the parent process.\nCalling PlatformDisabledState() there unconditionally also ensures the pref-change callback gets registered even when nothing else would have triggered that registration.\n\nThis required an additional fix on Android.\nPreviously, SessionAccessibility::Settings unconditionally shut accessibility down when a session's accessibility was first attached to a view with no assistive technology running.\nWe now prevent that shutdown when force enabled via the pref.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D318646",
      "email": "jteh@mozilla.com",
      "hash": "db7b3eedf872479510d21ab02ef5f603ab47e785",
      "subject": "Bug 2062852 part 1: Centrally handle accessibility.force_disabled=-1 (force enable) for all platforms. r=eeejay"
    },
    "D318647": {
      "author": "James Teh",
      "avatar": "https://www.gravatar.com/avatar/749580f8bd5af77c57367e6c2717e283?d=identicon\u0026s=64",
      "cl": "D318647",
      "clUrl": "https://phabricator.services.mozilla.com/D318647",
      "description": "This is now redundant.\na11y::MaybeStartForceEnabled, called centrally from nsAppRunner.cpp, covers this on every platform including Windows.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D318647",
      "email": "jteh@mozilla.com",
      "hash": "e76da9eb3cfc64edb08e4cb7611ac2dacc57f3f3",
      "subject": "Bug 2062852 part 2: Remove the Windows specific accessibility force enable priming hack. r=eeejay"
    },
    "D318648": {
      "author": "James Teh",
      "avatar": "https://www.gravatar.com/avatar/749580f8bd5af77c57367e6c2717e283?d=identicon\u0026s=64",
      "cl": "D318648",
      "clUrl": "https://phabricator.services.mozilla.com/D318648",
      "description": "PrefChanged already force shuts accessibility down when the pref changes to 1.\nHowever, it previously did nothing on a change to -1, so force enabling required a restart.\nGive MaybeStartForceEnabled an async flag and call it from PrefChanged with that mode when the pref changes to force enabled.\nAsync is needed because this callback runs synchronously wherever the pref is set.\nWe don't want accessibility init happening inside arbitrary code.\nThis also updates the comment describing the pref and adds platform specific tests.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D318648",
      "email": "jteh@mozilla.com",
      "hash": "7c14fb003c14793951307e7a27a84f2579ff8395",
      "subject": "Bug 2062852 part 4: Start accessibility when accessibility.force_disabled changes to -1 at runtime. r=eeejay,geckoview-reviewers,m_kato"
    },
    "D318734": {
      "author": "Yannis Juglaret",
      "avatar": "https://www.gravatar.com/avatar/acf03da5e024541e95fd10efea141450?d=identicon\u0026s=64",
      "cl": "D318734",
      "clUrl": "https://phabricator.services.mozilla.com/D318734",
      "description": "The updater's rollback code currently implicitly assumes that no two actions\never touch the same path. Non-staged complete updates break this assumption by\nmaking us perform a REMOVE (from the precomplete actions) followed by an ADD,\nincluding on firefox.exe. The consequence is that an update failure results in\nfile loss for the affected paths, so an install directory ends up without\nfirefox.exe in particular.\n\nIterating in reverse order during rollback fixes this. AddFile::Finish now runs\nfirst: it removes the file it added, then finds the shared backup slot still\npopulated and restores the original. RemoveFile::Finish then finds the slot\nalready consumed and does nothing, leaving the restored original in place. This\nimplements the common sense idea that we want to first undo what we did last.\n\nThe success path keeps the forward order, because there RemoveDir::Finish is\nwhat actually removes the directories and it must visit children before their\nparents.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D318734",
      "email": "yjuglaret@mozilla.com",
      "hash": "e6e3c256f0b333f44464785d9bd3dfa2b5f33ce0",
      "subject": "Bug 1661556 - Iterate the action list in reverse order on rollback. r=application-update-reviewers,cdupuis"
    },
    "D318735": {
      "author": "Yannis Juglaret",
      "avatar": "https://www.gravatar.com/avatar/acf03da5e024541e95fd10efea141450?d=identicon\u0026s=64",
      "cl": "D318735",
      "clUrl": "https://phabricator.services.mozilla.com/D318735",
      "description": "The new test exercises the path that the previous patch fixes: a non-staged\ncomplete update where the installed precomplete manifest removes files that the\nMAR manifest then adds back.\n\ncheckFilesAfterUpdateFailure verifies that the whole installation is back to\nits original contents. Without the previous patch, the removed-then-added files\nare missing instead of restored and the test fails. The failure is injected\nafter those re-adds have run, by locking 1/10/10text0.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D318735",
      "email": "yjuglaret@mozilla.com",
      "hash": "989a72e7f2053fc7f93e4487e03e177997e62c93",
      "subject": "Bug 1661556 - Test rollback of a failed non-staged complete update. r=application-update-reviewers,cdupuis"
    },
    "D318919": {
      "author": "Timothy Nikkel",
      "avatar": "https://www.gravatar.com/avatar/0646a42110a02dd585f200f270716852?d=identicon\u0026s=64",
      "cl": "D318919",
      "clUrl": "https://phabricator.services.mozilla.com/D318919",
      "description": "The moz.yaml records revision 9108981ca80b, a May 2023 upstream commit, but the\nvendored webauthn.h and README.md match c3ed95fd7603 from September 2025, which\nwas the upstream tip when the manifest was added in bug 1995898. The recorded\nrevision does not correspond to any state of this directory, so re-vendoring at\nit replaces the header with a two year old version.\n\nThe include guard in the vendored header is a local change as well. The tree wide\nsweep in bug 2009953 renamed __WEBAUTHN_H_ to WEBAUTHN_H_ here along with 467\nother files, and there was no patch file to carry it, so re-vendoring restores\nthe reserved identifier and undoes that sweep for this one file. Capture it as\ninclude-guard.patch and add a patches list.\n\nBoth are easy to miss, since nothing checked that vendoring reproduced the tree\nuntil now.\n\nWith this, `./mach vendor dom/webauthn/winwebauthn/moz.yaml -r\nc3ed95fd7603441a0253c55c14e79239cb556a9f --patch-mode check --force` reproduces\nthe committed tree exactly.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D318919",
      "email": "tnikkel@gmail.com",
      "hash": "140d1928b533cecc7f138adf1f7ba1020a7d7464",
      "subject": "Bug 2063873. Make dom/webauthn/winwebauthn/moz.yaml reproduce the vendored header. r=keeler"
    },
    "D318921": {
      "author": "Timothy Nikkel",
      "avatar": "https://www.gravatar.com/avatar/0646a42110a02dd585f200f270716852?d=identicon\u0026s=64",
      "cl": "D318921",
      "clUrl": "https://phabricator.services.mozilla.com/D318921",
      "description": "Vendoring cfworker has not worked since it was set up in bug 1755599, for three reasons,\nall of which are visible only when `./mach vendor` is actually run:\n\nbuild.sh is not executable. moz.yaml runs it as an update-action, and mach vendor execs it\ndirectly, so the run stops with a PermissionError. It has been mode 644 since it landed.\n\n`keep` names json-schema.jsm.patch, while the file in the tree is json-schema.js.patch.\nThere is no `patches:` list here, since build.sh applies the patches itself with the patch\ncommand, so `keep` is the only thing protecting that file and cleaning the vendor directory\ndeletes it. The name has been wrong since it landed too.\n\nThe recorded revision, v1.10.1, is not what is vendored. The release line said\n\"commit @cfworker/dev@1.13.2\", and the committed json-schema.js matches sources from\nthat tag: v1.10.1's dereference.ts passes baseURI.href to new URL() once, where the\n1.13.2 tag does so five times, and the committed bundle has the later form. Point both\nlines at the tag that was really used.\n\nWith all three of the above, plus a fix to let mach npm run in a tree with no objdir (patch in another bug), ./mach vendor third_party/js/cfworker/moz.yaml -r @cfworker/dev@1.13.2 --patch-mode check --force rebuilds json-schema.js through npm, tsc and rollup and reproduces the committed file exactly, so the build is deterministic once it is pointed at the right sources.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D318921",
      "email": "tnikkel@gmail.com",
      "hash": "bda35eb738362649ead26fcb149409dcf7f6c6b2",
      "subject": "Bug 2063875. Make third_party/js/cfworker vendor again. r=mossop"
    },
    "D318923": {
      "author": "Timothy Nikkel",
      "avatar": "https://www.gravatar.com/avatar/0646a42110a02dd585f200f270716852?d=identicon\u0026s=64",
      "cl": "D318923",
      "clUrl": "https://phabricator.services.mozilla.com/D318923",
      "description": "GitHost.upstream_commit hands back what subprocess.check_output gives it, which is bytes,\nwhere the other hosts return str. Those bytes reach moz.yaml, so vendoring a library with\n`source-hosting: git` records a Python bytes repr as its revision:\n\n  revision: b'e75f4eb79165213a02d567940d344f5c2ff1be03'\n\nNothing can resolve that, so the next `mach vendor` run on the manifest stops in\n`git rev-parse` with exit 128. upstream_snapshot called revision.decode() to build the\ntarball path, so the bytes did not break anything else, and only the recorded revision\ncame out wrong.\n\nRead both commands as text and drop the decode, which would fail on a str revision.\n\nmodules/xz-embedded is the only library using this host, and its manifest has the bytes\nrepr in it; a patch in another bug replaces that with the revision this fix writes.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D318923",
      "email": "tnikkel@gmail.com",
      "hash": "943a52f1d868423d590651e8b7fbff112d32bd34",
      "subject": "Bug 2063877. Read git output as text in mach vendor's git host. r=tjr"
    },
    "D319167": {
      "author": "Dão Gottwald",
      "avatar": "https://www.gravatar.com/avatar/45dfe136efbb8e5f89eb0b21775ab195?d=identicon\u0026s=64",
      "cl": "D319167",
      "clUrl": "https://phabricator.services.mozilla.com/D319167",
      "description": "Behavior-neutral: the new attribute is set on the two panel-lists whose anchors carry role=\"combobox\" today, the search mode switcher's and moz-select's.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D319167",
      "email": "dao@mozilla.com",
      "hash": "36de50e088f563e77e9cb5de735ea01bc373e9aa",
      "subject": "Bug 2062896 - Gate panel-list's click-on-mouseup on an explicit attribute instead of the anchor's role. r=jules"
    },
    "D319168": {
      "author": "Dão Gottwald",
      "avatar": "https://www.gravatar.com/avatar/45dfe136efbb8e5f89eb0b21775ab195?d=identicon\u0026s=64",
      "cl": "D319168",
      "clUrl": "https://phabricator.services.mozilla.com/D319168",
      "description": "Removing the role outright, as suggested in bug 2009628 comment 18, leaves the host exposing an unnamed container: every moz-button host produces one, which bug 2064122 tracks.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D319168",
      "email": "dao@mozilla.com",
      "hash": "9e286ada72d20f5a25a11ca9e99d9f6dfafd8454",
      "subject": "Bug 2062896 - Stop exposing the search mode switcher as a combobox wrapping a button. r=Jamie,daleharvey"
    },
    "D319263": {
      "author": "Maile Lucks",
      "avatar": "https://www.gravatar.com/avatar/fb3af5da6f8f1ea9223d3d7223bcbc79?d=identicon\u0026s=64",
      "cl": "D319263",
      "clUrl": "https://phabricator.services.mozilla.com/D319263",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D319263",
      "email": "maile.lucks@gmail.com",
      "hash": "b632c9c7a20b9c9d7a6ede5fc9e490edc2caa5a4",
      "subject": "Bug 2061847 - Hide urlbar on firstrun only r=desktop-theme-reviewers,urlbar-reviewers,dao,pdahiya"
    },
    "D319297": {
      "author": "Kelly Cochrane",
      "avatar": "https://www.gravatar.com/avatar/f989c265f3463d5df9e699d0dca074b0?d=identicon\u0026s=64",
      "cl": "D319297",
      "clUrl": "https://phabricator.services.mozilla.com/D319297",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D319297",
      "email": "kcochrane@mozilla.com",
      "hash": "8e0409728a132acd07d5361adfe388e88f0420ec",
      "subject": "Bug 2063294 - Remove inner window gaps of floating chrome for Nova r=desktop-theme-reviewers,tabbrowser-reviewers,dao,sclements,emilio"
    },
    "D319443": {
      "author": "Gopalarathnam Venkatesan",
      "avatar": "https://www.gravatar.com/avatar/f756192b8138a062f328c2e256b84325?d=identicon\u0026s=64",
      "cl": "D319443",
      "clUrl": "https://phabricator.services.mozilla.com/D319443",
      "description": "I confirmed the pref isn't used anywhere by doing a code search.\nThe build passed.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D319443",
      "email": "gopal@g13n.net",
      "hash": "44e151427db27db6b789e3be5439f0edbcf446de",
      "subject": "Bug 2003172 - Remove unused lightweightThemes.getMoreURL pref r=gregp,emilio"
    },
    "D319628": {
      "author": "Gela",
      "avatar": "https://www.gravatar.com/avatar/45f901b5a098b6fe07dbb371691f68e0?d=identicon\u0026s=64",
      "cl": "D319628",
      "clUrl": "https://phabricator.services.mozilla.com/D319628",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D319628",
      "email": "gmalekpour@mozilla.com",
      "hash": "b216958be2dc9076b38001223a24efd6ad0544c4",
      "subject": "Bug 2053320 - Part 1: Don't tie Nimbus tooling to `HomeActivity` UI r=android-reviewers,nalexander,Roger"
    },
    "D319634": {
      "author": "Gela",
      "avatar": "https://www.gravatar.com/avatar/45f901b5a098b6fe07dbb371691f68e0?d=identicon\u0026s=64",
      "cl": "D319634",
      "clUrl": "https://phabricator.services.mozilla.com/D319634",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D319634",
      "email": "gmalekpour@mozilla.com",
      "hash": "b32d33cd05db02f2add42a560109adc0c0a33467",
      "subject": "Bug 2053320 - Part 2: Remove nimbus tooling initialization from Focus r=android-reviewers,Roger"
    },
    "D319712": {
      "author": "Dão Gottwald",
      "avatar": "https://www.gravatar.com/avatar/45dfe136efbb8e5f89eb0b21775ab195?d=identicon\u0026s=64",
      "cl": "D319712",
      "clUrl": "https://phabricator.services.mozilla.com/D319712",
      "description": "A content realm threw on every result selection, and again on picking an engine in the switcher. The search-mode store already keeps one object per input outside the address bar; only the browser passed to it and compared against came from `gBrowser`.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D319712",
      "email": "dao@mozilla.com",
      "hash": "ef27dd1e637ce24e8228fa738d7fe6113dbb69c3",
      "subject": "Bug 2064279 - Keep per-tab state and the trimmed-prefix derivation to the address bar. r=daleharvey"
    },
    "D319726": {
      "author": "James Teh",
      "avatar": "https://www.gravatar.com/avatar/749580f8bd5af77c57367e6c2717e283?d=identicon\u0026s=64",
      "cl": "D319726",
      "clUrl": "https://phabricator.services.mozilla.com/D319726",
      "description": "atk-bridge caches the AtkObject returned by atk_get_root() exactly once, for the lifetime of its AT-SPI D-Bus connection.\nPreviously, we destroyed and recreated the application root's AtkObject every time accessibility shut down and started up again, leaving atk-bridge's cached pointer stale after the first restart of the accessibility engine.\nThe obvious fix is to call atk_bridge_adaptor_cleanup on shutdown so atk-bridge forgets the stale pointer.\nHowever, this closes and reopens the AT-SPI D-Bus connection.\nThat triggers a lock order inversion inside libdbus: it takes its global bus and bus_datas locks before a connection's own lock when connecting, but a connection's own lock before the bus lock when disconnecting.\nTSAN flagged this as a potential deadlock.\nInstead, keep the application root's AtkObject alive for the life of the process, and only detach and reattach the LocalAccessible it wraps as accessibility shuts down and restarts.\nThis keeps atk-bridge's cached root pointer permanently valid, so we never need to call atk_bridge_adaptor_cleanup, or otherwise touch the D-Bus connection, after the accessibility engine first starts.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D319726",
      "email": "jteh@mozilla.com",
      "hash": "9bbdbfb27a876dbde28d1df12bdc21e91d47a9e8",
      "subject": "Bug 2062852 part 3: Enable ATK to be reinitialised after it is shut down. r=eeejay"
    },
    "D319733": {
      "author": "Dão Gottwald",
      "avatar": "https://www.gravatar.com/avatar/45dfe136efbb8e5f89eb0b21775ab195?d=identicon\u0026s=64",
      "cl": "D319733",
      "clUrl": "https://phabricator.services.mozilla.com/D319733",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D319733",
      "email": "dao@mozilla.com",
      "hash": "3e909f82466e15bd32e0ebc1f646330d1cdf0beb",
      "subject": "Bug 2064159 - Ignore the Tabbrowser.sys.mjs reindent in blame and annotate. r=RyanVM"
    },
    "D319757": {
      "author": "Kelly Cochrane",
      "avatar": "https://www.gravatar.com/avatar/f989c265f3463d5df9e699d0dca074b0?d=identicon\u0026s=64",
      "cl": "D319757",
      "clUrl": "https://phabricator.services.mozilla.com/D319757",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D319757",
      "email": "kcochrane@mozilla.com",
      "hash": "6ebf3f0dfdb427d3b247678e60d788c205bc894f",
      "subject": "Bug 2058900 - Ensure chrome fully hides when in fullscreen mode r=sfoster"
    },
    "D319818": {
      "author": "Vincent Tunru",
      "avatar": "https://www.gravatar.com/avatar/57cea0c271d7c7166f23cb45e607ab20?d=identicon\u0026s=64",
      "cl": "D319818",
      "clUrl": "https://phabricator.services.mozilla.com/D319818",
      "description": "Apparently `onContentBlockingEvent` only gets called when a new category of trackers (e.g. fingerprinters) gets blocked, so if multiple trackers in the same category get blocked, the tracker count in the address bar doesn't get updated anymore.\n\nTo compensate, this patch also manually recomputes the number of blocked trackers on navigation complete, and when the trust panel gets opened, to ensure the two are always aligned.\n\nAlso update browser_trust_panel.js for the new count semantics: test_update now counts the tracker already blocked on page load (1/2/3 instead of 0/1/2), and test_blocker_count_no_stale_overwrite is removed since its single-blocker stubbing no longer matches the new compute (to be re-implemented in a follow-up).\n\nDifferential Revision: https://phabricator.services.mozilla.com/D319818",
      "email": "git@vincenttunru.com",
      "hash": "63e0f328ae1ede50785e1e3bf9e5f7d7d2bf76cb",
      "subject": "Bug 2062876, Bug 2060155 - Update tracker count on page load panel opens. r=desktop-theme-reviewers,dao,daleharvey"
    },
    "D319826": {
      "author": "Johannes Salas Schmidt",
      "avatar": "https://www.gravatar.com/avatar/6793e1db22abe181664726808800b218?d=identicon\u0026s=64",
      "cl": "D319826",
      "clUrl": "https://phabricator.services.mozilla.com/D319826",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D319826",
      "email": "joschmidt@mozilla.com",
      "hash": "eb964476af2c4eb3cc27de2d87266c677a2e1cc5",
      "subject": "Bug 2065593 - restore logins after switching back to json r=dimi,chutten,mtigley,bdk"
    },
    "D319852": {
      "author": "Gabriel Luong",
      "avatar": "https://www.gravatar.com/avatar/8d4b3dd6d3dd0178956876e108d984c6?d=identicon\u0026s=64",
      "cl": "D319852",
      "clUrl": "https://phabricator.services.mozilla.com/D319852",
      "description": "Added 4 color tokens:\n- Surface Container Selected\n- Success Container\n- On Success Container\n- Sheet Outline\n\nFigma: https://www.figma.com/design/MjufE1X5fvkxZ0YneX4kRd/Android-Library--Nova-?node-id=64745-6578\u0026m=dev\n\nDifferential Revision: https://phabricator.services.mozilla.com/D319852",
      "email": "gabriel.luong@gmail.com",
      "hash": "65cda2a532a54e5b991c0dd22831034ff4140538",
      "subject": "Bug 2063931 - Part 1: Add new color tokens for Acorn design system r=android-reviewers,007"
    },
    "D319853": {
      "author": "Gabriel Luong",
      "avatar": "https://www.gravatar.com/avatar/8d4b3dd6d3dd0178956876e108d984c6?d=identicon\u0026s=64",
      "cl": "D319853",
      "clUrl": "https://phabricator.services.mozilla.com/D319853",
      "description": "- Updates the OLED color scheme to match the latest Acorn Design System color spec.\n\nFigma: https://www.figma.com/design/MjufE1X5fvkxZ0YneX4kRd/Android-Library--Nova-?node-id=64745-6578\u0026m=dev\n\nDifferential Revision: https://phabricator.services.mozilla.com/D319853",
      "email": "gabriel.luong@gmail.com",
      "hash": "1603b813060599955ac6cbcf8cc7d9b9c7a5b392",
      "subject": "Bug 2063931 - Part 2: Update OLED color scheme in AcornColors r=android-reviewers,007"
    },
    "D319854": {
      "author": "Gabriel Luong",
      "avatar": "https://www.gravatar.com/avatar/8d4b3dd6d3dd0178956876e108d984c6?d=identicon\u0026s=64",
      "cl": "D319854",
      "clUrl": "https://phabricator.services.mozilla.com/D319854",
      "description": "Changed\n- 1 color token: Gradient Accent Subtle (and stops)\n- 1 primitive alpha color violet-desaturated-90A50 changed to violet-desaturated-90A40\n\nFigma:\nhttps://www.figma.com/design/MjufE1X5fvkxZ0YneX4kRd/Android-Library--Nova-?node-id=64112-20783\u0026m=dev\nhttps://www.figma.com/design/MjufE1X5fvkxZ0YneX4kRd/Android-Library--Nova-?node-id=73969-5133\u0026m=dev\n\nDifferential Revision: https://phabricator.services.mozilla.com/D319854",
      "email": "gabriel.luong@gmail.com",
      "hash": "a1aced42021ef1d2939636d6939a1b5c0fc32a73",
      "subject": "Bug 2063931 - Part 3: Update Gradient Accent Subtle in AcornGradientScheme r=android-reviewers,007"
    },
    "D319924": {
      "author": "nickgrato",
      "avatar": "https://www.gravatar.com/avatar/a7b6ca56863cce809ebb726fa44ef43b?d=identicon\u0026s=64",
      "cl": "D319924",
      "clUrl": "https://phabricator.services.mozilla.com/D319924",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D319924",
      "email": "ngrato@gmail.com",
      "hash": "20dfd8c624c63123d39b31e17efbe165559a5399",
      "subject": "Bug 2064522 - [Monitor Agent][FE] Make read url pills clickable ond page title instead of url in monitor cards r=echa"
    },
    "D320072": {
      "author": "Dão Gottwald",
      "avatar": "https://www.gravatar.com/avatar/45dfe136efbb8e5f89eb0b21775ab195?d=identicon\u0026s=64",
      "cl": "D320072",
      "clUrl": "https://phabricator.services.mozilla.com/D320072",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D320072",
      "email": "dao@mozilla.com",
      "hash": "8132b55297b94bc792249e46e5cce47a8214092f",
      "subject": "Bug 2064194 part 6 - Say what an underscore means in the tabbrowser. r=tabbrowser-reviewers,jsudiaman"
    },
    "D320073": {
      "author": "Dão Gottwald",
      "avatar": "https://www.gravatar.com/avatar/45dfe136efbb8e5f89eb0b21775ab195?d=identicon\u0026s=64",
      "cl": "D320073",
      "clUrl": "https://phabricator.services.mozilla.com/D320073",
      "description": "Only `TabMetrics` has consumers reaching it through `gBrowser`; the rest move to the module's `lazy` object, and the two sibling modules that reached for one import it themselves. Two of the getters were read nowhere at all, one of them shadowed by an identically named entry on `lazy`.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D320073",
      "email": "dao@mozilla.com",
      "hash": "e409460d0c7fa7ee2a2db32cff78a10ee6438b92",
      "subject": "Bug 2064194 part 7 - Keep the tabbrowser's module getters off the instance. r=tabbrowser-reviewers,jsudiaman"
    },
    "D320083": {
      "author": "Masayuki Nakano",
      "avatar": "https://www.gravatar.com/avatar/900caab146bc7a489b3854cf10acf93f?d=identicon\u0026s=64",
      "cl": "D320083",
      "clUrl": "https://phabricator.services.mozilla.com/D320083",
      "description": "The content nodes in a UA shadow is not accessible via Selection API\neven though they are selectable by user's operation (e.g., dragging\ntext of the default `\u003csummary\u003e`). Therefore, `Selection::Modify` should\nnot move caret into UA shadow.\n\nWhen `Selection::Modify` cannot find next or previous line when the\namount is \"line\", it falls back to `PresShell::CompleteMove`. However,\n`PresShell::CompleteMove` allows to move selection into native anonymous\nsubtree even though the selection in them may not be managed by the\ndocument level selection.\n\nSo, `PresShell::CompleteMove` should call\n`nsIFrame::GetExtremeCaretPosition` with\n`nsIFrame::IGNORE_NATIVE_ANONYMOUS_SUBTREE`.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D320083",
      "email": "masayuki@d-toybox.com",
      "hash": "84192a505ed266582d75b83acbbc557e21ced43f",
      "subject": "Bug 2063757 - Make `PresShell::CompleteMove` ignore native anonymous subtrees r=emilio,layout-reviewers"
    },
    "D320131": {
      "author": "Arnaud Bienner",
      "avatar": "https://www.gravatar.com/avatar/4ce6cc4210e212c94d690c9c8c5c19bb?d=identicon\u0026s=64",
      "cl": "D320131",
      "clUrl": "https://phabricator.services.mozilla.com/D320131",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D320131",
      "email": "abienner@mozilla.com",
      "hash": "65c97949918b2c3a9c87f631edbf07e6dba79a33",
      "subject": "Bug 2065160 - Fix CacheSetupAction::OrphanCleanupFailed leading to potentially wrong quota calculations. r=dom-storage-reviewers,dom-worker-reviewers,asuth"
    },
    "D320166": {
      "author": "Ting-Yu Lin",
      "avatar": "https://www.gravatar.com/avatar/ae1ed412b945fef9c52eee2f809a4406?d=identicon\u0026s=64",
      "cl": "D320166",
      "clUrl": "https://phabricator.services.mozilla.com/D320166",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D320166",
      "email": "tlin@mozilla.com",
      "hash": "bd921e6cfecef6f4bd4b8f81a85b72326cd31192",
      "subject": "Bug 2055354 - Implement named-feature(anchor-position-follows-transforms). r=layout-reviewers,firefox-style-system-reviewers,dshin"
    },
    "D320178": {
      "author": "Ting-Yu Lin",
      "avatar": "https://www.gravatar.com/avatar/ae1ed412b945fef9c52eee2f809a4406?d=identicon\u0026s=64",
      "cl": "D320178",
      "clUrl": "https://phabricator.services.mozilla.com/D320178",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D320178",
      "email": "tlin@mozilla.com",
      "hash": "fb9ddcc52de9f550f088bb3bced1193658e50657",
      "subject": "Bug 2042977 - Implement named-feature() function for @supports. r=firefox-style-system-reviewers,layout-reviewers,dshin"
    },
    "D320272": {
      "author": "ahanot",
      "avatar": "https://www.gravatar.com/avatar/b7fccf9de5d5e5ac56c507a336850649?d=identicon\u0026s=64",
      "cl": "D320272",
      "clUrl": "https://phabricator.services.mozilla.com/D320272",
      "description": "Pass a MozAdsCacheConfig when building the MozAdsClient so the component's\nSQLite HTTP response cache is actually used on desktop. The database lives at\nads-client.sqlite in the profile directory; TTL and max size are left to the\ncomponent's own defaults, keeping freshness driven by Cache-Control on the\nMARS response.\n\nNew Tab already caches the same MARS payloads a layer up in PersistentCache,\nand that layer is the outer one that decides whether the ads-client is called\nat all. Stop writing those entries while the ads-client is active. Since a\nmissing entry is already treated as expired, that also stops them being read,\nleaving the ads-client cache as the only cache on this path.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D320272",
      "email": "ahanot@mozilla.com",
      "hash": "2cce7bd157bf2927c0df2c712ec70f0e1c59aee0",
      "subject": "Bug 2065281 - Use the ads-client's SQLite HTTP cache for New Tab ads r=mconley"
    },
    "D320286": {
      "author": "scottdowne",
      "avatar": "https://www.gravatar.com/avatar/778eae8eed52e7a108e29e0df77dc65c?d=identicon\u0026s=64",
      "cl": "D320286",
      "clUrl": "https://phabricator.services.mozilla.com/D320286",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D320286",
      "email": "sdowne@mozilla.com",
      "hash": "7682a4dec4bf0cc39c59ee2809f3ccf3b1a7ac42",
      "subject": "Bug 2061742 - Adding newtab spaces experiment r=fluent-reviewers,ini,jbrown,bolsson"
    },
    "D320313": {
      "author": "David Rubino",
      "avatar": "https://www.gravatar.com/avatar/523c56c2e68a1a3207ced9963a5534e7?d=identicon\u0026s=64",
      "cl": "D320313",
      "clUrl": "https://phabricator.services.mozilla.com/D320313",
      "description": "Infobar button clicks report CLICK_PRIMARY_BUTTON or CLICK_SECONDARY_BUTTON,\nchosen by whether the clicked element carries the `primary` class, and the ping\nitself carries only message_id and event. When a message defines two buttons and\nneither sets `primary`, both clicks produce identical pings and the buttons\ncannot be distinguished in analysis.\n\nSpotlight already sends event_context.source, and\nAboutWelcomeTelemetry.submitGleanPingForPing echoes that key into the existing\nmessaging_system.event_source metric for every messaging-system ping regardless\nof surface, so no new Glean metric and no ping change are needed here.\n\nButton clicks now report event_context.source, using a new optional `id` on the\nbutton config and falling back to button_\u003cindex\u003e so existing messages gain the\ndistinction without recipe changes.\n\nThe DISMISSED event reports the originating event type, so the X button reports\ndismiss_button while a teardown the user did not ask for (a \"disconnected\"\nnotification, e.g. the tab or window closing) is no longer conflated with a\ndeliberate dismissal.\n\nMessagingExperiment.schema.json is regenerated from the template schemas with\nmake-schemas.py to pick up the new button `id` property.\n\nTest coverage:\n- browser_asrouter_infobar.js exercises a message with two non-primary buttons,\n  asserting the index fallback for one and an explicit `id` for the other, plus\n  cases for the dismiss-button and disconnected sources.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D320313",
      "email": "drubino@mozilla.com",
      "hash": "cbec583ed64a8e0aa392e52b0c1f3be1adc0390c",
      "subject": "Bug 2065360 - Record which infobar button was clicked in messaging-system telemetry. r=omc-reviewers,aminomancer"
    },
    "D320325": {
      "author": "Mark Striemer",
      "avatar": "https://www.gravatar.com/avatar/8407f1551cb10122bad1fc181e6177ac?d=identicon\u0026s=64",
      "cl": "D320325",
      "clUrl": "https://phabricator.services.mozilla.com/D320325",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D320325",
      "email": "mstriemer@mozilla.com",
      "hash": "ca2fa08157b38222054294686f17d15fd38ee157",
      "subject": "Bug 1879900 - Nest design tokens output r=emilio,desktop-theme-reviewers,tabbrowser-reviewers,urlbar-reviewers,dao,jules"
    },
    "D320334": {
      "author": "Timothy Nikkel",
      "avatar": "https://www.gravatar.com/avatar/0646a42110a02dd585f200f270716852?d=identicon\u0026s=64",
      "cl": "D320334",
      "clUrl": "https://phabricator.services.mozilla.com/D320334",
      "description": "The sandbox group was seen going over 30 minutes. It has two libraries that vendor from\ngooglesource, which downloads a file at a time, so it is the slowest of the groups by some\nway. Raise the limit in task-defaults so it covers all of them rather than special casing\none.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D320334",
      "email": "tnikkel@gmail.com",
      "hash": "2abf64279c80113f1c6c4d81e8d47a2ee5d70d82",
      "subject": "Bug 2065377. Raise the max-run-time of the vendor verify jobs to 35 minutes. r=taskgraph-reviewers,jcristau"
    },
    "D320369": {
      "author": "Nicolas Chevobbe",
      "avatar": "https://www.gravatar.com/avatar/f942478f2eaeb6cc42142cdd661976a7?d=identicon\u0026s=64",
      "cl": "D320369",
      "clUrl": "https://phabricator.services.mozilla.com/D320369",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D320369",
      "email": "nchevobbe@mozilla.com",
      "hash": "125adcdce53522bc9a07b6b8ee381f698b1a9b9b",
      "subject": "Bug 2054192 - [devtools] Ignore updates for network message which are not in the Message state. r=jdescottes,devtools-reviewers."
    },
    "D320371": {
      "author": "Jens Manuel Stutte",
      "avatar": "https://www.gravatar.com/avatar/9dcff4a8838b41f34d204c2f4cadbcc4?d=identicon\u0026s=64",
      "cl": "D320371",
      "clUrl": "https://phabricator.services.mozilla.com/D320371",
      "description": "Two changes to cut the cost of ShutdownInternal()'s per-handle loop:\n\n1. CacheFileHandle::Log() called nsIFile::GetNativeLeafName() before the LOG()\n   macro, so the string work ran for every handle even when the cache2 log\n   module is disabled. One sampled shutdownhang crash sits exactly there\n   (ShutdownEvent::Run \u003e ShutdownInternal \u003e CacheFileHandle::Log \u003e\n   nsLocalFile::GetNativeLeafName). Bail out early on !LOG_ENABLED(). Fixing it\n   inside Log() rather than at the shutdown call site also covers the other\n   unconditional callers (CloseHandleInternal, DoomFileInternal,\n   DoomFileByKeyInternal). The two other Log() implementations in cache2\n   (CacheIndexEntry, CacheIndexStats) pass everything as LOG() arguments and\n   are already free when the module is off.\n\n2. Once we are past the shutdown I/O lag, MaybeReleaseNSPRHandleInternal()\n   stops closing files, and no index mutation made from here on can reach the\n   disk: WriteIndexToDiskIfNeeded() is already a no-op because mShuttingDown is\n   set, and CacheIndex::Shutdown() - which runs after ShutdownInternal() and is\n   the only caller of WriteLogToDisk() - bails out up front when past the lag.\n   So the CacheIndex::RemoveEntry() calls from this loop are pure waste at that\n   point; skip them for the remaining handles. RemoveEntry() is not just\n   in-memory hashtable work, it also does a DictionaryCache::RemoveDictionaryOMT()\n   main-thread dispatch per call, which the skip avoids too.\n\n   The condition is latched rather than re-tested: sShutdownDemandedTime is set\n   once per session and never reset, so it is monotonic, and latching means we\n   stop reading the clock entirely once it has fired.\n\nHandle bookkeeping is deliberately unchanged - mClosed, MaybeReleaseNSPRHandleInternal()\n(which past the lag only drops our mFD reference and keeps mHandlesByLastUsed\nconsistent) and the mHandles/mSpecialHandles removal all still run, so the\nMOZ_ASSERT(mHandles.HandleCount() == 0) invariant holds.\n\nSkipping RemoveEntry() is safe for the next session: past the lag neither the\nindex nor the journal is written, so the on-disk index stays dirty. The next\nstartup therefore rescans the entries directory and RemoveNonFreshEntries()\ndrops entries with no file on disk - the same cleanup RemoveEntry() would have\ndone. Stale entries encountered before that update completes are handled too\n(OpenFileInternal returns NS_ERROR_NOT_AVAILABLE for OPEN, AddEntry\nreinitializes for CREATE).\n\nNote this does not address the cases where the IO thread is blocked in an\nunrelated cache operation, nor the NtClose() hang inside CloseHandle described\nin comment 0 - CancelSynchronousIo() cannot cancel NtClose.\n\nTesting: no new test. The skip only exists in non-DEBUG builds\n(CacheObserver::IsPastShutdownIOLag() is hardcoded to false under DEBUG) and\nrequires the real shutdown observers to have fired, which the\nshutdownCacheForTesting() harness does not do, so it is not reachable from\nxpcshell. Verified instead on a local opt build: all 64 netwerk/test/unit\ntest_cache2-*.js tests pass, including 39/40/41 which drive a real\nShutdownInternal() and then assert the index recovers across a simulated\nrestart. Re-ran that same suite with the new branch forced permanently on to\nactually exercise the skip - still 64/64. Also confirmed with MOZ_LOG=cache2:5\nthat CacheFileHandle::Log() output is unchanged when the module is enabled\n(leafName still populated).\n\nDifferential Revision: https://phabricator.services.mozilla.com/D320371",
      "email": "jstutte@mozilla.com",
      "hash": "07b1a28c89142e671160d4360083b2172de01d03",
      "subject": "Bug 2065409 - Avoid unnecessary per-handle work in CacheFileIOManager::ShutdownInternal(). r=necko-reviewers,valentin"
    },
    "D320374": {
      "author": "Tiaan Louw",
      "avatar": "https://www.gravatar.com/avatar/8527be9edeb5f331c51aa9f0a8f04798?d=identicon\u0026s=64",
      "cl": "D320374",
      "clUrl": "https://phabricator.services.mozilla.com/D320374",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D320374",
      "email": "tlouw@mozilla.com",
      "hash": "1b1d5fcd40121c4c00877e34c6bcf87541160bb7",
      "subject": "Bug 2065111 - Remove the layout.css.gradient-color-interpolation-method.enabled pref r=layout-reviewers,firefox-style-system-reviewers,emilio"
    },
    "D320408": {
      "author": "yazan",
      "avatar": "https://www.gravatar.com/avatar/245b769556bb6cfddcaf1e7bcf95ef9a?d=identicon\u0026s=64",
      "cl": "D320408",
      "clUrl": "https://phabricator.services.mozilla.com/D320408",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D320408",
      "email": "yalmacki@mozilla.com",
      "hash": "a6c98d48309072962bc3db5ed96359c1173cb4bd",
      "subject": "Bug 2064652 - Scope the Start Menu shortcut to custom icons, and disable them when the taskbar icon can't be overridden. r=mconley,hsohaney,mossop"
    },
    "D320411": {
      "author": "Dão Gottwald",
      "avatar": "https://www.gravatar.com/avatar/45dfe136efbb8e5f89eb0b21775ab195?d=identicon\u0026s=64",
      "cl": "D320411",
      "clUrl": "https://phabricator.services.mozilla.com/D320411",
      "description": "Not `tabIndex` as the bug's summary suggested originally: every element inherits a native `tabIndex` property from `Element`.\n\nThe underscored `_index` stays as the write path, since the tabbrowser sets it from outside the tab's own class. SessionStore's check for a tab that never got a position becomes a read of the getter.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D320411",
      "email": "dao@mozilla.com",
      "hash": "2bb2aff2f3d0c25f729e8ba5683bf4dfe4ad4ecd",
      "subject": "Bug 1837253 - Give tabs a public index property. r=jsudiaman,tabbrowser-reviewers"
    },
    "D320413": {
      "author": "Dão Gottwald",
      "avatar": "https://www.gravatar.com/avatar/45dfe136efbb8e5f89eb0b21775ab195?d=identicon\u0026s=64",
      "cl": "D320413",
      "clUrl": "https://phabricator.services.mozilla.com/D320413",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D320413",
      "email": "dao@mozilla.com",
      "hash": "2e063ee8f9b558a76a1c3d54eca1f9181afcb9cc",
      "subject": "Bug 1837253 - Use the tab's index property in tests. r=jsudiaman,tabbrowser-reviewers"
    },
    "D320414": {
      "author": "Dão Gottwald",
      "avatar": "https://www.gravatar.com/avatar/45dfe136efbb8e5f89eb0b21775ab195?d=identicon\u0026s=64",
      "cl": "D320414",
      "clUrl": "https://phabricator.services.mozilla.com/D320414",
      "description": "Consolidation and a readability fix, not a correctness fix: every site already reads the right value. On saved tab data `index` is the history entry, while on a tab element it is the tab strip position that bug 1837253 makes public; `SessionStore.sys.mjs` handles both kinds of objects, and one of these sites reads it off a variable named `tab` that holds saved data.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D320414",
      "email": "dao@mozilla.com",
      "hash": "01df6235ff1b33b660755bbcde29d1ad1b05072b",
      "subject": "Bug 2065472 - Give SessionStore a helper for the active history entry index. r=sfoster"
    },
    "D320421": {
      "author": "Andrew McCreight",
      "avatar": "https://www.gravatar.com/avatar/0a70c84cd33dba0151fe15f2f8773137?d=identicon\u0026s=64",
      "cl": "D320421",
      "clUrl": "https://phabricator.services.mozilla.com/D320421",
      "description": "Currently, updateAppInfo will see if there's a current factory registered for\napp info, then unregister it using the testing-only CID. Because nobody else is\nusing that CID, this unregister can never succeed unless it was registered by\na previous call to updateAppInfo. This is okay in practice because you can override\na static factory and nobody else in the tests that use this is registering an\napp info factory via another means.\n\nMy patch simplifies this process by tracking whether updateAppInfo has already\nregistered a factory so it only does it once. The factory can stay the same\neven if the app info instance does not because the createInstance method of\nthe factory always uses the current value of currentAppInfo, so it'll be updated\nas the app info changes.\n\nMy goal here is to remove the call to getClassObjectByContractID, which is an odd\nAPI I am trying to remove.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D320421",
      "email": "continuation@gmail.com",
      "hash": "b0e75f3d663a9683dbd704bff330f8c1ae0f1fae",
      "subject": "Bug 2065492 - Only register in updateAppInfo once. r=xpcom-reviewers,nika"
    },
    "D320434": {
      "author": "Jonathan Kew",
      "avatar": "https://www.gravatar.com/avatar/3982a397275d6e1f078a70157c2dcb8a?d=identicon\u0026s=64",
      "cl": "D320434",
      "clUrl": "https://phabricator.services.mozilla.com/D320434",
      "description": "This means we don't need to throw away the cache when any of these attributes changes.\nAlso fixes the missing fields in the ContextState copy-constructor, so that save()\ndoesn't implicitly clear them.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D320434",
      "email": "jkew@mozilla.com",
      "hash": "c7977d99fefd74022dd5714ceac2780cc599e965",
      "subject": "Bug 2064135 - Include more attributes in the offscreen-canvas FontGroupCache key. r=gfx-reviewers,lsalzman"
    },
    "D320482": {
      "author": "Irene Ni",
      "avatar": "https://www.gravatar.com/avatar/2b60d64dcf5a51c040b12db96da3e151?d=identicon\u0026s=64",
      "cl": "D320482",
      "clUrl": "https://phabricator.services.mozilla.com/D320482",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D320482",
      "email": "ini@mozilla.com",
      "hash": "96e23fcb01cb34b74e52df054561a3b5767289ed",
      "subject": "Bug 2065554 - Implement carousel card type. r=fluent-reviewers,thecount,bolsson"
    },
    "D320491": {
      "author": "Markus Stange",
      "avatar": "https://www.gravatar.com/avatar/711e7c6f7c2c62a7bc2eb760585c3daa?d=identicon\u0026s=64",
      "cl": "D320491",
      "clUrl": "https://phabricator.services.mozilla.com/D320491",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D320491",
      "email": "mstange.moz@gmail.com",
      "hash": "052b2a3931af34af38ca07b45dc5e0134e0a9100",
      "subject": "Bug 2065567 - Update samply toolchain revision. r=perftest-reviewers,kshampur"
    },
    "D320506": {
      "author": "Louis-Philippe",
      "avatar": "https://www.gravatar.com/avatar/d5fbd1c69200a2c63b338bab93a0061a?d=identicon\u0026s=64",
      "cl": "D320506",
      "clUrl": "https://phabricator.services.mozilla.com/D320506",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D320506",
      "email": "lpmanette@omnicesoft.com",
      "hash": "3bc03ddb0c39d9b8fdeca4e391e50f4381256e5c",
      "subject": "Bug 2062972 - [Wayland][HDR] SDR videos show flashy/oversaturated colors after restoring a HDR youtube session. r=stransky"
    },
    "D320507": {
      "author": "Kenneth Langga",
      "avatar": "https://www.gravatar.com/avatar/70bee2938e11b9e73da2a130a04dcab5?d=identicon\u0026s=64",
      "cl": "D320507",
      "clUrl": "https://phabricator.services.mozilla.com/D320507",
      "description": "A notification's name identifies its replacement chain, and its id\nrepeats across shows of a same-named notification, so backends cannot\ntell two show requests of the same notification apart. The new countId\nis unique per notification instance within the process, letting\nbackends route asynchronous events correctly after a same-name\nreplacement; the Android double-show case in NotificationParent could\nuse it the same way in the future.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D320507",
      "email": "klangga@gmail.com",
      "hash": "53aae7910a5ab199f5496fb75fec91ce26512e7b",
      "subject": "Bug 2059329 - Give notifications a process-unique countId. r=saschanaz"
    },
    "D320533": {
      "author": "Exploding Joysticks",
      "avatar": "https://www.gravatar.com/avatar/1ba79b33017b89958b6d1fc35256c809?d=identicon\u0026s=64",
      "cl": "D320533",
      "clUrl": "https://phabricator.services.mozilla.com/D320533",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D320533",
      "email": "ExplodingJoysticks@proton.me",
      "hash": "c3f61e6ea05da96bb83cfdb38e521c523ce858a0",
      "subject": "Bug 2061541 - Remove IO_SERVICE_CONTRACTID in layout/tools/reftest/reftest-content.js r=layout-reviewers,dholbert"
    },
    "D320537": {
      "author": "Keith Cirkel",
      "avatar": "https://www.gravatar.com/avatar/87a4065b580b6f1e43858ab49d98c109?d=identicon\u0026s=64",
      "cl": "D320537",
      "clUrl": "https://phabricator.services.mozilla.com/D320537",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D320537",
      "email": "keithamus@users.noreply.github.com",
      "hash": "948b661f33f39fbbceb8b4355ec3506d17ef9629",
      "subject": "Bug 2065539 - Force scoped registries flag for sanitizer custom elements tests r=dom-core-reviewers,smaug"
    },
    "D320570": {
      "author": "DonalMe",
      "avatar": "https://www.gravatar.com/avatar/852ede4463af615eeb140918ced5afd1?d=identicon\u0026s=64",
      "cl": "D320570",
      "clUrl": "https://phabricator.services.mozilla.com/D320570",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D320570",
      "email": "76789979+DonalMe@users.noreply.github.com",
      "hash": "0f3c698cd085e23fbd4d8af65e5640476aa9eb32",
      "subject": "Bug 2065625 - Remove the rollout line from desktop and android release slack message r=releng-reviewers,ahal DONTBUILD"
    },
    "D320582": {
      "author": "iain holmes",
      "avatar": "https://www.gravatar.com/avatar/0fbfa48ae93f2eded6d6ef095ea9211d?d=identicon\u0026s=64",
      "cl": "D320582",
      "clUrl": "https://phabricator.services.mozilla.com/D320582",
      "description": "Correct the platform gate around the check for LaunchOnLogin to support any supported platform, not just Windows. Correct the typo inverting the subsequent check in StartupOSIntegration.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D320582",
      "email": "iholmes@mozilla.com",
      "hash": "8d06e19717ccb451a4ec25f07a951b8afbe716ab",
      "subject": "Bug 2065022: Fix incorrect platform check in LaunchOnLogin code. r=hsohaney,firefox-desktop-core-reviewers ,mconley"
    },
    "D320583": {
      "author": "Kaitlyn",
      "avatar": "https://www.gravatar.com/avatar/b104577de74c77852a93e4741c55b45a?d=identicon\u0026s=64",
      "cl": "D320583",
      "clUrl": "https://phabricator.services.mozilla.com/D320583",
      "description": "The tracker count only shows when both browser.urlbar.trackerCount.featureGate and browser.urlbar.trackerCount.enabled are true. Bug 2065206 disabled both by default. The Experimenter treatment flips only the featureGate (the Nimbus-controlled pref), so with enabled=false the count would still stay hidden until a user manually toggled it in Settings.\n\nDefault enabled to true so the treatment shows the count immediately once the gate is on. featureGate stays false, so the feature remains off for the general population, and enabled remains a plain user pref (not Nimbus-controlled), so users can still toggle it off/on in Settings.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D320583",
      "email": "kandres@mozilla.com",
      "hash": "fc38d20de1be7aefdb0835809be13c7b0555c214",
      "subject": "Bug 2065630 - Enable the tracker count pref by default, but keep the feature gate off. r=credential-management-reviewers,vinilla"
    },
    "D320588": {
      "author": "Keith Cirkel",
      "avatar": "https://www.gravatar.com/avatar/87a4065b580b6f1e43858ab49d98c109?d=identicon\u0026s=64",
      "cl": "D320588",
      "clUrl": "https://phabricator.services.mozilla.com/D320588",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D320588",
      "email": "keithamus@users.noreply.github.com",
      "hash": "e58cc33eaf2db0fb8f57c1d147d07ce0e7812f86",
      "subject": "Bug 2065649 - Build option list by deeply traversing select subtree r=emilio,firefox-style-system-reviewers,layout-reviewers"
    },
    "D320632": {
      "author": "Sebastian Hengst",
      "avatar": "https://www.gravatar.com/avatar/4aaa2a4137aa4762d4bcd28ace9cb367?d=identicon\u0026s=64",
      "cl": "D320632",
      "clUrl": "https://phabricator.services.mozilla.com/D320632",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D320632",
      "email": "aryx.github@gmx-topmail.de",
      "hash": "3c4d9b9b14c7315c479cca4a92a9d44911d13489",
      "subject": "Bug 2065722 - do not schedule clang-tidy-full task automatically."
    },
    "D320641": {
      "author": "Emilio Cobos Álvarez",
      "avatar": "https://www.gravatar.com/avatar/1d91d22a4892f16f744b31fd4286144e?d=identicon\u0026s=64",
      "cl": "D320641",
      "clUrl": "https://phabricator.services.mozilla.com/D320641",
      "description": "This declaration, introduced in bug 1313751, didn't use to apply because\nthe ::before pseudo-element was a block formatting context itself (with\noverflow: hidden), and unicode-bidi is not inherited.\n\nAfter the changes to label rendering in bug 2049182 it applies, but it\napplies to the whole block rather than just the text, causing this\nissue.\n\nThis restores the behavior that we used to ship in 153. Another patch\nincoming with what I think is the desired behavior.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D320641",
      "email": "emilio@crisal.io",
      "hash": "62ca14648d63c80ad45657ffcbe1c619dcd84d54",
      "subject": "Bug 2065199 - Remove declaration that didn't use to apply. r=desktop-theme-reviewers,dao"
    },
    "D320651": {
      "author": "DonalMe",
      "avatar": "https://www.gravatar.com/avatar/852ede4463af615eeb140918ced5afd1?d=identicon\u0026s=64",
      "cl": "D320651",
      "clUrl": "https://phabricator.services.mozilla.com/D320651",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D320651",
      "email": "76789979+DonalMe@users.noreply.github.com",
      "hash": "1287782b5bcb34d5f482075e52b3cad4f9c08f68",
      "subject": "Bug 2065719 - Update android nightly application-services version bump to 2de6bfb571327183d5ac30459737e524c4746501 r=release-managers,RyanVM"
    },
    "daecb98911c5": {
      "author": "rperta",
      "avatar": "https://www.gravatar.com/avatar/95787d55656c719bd5b0c6754f5449a3?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "This reverts commit 4abd4a22c56c3945bc5d0d3aab969a05cf5564f0.\n\nRevert \"Bug 2056051: Don't cancel the ImageDecoder read request from cycle-collection unlink r=dom-core-reviewers,media-playback-reviewers,smaug,aosmond\"\n\nThis reverts commit 976bbc9aef179896a65ec7c96007fc36c547d662.",
      "email": "rperta@mozilla.com",
      "hash": "daecb98911c58fe0ad22d0c70e4c91f960172ea1",
      "subject": "Revert \"Bug 2063064, Bug 2056051: Restructure ImageDecoderReadRequest teardown to remove its CAN_RUN_SCRIPT_BOUNDARY r=media-playback-reviewers,aosmond,jolin\" for causing codecs failures"
    },
    "e6cdc04b27d6": {
      "author": "Emilio Cobos Álvarez",
      "avatar": "https://www.gravatar.com/avatar/1d91d22a4892f16f744b31fd4286144e?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "If the name is lowercase there's no need to atomize twice.\n\nPull request: https://github.com/mozilla-firefox/firefox/pull/347",
      "email": "emilio@crisal.io",
      "hash": "e6cdc04b27d69a22852f763a4d4200456aa58d14",
      "subject": "Bug 2065660 - Remove redundant atomization in attribute selector parsing. r=dshin"
    },
    "ebcc08224f29": {
      "author": "David Shin",
      "avatar": "https://www.gravatar.com/avatar/65d83535f94ada6020fd3ae8b01f78f9?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "Pull request: https://github.com/mozilla-firefox/firefox/pull/339",
      "email": "dshin@mozilla.com",
      "hash": "ebcc08224f296e224ee63074b92405ba45a09f7a",
      "subject": "Bug 2063854: Don't try to add anchor frame by the same name multiple times. r=emilio"
    },
    "f42e5a45c06f": {
      "author": "pstanciu",
      "avatar": "https://www.gravatar.com/avatar/cd361de239f63fe1459e93f742450a3d?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "This reverts commit 3f18d69dc1a0db011820c71555853e06d53b6f4c.",
      "email": "pstanciu@mozilla.com",
      "hash": "f42e5a45c06f7a79c61dda18f85acecd08826b23",
      "subject": "Revert \"Bug 2056488 - Show disabled quickactions as disabled. r=daisuke,desktop-theme-reviewers,urlbar-reviewers,Jamie\" for causing multiple failures"
    },
    "f8c395c128c2": {
      "author": "Serban Stanca",
      "avatar": "https://www.gravatar.com/avatar/977312186062f329a7e4302ab972ae7b?d=identicon\u0026s=64",
      "cl": "",
      "clUrl": "",
      "description": "This reverts commit 75f04a72c569348fad273f816ce016c2d12f9729.",
      "email": "sstanca@mozilla.com",
      "hash": "f8c395c128c2e15d0aa3b5dc8a24369f4cb18a23",
      "subject": "Revert \"Bug 2048382 — update tab mute and close buttons for Nova r=desktop-theme-reviewers,tabbrowser-reviewers,niklas,dao\" for causing mochitests failures in browser_delay_autoplay_silentAudioTrack_media.js."
    }
  },
  "date": "2026-08-22",
  "days": 1,
  "generatedAt": "2026-08-22T22:08:05Z",
  "markdown": "## Highlights\n- **Web Platform** Firefox added `named-feature()` support in `@supports`, giving CSS authors a cleaner way to probe platform capabilities. [Phab D320178](https://phabricator.services.mozilla.com/D320178)\n- **Web Platform** Firefox implemented `named-feature(anchor-position-follows-transforms)`, expanding support for anchor positioning feature detection. [Phab D320166](https://phabricator.services.mozilla.com/D320166)\n- **A11y** Accessibility force-enable is now handled centrally across platforms and can restart at runtime, which should make AT startup and recovery much more reliable. [Phab D318646](https://phabricator.services.mozilla.com/D318646)\n- **Media** Firefox fixed background audio playback on Android, a user-visible webcompat win for media sessions that should keep playing. [Phab D316336](https://phabricator.services.mozilla.com/D316336)\n- **GPU** Wayland HDR video got a fix for flashy and oversaturated SDR playback after restoring an HDR YouTube session. [Phab D320506](https://phabricator.services.mozilla.com/D320506)\n- **Perf** Android bitmap decoding was tightened across QR, credential, and add-on icon paths to decode at display size and avoid wasteful re-encoding. [Phab D316945](https://phabricator.services.mozilla.com/D316945)\n- **UI** The tabbrowser now exposes a public tab `index` property, which simplifies tab code and test logic around ordering. [Phab D320411](https://phabricator.services.mozilla.com/D320411)\n- **Security** Notifications now get a process-unique `countId`, reducing cross-process collision risk in notification bookkeeping. [Phab D320507](https://phabricator.services.mozilla.com/D320507)\n- **DevTools** The Network panel now ignores late updates for messages that are no longer in the Message state, avoiding bad UI state in request logging. [Phab D320369](https://phabricator.services.mozilla.com/D320369)\n\n## What landed by area\n\n### Web Platform and Layout\n- **Web Platform** Firefox added `named-feature()` support in `@supports` for standards-based feature queries. [Phab D320178](https://phabricator.services.mozilla.com/D320178)\n- **Web Platform** Firefox implemented `named-feature(anchor-position-follows-transforms)` for anchor positioning detection. [Phab D320166](https://phabricator.services.mozilla.com/D320166)\n- **Rendering** `select` option list construction now deeply traverses the subtree, improving correctness for more complex markup. [Phab D320588](https://phabricator.services.mozilla.com/D320588)\n- **Rendering** `PresShell::CompleteMove` now ignores native anonymous subtrees, reducing incorrect movement handling in layout internals. [Phab D320083](https://phabricator.services.mozilla.com/D320083)\n- **Rendering** Firefox removed the legacy `content: attr()` path, trimming old behavior from the style system. [Phab D314355](https://phabricator.services.mozilla.com/D314355)\n- **Rendering** Firefox removed the gradient color interpolation method pref, a sign that the codepath has matured past pref gating. [Phab D320374](https://phabricator.services.mozilla.com/D320374)\n- **Rendering** Offscreen canvas font caching now keys on more attributes, which should reduce incorrect font reuse. [Phab D320434](https://phabricator.services.mozilla.com/D320434)\n- **Perf** Attribute selector parsing no longer does redundant atomization, shaving overhead from style parsing. [bug 2065660](https://bugzilla.mozilla.org/show_bug.cgi?id=2065660)\n- **Rendering** Firefox made `-moz-appearance` a legacy shorthand of `appearance`, continuing standards alignment in styling behavior. [bug 2064471](https://bugzilla.mozilla.org/show_bug.cgi?id=2064471)\n- **Rendering** Anchor frame registration now avoids adding the same named anchor frame multiple times. [bug 2063854](https://bugzilla.mozilla.org/show_bug.cgi?id=2063854)\n- **Build** Reftest content code dropped `IO_SERVICE_CONTRACTID`, trimming old plumbing from test infrastructure. [Phab D320533](https://phabricator.services.mozilla.com/D320533)\n- **Web Platform** Sanitizer custom elements tests now force the scoped registries flag, keeping test assumptions aligned with the feature set. [Phab D320537](https://phabricator.services.mozilla.com/D320537)\n\n### Desktop UI, Tabs, and Chrome\n- **UI** The tabbrowser now exposes a public tab `index` property for cleaner tab ordering access. [Phab D320411](https://phabricator.services.mozilla.com/D320411)\n- **Refactor** Tab tests were updated to use the new public tab `index` property. [Phab D320413](https://phabricator.services.mozilla.com/D320413)\n- **Refactor** Tabbrowser module getters are now kept off the instance, reducing per-instance baggage. [Phab D320073](https://phabricator.services.mozilla.com/D320073)\n- **Refactor** Tabbrowser underscore conventions were documented in code for maintainability. [Phab D320072](https://phabricator.services.mozilla.com/D320072)\n- **UI** Firefox stopped exposing the search mode switcher as a combobox wrapping a button, cleaning up semantics in the urlbar UI. [Phab D319168](https://phabricator.services.mozilla.com/D319168)\n- **UI** `panel-list` click-on-mouseup is now gated by an explicit attribute instead of the anchor role. [Phab D319167](https://phabricator.services.mozilla.com/D319167)\n- **UI** Disabled quickactions now render as disabled, improving affordance in the address bar surface. [Phab D314254](https://phabricator.services.mozilla.com/D314254)\n- **UI** Address bar state now keeps per-tab state and trimmed-prefix derivation local to the urlbar. [Phab D319712](https://phabricator.services.mozilla.com/D319712)\n- **UI** Autocomplete restored default scrollbar width and tightened inline padding. [Phab D318520](https://phabricator.services.mozilla.com/D318520)\n- **UI** Firefox now fully hides browser chrome in fullscreen mode. [Phab D319757](https://phabricator.services.mozilla.com/D319757)\n- **UI** Nova floating chrome no longer leaves inner window gaps. [Phab D319297](https://phabricator.services.mozilla.com/D319297)\n- **UI** First-run flow now hides the urlbar only on first run instead of more broadly. [Phab D319263](https://phabricator.services.mozilla.com/D319263)\n- **UI** SessionStore got a helper for the active history entry index, a small but useful API cleanup for session code. [Phab D320414](https://phabricator.services.mozilla.com/D320414)\n- **Refactor** `Tabbrowser.sys.mjs` reindent noise is now ignored in blame and annotate, improving code archaeology. [Phab D319733](https://phabricator.services.mozilla.com/D319733)\n- **UI** Firefox removed an obsolete lightweight theme pref, continuing pref cleanup in browser chrome. [Phab D319443](https://phabricator.services.mozilla.com/D319443)\n- **UI** A declaration that no longer applied was removed from desktop theme code. [Phab D320641](https://phabricator.services.mozilla.com/D320641)\n- **UI** Design token output is now nested, which should make downstream token consumption cleaner. [Phab D320325](https://phabricator.services.mozilla.com/D320325)\n- **UI** Start Menu shortcut customization is now scoped to custom icons and disabled when taskbar icon override is unavailable. [Phab D320408](https://phabricator.services.mozilla.com/D320408)\n- **UI** Launch-on-login platform detection was fixed, addressing wrong platform checks in desktop startup behavior. [Phab D320582](https://phabricator.services.mozilla.com/D320582)\n\n### Android and Mobile\n- **Mobile** Android's Acorn design system gained new color tokens. [Phab D319852](https://phabricator.services.mozilla.com/D319852)\n- **Mobile** Acorn's OLED color scheme was updated. [Phab D319853](https://phabricator.services.mozilla.com/D319853)\n- **Mobile** Acorn's Gradient Accent Subtle token was updated. [Phab D319854](https://phabricator.services.mozilla.com/D319854)\n- **Perf** Android gained a subsampling bitmap decode helper and now uses it for AMO add-on icons. [Phab D316945](https://phabricator.services.mozilla.com/D316945)\n- **Perf** Identity credential icons now decode at the size they are displayed. [Phab D316946](https://phabricator.services.mozilla.com/D316946)\n- **Perf** Fenix bitmaps now decode at display size instead of full size. [Phab D316947](https://phabricator.services.mozilla.com/D316947)\n- **Perf** QR code saves now copy raw bytes instead of re-encoding the image. [Phab D316948](https://phabricator.services.mozilla.com/D316948)\n- **Mobile** Firefox fixed QR bounds decoding that discarded every image on Android 8 and 8.1. [Phab D316949](https://phabricator.services.mozilla.com/D316949)\n- **Media** Firefox fixed background audio playback on Android. [Phab D316336](https://phabricator.services.mozilla.com/D316336)\n- **Mobile** IP protection location selection is now persisted. [Phab D316382](https://phabricator.services.mozilla.com/D316382)\n- **UI** Android now shows an error snackbar when the previously selected IP protection location cannot be used. [Phab D317144](https://phabricator.services.mozilla.com/D317144)\n- **Privacy** Cached location code is now cleared on logout for IP protection. [Phab D318004](https://phabricator.services.mozilla.com/D318004)\n- **Refactor** An Android activate boolean was replaced with a data class, simplifying state handling. [Phab D317922](https://phabricator.services.mozilla.com/D317922)\n- **Build** Focus no longer ties Nimbus tooling initialization to `HomeActivity` UI. [Phab D319628](https://phabricator.services.mozilla.com/D319628)\n- **Build** Focus also removed Nimbus tooling initialization entirely from the product path. [Phab D319634](https://phabricator.services.mozilla.com/D319634)\n- **Build** Android nightly bumped its application-services revision. [Phab D320651](https://phabricator.services.mozilla.com/D320651)\n- **Build** Try version ping rules for Android application-services were relaxed. [Phab D292594](https://phabricator.services.mozilla.com/D292594)\n\n### Accessibility\n- **A11y** Firefox now centrally handles `accessibility.force_disabled=-1` as force-enable on all platforms. [Phab D318646](https://phabricator.services.mozilla.com/D318646)\n- **A11y** The old Windows-only force-enable priming hack was removed. [Phab D318647](https://phabricator.services.mozilla.com/D318647)\n- **A11y** ATK can now be reinitialized after shutdown, improving recovery on Linux accessibility stacks. [Phab D319726](https://phabricator.services.mozilla.com/D319726)\n- **A11y** Accessibility now starts when `accessibility.force_disabled` changes to `-1` at runtime. [Phab D318648](https://phabricator.services.mozilla.com/D318648)\n\n### Media, Graphics, and AI\n- **GPU** Wayland HDR video got a fix for flashy and oversaturated SDR playback after restoring an HDR YouTube session. [Phab D320506](https://phabricator.services.mozilla.com/D320506)\n- **Media** ImageDecoder teardown was restructured to remove a `CAN_RUN_SCRIPT_BOUNDARY`, tightening decoder lifecycle handling. [Phab D318222](https://phabricator.services.mozilla.com/D318222)\n- **Media** ImageDecoder read requests are no longer canceled from cycle-collection unlink. [Phab D318221](https://phabricator.services.mozilla.com/D318221)\n- **Perf** Firefox added config for a two-head model in AI-related plumbing. [Phab D317135](https://phabricator.services.mozilla.com/D317135)\n- **Perf** Firefox added telemetry to detect whether native onnxruntime is available. [Phab D318531](https://phabricator.services.mozilla.com/D318531)\n- **Perf** MLSuggest now uses `best-onnx` instead of a hand-rolled fallback path. [Phab D318108](https://phabricator.services.mozilla.com/D318108)\n\n### Networking, Storage, and Updates\n- **Perf** Cache shutdown now avoids unnecessary per-handle work in `CacheFileIOManager::ShutdownInternal()`. [Phab D320371](https://phabricator.services.mozilla.com/D320371)\n- **Networking** New Tab ads now use the ads-client's SQLite HTTP cache. [Phab D320272](https://phabricator.services.mozilla.com/D320272)\n- **Storage** Quota manager now records telemetry to investigate drift and underflow. [Phab D316118](https://phabricator.services.mozilla.com/D316118)\n- **Storage** Firefox fixed `CacheSetupAction::OrphanCleanupFailed` so quota calculations do not go wrong after orphan cleanup failures. [Phab D320131](https://phabricator.services.mozilla.com/D320131)\n- **Networking** `checkURLMatch` now guards against `nsIURI.host` throwing on `originalLocation`. [Phab D316540](https://phabricator.services.mozilla.com/D316540)\n- **Build** Updater rollback now iterates the action list in reverse order. [Phab D318734](https://phabricator.services.mozilla.com/D318734)\n- **Build** Firefox added a test for rollback of a failed non-staged complete update. [Phab D318735](https://phabricator.services.mozilla.com/D318735)\n- **Refactor** `updateAppInfo` registration now happens only once. [Phab D320421](https://phabricator.services.mozilla.com/D320421)\n\n### DevTools, Telemetry, and Product Surfaces\n- **DevTools** The Network panel now ignores updates for messages that are no longer in the Message state. [Phab D320369](https://phabricator.services.mozilla.com/D320369)\n- **UI** Smart Form Fill got a dedicated autocomplete row item to trigger the flow directly from suggestions. [Phab D316453](https://phabricator.services.mozilla.com/D316453)\n- **UI** New Tab gained a `spaces` experiment. [Phab D320286](https://phabricator.services.mozilla.com/D320286)\n- **UI** Firefox implemented a carousel card type for messaging and product surfaces. [Phab D320482](https://phabricator.services.mozilla.com/D320482)\n- **UI** `about:sync-log` got a UX refresh. [Phab D311211](https://phabricator.services.mozilla.com/D311211)\n- **Privacy** The tracker count pref is now enabled by default, while the feature gate remains off. [Phab D320583](https://phabricator.services.mozilla.com/D320583)\n- **Privacy** Tracker count now updates when the page loads and when the panel opens. [Phab D319818](https://phabricator.services.mozilla.com/D319818)\n- **Telemetry** Search telemetry now records an `errorPage` source value for SERP and SAP impressions. [Phab D317827](https://phabricator.services.mozilla.com/D317827)\n- **Telemetry** Messaging-system telemetry now records which infobar button the user clicked. [Phab D320313](https://phabricator.services.mozilla.com/D320313)\n- **Telemetry** Firefox removed `activeAddons`, `theme`, and `activeGMPlugins` from the legacy Telemetry environment. [Phab D317633](https://phabricator.services.mozilla.com/D317633)\n- **Build** Telemetry add-ons tests were prepared for the legacy environment field removals. [Phab D317632](https://phabricator.services.mozilla.com/D317632)\n- **UI** Firefox Monitor cards now make the page title pill clickable instead of the raw URL pill. [Phab D319924](https://phabricator.services.mozilla.com/D319924)\n- **UI** First-run onboarding templates were updated for the new splash screen design. [Phab D318140](https://phabricator.services.mozilla.com/D318140)\n- **Security** Firefox restored logins after switching back to JSON, fixing a user data recovery path in password storage. [Phab D319826](https://phabricator.services.mozilla.com/D319826)\n\n### Build, Tooling, and Supply Chain\n- **Build** `clang-tidy-full` is no longer scheduled automatically. [Phab D320632](https://phabricator.services.mozilla.com/D320632)\n- **Build** Vendor verify jobs now get up to 35 minutes to finish. [Phab D320334](https://phabricator.services.mozilla.com/D320334)\n- **Build** `mach vendor` now reads git output as text in the git host path, fixing a tooling edge case. [Phab D318923](https://phabricator.services.mozilla.com/D318923)\n- **Build** `third_party/js/cfworker` is vendorable again. [Phab D318921](https://phabricator.services.mozilla.com/D318921)\n- **Build** `dom/webauthn/winwebauthn/moz.yaml` now correctly reproduces its vendored header. [Phab D318919](https://phabricator.services.mozilla.com/D318919)\n- **Security** Firefox updated AFL++ to v5.02c, improving fuzzing coverage with a newer upstream toolchain. [Phab D311721](https://phabricator.services.mozilla.com/D311721)\n- **Perf** Firefox updated the `samply` toolchain revision. [Phab D320491](https://phabricator.services.mozilla.com/D320491)\n- **Build** Release Slack messages no longer include the rollout line for desktop and Android. [Phab D320570](https://phabricator.services.mozilla.com/D320570)\n- **Security** Firefox added documentation on the risks and concerns around global callbacks. [Phab D317627](https://phabricator.services.mozilla.com/D317627)\n\n## Reverts \u0026 Reapplies\n- **Build** Reverted the LaunchOnLogin platform check fix after browser startup failures, then relanded a corrected version later in the day. [bug 2065022](https://bugzilla.mozilla.org/show_bug.cgi?id=2065022)\n- **Web Platform** Reverted deep `select` subtree traversal after WPT failures, so that landing is still shaking out. [bug 2065649](https://bugzilla.mozilla.org/show_bug.cgi?id=2065649)\n- **Media** Reverted ImageDecoder teardown changes after codec failures, despite the original lifecycle cleanup landing. [bug 2063064](https://bugzilla.mozilla.org/show_bug.cgi?id=2063064)\n- **UI** Reverted the search mode switcher accessibility change after mochitest failures in `browser_searchbar_new.js`. [bug 2062896](https://bugzilla.mozilla.org/show_bug.cgi?id=2062896)\n- **UI** Reverted disabled quickactions styling after multiple failures. [bug 2056488](https://bugzilla.mozilla.org/show_bug.cgi?id=2056488)\n- **Refactor** Reverted tabbrowser underscore documentation after mass failures. [bug 2064194](https://bugzilla.mozilla.org/show_bug.cgi?id=2064194)\n- **Mobile** Reverted the Android `activate` data class change after Fenix debug failures. [bug 2061058](https://bugzilla.mozilla.org/show_bug.cgi?id=2061058)\n- **Build** Reverted the relaxed Android application-services version ping on try after lint failures. [bug 2030831](https://bugzilla.mozilla.org/show_bug.cgi?id=2030831)\n- **Telemetry** Reverted legacy Telemetry environment field removal after xpcshell failures in `test_provider_markSafe.js`. [bug 2055613](https://bugzilla.mozilla.org/show_bug.cgi?id=2055613)\n- **UI** Reverted Nova tab mute and close button updates after mochitest failures in media-related tab UI tests. [bug 2048382](https://bugzilla.mozilla.org/show_bug.cgi?id=2048382)\n- **Refactor** Reverted removal of `EmbedderInnerWindowId` from `BrowsingContext` after tab unload mochitest failures. [bug 2065236](https://bugzilla.mozilla.org/show_bug.cgi?id=2065236)",
  "repo": "firefox",
  "repoDisplay": "Firefox",
  "rollGroups": [
    {
      "name": "No",
      "count": 4
    },
    {
      "name": "Merge",
      "count": 1
    }
  ],
  "since": "2026-08-22",
  "totals": {
    "commits": 112,
    "features": 107,
    "rolls": 5
  },
  "until": "2026-08-22"
}