Highlights
- If you were running into any problems last week opening links from other applications, specifically with Firefox being foregrounded but not opening the URL, this should now be fixed in Nightly and Beta (bug 2010535, fixed by Mossop). Please file a bug if you’ve updated your browser and the bug is still happening.
- Dão & Moritz continued their work on the new separate search bar, adding a ‘x’ to clear the input, respecting the browser.search.openintab preference, matching the search history to the legacy bar. This new version of the separate search bar is enabled by default in Nightly.
- Irene Ni enabled uploaded wallpapers to appear in container new tabs by propagating the wallpaper selection into container contexts.
- Mike Conley reduced CPU/battery drain from animated about:newtab backgrounds when the tab isn’t visible by pausing animations when backgrounding the tab.
Friends of the Firefox team
Resolved bugs (excluding employees)
New contributors (🌟 = first patch)
- 🌟 Franccesco fixed a glitch in how the statistics panel displays in the DevTools Network Monitor
- Lorenz A helped get rid of an unused string property in the DevTools Style Editor code
- 🌟 Rocco Jiang helped make the border radius for some of our URL bar UI more consistent
Project Updates
Add-ons / Web Extensions
Addon Manager & about:addons
- Rob Wu investigated and fixed an issue that can prevent langpacks from being staged successfully as part of Firefox version updates (landed in 148, and will be included in a 147 dot release) – Bug 2006489
- Greg Stoll introduced a proper localized stings mapping table for Add-on Gated Site Permission, change needed as part of the work WebSerial DOM API – Bug 1826747
WebExtensions Framework
- Rachel Rusiecki contributed a nice cleanup of the WebExtensions internals by removing the extensions.manifestV3.enabled rollout pref – Bug 1804921
- Emilio investigated and fixed a drag and drop issue hit by WebExtensions action popup pages, regression introduced in Firefox 146 (by Bug 1933181 ) and fixed in Firefox 148 and 147 – Bug 2007274
WebExtension APIs
- Piro (TreeStyleTab extension developer) contributed a fix for browser.tabs.create unexpected rejection hit when openeredTabId is the tab id of a discarded tab – Bug 1762249
- Fix issue related to the extensions event page suspending while downloads.download API call is waiting for user input through the file chooser – Bug 2005953, Bug 2005963
- Fixed issue hit by the tabs API (and TreeStyleTab as a side effect of that) on builds were sync-about-blank is enabled (currently only Nightly builds) – Bug 2004525
- Fixed issue related to data set through browser.session.setTabValue not being preserved when the tab is moved between windows – Bug 2002643
- Fixed issue with declarativeNetRequest initialization at startup when one extension using declarativeNetRequest does not have any static DNR rules dataset declared in their manifest – Bug 2006233
- Arai contributed changes needed to allow declarativeNetRequest roles to apply successfully to cached web requests resources – Bug 1949623
AI Window
- assistant response markdown rendering with prosemirror 2001504
- initial dark theming for ai windows 2003058
- memory generation scheduling 2010143 (not yet generating with inference)
- various fixes to get tool calls and title generation working 2010640 2008658 2010905
- special token handling to hook up custom UIs 2008991
- adding ai window to new ai features about:preferences 2006250
DevTools
- Lorenz A removed unused code in the Style Editor (#2006115)
- Franccesco fixed the overflow of the Netmonitor so the whole Statistics panel is visible (#1984274)
- Bryan Thrall [:bthrall] added a way to re-parse scripts as module, which fixed adding breakpoint on GC-ed ES module files in the Debugger (#1605686)
- Nicolas Chevobbe [:nchevobbe] fixed an issue that would prevent adding breakpoint to very large file (for example some files in Slack) (#2010074)
- Reminder that there’s a limit to the number of arguments to functions calls, which also applies to the spread operator
- /js/src/vm/ArgumentsObject.h#91-96
// Maximum supported value of arguments.length. This bounds the
// maximum number of arguments that can be supplied to a spread call
// or Function.prototype.apply. This value also bounds the number of
// elements parsed in an array initializer. NB: keep this in sync
// with the copy in builtin/SelfHostingDefines.h.
static const unsigned ARGS_LENGTH_MAX = 500 * 1000;
- Julian Descottes [:jdescottes] made the Responsive Design Mode UI to be destroyed when a tab is discarded (#2008708)
WebDriver
- Julian Descottes fixed a bug with the network.getData command which could throw when trying to get a chunked response body.
- Alexandra Borovova updated the reset behavior of the emulation.setGeolocationOverride and the emulation.setScreenOrientationOverride commands to align with the spec changes. With this update, when calling these commands to reset the override, e.g., a browsing context, only this override will be reset, and if there is an override set for a user context related to this browsing context, this override will be applied instead.
- Alexandra Borovova fixed user prompts open and close events to reference the correct context ID in case prompts are being opened from iframes on desktop and Android.
- Alexandra Borovova implemented support for automatic user prompt handling in WebDriver BiDi, which can be configured through capabilities with the session.new command.
- Henrik Skupin updated the WebDriver actions code to correctly calculate the target position for an asynchronous mouse click when a page is displayed with full zoom applied.
- Henrik Skupin improved several WebDriver classic commands to handle implicit and pageLoad timeouts in line with the script timeout, allowing null values to disable the timeouts.
- Henrik Skupin updated the internally vendored version of Puppeteer to v24.35.0.
Lint, Docs and Workflow
- ESLint and Prettier have been updated to the latest versions.
- This included a fix for eslint-plugin-jsdoc check-property-names rule which was raising some false-positives in firefox-main.
- eslint-env comments are being removed as ESLint v9 does not support them (use eslint-file-globals.config.mjs instead). ESLint v10 (currently in rc) will raise errors for them.
- More eslint-plugin-jsdoc rules have been enabled across the whole tree. These are the ones relating to valid-jsdoc. A few remain, but will need work by teams to fix the failures.
- There’s now a linter to check for missing header guards in C++ code.
- The “Black” python formatter has now been replaced by “Ruff”.
New Tab Page
- Linux users with new installs of Firefox were experiencing an issue where newtab was appearing blank (amongst other bugs). This appears to be related to content sandboxing and the XDG base directory support that was recently added for Linux builds. Emilio Cobos Álvarez is working on a fix in this bug.
- In the meantime, we’ve disabled all train-hop XPIs on Beta and Release for Linux builds. They will fallback to the built-in versions of New Tab instead.
- Morgan Reschenberg made the Weather opt-in callout reachable with macOS VoiceOver by correcting focus order and adding an accessible focus target.
- Scott Downe improved Top Sites relevance on newtab by deduping frecency-sorted items against older duplicates while preserving pins.
- Maxx Crawford added experiment logic to reorder the Weather opt-in button group to test clearer primary actions for enrolled users.
Profile Management
- Finn has been working through his onboarding bug list:
- bug 1947638, switching about:preferences to open the profile selector window in a dialog, not a subdialog
- bug 1950247, improve a11y by making headings on the edit profile page actually headings
- bug 2001276, excluding the ignoredSharedPrefs list when creating a new profile
- Mossop also continued making behavior more consistent across the toolkit profile service and the selectable profile service, fixed bug 2004345 – ensuring that, if a toolkit profile has a selectable profile group, we don’t allow that toolkit profile to be deleted from about:profiles. Instead we warn the user.
Search and Navigation
- Address Bar
- Moritz fixed a multi-second jank when dragging large text over tabs or the address bar.
- Dale continued work on minor fixes to the new trust panel and enabled it for release in 149.
- Drew and Daisuke are starting the work on standardizing the UI for the various address bar result types (in-flight: 2010176, 2010177, 2010184) and their result menus (2010168, 2010171, 2010172).
- New Tab Search Bar
- Mike Conley changed this to be a self-contained re-usable component.
- Standard8 cleaned up the messages between parent and content processes after the search bar changes.
- Search Service
- Advance notice that this week we are planning on landing a change to the search service to change it from an XPCOM service to a Javascript singleton. This is part of work to remove the XPCOM interfaces as the service hasn’t been accessed from C++ for a while.
- This will help reduce development overhead of needing to do full builds for interface changes.
- Advance notice that this week we are planning on landing a change to the search service to change it from an XPCOM service to a Javascript singleton. This is part of work to remove the XPCOM interfaces as the service hasn’t been accessed from C++ for a while.
- Other interesting fixes
- The browser.urlbar.switchTabs.searchAllContainers preference has been removed.
- ESC key should now not save modified data in the Edit bookmark dialog when accessed from Star Icon.
UX Fundamentals
- We’re disabling the felt-privacy error pages in Firefox 148 while we sort out a few small issues. Going to try to get this in for Firefox 149 with the new error page UI for all errors.