{
  "commits": {
    "D307863": {
      "author": "fmasalha",
      "avatar": "https://www.gravatar.com/avatar/02500fde5854e7c728e2c05a7f23750f?d=identicon\u0026s=64",
      "cl": "D307863",
      "clUrl": "https://phabricator.services.mozilla.com/D307863",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D307863",
      "email": "fmasalha@mozilla.com",
      "hash": "5756e0bf67f1cf5bdeb0598e2bc14f0e765b9f9c",
      "subject": "Bug 2049019 - Added sign-in content for summarization integrity failures r=android-reviewers,android-l10n-reviewers,flod,matt-tighe"
    },
    "D307864": {
      "author": "fmasalha",
      "avatar": "https://www.gravatar.com/avatar/02500fde5854e7c728e2c05a7f23750f?d=identicon\u0026s=64",
      "cl": "D307864",
      "clUrl": "https://phabricator.services.mozilla.com/D307864",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D307864",
      "email": "fmasalha@mozilla.com",
      "hash": "5ab9af37f3f6089b3c5e4b828ba9c68921f88573",
      "subject": "Bug 2049018 - Wired up sign-in and reauthentication for summarization r=android-reviewers,matt-tighe"
    },
    "D312319": {
      "author": "Dão Gottwald",
      "avatar": "https://www.gravatar.com/avatar/45dfe136efbb8e5f89eb0b21775ab195?d=identicon\u0026s=64",
      "cl": "D312319",
      "clUrl": "https://phabricator.services.mozilla.com/D312319",
      "description": "Picking a tab-switch result reached the chrome window and parent-only\nservices directly -- gBrowser.selectedTab, its split view,\nswitchToTabHavingURI, removeTab, the input-history write, and the\nopen-tab-provider unregister on a miss -- none of which a content-process\nurlbar can touch.\n\nRoute the whole action over the controller seam as a fire-and-forget\nUrlbarParentController.switchToTab (mirroring speculativeConnect): it does the\ntabbrowser bookkeeping and both follow-up writes parent-side, so no status\nneeds to cross back. The child keeps the input/view and telemetry work --\nhandleRevert and the engagement event -- and hands over the serializable\ninputs (url, container id, tab group, adopt flag, search string, heuristic\nflag).\n\nBoth UrlbarInput and SmartbarInput are routed through the same parent method,\nso they stay in sync; SmartbarInput's tabs carry no split view, which the\nshared path handles as a no-op. Behavior-neutral for the chrome address bar,\nwhere tab switches happen today. Verified with the browser_switchToTab* and\nbrowser_inputHistory.js tests, and the smartbar suite, under the\nmessage-passing pref both off and on.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D312319",
      "email": "dao@mozilla.com",
      "hash": "ea2930b81b6821c3565ba6d4469f42304bfe996e",
      "subject": "Bug 1624579 - Switch to a tab through the parent controller. r=daleharvey"
    },
    "D312344": {
      "author": "Dão Gottwald",
      "avatar": "https://www.gravatar.com/avatar/45dfe136efbb8e5f89eb0b21775ab195?d=identicon\u0026s=64",
      "cl": "D312344",
      "clUrl": "https://phabricator.services.mozilla.com/D312344",
      "description": "handleNavigation's no-result fallback fetched the heuristic\n(UrlbarUtils.getHeuristicResultFor), recorded the heuristicResultMissing\ncounters, guarded against the browser navigating mid-fetch\n(lastLocationChange), and on failure ran Services.uriFixup -- all reaching\nthe chrome window and parent-only services a content-process urlbar can't\ntouch (getHeuristicResultFor read gBrowser directly; uriFixup throws in\ncontent). It's also not address-bar-only: a searchbar reaches it whenever\nthere's no cached result at Enter.\n\nMove the whole block to UrlbarParentController.resolveFallbackNavigation: it\nbuilds the heuristic query with the current tab's data, runs it (reusing\ngetHeuristicResult), records the counters, captures the navigation epoch, and\non failure runs uriFixup -- then hands the content side only a heuristic\nresult to pick or a fixup URL to load, or nothing when the browser navigated\nin the meanwhile. The content keeps just the pickResult/_loadURL and the\nschemeless-input annotation. Routed over the controller seam like LoadURL\n(direct path synchronous, message path round-trips), and mirrored into\nSmartbarInput. getHeuristicResultFor, now unused, is removed.\n\nBecause that resolution is asynchronous, the content side captures the target\ntab at the commit and passes it through pickResult/_loadURL, so a tab opened\nbefore the load lands can't steal it (the old synchronous path implicitly used\nthe tab current at Enter).\n\nThe tests that drove the old content-side getHeuristicResultFor now target\nthe controller's getHeuristicResult -- stubbed on UrlbarParentController's\nprototype so it covers the parent controller on both transports -- or spy\nresolveFallbackNavigation.\n\nVerified with browser_handleCommand_fallback.js, browser_loadRace.js,\nbrowser_raceWithTabs.js, browser_editAndEnterWithSlowQuery.js, and\nbrowser_heuristic.js under the message-passing pref both off and on.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D312344",
      "email": "dao@mozilla.com",
      "hash": "0d1849b21ed568179fbe8051a1a04e66b3952cb1",
      "subject": "Bug 1624579 - Resolve the heuristic-fallback navigation in the parent controller. r=mak"
    },
    "D312397": {
      "author": "Dão Gottwald",
      "avatar": "https://www.gravatar.com/avatar/45dfe136efbb8e5f89eb0b21775ab195?d=identicon\u0026s=64",
      "cl": "D312397",
      "clUrl": "https://phabricator.services.mozilla.com/D312397",
      "description": "Bounce-event tracking is the last thing holding pickResult to the \u003cbrowser\u003e\nelement. Its per-tab state lived on the input's #browserStates map keyed by the\nelement (a map shared with addressbar-only per-tab state), and it read the browser\nid off a live element -- neither works for a content-process urlbar, which has no\n\u003cbrowser\u003e.\n\nMove the tracking state into the telemetry collectors, keyed by the stable browser\nid, off #browserStates: TelemetryEvent (direct) and UrlbarChildTelemetry (message)\neach keep their own map, and startTrackingBounceEvent / handleBounceEventTrigger /\nrecordBounceEvent take an id. The direct path caches the element while alive so a\ntab-close trigger can still reach Interactions for it, mirroring the message path's\nunchanged. Call sites pass browser.browserId.\n\nBehavior-neutral: the same tab resolves to the same id, so tracking, triggering,\nand recording are unchanged; this unblocks dropping pickResult's browser element\nnext. The bounce test stops poking the now-private tracking state and anchors its\nstubbed interactions to now instead.\n\nVerified with browser_glean_telemetry_bounce.js and browser_enter.js under the\nmessage-passing pref both off and on.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D312397",
      "email": "dao@mozilla.com",
      "hash": "508feb17d7e57dd454114a8f98700078f253a139",
      "subject": "Bug 1624579 - Key urlbar bounce tracking by browser id instead of the browser element. r=daleharvey"
    },
    "D312398": {
      "author": "Dão Gottwald",
      "avatar": "https://www.gravatar.com/avatar/45dfe136efbb8e5f89eb0b21775ab195?d=identicon\u0026s=64",
      "cl": "D312398",
      "clUrl": "https://phabricator.services.mozilla.com/D312398",
      "description": "With bounce tracking now keyed by browser id, the pick/load path no longer needs\nthe \u003cbrowser\u003e element -- the last chrome-window reach that a content urlbar can't\nsatisfy.\n\nReplace the browser element on pickResult and _loadURL with a browserId, and drop\nthe parameter from #pickMenuResult. The chrome address bar captures its selected\ntab's id at the commit (this.window.gBrowser.selectedBrowser) and passes it,\npinning the load; a content-process urlbar has no gBrowser and passes null, so\nUrlbarParentController.loadURL loads the urlbar's own tab, resolved from the\nactor's browsing context, falling back to the selected browser. Behavior-neutral\nfor the address bar. Bounce tracking reads the selected tab's id under the\nthis.window.gBrowser gate, skipped for a content urlbar that has no tab to bounce.\n\nThis also fixes a latent arg-order bug: the canonized-Enter path passed the\nbrowser element into _loadURL's resultDetails slot, so #notifyStartNavigation\nreceived a browser rather than result details; it now receives null, like the\nother callers.\n\nMirrored into SmartbarInput. Behavior-neutral for the chrome address bar and\nsmartbar. Verified with browser_enter.js, browser_canonizeURL.js,\nbrowser_handleCommand_fallback.js, browser_raceWithTabs.js, and\nbrowser_glean_telemetry_bounce.js under the message-passing pref both off and on.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D312398",
      "email": "dao@mozilla.com",
      "hash": "f3aa7e8278bb79ab5f25598f0e0ec157a9d6065b",
      "subject": "Bug 1624579 - Drop the browser element from the urlbar pick/load path. r=daleharvey"
    },
    "D312399": {
      "author": "Dão Gottwald",
      "avatar": "https://www.gravatar.com/avatar/45dfe136efbb8e5f89eb0b21775ab195?d=identicon\u0026s=64",
      "cl": "D312399",
      "clUrl": "https://phabricator.services.mozilla.com/D312399",
      "description": "Recording a search that opens in a new tab needs the new tab's browser. The\ninputs got it by adding a TabOpen listener to gBrowser.tabContainer and reading\nlinkedBrowser -- a chrome-window reach a content urlbar can't make.\n\nMove the listen-and-record into the parent:\nUrlbarParentController.recordSearchInOpenedTab registers the {once} TabOpen\nlistener on its own tabContainer and records against the new tab's browser (the\nload opens the tab right after this call, so the next TabOpen is the search tab).\n_recordSearch takes an inNewTab flag and routes to it or the existing\nrecordSearch, collapsing each caller's TabOpen/else pair to a single call.\n\nBehavior-neutral: the direct path registers the listener in-process against the\nsame gBrowser; the message path ships the search data and registers the listener\nparent-side before the load message opens the tab. Mirrored into SmartbarInput.\n\nVerified with browser_searchTelemetry.js, browser_urlbar_telemetry.js,\nbrowser_oneOffs_keyModifiers.js, and browser_locationBarCommand.js under the\nmessage-passing pref both off and on.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D312399",
      "email": "dao@mozilla.com",
      "hash": "ca3ab8340a0a8ceea025650c1d23df1a75cfd29e",
      "subject": "Bug 1624579 - Route new-tab search recording through the parent controller. r=Standard8"
    },
    "D312735": {
      "author": "Moritz Beier",
      "avatar": "https://www.gravatar.com/avatar/db9378640c16b8cdcfcebed97713987a?d=identicon\u0026s=64",
      "cl": "D312735",
      "clUrl": "https://phabricator.services.mozilla.com/D312735",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D312735",
      "email": "mbeier@mozilla.com",
      "hash": "4c89155a6a0f560e120516200bf0b3a9a573d51f",
      "subject": "Bug 2053759 - Make it possible import UrlbarPrefs into non-chrome content. r=dao,urlbar-reviewers"
    },
    "D312925": {
      "author": "rnvannatta",
      "avatar": "https://www.gravatar.com/avatar/285029424298f4468f2323643d035cb3?d=identicon\u0026s=64",
      "cl": "D312925",
      "clUrl": "https://phabricator.services.mozilla.com/D312925",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D312925",
      "email": "rnvannatta@gmail.com",
      "hash": "d6b3f25c2e04ef448b4a6abb9f0d417626a204ed",
      "subject": "Bug 2052617 - Fix off by one error in YuvStamper::WriteDigit. r=webrtc-reviewers,mjf"
    },
    "D313089": {
      "author": "chloezhouny",
      "avatar": "https://www.gravatar.com/avatar/81576d36003a5543e067abd3d6b66f1d?d=identicon\u0026s=64",
      "cl": "D313089",
      "clUrl": "https://phabricator.services.mozilla.com/D313089",
      "description": "Sidebar: a \"...\" button next to New chat opens a menu that navigates in place from a main view - Chat history and Smart Window settings - to a chat history subview listing recent chats plus a shortcut to all chats.\n\nFullpage: a labeled top-actions row - New chat, Chat history, and More. Chat history opens a dropdown of recent chats and a \"View all chats\" shortcut; More holds Smart Window settings.\n\nRecent chats are tab-specific: selecting one switches to its tab if open, otherwise reopens it in a new tab. \"View all chats\" opens the Chats section of Firefox View.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D313089",
      "email": "chloezhouny@gmail.com",
      "hash": "99b7171a57c5b9f55aa70ea3093bb1a279517f3a",
      "subject": "Bug 2051361 - Add a chat history entry point to the Smart Window assistant. r=fluent-reviewers,desktop-theme-reviewers,gcardieri,dao,bolsson"
    },
    "D313506": {
      "author": "Maxx Crawford",
      "avatar": "https://www.gravatar.com/avatar/362d6fa2232df934b7129870b2726186?d=identicon\u0026s=64",
      "cl": "D313506",
      "clUrl": "https://phabricator.services.mozilla.com/D313506",
      "description": "Surface train-hop state in the about:newtab#devtools admin panel so engineers and QA can inspect it from a running browser\n\nDifferential Revision: https://phabricator.services.mozilla.com/D313506",
      "email": "mcrawford@mozilla.com",
      "hash": "4c201594e8be406786dd33b609429a29d5a10813",
      "subject": "Bug 2056937 - Add a Train Hop section to Discovery Stream Admin r=ini"
    },
    "D313510": {
      "author": "Mikey Gough",
      "avatar": "https://www.gravatar.com/avatar/b8e5420eeb6707d6ee7b7c26cd2276cc?d=identicon\u0026s=64",
      "cl": "D313510",
      "clUrl": "https://phabricator.services.mozilla.com/D313510",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D313510",
      "email": "mikey@hey.com",
      "hash": "79fde0bc89bd846f4bb27b740d252ce14cb39a13",
      "subject": "Bug 2053551 - Remove three unused devtools.debugger.file-search-* preferences r=devtools-reviewers,jdescottes"
    },
    "D313688": {
      "author": "Dão Gottwald",
      "avatar": "https://www.gravatar.com/avatar/45dfe136efbb8e5f89eb0b21775ab195?d=identicon\u0026s=64",
      "cl": "D313688",
      "clUrl": "https://phabricator.services.mozilla.com/D313688",
      "description": "Enter on a tab-switch result switches tabs and records the adaptive-history\nengagement parent-side, so both are async over the actor message path. The test\nasserted the switched tab synchronously right after the key (and, downstream,\nthe updated adaptive ordering on the next query). Await the TabSelect event\nbefore asserting. Test-only; direct path behavior-neutral.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D313688",
      "email": "dao@mozilla.com",
      "hash": "ceb2f42049196104287316dc0d4c2458cd00dd95",
      "subject": "Bug 2051959 - [IPC Urlbar] Phase 6: Green up browser_inputHistory.js on the message path. r=mbeier,urlbar-reviewers"
    },
    "D313689": {
      "author": "Dão Gottwald",
      "avatar": "https://www.gravatar.com/avatar/45dfe136efbb8e5f89eb0b21775ab195?d=identicon\u0026s=64",
      "cl": "D313689",
      "clUrl": "https://phabricator.services.mozilla.com/D313689",
      "description": "On a deferred-Enter load the keyup handler awaits the load then focusBrowser,\nand on success resets the caret to (0,0) to keep the domain visible.\nfocusBrowser round-trips over the actor, so on the message path that reset can\nland after the user has already begun a fresh search in the same input,\ncollapsing its caret; autofill's first-result guard\n(selectionEnd == _lastSearchString.length) then bails and the typed string\nisn't autofilled.\n\nThe load's own search and a newer search are indistinguishable by input state\n(same value, same pageproxystate), so the decision keys on history instead: an\ninput-epoch counter, bumped on each input-driven search and snapshotted on the\ndeferred-Enter, lets the keyup reset the caret only when no fresher search has\nrun since. browser_enter.js's searchOnEnterSoon relies on the reset still\nhappening for the load's own search, which this preserves.\n\nBehavior-neutral on the direct path, where focusBrowser resolves synchronously\nand the reset lands before any new search. Greens up browser_canonize.js on the\nmessage path.\n\nDifferential Revision: https://phabricator.services.mozilla.com/D313689",
      "email": "dao@mozilla.com",
      "hash": "8af91b8c5d5bdbe1d3b99cb3b0f9b7539cd5850c",
      "subject": "Bug 2051959 - [IPC Urlbar] Phase 6: Don't let a deferred-Enter's late caret reset clobber the next search. r=mbeier"
    },
    "D313769": {
      "author": "Moritz Beier",
      "avatar": "https://www.gravatar.com/avatar/db9378640c16b8cdcfcebed97713987a?d=identicon\u0026s=64",
      "cl": "D313769",
      "clUrl": "https://phabricator.services.mozilla.com/D313769",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D313769",
      "email": "mbeier@mozilla.com",
      "hash": "eba2411bb426dd3ae8c902274c6b1b2e802b9386",
      "subject": "Bug 2057227 - Use IPC for the search engine store. r=dao,urlbar-reviewers"
    },
    "D313899": {
      "author": "Ting-Yu Lin",
      "avatar": "https://www.gravatar.com/avatar/ae1ed412b945fef9c52eee2f809a4406?d=identicon\u0026s=64",
      "cl": "D313899",
      "clUrl": "https://phabricator.services.mozilla.com/D313899",
      "description": "This patch adds a new sanity check in absolute containing block for inline as\nabspos containing block. It ensures only the first inline continuation in a\nfragmentainer can contain abspos children, and all the other continuations in\nthe same fragmentainer cannot. The crashtest added in this patch can trigger the\nassertions without the fix in `PrepareAbsoluteFrames()`.\n\nThe fix in `PrepareAbsoluteFrames()` has two parts: the first part after\n`DrainPushedChildList()` is to ensure the above-mentioned invariant that the new\ncheck verifies. The second part is to generalize existing logic, ensuring at\nmost one continuation of an abspos frame can be in the child list. The check for\nthis is at [1].\n\n[1] https://searchfox.org/firefox-main/rev/3b3f727963c10fe58e6e72c15989ad0e35dbf832/layout/generic/AbsoluteContainingBlock.cpp#344-351\n\nDifferential Revision: https://phabricator.services.mozilla.com/D313899",
      "email": "tlin@mozilla.com",
      "hash": "7a70fbf38c87e053350a8f9526bcd30c71d2707f",
      "subject": "Bug 2055303 - Reparent abspos children in non-first inline continuation in a fragmentainer during column balancing. r=layout-reviewers,dshin"
    },
    "D314200": {
      "author": "Sajid Anwar",
      "avatar": "https://www.gravatar.com/avatar/554aa5334d7607ad11128e48fddf84a0?d=identicon\u0026s=64",
      "cl": "D314200",
      "clUrl": "https://phabricator.services.mozilla.com/D314200",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D314200",
      "email": "sajidanwar94@gmail.com",
      "hash": "34ce15fe54f759aedcbf1d73f914f68e080bd880",
      "subject": "Bug 2047345 - Set layout.css.progress-function.enabled for all users. r=firefox-style-system-reviewers,emilio"
    },
    "D314213": {
      "author": "Emilio Cobos Álvarez",
      "avatar": "https://www.gravatar.com/avatar/1d91d22a4892f16f744b31fd4286144e?d=identicon\u0026s=64",
      "cl": "D314213",
      "clUrl": "https://phabricator.services.mozilla.com/D314213",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D314213",
      "email": "emilio@crisal.io",
      "hash": "87f604e7f0756019d0ab6a99237e93adb44820b4",
      "subject": "Bug 2057731 - Add telemetry for the global stylesheet cache not finding the expected stylesheet. r=dholbert,layout-reviewers"
    },
    "D314245": {
      "author": "nirmaladvani",
      "avatar": "https://www.gravatar.com/avatar/a61e6ca34b9dfc93535b51aac017954c?d=identicon\u0026s=64",
      "cl": "D314245",
      "clUrl": "https://phabricator.services.mozilla.com/D314245",
      "description": "Differential Revision: https://phabricator.services.mozilla.com/D314245",
      "email": "nirmaladvani@live.com",
      "hash": "81e9a46c4d774c387ddb3ef0f5204e5f64801374",
      "subject": "Bug 2003181 - Remove unused dom.security.credentialmanagement.chooser.testing.enabled pref r=gregp"
    }
  },
  "date": "2026-07-26",
  "days": 1,
  "generatedAt": "2026-07-26T22:05:35Z",
  "markdown": "## Highlights\n- **UI** Discovery Stream Admin gets a new Train Hop section, expanding the editorial controls behind Firefox's content feed. [Phab D313506](https://phabricator.services.mozilla.com/D313506) [bug 2056937](https://bugzilla.mozilla.org/show_bug.cgi?id=2056937)\n- **Networking** Search engine storage moves behind IPC, a key step in pushing search state out of the content side and tightening process boundaries. [Phab D313769](https://phabricator.services.mozilla.com/D313769) [bug 2057227](https://bugzilla.mozilla.org/show_bug.cgi?id=2057227)\n- **UI** The Smart Window assistant now exposes chat history directly, making the AI surface easier to revisit and continue using. [Phab D313089](https://phabricator.services.mozilla.com/D313089) [bug 2051361](https://bugzilla.mozilla.org/show_bug.cgi?id=2051361)\n- **Web Platform** Firefox flips on CSS progress() for all users, moving another modern CSS function into the default platform surface. [Phab D314200](https://phabricator.services.mozilla.com/D314200) [bug 2047345](https://bugzilla.mozilla.org/show_bug.cgi?id=2047345)\n- **Rendering** Column balancing gets a correctness fix for absolutely positioned children in inline continuations, targeting a nasty layout edge case. [Phab D313899](https://phabricator.services.mozilla.com/D313899) [bug 2055303](https://bugzilla.mozilla.org/show_bug.cgi?id=2055303)\n- **Mobile** Android summarization now wires up sign-in and reauthentication, unblocking authenticated AI flows on mobile. [Phab D307864](https://phabricator.services.mozilla.com/D307864) [bug 2049018](https://bugzilla.mozilla.org/show_bug.cgi?id=2049018)\n- **Mobile** Android also adds explicit sign-in UI for summarization integrity failures, making broken auth states more recoverable. [Phab D307863](https://phabricator.services.mozilla.com/D307863) [bug 2049019](https://bugzilla.mozilla.org/show_bug.cgi?id=2049019)\n- **Perf** Urlbar parent-controller work keeps landing, with navigation, tab switching, bounce tracking, and search recording moved off browser-element plumbing toward a cleaner IPC path. [Phab D312344](https://phabricator.services.mozilla.com/D312344) [bug 1624579](https://bugzilla.mozilla.org/show_bug.cgi?id=1624579)\n- **Media** WebRTC's YuvStamper fixes an off-by-one digit write bug, a small but real correctness fix in media overlay rendering. [Phab D312925](https://phabricator.services.mozilla.com/D312925) [bug 2052617](https://bugzilla.mozilla.org/show_bug.cgi?id=2052617)\n\n## What landed by area\n\n### Urlbar and search architecture\n- **Refactor** Urlbar prefs can now be imported into non-chrome content, loosening a previous boundary for shared search config code. [Phab D312735](https://phabricator.services.mozilla.com/D312735) [bug 2053759](https://bugzilla.mozilla.org/show_bug.cgi?id=2053759)\n- **Refactor** New-tab search recording now routes through the parent controller instead of older direct paths. [Phab D312399](https://phabricator.services.mozilla.com/D312399) [bug 1624579](https://bugzilla.mozilla.org/show_bug.cgi?id=1624579)\n- **Refactor** The urlbar pick/load path drops its dependency on the browser element, simplifying controller ownership. [Phab D312398](https://phabricator.services.mozilla.com/D312398) [bug 1624579](https://bugzilla.mozilla.org/show_bug.cgi?id=1624579)\n- **Refactor** Urlbar bounce tracking is now keyed by browser id instead of the browser element, reducing object coupling. [Phab D312397](https://phabricator.services.mozilla.com/D312397) [bug 1624579](https://bugzilla.mozilla.org/show_bug.cgi?id=1624579)\n- **Perf** Heuristic-fallback navigation resolution moves into the parent controller, continuing the IPC urlbar migration. [Phab D312344](https://phabricator.services.mozilla.com/D312344) [bug 1624579](https://bugzilla.mozilla.org/show_bug.cgi?id=1624579)\n- **UI** Switching to a tab is now handled through the parent controller too, keeping more of the urlbar action path centralized. [Phab D312319](https://phabricator.services.mozilla.com/D312319) [bug 1624579](https://bugzilla.mozilla.org/show_bug.cgi?id=1624579)\n- **Refactor** IPC Urlbar Phase 6 greens up browser_inputHistory.js on the message path, shoring up test coverage for the new architecture. [Phab D313688](https://phabricator.services.mozilla.com/D313688) [bug 2051959](https://bugzilla.mozilla.org/show_bug.cgi?id=2051959)\n- **UI** IPC Urlbar Phase 6 fixes a deferred-Enter race where a late caret reset could clobber the next search. [Phab D313689](https://phabricator.services.mozilla.com/D313689) [bug 2051959](https://bugzilla.mozilla.org/show_bug.cgi?id=2051959)\n\n### Firefox surfaces and product UI\n- **UI** Discovery Stream Admin gets a Train Hop section for managing that feed surface. [Phab D313506](https://phabricator.services.mozilla.com/D313506) [bug 2056937](https://bugzilla.mozilla.org/show_bug.cgi?id=2056937)\n- **UI** The Smart Window assistant adds a chat history entry point, making prior assistant sessions directly reachable. [Phab D313089](https://phabricator.services.mozilla.com/D313089) [bug 2051361](https://bugzilla.mozilla.org/show_bug.cgi?id=2051361)\n\n### Android and AI summarization\n- **Mobile** Summarization on Android now supports sign-in and reauthentication flows. [Phab D307864](https://phabricator.services.mozilla.com/D307864) [bug 2049018](https://bugzilla.mozilla.org/show_bug.cgi?id=2049018)\n- **Mobile** Android adds dedicated sign-in content for summarization integrity failures, improving failure recovery UX. [Phab D307863](https://phabricator.services.mozilla.com/D307863) [bug 2049019](https://bugzilla.mozilla.org/show_bug.cgi?id=2049019)\n\n### Layout and CSS\n- **Web Platform** CSS progress() is now enabled for all users. [Phab D314200](https://phabricator.services.mozilla.com/D314200) [bug 2047345](https://bugzilla.mozilla.org/show_bug.cgi?id=2047345)\n- **Rendering** Layout fixes abspos child reparenting in non-first inline continuations inside fragmentainers during column balancing. [Phab D313899](https://phabricator.services.mozilla.com/D313899) [bug 2055303](https://bugzilla.mozilla.org/show_bug.cgi?id=2055303)\n- **Perf** Firefox now records telemetry when the global stylesheet cache misses an expected stylesheet, giving layout engineers better visibility into cache-path failures. [Phab D314213](https://phabricator.services.mozilla.com/D314213) [bug 2057731](https://bugzilla.mozilla.org/show_bug.cgi?id=2057731)\n\n### Media and WebRTC\n- **Media** YuvStamper::WriteDigit gets an off-by-one fix, tightening digit stamping correctness in WebRTC video paths. [Phab D312925](https://phabricator.services.mozilla.com/D312925) [bug 2052617](https://bugzilla.mozilla.org/show_bug.cgi?id=2052617)\n\n### DevTools and preference cleanup\n- **DevTools** Firefox removes three unused devtools.debugger.file-search-* prefs, trimming dead debugger configuration surface. [Phab D313510](https://phabricator.services.mozilla.com/D313510) [bug 2053551](https://bugzilla.mozilla.org/show_bug.cgi?id=2053551)\n- **Security** An unused credential management chooser testing pref is removed, continuing pref surface cleanup in a security-adjacent area. [Phab D314245](https://phabricator.services.mozilla.com/D314245) [bug 2003181](https://bugzilla.mozilla.org/show_bug.cgi?id=2003181)",
  "repo": "firefox",
  "repoDisplay": "Firefox",
  "rollGroups": [
    {
      "name": "No",
      "count": 5
    }
  ],
  "since": "2026-07-26",
  "totals": {
    "commits": 24,
    "features": 19,
    "rolls": 5
  },
  "until": "2026-07-26"
}