Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
59 commits
Select commit Hold shift + click to select a range
367a930
Use `Int32Array` for the derived stack table's `frame` column.
mstange May 16, 2026
09909da
Add a JSON utility that serializes typed arrays as regular arrays.
mstange May 16, 2026
974517d
Use jsonEncodeObjectWithTypedArraysAsRegularArrays for profile JSON s…
mstange May 16, 2026
7dbb653
Update tests to deal with typed arrays in profiles.
mstange May 16, 2026
adaaa66
Introduce `RawStackTableBuilder` for stack table construction.
mstange May 16, 2026
d116be9
Allow the `stackTable.frame` column to contain an Int32Array.
mstange May 16, 2026
bdc1c36
Bump profiler-cli version to 0.3.0 (#6104)
canova Jun 16, 2026
f3714a9
🔃 Daily sync: main -> l10n (June 17, 2026)
Jun 17, 2026
940b0b2
Merge branch 'main' into first-typed-array
mstange Jun 17, 2026
924518f
First typed array: Allow profile.shared.stackTable.frame to be an Int…
mstange Jun 17, 2026
0a21ce1
Update all Yarn dependencies (2026-06-17) (#6106)
depfu[bot] Jun 18, 2026
6568e16
Add the cli package name as a constant into the codebase
canova Jun 17, 2026
53a3071
Show more user friendly errors for unsupported profile version in bot…
canova Jun 17, 2026
4bd8b75
Show more user friendly errors for unsupported profile version in bo…
canova Jun 18, 2026
1c4069a
🔃 Daily sync: main -> l10n (June 18, 2026)
Jun 18, 2026
34d6f8b
Pontoon/Firefox Profiler: Update Italian (it)
mozilla-pontoon Jun 18, 2026
b1ad832
Pontoon/Firefox Profiler: Update French (fr), Dutch (nl)
mozilla-pontoon Jun 18, 2026
97e488b
Pontoon/Firefox Profiler: Update German (de)
mozilla-pontoon Jun 18, 2026
9e0158f
Pontoon/Firefox Profiler: Update Frisian (fy-NL)
mozilla-pontoon Jun 18, 2026
3ce49d9
Pontoon/Firefox Profiler: Update English (Great Britain) (en-GB)
mozilla-pontoon Jun 18, 2026
336c940
Pontoon/Firefox Profiler: Update Chinese (Taiwan) (zh-TW)
mozilla-pontoon Jun 18, 2026
40ea235
Pontoon/Firefox Profiler: Update Swedish (sv-SE)
mozilla-pontoon Jun 18, 2026
5fb6bf8
Pontoon/Firefox Profiler: Update Interlingua (ia)
mozilla-pontoon Jun 18, 2026
f26beca
Pontoon/Firefox Profiler: Update Russian (ru)
mozilla-pontoon Jun 19, 2026
b1f19f2
Pontoon/Firefox Profiler: Update Greek (el)
mozilla-pontoon Jun 21, 2026
9f08129
Split getSelfAndTotal.
mstange Jun 21, 2026
0259de0
Change sidebar splitter CSS to only apply to the sidebar, not to all …
mstange Jun 21, 2026
c1dd4b1
Pass callNodeInfo to handleCallNodeTransformShortcut.
mstange Jun 21, 2026
15d3f0c
Remove unused isInverted prop from FlameGraphCanvas.
mstange Jun 22, 2026
8a4ea23
Add missing transform shortcut key handling for S (focus-self).
mstange Jun 22, 2026
b09232e
Expose counter information in profiler-cli (#6084)
fatadel Jun 23, 2026
309336c
Merge branch 'main' into push-ytvwpwmsmzlm
mstange Jun 23, 2026
28216fd
Split getSelfAndTotal. (#6113)
mstange Jun 23, 2026
60f30d1
Merge branch 'main' into push-rptxptplyulu
mstange Jun 23, 2026
d0e29c9
Add missing transform shortcut key handling for S (focus-self) (#6117)
mstange Jun 23, 2026
361a5a9
Merge branch 'main' into push-vrqvqvlmwryx
mstange Jun 23, 2026
26147cc
Remove unused isInverted prop from FlameGraphCanvas. (#6116)
mstange Jun 23, 2026
81b3bdb
Merge branch 'main' into push-xrnmmquwuvvt
mstange Jun 23, 2026
6725c89
Change sidebar splitter CSS to only apply to the sidebar, not to all …
mstange Jun 23, 2026
2cfc425
Merge branch 'main' into push-txtmsmxrmyqq
mstange Jun 23, 2026
02df99b
Pass callNodeInfo to handleCallNodeTransformShortcut. (#6115)
mstange Jun 23, 2026
9d9438a
Update all Yarn dependencies (2026-06-24) (#6120)
depfu[bot] Jun 24, 2026
ec8f2a7
⬆️ Update oxfmt to version 0.56.0 (#6121)
depfu[bot] Jun 24, 2026
5cf62b8
🔃 Daily sync: main -> l10n (June 24, 2026)
Jun 24, 2026
add6b76
Move column declarations out into a separate file.
mstange Jun 21, 2026
5e54b46
Move column declarations out into a separate file (#6119)
mstange Jun 24, 2026
4169f21
Pontoon/Firefox Profiler: Update Spanish (Chile) (es-CL)
mozilla-pontoon Jun 24, 2026
39d4298
🔃 Daily sync: main -> l10n (June 25, 2026)
Jun 25, 2026
876db19
Keep menu panels above the selected-marker tooltip (#6125)
fatadel Jun 25, 2026
930639e
Make sure to always sanitize source contents even when no PII sanitiz…
canova Jun 25, 2026
f07749f
Pontoon/Firefox Profiler: Update Friulian (fur)
mozilla-pontoon Jun 25, 2026
12e8aa7
🔃 Daily sync: main -> l10n (June 26, 2026)
Jun 26, 2026
d8e52fa
Convert FlameGraphTiming into a class with a getRow() method.
mstange Jun 21, 2026
f31eedf
Compute FlameGraphTiming rows lazily.
mstange Jun 21, 2026
f641363
Compute FlameGraphTiming rows lazily (#6126)
mstange Jun 26, 2026
de0953b
Create a non-connected FlameGraph component.
mstange Jun 21, 2026
1e84d23
Create a non-connected FlameGraph component (#6118)
mstange Jun 26, 2026
ca12708
🔃 Daily sync: main -> l10n (June 27, 2026)
Jun 27, 2026
787e4a1
🔃 Sync: l10n -> main (June 29, 2026) (#6130)
canova Jun 29, 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
4 changes: 4 additions & 0 deletions docs-developer/CHANGELOG-formats.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,10 @@ Note that this is not an exhaustive list. Processed profile format upgraders can

## Processed profile format

### Version 65

The stack table's `frame` column (stored at `profile.shared.stackTable.frame`) can now optionally be stored as an `Int32Array`, for profiles loaded from [JsonSlabs](https://github.com/mstange/json-slabs/) files (.jslb, .jslb.gz). Regular JS / JSON arrays are still accepted.

### Version 64

A new `SourceLocationTable` has been added to `profile.shared.sourceLocationTable`. It holds the original (pre-compilation) source positions produced by source map symbolication, paired with the generated `line`/`column` already on `FrameTable`.
Expand Down
5 changes: 5 additions & 0 deletions locales/de/app.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,11 @@ AppViewRouter--error-compare = Die Profile konnten nicht abgerufen werden.
# https://profiler.firefox.com/from-url/http%3A%2F%2F127.0.0.1%3A3000%2Fprofile.json/
AppViewRouter--error-from-localhost-url-safari = Aufgrund einer <a>spezifischen Einschränkung in Safari</a> kann { -profiler-brand-name } Profile vom lokalen Computer nicht in diesem Browser importieren. Bitte öffnen Sie diese Seite stattdessen in { -firefox-brand-name } oder Chrome.
.title = Safari kann lokale Profile nicht importieren
# 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 =
Dieses Profil verwendet ein Format, das von dieser Version von { -profiler-brand-name } nicht unterstützt wird.
Versuchen Sie, die Seite zu aktualisieren, um zu überprüfen, ob ein Update für { -profiler-brand-name } verfügbar ist.
AppViewRouter--route-not-found--home =
.specialMessage = Die URL, die Sie erreichen wollten, wurde nicht erkannt.

Expand Down
14 changes: 14 additions & 0 deletions locales/el/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 @@ -894,6 +899,10 @@ TrackMemoryGraph--relative-memory-at-this-time2 = { $value }
# $value (String) - the memory range across the graph (e.g. "5MB")
TrackMemoryGraph--memory-range-in-graph2 = { $value }
.label = εύρος μνήμης στο γράφημα
# Variables:
# $value (String) - count of allocations and deallocations since the previous sample
TrackMemoryGraph--allocations-and-deallocations-since-the-previous-sample2 = { $value }
.label = εκχωρήσεις και αποδεσμεύσεις από το προηγούμενο δείγμα

## TrackProcessCPUGraph
## This is used to show the CPU usage of a process over time in the timeline.
Expand Down Expand Up @@ -948,6 +957,11 @@ TrackPower--tooltip-average-power-watt = { $value } W
# $value (String) - the power value at this location
TrackPower--tooltip-average-power-milliwatt = { $value } mW
.label = Μέση ισχύς στην τρέχουσα επιλογή
# 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 = Μέση ισχύς στην τρέχουσα επιλογή
# This is used in the tooltip when the energy used in the current range uses the
# kilowatt-hour unit.
# Variables:
Expand Down
5 changes: 5 additions & 0 deletions locales/en-GB/app.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,11 @@ AppViewRouter--error-from-localhost-url-safari =
to import profiles from the local machine in this browser. Please open
this page in { -firefox-brand-name } or Chrome instead.
.title = Safari cannot import local profiles
# 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 =
This profile uses a format that is not supported by this version of { -profiler-brand-name }.
Try refreshing the page to check if there is an update available for { -profiler-brand-name }.
AppViewRouter--route-not-found--home =
.specialMessage = The URL you tried to reach was not recognised.

Expand Down
6 changes: 6 additions & 0 deletions locales/en-US/app.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,12 @@ AppViewRouter--error-from-localhost-url-safari =
this page in { -firefox-brand-name } or Chrome instead.
.title = Safari cannot import local profiles
# 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 =
This profile uses a format that is not supported by this version of { -profiler-brand-name }.
Try refreshing the page to check if there is an update available for { -profiler-brand-name }.
AppViewRouter--route-not-found--home =
.specialMessage = The URL you tried to reach was not recognized.
Expand Down
6 changes: 6 additions & 0 deletions locales/es-CL/app.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,12 @@ AppViewRouter--error-compare = No se pudieron recuperar los perfiles.
# https://profiler.firefox.com/from-url/http%3A%2F%2F127.0.0.1%3A3000%2Fprofile.json/
AppViewRouter--error-from-localhost-url-safari = Debido a una <a>limitación específica en Safari</a>, { -profiler-brand-name } no puede importar perfiles de la máquina local en este navegador. Por favor, abre esta página en { -firefox-brand-name } o Chrome en su lugar.
.title = Safari no puede importar perfiles locales
# 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 =
Este perfil utiliza un formato no compatible con esta versión de { -profiler-brand-name }.

Intenta actualizar la página para comprobar si hay alguna actualización disponible para { -profiler-brand-name }.
AppViewRouter--route-not-found--home =
.specialMessage = La URL a la que intentaste acceder no fue reconocida.

Expand Down
5 changes: 5 additions & 0 deletions locales/fr/app.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,11 @@ AppViewRouter--error-compare = Impossible de récupérer les profils.
# https://profiler.firefox.com/from-url/http%3A%2F%2F127.0.0.1%3A3000%2Fprofile.json/
AppViewRouter--error-from-localhost-url-safari = En raison d’une <a>limitation spécifique à Safari</a>, { -profiler-brand-name } ne peut pas importer de profils depuis la machine locale dans ce navigateur. Veuillez ouvrir cette page dans { -firefox-brand-name } ou Chrome à la place.
.title = Safari ne peut pas importer de profils locaux
# 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 =
Ce profil utilise un format qui n’est pas pris en charge par cette version de { -profiler-brand-name }.
Essayez d’actualiser la page pour vérifier si une mise à jour est disponible pour { -profiler-brand-name }.
AppViewRouter--route-not-found--home =
.specialMessage = L’URL que vous avez tenté d’atteindre n’a pas été trouvée

Expand Down
31 changes: 31 additions & 0 deletions locales/fur/app.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -811,6 +811,32 @@ TrackNameButton--hide-track =
TrackNameButton--hide-process =
.title = Plate procès

## 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 = memorie relative a chest pont
# Variables:
# $value (String) - the memory range across the graph (e.g. "5MB")
TrackMemoryGraph--memory-range-in-graph2 = { $value }
.label = interval di memorie tal grafic
# Variables:
# $value (String) - count of allocations and deallocations since the previous sample
TrackMemoryGraph--allocations-and-deallocations-since-the-previous-sample2 = { $value }
.label = assegnazion e disassegnazion dal campion di prime

## 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 Expand Up @@ -856,6 +882,11 @@ TrackPower--tooltip-average-power-watt = { $value } W
# $value (String) - the power value at this location
TrackPower--tooltip-average-power-milliwatt = { $value } mW
.label = Consum medi te selezion atuâl
# 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 = Consum medi te selezion corinte
# This is used in the tooltip when the energy used in the current range uses the
# kilowatt-hour unit.
# Variables:
Expand Down
5 changes: 5 additions & 0 deletions locales/fy-NL/app.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,11 @@ AppViewRouter--error-from-localhost-url-safari =
profilen fan de lokale kompjûter yn dizze browser ymportearje. Iepenje yn stee dêrfan
dizze side yn { -firefox-brand-name } of Chrome.
.title = Safari kan geen lokale profielen importeren
# 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 =
Dit profyl brûkt in yndieling dy’t net troch dizze ferzje fan { -profiler-brand-name } stipe wurdt.
Probearje de side te ferfarskjen om te kontrolearjen oft der in fernijing beskikber is foar { -profiler-brand-name }.
AppViewRouter--route-not-found--home =
.specialMessage = De URL dy’t jo probearre te berikken, waard net werkend.

Expand Down
5 changes: 5 additions & 0 deletions locales/ia/app.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,11 @@ AppViewRouter--error-from-localhost-url-safari =
importar profilos ab le local apparato in iste browser. Per favor aperi
in vice iste pagina in { -firefox-brand-name } o Chrome.
.title = Safari non pote importar profilos local
# 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 =
Iste profilo usa un formato que non es supportate per iste version de { -profiler-brand-name }.
Essaya refrescar le pagina pro verificar si il ha un actualisation disponibile pro { -profiler-brand-name }.
AppViewRouter--route-not-found--home =
.specialMessage = Le URL que tu tentava attinger non ha essite recognoscite.

Expand Down
5 changes: 5 additions & 0 deletions locales/it/app.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,11 @@ AppViewRouter--error-compare = Impossibile recuperare i profili.
# https://profiler.firefox.com/from-url/http%3A%2F%2F127.0.0.1%3A3000%2Fprofile.json/
AppViewRouter--error-from-localhost-url-safari = A causa di una <a>limitazione specifica di Safari</a>, { -profiler-brand-name } non può importare profili dal dispositivo locale in questo browser. Aprire questa pagina in { -firefox-brand-name } o Chrome.
.title = Impossibile importare profili locali in 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 =
Questo profilo utilizza un formato non compatibile con questa versione di { -profiler-brand-name }.
Ricarica la pagina per verificare se è disponibile un aggiornamento per { -profiler-brand-name }.
AppViewRouter--route-not-found--home =
.specialMessage = L’URL che hai cercato di raggiungere non è stato riconosciuto.

Expand Down
5 changes: 5 additions & 0 deletions locales/nl/app.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,11 @@ AppViewRouter--error-from-localhost-url-safari =
profielen van de lokale computer in deze browser importeren. Open in plaats daarvan
deze pagina in { -firefox-brand-name } of Chrome.
.title = Safari kan geen lokale profielen importeren
# 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 =
Dit profiel gebruikt een indeling die niet door deze versie van { -profiler-brand-name } wordt ondersteund.
Probeer de pagina te vernieuwen om te controleren of er een update beschikbaar is voor { -profiler-brand-name }.
AppViewRouter--route-not-found--home =
.specialMessage = De URL die u probeerde te bereiken, werd niet herkend.

Expand Down
5 changes: 5 additions & 0 deletions locales/ru/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
5 changes: 5 additions & 0 deletions locales/sv-SE/app.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,11 @@ AppViewRouter--error-from-localhost-url-safari =
{ -profiler-brand-name } importera profiler från den lokala datorn i den här webbläsaren. Öppna
den här sidan i { -firefox-brand-name } eller Chrome istället.
.title = Safari kan inte importera lokala profiler
# 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 =
Den här profilen använder ett format som inte stöds av den här versionen av { -profiler-brand-name }.
Testa att uppdatera sidan för att kontrollera om det finns en tillgänglig uppdatering för { -profiler-brand-name }.
AppViewRouter--route-not-found--home =
.specialMessage = Webbadressen du försökte nå kändes inte igen.
Expand Down
5 changes: 5 additions & 0 deletions locales/zh-TW/app.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,11 @@ 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 = 無法處理您嘗試開啟的網址。

Expand Down
12 changes: 6 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -70,7 +70,7 @@
"@codemirror/lang-rust": "^6.0.2",
"@codemirror/language": "^6.12.3",
"@codemirror/state": "^6.6.0",
"@codemirror/view": "^6.43.0",
"@codemirror/view": "^6.43.1",
"@firefox-devtools/react-contextmenu": "^5.2.4",
"@fluent/bundle": "^0.19.1",
"@fluent/langneg": "^0.7.0",
Expand Down Expand Up @@ -100,7 +100,7 @@
"mixedtuplemap": "^1.0.0",
"namedtuplemap": "^1.0.0",
"photon-colors": "^3.3.2",
"protobufjs": "^8.6.3",
"protobufjs": "^8.6.5",
"query-string": "^9.4.0",
"react": "~19.1.8",
"react-dom": "~19.1.8",
Expand Down Expand Up @@ -132,7 +132,7 @@
"@types/jest": "^30.0.0",
"@types/node": "^24.13.2",
"@types/query-string": "^6.3.0",
"@types/react": "^19.2.15",
"@types/react": "^19.2.17",
"@types/react-dom": "^19.2.3",
"@types/redux-logger": "^3.0.6",
"@types/tgwf__co2": "^0.14.2",
Expand All @@ -143,7 +143,7 @@
"babel-plugin-module-resolver": "^5.0.3",
"browserslist": "^4.28.2",
"browserslist-to-esbuild": "^2.1.1",
"caniuse-lite": "^1.0.30001793",
"caniuse-lite": "^1.0.30001799",
"cross-env": "^10.1.0",
"cross-spawn": "^7.0.6",
"devtools-license-check": "^0.9.0",
Expand All @@ -169,12 +169,12 @@
"lockfile-lint": "^5.0.0",
"npm-run-all2": "^8.0.4",
"open": "^11.0.0",
"oxfmt": "^0.51.0",
"oxfmt": "^0.56.0",
"patch-package": "^8.0.1",
"postcss": "^8.5.15",
"postinstall-postinstall": "^2.1.0",
"rimraf": "^6.1.3",
"stylelint": "^17.12.0",
"stylelint": "^17.13.0",
"stylelint-config-idiomatic-order": "^10.0.0",
"stylelint-config-standard": "^40.0.0",
"typescript": "^6.0.3",
Expand Down
28 changes: 28 additions & 0 deletions profiler-cli/guide.txt
Original file line number Diff line number Diff line change
Expand Up @@ -117,6 +117,7 @@ HANDLE SYSTEM
t-0, t-1 Thread handles (from "profile info")
m-1234 Marker handles (from "thread markers")
f-12 Function handles (from "thread samples", "thread functions")
c-0, c-1 Counter handles (from "counter list" or "profile info")
ts-6 Timestamp handles (named points in time, usable with "zoom push")

Handle lifetime and stability:
Expand All @@ -127,6 +128,8 @@ HANDLE SYSTEM
m-N thread markers No -- rebuilt each time the daemon starts
f-N thread samples, Yes -- direct index into the profile's function
thread functions table; same profile always yields the same f-N
c-N counter list Yes -- direct index into the profile's counter
array; same profile always yields the same c-N
ts-N thread markers No -- position-based, session-scoped
──────────────────────────────────────────────────────────────────────────

Expand Down Expand Up @@ -215,6 +218,31 @@ FILTERS
profiler-cli filter push --during-marker --search Paint


COUNTERS

Counters are time series the profiler records alongside samples: memory usage,
network bandwidth, process CPU, power, and similar. Each counter has a handle
(c-0, c-1, ...) and carries its own display metadata (label, unit, graph type).

profiler-cli counter list List all counters with one-line summaries
profiler-cli counter info c-0 Detailed info and stats for one counter

Counters also appear in "profile info", listed under their owning process
next to that process's threads (much like the timeline track list).

The stats shown come from the counter's own tooltip schema, so they match the
timeline tooltips. Each counter reports its whole-range aggregates, e.g. the
memory range for Memory, data transferred for Bandwidth, or energy used (with a
CO2e estimate) for Power.

All counter stats respect the current zoom: with no zoom they cover the whole
profile; after "zoom push" they cover the committed range. Combine with zoom to
see, for example, how much memory a specific time window allocated:

profiler-cli zoom push 2.7,3.1
profiler-cli counter info c-0


JSON OUTPUT

Add --json to any command to get structured JSON output, suitable for piping to jq
Expand Down
2 changes: 1 addition & 1 deletion profiler-cli/package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@firefox-devtools/profiler-cli",
"version": "0.2.1",
"version": "0.3.0",
"description": "Command-line interface for querying Firefox Profiler profiles with persistent daemon sessions",
"scripts": {
"prepublishOnly": "node ../scripts/verify-profiler-cli-build.mjs"
Expand Down
Loading
Loading