Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
94f622e
Make app.ftl link preload path absolute.
mstange Sep 2, 2025
d2018d5
Use firefox-profiler-res consistently in our CSS files.
mstange Sep 2, 2025
48c7847
Some path fixes (#5581)
mstange Sep 2, 2025
ba5e358
Pontoon/Firefox Profiler: Update German (de)
mozilla-pontoon Sep 2, 2025
c3806dd
Replace zee-worker.js with compression streams API
eqrion Sep 2, 2025
44da5eb
Fix typing around shared array buffers
eqrion Sep 2, 2025
5121714
🔃 Daily sync: main -> l10n (September 3, 2025)
Sep 3, 2025
d956b46
Update all Yarn dependencies (2025-09-03) (#5585)
depfu[bot] Sep 3, 2025
b4872b6
Pontoon/Firefox Profiler: Update Turkish (tr)
mozilla-pontoon Sep 3, 2025
0f4bf61
Replace @fetch-mock/jest with plain fetch-mock.
mstange Aug 27, 2025
c34140c
Remove the findDOMNode usage from ContextMenu
canova Sep 3, 2025
84d1c38
Update the snapshots
canova Sep 3, 2025
cc2349c
Remove the findDOMNode usage from ContextMenu (#5588)
canova Sep 3, 2025
faeb038
Merge branch 'main' into fix-fetch-mock-checks
mstange Sep 3, 2025
3a1777b
Replace @fetch-mock/jest with plain fetch-mock (#5575)
mstange Sep 3, 2025
6a06a4a
🔃 Daily sync: main -> l10n (September 4, 2025)
Sep 4, 2025
60c4e4c
Merge branch 'main' into rm-zee
mstange Sep 4, 2025
998bd9c
Replace zee-worker.js with compression streams API (#5584)
mstange Sep 4, 2025
2a83c47
Remove non-functional animations from FilterNavigatorBar.
mstange Sep 4, 2025
1242e90
Use different ports for start-prod and start-examples.
mstange Sep 4, 2025
a804198
Remove unused FilterNavigatorBar animations (#5591)
mstange Sep 4, 2025
aff9465
Merge branch 'main' into different-ports
mstange Sep 4, 2025
c405844
Use different ports for start-prod and start-examples (#5592)
mstange Sep 4, 2025
2a361e2
Remove SharedArrayBuffer workaround, instanceof SharedArrayBuffer is …
mstange Sep 4, 2025
15fda56
Make time after responseEnd have a more accurate name
jrmuizel Sep 2, 2025
401fde3
Merge branch 'main' into patch-1
mstange Sep 4, 2025
a44acf1
Remove SharedArrayBuffer workaround (#5596)
mstange Sep 4, 2025
9e2ef4d
Merge branch 'main' into patch-1
mstange Sep 4, 2025
9d8a626
Make time after responseEnd have a more accurate name (#5582)
mstange Sep 4, 2025
61cdcb4
Move compression and decompression to a worker
eqrion Sep 4, 2025
67b509e
Fix lints
eqrion Sep 4, 2025
b282779
Add license
eqrion Sep 4, 2025
f6db0d3
Move compression and decompression to a worker (#5597)
mstange Sep 4, 2025
871fda3
Add a test for call tree search filtering.
mstange Sep 4, 2025
999dedd
Make bit set functions check for out-of-bounds indexes.
mstange Sep 4, 2025
9be394d
Pass the right length when creating the stackMatchesSearch bit set.
mstange Sep 4, 2025
bf55934
Simplify the eslint command in package.json so that eslint.config.mjs…
mstange Sep 4, 2025
98081b6
Remove Flow and no-TypeScript settings from .vscode/settings.json.
mstange Sep 4, 2025
8416bd3
🔃 Daily sync: main -> l10n (September 5, 2025)
Sep 5, 2025
3ddc098
Remove Flow and no-TypeScript settings from .vscode/settings.json (#5…
mstange Sep 5, 2025
6296b3d
Merge branch 'main' into lint-all-files
mstange Sep 5, 2025
71f1b0b
Simplify the eslint command in package.json so that eslint.config.mjs…
mstange Sep 5, 2025
3f01b04
Merge branch 'main' into fix-search-filter
mstange Sep 5, 2025
e386949
Fix search filtering (#5599)
mstange Sep 5, 2025
6edcb83
Merge branch 'main' into l10n
canova Sep 5, 2025
6b91dd5
🔃 Sync: l10n -> main (September 5, 2025) (#5603)
canova Sep 5, 2025
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
1 change: 0 additions & 1 deletion .prettierignore
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ src/types/libdef/npm
docs-user/js
docs-user/css
src/test/fixtures/upgrades
res/zee-worker.js
dist
coverage
taskcluster/
Expand Down
9 changes: 0 additions & 9 deletions .vscode/settings.json

This file was deleted.

2 changes: 2 additions & 0 deletions eslint.config.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,8 @@ export default [
ignores: [
'src/profile-logic/import/proto/**',
'src/types/libdef/npm/**',
'res/**',
'dist/**',
'docs-user/**',
'coverage/**',
],
Expand Down
2 changes: 1 addition & 1 deletion locales/de/app.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -710,7 +710,7 @@ ServiceWorkerManager--hide-notice-button =
StackSettings--implementation-all-frames = Alle Frames
.title = Die Stack-Frames nicht filtern
StackSettings--implementation-script = Skript
.title = Nur die Stapelrahmen anzeigen, die mit der Skriptausführung zusammenhängen.
.title = Nur Stack-Frames anzeigen, die mit Skriptausführung zusammenhängen.
StackSettings--implementation-native2 = Native
.title = Nur die Stack-Frames für nativen Quelltext anzeigen
# This label is displayed in the marker chart and marker table panels only.
Expand Down
38 changes: 38 additions & 0 deletions locales/tr/app.ftl
Original file line number Diff line number Diff line change
Expand Up @@ -131,12 +131,22 @@ CallTreeSidebar--traced-running-time =
.label = İzlenen çalışma süresi
CallTreeSidebar--running-time =
.label = Çalışma süresi
CallTreeSidebar--self-time =
.label = Kendi süresi
CallTreeSidebar--running-samples =
.label = Çalışan örnekler
CallTreeSidebar--self-samples =
.label = Kendi örnekleri
CallTreeSidebar--running-size =
.label = Çalışma boyutu
CallTreeSidebar--self-size =
.label = Kendi boyutu
CallTreeSidebar--categories = Kategoriler
CallTreeSidebar--implementation = Yürütme
CallTreeSidebar--running-milliseconds = Çalışma milisaniyesi
CallTreeSidebar--self-milliseconds = Kendi milisaniyesi
CallTreeSidebar--self-sample-count = Kendi örnek sayısı
CallTreeSidebar--self-bytes = Kendi baytı

## CompareHome
## This is used in the page to compare two profiles.
Expand All @@ -152,6 +162,15 @@ CompareHome--form-label-profile2 = Profil 2:
CompareHome--submit-button =
.value = Profilleri getir

## DebugWarning
## This is displayed at the top of the analysis page when the loaded profile is
## a debug build of Firefox.

DebugWarning--warning-message =
.message =
Bu profil, sürüm optimizasyonları yapılmamış bir derlemede kaydedildi.
Performans gözlemleri sürüm popülasyonu için geçerli olmayabilir.

## Details
## This is the bottom panel in the analysis UI. They are generic strings to be
## used at the bottom part of the UI.
Expand Down Expand Up @@ -205,6 +224,10 @@ Home--load-from-url-submit-button =
.value = Yükle
Home--documentation-button = Dokümantasyon
Home--menu-button = { -profiler-brand-name } menü düğmesini etkinleştir
Home--menu-button-instructions = Performans kaydetmeye başlamak için { -firefox-brand-name }’ta profilleyici menü düğmesini etkinleştirin, ardından profili analiz edin ve profiler.firefox.com ile paylaşın.
Home--profile-firefox-android-instructions =
{ -firefox-android-brand-name }’ta da profilleme yapabilirsiniz. Daha fazla bilgi almak için lütfen bu belgeye bakın:
<a>Doğrudan cihaz üzerinde { -firefox-android-brand-name } profilleme</a>.
# The word WebChannel should not be translated.
# This message can be seen on https://main--perf-html.netlify.app/ in the tooltip
# of the "Enable Firefox Profiler menu button" button.
Expand All @@ -221,6 +244,11 @@ Home--additional-content-content = Profil dosyasını buraya <strong>sürükleyi
Home--compare-recordings-info = Ayrıca kayıtları karşılaştırabilirsiniz. <a>Karşılaştırma arayüzünü aç.</a>
Home--your-recent-uploaded-recordings-title = Son yüklediğiniz kayıtlar
Home--install-chrome-extension = Chrome uzantısını yükle
Home--chrome-extension-instructions = Chrome’daki performans profillerini kaydedip { -profiler-brand-name }’da analiz etmek için <a>Chrome { -profiler-brand-name } uzantısını</a> kullanabilirsiniz. Uzantıyı Chrome Web Store'dan yükleyebilirsiniz.
Home--chrome-extension-recording-instructions =
Uzantıyı yükledikten sonra profillemeyi başlatmak ve durdurmak için uzantının
araç çubuğu simgesini veya kısayolları kullanabilirsiniz. İsterseniz
profilleri dışa aktarabilir ve ayrıntılı analiz için buraya yükleyebilirsiniz.

## IdleSearchField
## The component that is used for all the search inputs in the application.
Expand Down Expand Up @@ -327,6 +355,8 @@ MenuButtons--index--profile-info-uploaded-label = Yüklenme tarihi:
MenuButtons--index--profile-info-uploaded-actions = Sil
MenuButtons--index--metaInfo-subtitle = Profil Bilgileri
MenuButtons--metaInfo--symbols = Semboller:
MenuButtons--metaInfo--profile-symbolicated = Profil sembolleştirilmiştir
MenuButtons--metaInfo--symbolicate-profile = Profili sembolleştir
MenuButtons--metaInfo--cpu-model = İşlemci modeli:
MenuButtons--metaInfo--cpu-cores = İşlemci çekirdekleri:
MenuButtons--metaInfo--main-memory = Ana bellek:
Expand Down Expand Up @@ -424,10 +454,14 @@ MenuButtons--metaOverheadStatistics-max = Maksimum
MenuButtons--metaOverheadStatistics-min = Minimum
MenuButtons--metaOverheadStatistics-statkeys-overhead = Ek yük
.title = Tüm iş parçacıklarını örnekleme süresi.
MenuButtons--metaOverheadStatistics-statkeys-cleaning = Temizleme
.title = Süresi geçmiş verileri temizleme süresi.
MenuButtons--metaOverheadStatistics-statkeys-counter = Sayaç
.title = Tüm sayaçları toplama süresi.
MenuButtons--metaOverheadStatistics-statkeys-interval = Aralık
.title = İki örnek arasındaki gözlenen aralık.
MenuButtons--metaOverheadStatistics-statkeys-lockings = Kilitlemeler
.title = Örneklemeden önce kilidi elde etme süresi.
MenuButtons--metaOverheadStatistics-overhead-duration = Ek yük süreleri:
MenuButtons--metaOverheadStatistics-overhead-percentage = Ek yük yüzdesi:
MenuButtons--metaOverheadStatistics-profiled-duration = Profillenen süre:
Expand Down Expand Up @@ -581,6 +615,10 @@ ServiceWorkerManager--hide-notice-button =

StackSettings--implementation-all-frames = Tüm çerçeveler
.title = Yığın çerçevelerini filtreleme
StackSettings--implementation-script = Betik
.title = Yalnızca script çalışmasına ilişkin yığın çerçevelerini göster
StackSettings--implementation-native2 = Yerel
.title = Yalnızca yerel kod için yığın çerçevelerini göster
# This label is displayed in the marker chart and marker table panels only.
StackSettings--stack-implementation-label = Yığın filtresi:
StackSettings--use-data-source-label = Veri kaynağı:
Expand Down
18 changes: 9 additions & 9 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
"build-symbolicator-cli:quiet": "yarn build:clean && cross-env NODE_ENV=production webpack --config src/symbolicator-cli/webpack.config.js",
"lint": "node bin/output-fixing-commands.js run-p lint-js lint-css prettier-run",
"lint-fix": "run-p lint-fix-js lint-fix-css prettier-fix",
"lint-js": "node bin/output-fixing-commands.js eslint *.js bin src --report-unused-disable-directives --cache --cache-strategy content",
"lint-js": "node bin/output-fixing-commands.js eslint . --report-unused-disable-directives --cache --cache-strategy content",
"lint-fix-js": "yarn lint-js --fix",
"lint-css": "node bin/output-fixing-commands.js stylelint \"src/**/*.css\" \"res/**/*.css\"",
"lint-fix-css": "yarn lint-css --fix",
Expand All @@ -34,12 +34,12 @@
"license-check": "devtools-license-check",
"preinstall": "node bin/pre-install.js",
"publish": "rimraf public_html && cp -r dist public_html",
"serve-static": "ws -d dist/ -s index.html -p 4242",
"serve-static": "ws -d dist/ -s index.html -p 4243",
"start": "yarn build:clean && cross-env NODE_ENV=development node server.js",
"start-prod": "yarn build-prod && yarn serve-static",
"start-l10n": "yarn build:clean && cross-env NODE_ENV=development L10N=1 node server.js",
"start-l10n-prod": "yarn build-l10n-prod && yarn serve-static",
"start-examples": "ws -d examples/ -s index.html -p 4242",
"start-examples": "ws -d examples/ -s index.html -p 4244",
"start-docs": "ws -d docs-user/ -p 3000",
"start-photon": "node res/photon/server",
"test": "node bin/output-fixing-commands.js cross-env LC_ALL=C TZ=UTC NODE_ENV=test jest",
Expand Down Expand Up @@ -76,7 +76,7 @@
"classnames": "^2.5.1",
"common-tags": "^1.8.2",
"copy-to-clipboard": "^3.3.3",
"core-js": "^3.45.0",
"core-js": "^3.45.1",
"escape-string-regexp": "^4.0.0",
"gecko-profiler-demangle": "^0.3.3",
"idb": "^8.0.3",
Expand Down Expand Up @@ -115,15 +115,14 @@
"@babel/preset-react": "^7.27.1",
"@babel/preset-typescript": "^7.27.1",
"@eslint/js": "^9.34.0",
"@fetch-mock/jest": "^0.2.16",
"@testing-library/dom": "^10.4.1",
"@testing-library/jest-dom": "^6.6.4",
"@testing-library/jest-dom": "^6.8.0",
"@testing-library/react": "^16.3.0",
"@types/clamp": "^1.0.3",
"@types/common-tags": "^1.8.4",
"@types/jest": "^30.0.0",
"@types/minimist": "^1.2.5",
"@types/node": "^22.17.2",
"@types/node": "^22.18.0",
"@types/query-string": "^6.3.0",
"@types/react": "^18.3.24",
"@types/react-dom": "^18.3.1",
Expand All @@ -145,7 +144,7 @@
"copy-webpack-plugin": "^13.0.1",
"cross-env": "^10.0.0",
"css-loader": "^7.1.2",
"cssnano": "^7.1.0",
"cssnano": "^7.1.1",
"devtools-license-check": "^0.9.0",
"eslint": "^9.34.0",
"eslint-config-prettier": "^10.1.8",
Expand All @@ -158,6 +157,7 @@
"eslint-plugin-testing-library": "^7.6.6",
"espree": "^10.4.0",
"fake-indexeddb": "^6.1.0",
"fetch-mock": "^12.5.3",
"file-loader": "^6.2.0",
"glob": "^11.0.3",
"globals": "^16.3.0",
Expand Down Expand Up @@ -207,7 +207,7 @@
"tsx"
],
"transformIgnorePatterns": [
"/node_modules/(?!(query-string|decode-uri-component|iongraph-web|split-on-first|filter-obj|@fetch-mock/jest|fetch-mock)/)"
"/node_modules/(?!(query-string|decode-uri-component|iongraph-web|split-on-first|filter-obj|fetch-mock)/)"
],
"moduleNameMapper": {
"\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga|ftl)$": "<rootDir>/src/test/fixtures/mocks/file-mock.ts",
Expand Down
62 changes: 62 additions & 0 deletions res/gz-worker.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,62 @@
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */

async function readableStreamToBuffer(stream) {
const reader = stream.getReader();
const chunks = [];

try {
while (true) {
const { done, value } = await reader.read();
if (done) break;
if (value) {
chunks.push(value);
}
}
} finally {
reader.releaseLock();
}

// Calculate total length and combine chunks
const totalLength = chunks.reduce((sum, chunk) => sum + chunk.length, 0);
const result = new Uint8Array(totalLength);
let offset = 0;
for (const chunk of chunks) {
result.set(chunk, offset);
offset += chunk.length;
}

return result;
}

onmessage = async (e) => {
let data = e.data;
if (data.kind === 'compress') {
// Create a gzip compression stream
const compressionStream = new CompressionStream('gzip');

// Write the data to the compression stream
const writer = compressionStream.writable.getWriter();
writer.write(data.arrayData);
writer.close();

// Read the compressed data back into a buffer
let result = await readableStreamToBuffer(compressionStream.readable);
postMessage(result, [result.buffer]);
} else if (data.kind === 'decompress') {
// Create a gzip compression stream
const decompressionStream = new DecompressionStream('gzip');

// Write the data to the compression stream
const writer = decompressionStream.writable.getWriter();
writer.write(data.arrayData);
writer.close();

// Read the compressed data back into a buffer
let result = await readableStreamToBuffer(decompressionStream.readable);
postMessage(result, [result.buffer]);
} else {
throw new Error('unknown message');
}
};
2 changes: 1 addition & 1 deletion res/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<meta charset="utf-8" />
<meta name="viewport" content="initial-scale=1" />
<title>Firefox Profiler</title>
<link rel="preload" href="locales/en-US/app.ftl" as="fetch" />
<link rel="preload" href="/locales/en-US/app.ftl" as="fetch" />
</head>
<body style="background-color: #363959; /* ink-70 */">
<svg id="svg-filters"></svg>
Expand Down
80 changes: 0 additions & 80 deletions res/zee-worker.js

This file was deleted.

2 changes: 1 addition & 1 deletion src/actions/receive-profile.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1065,7 +1065,7 @@ async function _extractZipFromResponse(
async function _extractJsonFromArrayBuffer(
arrayBuffer: ArrayBuffer
): Promise<unknown> {
let profileBytes: Uint8Array<ArrayBufferLike> = new Uint8Array(arrayBuffer);
let profileBytes = new Uint8Array(arrayBuffer);
// Check for the gzip magic number in the header.
if (isGzip(profileBytes)) {
profileBytes = await decompress(profileBytes);
Expand Down
10 changes: 6 additions & 4 deletions src/components/app/BottomBox.css
Original file line number Diff line number Diff line change
Expand Up @@ -72,11 +72,11 @@
}

.bottom-close-button {
background-image: url(/res/img/svg/close-dark.svg);
background-image: url(firefox-profiler-res/img/svg/close-dark.svg);
}

.bottom-assembly-button {
background-image: url(/res/img/svg/asm-icon.svg);
background-image: url(firefox-profiler-res/img/svg/asm-icon.svg);
}

.codeLoadingOverlay,
Expand Down Expand Up @@ -111,7 +111,8 @@
width: 32px;
height: 32px;
flex-shrink: 0;
background: url(/res/img/spinner.png) center center / 32px 32px no-repeat;
background: url(firefox-profiler-res/img/spinner.png) center center / 32px
32px no-repeat;
content: '';
}

Expand All @@ -122,7 +123,8 @@
width: 50px;
height: 50px;
flex-shrink: 0;
background: url(/res/img/svg/error.svg) center center / 32px 32px no-repeat;
background: url(firefox-profiler-res/img/svg/error.svg) center center / 32px
32px no-repeat;
content: '';
filter: brightness(70%) drop-shadow(0 1px rgb(255 255 255 / 0.5));
}
Expand Down
4 changes: 2 additions & 2 deletions src/components/app/Details.css
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,9 @@
}

.sidebar-open-close-button-isopen {
background-image: url(../../../res/img/svg/pane-collapse.svg);
background-image: url(firefox-profiler-res/img/svg/pane-collapse.svg);
}

.sidebar-open-close-button-isclosed {
background-image: url(../../../res/img/svg/pane-expand.svg);
background-image: url(firefox-profiler-res/img/svg/pane-expand.svg);
}
2 changes: 1 addition & 1 deletion src/components/app/Home.css
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@
width: 20px;
height: 20px;
margin: 0 10px -4px 3px;
background: url(../../../res/img/svg/help-blue.svg);
background: url(firefox-profiler-res/img/svg/help-blue.svg);
background-size: 100% 100%;
}

Expand Down
4 changes: 2 additions & 2 deletions src/components/app/KeyboardShortcut.css
Original file line number Diff line number Diff line change
Expand Up @@ -95,8 +95,8 @@

/* Allow for the photon focus ring to fit in the space by using a 4px margin. */
margin: 4px;
background: url(../../../res/img/svg/searchfield-cancel.svg) 10px center
no-repeat;
background: url(firefox-profiler-res/img/svg/searchfield-cancel.svg) 10px
center no-repeat;
cursor: pointer;
font-size: inherit;
}
Expand Down
8 changes: 4 additions & 4 deletions src/components/app/ProfileDeleteButton.css
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
/* Note: 20px is: 16px (icon width) + 4px (distance from the text) */
padding-left: 20px;
margin: 0;
background: url(../../../res/img/svg/check-dark.svg) no-repeat left / 16px
16px;
background: url(firefox-profiler-res/img/svg/check-dark.svg) no-repeat left /
16px 16px;
white-space: nowrap;
}

Expand All @@ -16,8 +16,8 @@
padding-left: 24px;

/* The icon is 4px below the top */
background: url(../../../res/img/svg/error-red.svg) no-repeat 0 4px / 16px
16px;
background: url(firefox-profiler-res/img/svg/error-red.svg) no-repeat 0 4px /
16px 16px;
color: var(--red-60);
overflow-wrap: break-word;
}
Expand Down
4 changes: 2 additions & 2 deletions src/components/app/ProfileViewer.css
Original file line number Diff line number Diff line change
Expand Up @@ -80,8 +80,8 @@
margin: 3px 0 3px 3px;

/* Other */
background: var(--green-50) url(../../../res/img/svg/back-arrow.svg) center
center no-repeat;
background: var(--green-50) url(firefox-profiler-res/img/svg/back-arrow.svg)
center center no-repeat;
color: #000;
}

Expand Down
2 changes: 1 addition & 1 deletion src/components/calltree/CallTree.css
Original file line number Diff line number Diff line change
Expand Up @@ -32,5 +32,5 @@

.treeBadge.inlined,
.treeBadge.divergent-inlining {
background: url(../../../res/img/svg/inlined-icon.svg);
background: url(firefox-profiler-res/img/svg/inlined-icon.svg);
}
Loading