Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
78 commits
Select commit Hold shift + click to select a range
162f1e9
Bump profiler-cli version to 0.5.0 (#6158)
canova Jul 9, 2026
625c2f6
Skip preview links for non-main PRs
skylarkning Jul 9, 2026
ba6a829
Skip preview links for non-main PRs (#6161)
mstange Jul 9, 2026
6ed4e61
🔃 Daily sync: main -> l10n (July 10, 2026)
Jul 10, 2026
78c2ca1
Pontoon/Firefox Profiler: Update Serbian (sr)
mozilla-pontoon Jul 10, 2026
e204a40
Bump ws from 8.18.0 to 8.21.0 (#6159)
dependabot[bot] Jul 10, 2026
98f30bf
fix(gecko-upgrade): don't crash on a counter with empty sample_groups…
spokodev Jul 10, 2026
3d4d114
Show counter values over time in profiler-cli (#6136)
fatadel Jul 10, 2026
b5d6e9d
Pontoon/Firefox Profiler: Update Chinese (China) (zh-CN)
mozilla-pontoon Jul 10, 2026
a692864
Remove src/test/unit/__snapshots__/profile-conversion.test.ts.snap.
mstange Jul 5, 2026
b33aa23
Make profile-conversion snapshots more compact and meaningful
mstange Jul 5, 2026
5fe8339
Make profile-conversion snapshots more compact and meaningful (#6152)
mstange Jul 10, 2026
ee5d225
Add raw/derived split for the allocation table types.
mstange Jul 5, 2026
e44e5a3
Store the derived samples table's `time` column as a Float64Array.
mstange Jul 3, 2026
029d653
Add a raw/derived split for the frame table.
mstange Jul 6, 2026
07cde31
Store some columns of the derived frame table as typed arrays.
mstange Jul 6, 2026
540be94
Introduce a `RawFrameTableBuilder` type.
mstange Jul 6, 2026
28b2d94
Introduce builder types for the raw samples table and the allocation …
mstange Jul 6, 2026
e8dbbcf
Allow various columns to be typed arrays in the raw table / profile f…
mstange Jul 6, 2026
5ffe961
More typed arrays: sample + counter times, some frametable columns (#…
mstange Jul 10, 2026
667e250
Copy column contents in getRawSamplesTableBuilderFromExisting for con…
mstange Jul 10, 2026
d3fc01a
🔃 Daily sync: main -> l10n (July 11, 2026)
Jul 11, 2026
cf0b9eb
Pontoon/Firefox Profiler: Update Turkish (tr)
mozilla-pontoon Jul 11, 2026
b159688
Only render a marker url field as a link when the whole value is a UR…
canova Jul 13, 2026
e9b7acd
Bump morgan from 1.10.0 to 1.11.0 (#6166)
dependabot[bot] Jul 13, 2026
0d1fb3b
🔃 Daily sync: main -> l10n (July 13, 2026)
Jul 13, 2026
a779b7d
Show each counter's owning process in profiler-cli (#6164)
fatadel Jul 13, 2026
6c4e1de
Document the pre-existing thread info and network JSON schemas in the…
canova Jul 13, 2026
6963f9e
Merge branch 'main' into push-rrqmxymomzwy
mstange Jul 13, 2026
dd88555
Copy column contents in getRawSamplesTableBuilderFromExisting for con…
mstange Jul 13, 2026
a8536d4
Factor out the toTypedArray pattern.
mstange Jul 10, 2026
fe04f38
Convert eligible columns to typed arrays when outputting from profile…
mstange Jul 10, 2026
4129c72
Convert eligible columns to typed arrays when outputting from profile…
mstange Jul 13, 2026
31bd60e
Remove unused samples.thread column.
mstange Jul 6, 2026
fbe5642
Remove unused samples.thread column (#6151)
mstange Jul 13, 2026
4cf61c8
Fixed botched merge which broke 'yarn ts'
mstange Jul 13, 2026
3376be6
Fixed botched merge which broke 'yarn ts' (#6174)
mstange Jul 13, 2026
220a9ec
⬆️ Update json-slabs to version 0.4.0
depfu[bot] Jul 13, 2026
9bcc16c
🔃 Daily sync: main -> l10n (July 14, 2026)
Jul 14, 2026
625714a
Add marker handles to `profiler-cli thread network` (#6172)
canova Jul 14, 2026
49d75e3
Merge branch 'main' into depfu/update/yarn/json-slabs-0.4.0
mstange Jul 14, 2026
9dd90d3
Update json-slabs 0.3.0 → 0.4.0 (major) (#6176)
mstange Jul 14, 2026
fe9fb02
Pontoon/Firefox Profiler: Update French (fr)
mozilla-pontoon Jul 14, 2026
4b1abde
Pontoon/Firefox Profiler: Update French (fr)
mozilla-pontoon Jul 14, 2026
26495ba
🔃 Daily sync: main -> l10n (July 15, 2026)
Jul 15, 2026
8e9dc8e
Update all Yarn dependencies (2026-07-15) (#6178)
depfu[bot] Jul 15, 2026
0992269
Add pure network-summary helpers for the profiler-cli
canova Jul 6, 2026
e5d9cd6
Lead thread network summary with wall-clock time in the cli
canova Jul 7, 2026
12a822e
Report incomplete network requests in `pq thread network`
canova Jul 7, 2026
591f291
Sort thread network requests slowest-first by default in the cli
canova Jul 7, 2026
1386975
Surface network activity in `pq profile info` and `pq thread info`
canova Jul 6, 2026
1373a9d
Share network record-gathering between `thread network` and the info …
canova Jul 13, 2026
1cc095c
Surface network activity across profiler-cli (#6175)
canova Jul 15, 2026
bd2a5cf
Add `profile meta` command to profiler-cli (#6177)
canova Jul 15, 2026
a909fb4
Fix light theme color scheme
Jul 15, 2026
e83d8d9
Allow raw marker table's `startTime` and `endTime` columns to be Floa…
mstange Jul 5, 2026
de4af45
Allow raw marker table's `startTime` and `endTime` columns to be Floa…
mstange Jul 15, 2026
0ffcf57
Merge branch 'main' into fix/issue-6180
mstange Jul 15, 2026
38ae387
Fix light theme text selection colors (#6186)
mstange Jul 15, 2026
b0aed97
🔃 Daily sync: main -> l10n (July 16, 2026)
Jul 16, 2026
4c04687
Import source map URLs from Chrome DevTools traces (#6190)
canova Jul 16, 2026
09d4f54
Rename yarn build-profiler-cli script to build-cli
canova Jul 16, 2026
d4b6ff9
Rename yarn publish-profiler-cli script to publish-cli
canova Jul 16, 2026
faaf1a1
Rename yarn `build-profiler-cli` script to `build-cli` (#6191)
canova Jul 16, 2026
a7221c8
Pontoon/Firefox Profiler: Update Swedish (sv-SE)
mozilla-pontoon Jul 16, 2026
ad1fb4e
🔃 Daily sync: main -> l10n (July 17, 2026)
Jul 17, 2026
9f38cd9
Migrate husky to version 9 (#6201)
canova Jul 20, 2026
0b16bb3
Fix horizontal overflow when the transform navigator is long (#6199)
canova Jul 20, 2026
bc80b57
Add a 'hexadecimal' marker schema field format (#6197)
fatadel Jul 20, 2026
6ad60d8
🔃 Daily sync: main -> l10n (July 21, 2026)
Jul 21, 2026
258ca5f
⬆️ Update protobufjs to version 8.6.6 (#6205)
depfu[bot] Jul 21, 2026
ab24014
Bump shell-quote from 1.8.4 to 1.10.0 (#6208)
dependabot[bot] Jul 21, 2026
4c52692
Update oxfmt 0.56.0 → 0.59.0 (major) (#6207)
depfu[bot] Jul 21, 2026
1eb91d9
Upgrade source-map from 0.7.6 to 0.8.0
canova Jul 20, 2026
a7f5fe5
Remove source-map initialize static-method type workaround
canova Jul 20, 2026
88ef33c
Bump source-map to 0.8.0 and remove the old type workaround (#6202)
canova Jul 21, 2026
5db3571
Merge branch 'main' into l10n
canova Jul 21, 2026
8a41812
🔃 Sync: l10n -> main (July 21, 2026) (#6209)
canova Jul 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .github/workflows/add-preview-links.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ name: Add preview links

on:
pull_request_target:
branches:
- main
types:
- opened
- edited
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ jobs:
path: node-tools-dist/

- name: Build profiler-cli
run: yarn build-profiler-cli
run: yarn build-cli

- name: Upload profiler-cli artifact
if: matrix.os == 'ubuntu-latest'
Expand Down
1 change: 1 addition & 0 deletions .husky/post-checkout
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
node bin/post-checkout.js "$@"
1 change: 1 addition & 0 deletions .husky/post-merge
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
node bin/post-merge.js
1 change: 1 addition & 0 deletions .husky/post-rewrite
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
node bin/post-rewrite.js "$@"
1 change: 1 addition & 0 deletions .husky/pre-push
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
yarn test-all
9 changes: 5 additions & 4 deletions bin/post-checkout.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
// Older versions of husky use `GIT_PARAMS`, newer versions use `HUSKY_GIT_PARAMS`.
// To make it easier to move between branches, we support both for now. We can
// remove this thin compatibility layer later.
const gitParams = process.env.GIT_PARAMS || process.env.HUSKY_GIT_PARAMS;
// Husky 9 passes git hook arguments as positional parameters. Older husky
// versions used the `HUSKY_GIT_PARAMS` environment variable, which we keep
// as a fallback for now to make it easier to move between branches.
const gitParams =
process.argv.slice(2).join(' ') || process.env.HUSKY_GIT_PARAMS;
const [origHead, head, flag] = gitParams.split(' ');

// Flag is 1 if we moved between branches. Flag is 0 if we merely checked out a file from another branch.
Expand Down
9 changes: 5 additions & 4 deletions bin/post-rewrite.js
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
// Older versions of husky use `GIT_PARAMS`, newer versions use `HUSKY_GIT_PARAMS`.
// To make it easier to move between branches, we support both for now. We can
// remove this thin compatibility layer later.
const gitParams = process.env.GIT_PARAMS || process.env.HUSKY_GIT_PARAMS;
// Husky 9 passes git hook arguments as positional parameters. Older husky
// versions used the `HUSKY_GIT_PARAMS` environment variable, which we keep
// as a fallback for now to make it easier to move between branches.
const gitParams =
process.argv.slice(2).join(' ') || process.env.HUSKY_GIT_PARAMS;

// This is either 'rebase' or 'amend'.
if (gitParams !== 'rebase') {
Expand Down
22 changes: 22 additions & 0 deletions docs-developer/CHANGELOG-formats.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,24 @@ Note that this is not an exhaustive list. Processed profile format upgraders can

## Processed profile format

### Version 68

The `startTime` and `endTime` columns of the raw marker table (`thread.markers`) can now optionally be stored as `Float64Array`, for profiles loaded from [JsonSlabs](https://github.com/mstange/json-slabs/) files (.jslb, .jslb.gz). Regular JS / JSON arrays are still accepted.

When using regular arrays, these columns can contain `null` values - but only if the marker **phase** also marks that value as meaningless. Specifically, for `INSTANT` and `INTERVAL_START` markers, the `endTime` value isn't read (and can be `null`), and for `INTERVAL_END` markers, the `startTime` value isn't read (and can be `null`). But it can also be any other non-`null` value; it's ignored either way. When using typed arrays, there is no equivalent `null` sentinel value, but since the value is ignored anyway, you can pick any value. For example zero, or to the value of the previous marker (maybe for better compressibility).

### Version 67

The following raw columns can now optionally be stored as typed arrays, for profiles loaded from [JsonSlabs](https://github.com/mstange/json-slabs/) files (.jslb, .jslb.gz). Regular JS / JSON arrays are still accepted.

- `thread.samples.time` and `thread.samples.timeDeltas` (`Float64Array`)
- `counter.samples.time` and `counter.samples.timeDeltas` (`Float64Array`)
- `thread.jsAllocations.time` (`Float64Array`)
- `thread.nativeAllocations.time` (`Float64Array`)
- `profile.shared.frameTable.func` (`Int32Array`)
- `profile.shared.frameTable.address` (`Int32Array`, with `-1` as the sentinel for missing addresses)
- `profile.shared.frameTable.inlineDepth` (`Uint8Array`)

### Version 66

The `prefix` column of `profile.shared.stackTable` was replaced with a `prefixOffset` column, to improve compressibility.
Expand Down Expand Up @@ -189,6 +207,10 @@ Older versions are not documented in this changelog but can be found in [process

## Gecko profile format

### Version 35

A new `hexadecimal` marker schema field format type has been added, which displays an integer value in hexadecimal with a `0x` prefix.

### Version 34

The `SourceTable` schema was updated:
Expand Down
8 changes: 4 additions & 4 deletions docs-developer/deploying.md
Original file line number Diff line number Diff line change
Expand Up @@ -121,12 +121,12 @@ then land the version bump on `main` before publishing.
From the repository root:

```
yarn publish-profiler-cli
yarn publish-cli
```

[`scripts/publish-profiler-cli.mjs`](../scripts/publish-profiler-cli.mjs) will:

1. Run `yarn build-profiler-cli` to produce `profiler-cli/dist/profiler-cli.js` (a
1. Run `yarn build-cli` to produce `profiler-cli/dist/profiler-cli.js` (a
single self-contained bundle with no runtime dependencies).
2. Run `npm publish profiler-cli/`, picking `--tag next` when the version
contains `-` (e.g. `0.1.0-next.1`) and `--tag latest` otherwise.
Expand All @@ -139,10 +139,10 @@ Extra arguments are forwarded to `npm publish`. For example:

```
# Build and verify, but do not actually publish.
yarn publish-profiler-cli --dry-run
yarn publish-cli --dry-run

# Override the automatic dist-tag.
yarn publish-profiler-cli --tag alpha
yarn publish-cli --tag alpha
```

## Verify the release
Expand Down
50 changes: 50 additions & 0 deletions locales/fr/app.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,15 @@ CallNodeContextMenu--transform-focus-function = Focus sur la fonction
CallNodeContextMenu--transform-focus-function-inverted = Focus sur la fonction (inversé)
.title = { CallNodeContextMenu--transform-focus-function-title }

## The translation for "self" in these strings should match the translation used
## in CallTree--samples-self and CallTree--bytes-self. Alternatively it can be
## translated as "self values" or "self time" (though "self time" is less desirable
## because this menu item is also shown in "bytes" mode).

CallNodeContextMenu--transform-focus-self-title = Le focus sur « soi-même » fonctionne comme le focus sur une fonction, mais ne conserve que les échantillons qui contribuent directement à l’exécution propre de la fonction. Les échantillons provenant des fonctions appelées sont ignorés, et l’arbre d’appels est recentré sur la fonction ciblée.
CallNodeContextMenu--transform-focus-self = Focus sur soi-même uniquement
.title = { CallNodeContextMenu--transform-focus-self-title }

##

CallNodeContextMenu--transform-focus-subtree = Focus sur le sous-arbre uniquement
Expand Down Expand Up @@ -523,6 +532,8 @@ MenuButtons--metaInfo--buffer-duration-seconds =
MenuButtons--metaInfo--buffer-duration-unlimited = Illimitée
MenuButtons--metaInfo--application = Application
MenuButtons--metaInfo--name-and-version = Nom et version :
# The time between application startup and when the profiler was started
MenuButtons--metaInfo--application-uptime2 = Disponibilité :
MenuButtons--metaInfo--update-channel = Canal de mise à jour :
MenuButtons--metaInfo--build-id = Identifiant de compilation :
MenuButtons--metaInfo--build-type = Type de compilation :
Expand Down Expand Up @@ -738,6 +749,8 @@ StackSettings--call-tree-strategy-native-deallocations-sites = Sites de désallo
.title = Résumer en utilisant les octets de la mémoire désallouée, par le site où la mémoire a été désallouée
StackSettings--invert-call-stack = Inverser la pile d’appels
.title = Trier par le temps passé dans un nœud d’appel, en ignorant ses enfants.
StackSettings--include-idle-samples = Inclure les échantillons inactifs
.title = Décocher cette case pour masquer les échantillons dont la trame de feuille appartient à la catégorie « Inactifs ».
StackSettings--show-user-timing = Afficher le temps utilisateur
StackSettings--use-stack-chart-same-widths = Utiliser la même largeur pour chaque pile
StackSettings--panel-search =
Expand Down Expand Up @@ -799,6 +812,32 @@ TrackNameButton--hide-track =
TrackNameButton--hide-process =
.title = Masquer le processus

## TrackMemoryGraph
## This is used to show the memory graph of that process in the timeline part of
## the UI. To learn more about it, visit:
## https://profiler.firefox.com/docs/#/./memory-allocations?id=memory-track

# Variables:
# $value (String) - the relative memory at this time (e.g. "5MB")
TrackMemoryGraph--relative-memory-at-this-time2 = { $value }
.label = mémoire relative à ce moment-là
# Variables:
# $value (String) - the memory range across the graph (e.g. "5MB")
TrackMemoryGraph--memory-range-in-graph2 = { $value }
.label = plage de mémoire dans le graphique
# Variables:
# $value (String) - count of allocations and deallocations since the previous sample
TrackMemoryGraph--allocations-and-deallocations-since-the-previous-sample2 = { $value }
.label = allocations et désallocations depuis l‘échantillon précédent

## TrackProcessCPUGraph
## This is used to show the CPU usage of a process over time in the timeline.

# Variables:
# $value (String) - the CPU usage at this sample (e.g. "50%")
TrackProcessCPUGraph--cpu = { $value }
.label = Processeur

## TrackPower
## This is used to show the power used by the CPU and other chips in a computer,
## graphed over time.
Expand Down Expand Up @@ -844,6 +883,11 @@ TrackPower--tooltip-average-power-watt = { $value } W
# $value (String) - the power value at this location
TrackPower--tooltip-average-power-milliwatt = { $value } mW
.label = Puissance moyenne pour la sélection actuelle
# This is used in the tooltip when the power value uses the microwatt unit.
# Variables:
# $value (String) - the power value at this location
TrackPower--tooltip-average-power-microwatt = { $value } μW
.label = Énergie moyenne dans la sélection actuelle
# This is used in the tooltip when the energy used in the current range uses the
# kilowatt-hour unit.
# Variables:
Expand Down Expand Up @@ -978,6 +1022,12 @@ TransformNavigator--focus-subtree = Focus sur le nœud : { $item }
# Variables:
# $item (String) - Name of the function that transform applied to.
TransformNavigator--focus-function = Focus : { $item }
# "Focus self" transform.
# See: https://profiler.firefox.com/docs/#/./guide-filtering-call-trees?id=focus-on-function-self
# Also see the translation note above CallNodeContextMenu--transform-focus-self.
# Variables:
# $item (String) - Name of the function that transform applied to.
TransformNavigator--focus-self = Focus sur soi-même : { $item }
# "Focus category" transform. The word "Focus" has the meaning of an adjective here.
# See: https://profiler.firefox.com/docs/#/./guide-filtering-call-trees?id=focus-category
# Variables:
Expand Down
14 changes: 14 additions & 0 deletions locales/sr/app.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,11 @@ AppViewRouter--error-from-localhost-url-safari =
да увезе профиле са локалне машине у овом прегледачу. Уместо тога, отворите
ову страницу у { -firefox-brand-name }-у или Chrome-у.
.title = Safari не може да увезе локалне профиле
# This error message is displayed when the profile is in a newer format version
# than this build of the Profiler is able to read.
AppViewRouter--error-profile-version =
Овај профил користи формат који ово издање { -profiler-brand-name }-а не подржава.
Покушајте да освежите страницу да бисте проверили да ли је доступно ажурирање за { -profiler-brand-name }.
AppViewRouter--route-not-found--home =
.specialMessage = URL адреса коју сте покушали да посетите није препозната.

Expand Down Expand Up @@ -350,6 +355,15 @@ Home--chrome-extension-instructions =
{ -profiler-brand-name }. Инсталирајте додатак са Chrome Web Store-а.
Home--chrome-extension-recording-instructions = Када га инсталирате, употребите иконицу додатка на алатној траци или пречице да бисте покренули и зауставили профилисање. Такође можете да извезете профиле и учитате их овде за детаљну анализу.

## IdleSearchField
## The component that is used for all the search inputs in the application.

# `/` here overrides Firefox's Type Ahead Find shortcut, which would
# otherwise trigger an unhelpful find bar on top of the profiler UI.
# The shortcut itself is not localizable.
IdleSearchField--search-input2 =
.placeholder = Унесите изразе филтера (/)

## JsTracerSettings
## JSTracer is an experimental feature and it's currently disabled. See Bug 1565788.

Expand Down
9 changes: 9 additions & 0 deletions locales/sv-SE/app.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -390,6 +390,15 @@ Home--chrome-extension-recording-instructions =
eller genvägarna för att starta och stoppa profilering.
Du kan också exportera profiler och ladda dem här för detaljerad analys.

## IdleSearchField
## The component that is used for all the search inputs in the application.

# `/` here overrides Firefox's Type Ahead Find shortcut, which would
# otherwise trigger an unhelpful find bar on top of the profiler UI.
# The shortcut itself is not localizable.
IdleSearchField--search-input2 =
.placeholder = Ange filtertermer (/)

## JsTracerSettings
## JSTracer is an experimental feature and it's currently disabled. See Bug 1565788.

Expand Down
8 changes: 8 additions & 0 deletions locales/tr/app.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -797,6 +797,14 @@ TrackNameButton--hide-track =
TrackNameButton--hide-process =
.title = İşlemi gizle

## TrackProcessCPUGraph
## This is used to show the CPU usage of a process over time in the timeline.

# Variables:
# $value (String) - the CPU usage at this sample (e.g. "50%")
TrackProcessCPUGraph--cpu = { $value }
.label = CPU

## TrackPower
## This is used to show the power used by the CPU and other chips in a computer,
## graphed over time.
Expand Down
11 changes: 11 additions & 0 deletions locales/zh-CN/app.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,9 @@ AppViewRouter--error-compare = 无法获取分析记录。
# https://profiler.firefox.com/from-url/http%3A%2F%2F127.0.0.1%3A3000%2Fprofile.json/
AppViewRouter--error-from-localhost-url-safari = 由于 <a>Safari 浏览器的特殊限制</a>,{ -profiler-brand-name } 无法使用此浏览器从本地导入分析记录。请在 { -firefox-brand-name } 或 Chrome 中打开此页面。
.title = Safari 浏览器无法导入本地性能分析记录
# This error message is displayed when the profile is in a newer format version
# than this build of the Profiler is able to read.
AppViewRouter--error-profile-version = 此性能分析记录所用的格式不受当前版本的 { -profiler-brand-name } 支持。请尝试刷新页面,检查 { -profiler-brand-name } 是否有可用更新。
AppViewRouter--route-not-found--home =
.specialMessage = 无法识别您尝试访问的 URL。
Expand Down Expand Up @@ -777,6 +780,14 @@ TrackNameButton--hide-track =
TrackNameButton--hide-process =
.title = 隐藏进程
## TrackProcessCPUGraph
## This is used to show the CPU usage of a process over time in the timeline.

# Variables:
# $value (String) - the CPU usage at this sample (e.g. "50%")
TrackProcessCPUGraph--cpu = { $value }
.label = CPU
## TrackPower
## This is used to show the power used by the CPU and other chips in a computer,
## graphed over time.
Expand Down
Loading
Loading