Developer Tools help developers write and debug websites on Firefox. This newsletter gives an overview of the work we’ve done as part of the Firefox 128 Nightly release cycle.
Firefox being an open source project, we are grateful to get contributions from people outside of Mozilla
- Sebastian Zartner added warnings in the Rules view when properties only applying to replaced elements are used on non-replaced elements (#1583903), and when column-span is used on elements outside of multi-column containers (#1848705)
- Pier Angelo Vendrame made the new request data in the Network Monitor not being persisted in private windows (#1892052)
Want to help? DevTools are written in HTML, CSS and JS so any web developer can contribute! Read how to setup the work environment and check the list of mentored issues
@property
Firefox 128 adds support for the @property
at-rules.
It allows developers to explicitly define their CSS custom properties, allowing for property type checking and constraining, setting default values, and defining whether a custom property can inherit values or not.
https://developer.mozilla.org/en-US/docs/Web/CSS/@property
All registered properties (either via the at-rule or from the CSS.registerProperty
function) are displayed in the Inspector Rules view, in a dedicated @property
section (#1841023).
The registered property information are also displayed in the variable tooltip that is displayed when hovering a CSS variable in the rule view (#1899489). When a registered property is not set, its initial value is used, and the tooltip does use it to show the variable value (#1857526)
One of the main advantage of registered property is to be able to have type checking directly in CSS! Whenever a variable is set and doesn’t match the registered property syntax, it is invalid at computed value time. In such case, a new type of error icon is displayed in the rules view, and its tooltip indicate why the value is invalid and what is the expected syntax (#1866712).
We also added reference to @property
rules in the Style Editor (#1886392), and all registered properties will be displayed in the Rules view var()
autocomplete (#1867595).
Other Inspector updates
On top of registered properties, Firefox 128 also adds support for relative color syntax, which makes it easy to create a new color from an existing one. For example hsl(from red h 10 l)
will create a lightly-saturated, red-ish grey color. The resulting color will be displayed before the color function, like we already do for regular colors.
And since we’re talking color swatches, we also display them for the light-dark()
parameters (#1899106).
The specificity of a CSS rule impacts if the rule declarations will take precedence over other rules matching the same element. This is already indirectly visible in the Inspector, as the rules are displayed from the most to the least specific ones. You can now see the specificity of a rule by hovering its selectors in the Rules view (#977098).
Finally we identify two important bugs in the Inspector:
- Inspecting some elements could cause a browser crash in very specific conditions (#1901233)
- Entering a single quote in a declaration value in the Rules view could break the style of the page (regressed in Firefox 127)
Both issues are now fixed, we apologies for any inconvenience this might have caused.
Debugger
There wasn’t much (visible) activity in the Debugger for this release, but we also addressed a couple issues that could make the Debugger frustrating. A change in Firefox 126 was preventing to load credentials-protected source maps file and we did fix it in 128. There was also a long problem where the Debugger would stay blank on websites with workers using Atomics.wait
(for example Stackblitz). The issue was addressed and everything should run smoothly now.
And that’s it for this months folks, Thank you for reading this and using our tools, see you in a few weeks for a new round of updates 🙂
Full list of fixed bugs in DevTools for the Firefox 128 release:
- Sebastian Zartner [:sebo] [Inactive CSS] Display a warning when properties only applying to replaced elements are used on non-replaced elements (#1583903)
- Sebastian Zartner [:sebo] [Inactive CSS] Display a warning when column-span is used on elements outside of multi-column containers (#1848705)
- Pier Angelo Vendrame The new request data is persisted when done from PBM (#1892052)
- Nazım Can Altınova [:canova][:canaltinova on phabricator] Disable the current active tab view for all users until we have a better one (#1897418)
- Boris Chiou [:boris] InspectorUtils.getCSSStyleRules does not return CSSStartingStyleRule rules nor their children rules (#1893409)
- Florian Quèze [:florian] Allow sampling at 1Hz (#1897772)
- Emilio Cobos Álvarez (:emilio) Create InspectorUtils method to retrieve current color scheme (#1899103)
- Nobody; OK to take it and work on it High Frequency devtools/client/inspector/markup/test/browser_markup_events_toggle.js | single tracking bug (#1899280)
- Manuel Bucher [:manuel] {{ FYI: OOO until 4 August }} Disable test devtools/client/responsive/test/browser/browser_target_blank.js timing out in over http2/http3 (#1901210)
- Brad Werth [:bradwerth] Dev Tools crashes browser when inspecting element with floating number calc() style applied (#1901233)
- Alexandre Poirot [:ochameau] Enable all server side worker targets for the browser toolbox (#1651518)
- Alexandre Poirot [:ochameau] High frequency devtools/client/framework/test/browser_toolbox_toolbar_overflow_button_visibility.js | single tracking bug (#1770282)
- Alexandre Poirot [:ochameau] Intermittent devtools/shared/commands/target/tests/browser_target_command_scope_flag.js | single tracking bug (#1778803)
- Alexandre Poirot [:ochameau] Intermittent devtools/client/debugger/test/mochitest/browser_dbg-integration-reloading-uncompressed-sourcemaps.js | single tracking bug (#1781941)
- Alexandre Poirot [:ochameau] Debugger panel is blank on stackblitz example (#1821250)
- Alexandre Poirot [:ochameau] Intermittent devtools/startup/tests/browser/browser_command_line_urls.js | single tracking bug (#1832824)
- Alexandre Poirot [:ochameau] Intermittent devtools/client/responsive/test/browser/browser_many_toggles.js | single tracking bug (#1874227)
- Alexandre Poirot [:ochameau] Intermittent devtools/client/styleeditor/test/browser_styleeditor_init.js | single tracking bug (#1874711)
- Alexandre Poirot [:ochameau] Create WorkerTargets for Shared Worker from the server codebase (#1883847)
- Alexandre Poirot [:ochameau] Prevent exceptions when inspecting file:// requests, when opening side panels (#1896592)
- Nicolas Chevobbe [:nchevobbe] Show CSS Specificity somewhere around selectors (#977098)
- Nicolas Chevobbe [:nchevobbe] Filters button colors could be better (#1590432)
- Nicolas Chevobbe [:nchevobbe] Hard to see cursor inside empty brackets in developer console (#1674321)
- Nicolas Chevobbe [:nchevobbe] Mark custom property declaration invalid when value does not match registered custom property definition (#1866712)
- Nicolas Chevobbe [:nchevobbe] throw when getPreview expression evaluation has a SyntaxError (#1873150)
- Julian Descottes [:jdescottes] NetworkObserver should create network events earlier (http-on-before-connect) (#1880803)
- Hubert Boma Manilla (:bomsy) Support Column Breakpoints in Codemirror 6 (#1889281)
- Hubert Boma Manilla (:bomsy) Support tooltip previews in codemirror 6 (#1889284)
- Hubert Boma Manilla (:bomsy) Highlight text within the editor in during search codemirror 6 (#1890269)
- Hubert Boma Manilla (:bomsy) Highlight text when paused codemirror 6 (#1891336)
- Nicolas Chevobbe [:nchevobbe] Display @scope rules in the Rules view (#1893593)
- Hubert Boma Manilla (:bomsy) Scroll to function when using “Copy function” on the context menu of the Outline panel (#1894725)
- Julian Descottes [:jdescottes] Performance tab in the toolbox doesn’t stay hidden (#1895434)
- Nicolas Chevobbe [:nchevobbe] Request blocked by ETP is wrongly labeled as “blocked by devtools” (#1895536)
- Nicolas Chevobbe [:nchevobbe] layout glitch in items table (#1896652)
- Nicolas Chevobbe [:nchevobbe] Add matching bracket style in CodeMirror 6 (#1896847)
- Nicolas Chevobbe [:nchevobbe] Harmonize logic for “Blocked by” network request strings (#1897139)
- Nicolas Chevobbe [:nchevobbe] Small visual glitches from the inspector sidepanel tabs outline (#1897469)
- Julian Descottes [:jdescottes] Web Manifest Validator service is not available (#1897583)
- Hubert Boma Manilla (:bomsy) Use the EditorView.domEventHandlers for DOM events instead of attaching to the line content extension (#1897922)
- Nicolas Chevobbe [:nchevobbe] Add test for color swatch with relative color syntax (#1898249)
- Nicolas Chevobbe [:nchevobbe] Turn output-parser.js lookup Arrays into Sets (#1898502)
- Nicolas Chevobbe [:nchevobbe] Display color swatch for `light-dark()` parameters (#1899106)
- Nicolas Chevobbe [:nchevobbe] `light-dark` does not appear in autocomplete (#1899107)
- Julian Descottes [:jdescottes] Create network events using the activity object instead of the channel (#1899321)
- Julian Descottes [:jdescottes] Source maps requiring credentials no longer load (#1899389)
- Julian Descottes [:jdescottes] Use addCacheDetails to provide cache information to network event owner (#1899404)
- Nicolas Chevobbe [:nchevobbe] Display registered property information in var() tooltip (#1899489)
- Nicolas Chevobbe [:nchevobbe] Add a InspectorUtils method that indicate if a given value matches a passed syntax string (#1899533)
- Nicolas Chevobbe [:nchevobbe] Fix OutputParser#mergeOptions JSDoc (#1899952)
- Hubert Boma Manilla (:bomsy) Update MDN compat data (128) (#1900405)
- Hubert Boma Manilla (:bomsy) No toolbox tabs are visible in about devtools toolbox (#1900475)
- Nicolas Chevobbe [:nchevobbe] Enter single quote in property value isn’t handled properly by the Rule rewriter (#1904752)
Leave a Reply