Repository navigation
Deploy October 13, 2026 - #6391
Merged
Merged
Conversation
This matches what we already do for the assembly view editor. Fixes #5451.
…#6277) Inspecting a sequence of markers meant one invocation per handle. `marker info` now takes a list of handles, comma-separated handles, and m-1..m-3 ranges in any combination, returning a marker-info-multi result for two or more markers. Any spelling meaning exactly one marker keeps the previous text and JSON output byte for byte. An unresolvable handle is reported in place with the rest still shown and a non-zero exit; a malformed spec, reversed range, or range wider than 256 handles fails before any lookup. Ranges expand numerically and handle numbering continues across listings, so a range overrunning its listing resolves into unrelated markers. When one lands in more than one thread the CLI warns and exits non-zero.
I was experimenting with oxlint, and oxlint's check needs the verbatim "falls through" spelling (unless we want to customize the pattern).
attemptToConvertChromeProfile is the only importer that returns a promise rather than a finished profile. We were returning the promise without an await, so any exceptions from it would bypass our error wrapping and the console.error call.
Co-authored-by: depfu[bot] <23717796+depfu[bot]@users.noreply.github.com>
…-maps/ We have quite some files about the source maps now. It makes sense to group them properly. The name of the worker is important as it gets bundled later, so it's kept the same.
Move the "pick the on-disk profile encoding from the filename" logic out of profiler-edit so it can be reused by profiler-cli.
Writes the loaded profile to disk with the same output as the web app's Download button with every sharing option checked. The encoding follows the extension (.json, .json.gz, .jslb, .jslb.gz). Passing a directory writes a .json.gz file named like the web app download. Existing files are only overwritten with --force.
Fixes #6335 Writes the loaded profile to disk with the same output as the web app's Download button with every sharing option checked. The encoding follows the extension (.json, .json.gz, .jslb, .jslb.gz). Passing a directory writes a .json.gz file named like the web app download. Existing files are only overwritten with `--force`.
The progress bar reuses `.publishPanelUploadBarInner`, but it's rendered outside of the publish panel, so the inner bar color variable that was scoped to `.publishPanelPanel` didn't apply to it. This left the bar with a transparent background and only the semi-transparent white stripes were drawn. They were still visible on the dark top bar, but not on the light one. This commit defines the variable on the element itself instead.
…6351) The FTL strings for the malformed response errors use `$apiErrorMessage`, but the component was passing `errorMessage`, so the raw placeholder was displayed.
<!-- profiler-preview-links:start --> [Main](https://main--perf-html.netlify.app/) | [Deploy preview](https://deploy-preview-6346--perf-html.netlify.app/) <!-- profiler-preview-links:end --> attemptToConvertChromeProfile is the only importer that returns a promise rather than a finished profile. We were returning the promise without an await, so any exceptions from it would bypass our error wrapping and the console.error call.
<!-- profiler-preview-links:start --> [Main](https://main--perf-html.netlify.app/) | [Deploy preview](https://deploy-preview-6344--perf-html.netlify.app/) <!-- profiler-preview-links:end --> I was experimenting with oxlint, and oxlint's check needs the verbatim "falls through" spelling (unless we want to customize the pattern).
…-maps/ (#6349) <!-- profiler-preview-links:start --> [Main](https://main--perf-html.netlify.app/) | [Deploy preview](https://deploy-preview-6349--perf-html.netlify.app/) <!-- profiler-preview-links:end --> We have quite some files about the source maps now. It makes sense to group them properly. The name of the worker is important as it gets bundled later, so it's kept the same.
<!-- profiler-preview-links:start --> [Main](https://main--perf-html.netlify.app/public/h0jkjw3q88rcw4cnxwvdry2r39m2y9pmd8r76wg/calltree/?globalTrackOrder=0&sourceViewIndex=19&thread=1&v=17) | [Deploy preview](https://deploy-preview-6313--perf-html.netlify.app/public/h0jkjw3q88rcw4cnxwvdry2r39m2y9pmd8r76wg/calltree/?globalTrackOrder=0&sourceViewIndex=19&thread=1&v=17) <!-- profiler-preview-links:end --> This matches what we already do for the assembly view editor. Fixes #5451.
<!-- profiler-preview-links:start --> [Main](https://main--perf-html.netlify.app/) | [Deploy preview](https://deploy-preview-6352--perf-html.netlify.app/) <!-- profiler-preview-links:end --> This will allow us to enable the merge queue for the main branch. So with this, the PRs that are added to the merge queue will properly trigger CI checks. It shouldn't have any effect until the merge queue is enabled.
Fixes #6332. Now we have: * `yarn start`: production build, no service worker, port 4242 * `yarn start-prod`: production build, with service worker, port 4243 * `yarn start-dev`: development build, no service worker, port 4241 There's a bit of churn in how the filenames are determined. In the past, we were putting a hash in the filenames whenever we were building for production, including for the source map worker, and we didn't have a way to "watch" the production build. Now that `yarn start` is a "watched" production build, we need to make sure that the source map worker filename does not contain a hash, otherwise the path to it that gets embedded into the main bundle would get out of sync. The main bundle still uses a hashed filename; each rebuild updates index.html with the new path. (It's not straightforward to use a similar mechanism for the worker, because the worker and the main bundle run in separate esbuild watch contexts.)
<!-- profiler-preview-links:start --> [Main](https://main--perf-html.netlify.app/) | [Deploy preview](https://deploy-preview-6353--perf-html.netlify.app/) <!-- profiler-preview-links:end --> Fixes #6332. Now we have: * `yarn start`: production build, no service worker, port 4242 * `yarn start-prod`: production build, with service worker, port 4243 * `yarn start-dev`: development build, no service worker, port 4241 There's a bit of churn in how the filenames are determined. In the past, we were putting a hash in the filenames whenever we were building for production, including for the source map worker, and we didn't have a way to "watch" the production build. Now that `yarn start` is a "watched" production build, we need to make sure that the source map worker filename does not contain a hash, otherwise the path to it that gets embedded into the main bundle would get out of sync. The main bundle still uses a hashed filename; each rebuild updates index.html with the new path. (It's not straightforward to use a similar mechanism for the worker, because the worker and the main bundle run in separate esbuild watch contexts.)
We used @babel/eslint-plugin only for its no-invalid-this rule, which avoided false positives on `this` inside class property functions. ESLint's core rule handles class fields since ESLint 8, and the rule was removed from @babel/eslint-plugin in Babel 8. This removes both @babel/eslint-plugin and its @babel/eslint-parser peer dependency, which wasn't used anywhere else.
Babel is only used by Jest, so the config changes only affect tests: - @babel/preset-env: removed `bugfixes`, which is now always enabled, and `useBuiltIns`/`corejs`, which were removed. We don't replace them with babel-plugin-polyfill-corejs3, because the test target is the current Node version, which doesn't need these polyfills. - @babel/preset-react: remove `useSpread`, which is now always enabled. - @babel/preset-typescript: remove `isTSX` and `allExtensions`, which were removed. JSX is now parsed only in .tsx files, based on the file extension. No .ts file contains JSX. - Add the class feature plugins we configure in babel.config.json as explicit devDependencies. They were only resolvable through hoisting, and the lockfile now contains both Babel 7 and 8 versions of them.
Co-authored-by: Jim Spentzos (el) <jimspentzos2000@gmail.com>
Co-authored-by: Ralf Duehnfahr (de) <rd.marschall@web.de>
Co-authored-by: Valery Ledovskoy (ru) <valery@ledovskoy.com>
Co-authored-by: Andreas Pettersson (sv-SE) <amvpet@gmail.com>
Co-authored-by: Fjoerfoks (nl) <fryskefirefox@gmail.com>
Zooming out creates a preview selection for the removed range, which sample and function queries still honor. Clear that selection after popping or clearing zoom ranges so queries cover the restored view. Fixes #6376
Co-authored-by: Ian Neal (en-GB) <iann_bugzilla@blueyonder.co.uk>
Co-authored-by: Fjoerfoks (nl) <fryskefirefox@gmail.com>
Co-authored-by: Fjoerfoks (fy-NL) <fryskefirefox@gmail.com>
CI profiles of benchmarks like Speedometer can't show any JS source code. The page was served from a local web server that is gone by the time the profile is viewed, and nothing fetched the source maps. embedJsSources reads every JS source through a reader that the caller provides, and stores its text in the sources table. It then applies the source maps of these sources, so the original files from sourcesContent, including node_modules, end up in the profile as well. The source map is found through the sourceMapURL column, or through the sourceMappingURL comment at the end of the file when the column is empty.
The option takes a JSON file that maps URL prefixes to local directories, and embeds the sources it finds into the profile. The source-map package reads its wasm parser from a file next to the bundle at runtime. Embed it into profiler-edit.js instead, because Firefox's profiler-node-tools toolchain only ships the .js files.
Co-authored-by: Melo46 (ia) <melo@carmu.com>
Co-authored-by: robbp (ro) <robbpaun@gmail.com> Co-authored-by: IulianArian (ro) <arianiulian@gmail.com>
Co-authored-by: Melo46 (ia) <melo@carmu.com>
Co-authored-by: ravmn (es-CL) <ravmn@ravmn.cl>
Co-authored-by: Théo Chevalier (fr) <theo@theochevalier.org>
Record the version that will be published with the next production deployment.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Changes:
[Florian Quèze] profiler-cli: accept several marker handles and ranges in marker info (#6277)
[Nazım Can Altınova] Add "profiler-cli profile save " (#6340)
[Nazım Can Altınova] Fix the upload progress bar not showing in light mode (#6348)
[Nazım Can Altınova] Fix the variable name passed to the malformed response error strings (#6351)
[Markus Stange] Add missing await when calling Chrome importer (#6346)
[Markus Stange] Use "falls through" for all fallthrough comments (#6344)
[Markus Stange] Move source map related profile logic files into profile-logic/source-maps/ (#6349)
[Markus Stange] Make the source view actually read-only. (#6313)
[Markus Stange] Run CI on merge queue branches (#6352)
[Markus Stange] Serve production build by default during local development (#6353)
[Nazım Can Altınova] Fix "... was not wrapped in act" warnings in tests (#6362)
[Nazım Can Altınova] Add a scope tree test for shorthand destructuring defaults (#6367)
[fatadel] Accept --session before subcommands in profiler-cli (#6358)
[Nazım Can Altınova] Replace the deprecated loose option with Babel assumptions (#6366)
[fatadel] Clarify how to save profiles for later access (#6355)
[Markus Stange] Speed up activity graph drawing (#5888)
[Nazım Can Altınova] Make
yarn test-cliandyarn test-allfaster (#6369)[Nazım Can Altınova] Add global
--permalinkand--short-permalinkflags to profiler-cli (#6338)[Nazım Can Altınova] Use a profile with tab information in the tab selector URL tests (#6370)
[fatadel] Move FileIO table labels into the Gecko profile upgrader (#6375)
[fatadel] Clear preview selections when zooming out in the CLI (#6380)
[Nazım Can Altınova] Add the ability to apply source maps to the profiles using
profiler-edit(#6382)[fatadel] 🔃 Sync: l10n -> main (October 13, 2026) (#6389)
And special thanks to our localizers:
de: Ralf Duehnfahr
el: Jim Spentzos
en-GB: Ian Neal
es-CL: ravmn
fr: Théo Chevalier
fy-NL: Fjoerfoks
ia: Melo46
it: Francesco Lodolo
nl: Fjoerfoks
ro: IulianArian
ro: robbp
ru: Valery Ledovskoy
sv-SE: Andreas Pettersson
tr: Selim Şumlu
tr: Sena nur
zh-TW: Pin-guang Chen