Compare commits

...
Sign in to create a new pull request.

416 commits

Author SHA1 Message Date
LeMoonStar
7c7a911d1e Undo essentials limit 2025-05-29 00:30:55 +02:00
mr. m
663243264b
feat: Prevent zen's session restore from being removed, b=(no-bug), c=common 2025-05-28 18:19:49 +02:00
mr. m
03ca00748c
fix: Fixed inserting changed titles into pinned database, b=(no-bug), c=tabs 2025-05-28 17:59:51 +02:00
mr. m
cbb1a4bc44
feat: Remove border from menu popups, b=(no-bug), c=common 2025-05-28 17:13:21 +02:00
mr. m
21f3ab23d3
feat: Inherti the split view type when opening a new link, b=(no-bug), c=split-view 2025-05-28 14:17:20 +02:00
mr. m
18944d5ed8
fix: Fixed pinned tab icons not appearing at startup, b=(no-bug), c=tabs 2025-05-28 10:17:33 +02:00
Mr. M
5c6e5f7361
fix: Fixed import mods button not working, b=(no-bug), c=mods, split-view 2025-05-27 21:03:40 +02:00
Mr. M
bd72aebd98
chore: Only export global variable for mods, not the class, b=(no-bug), c=mods 2025-05-27 20:17:06 +02:00
Mr. M
0278aea4f7
chore: Remove support links that target mozilla's support page on the about dialog, b=(bug #8634), c=no-component 2025-05-27 20:14:34 +02:00
Mr. M
3c01004641
fix: Fixed workspace transition animations and icons not appearing on new profiles, b=(no-bug), c=tabs, workspaces 2025-05-27 17:59:26 +02:00
Mr. M
b8213569e5
feat: Disable opening link on split view if the limit is reached, b=(no-bug), c=common, split-view 2025-05-27 17:14:10 +02:00
Mr. M
4d27f9d741
chore: Updated to firefox 139.0, b=(no-bug), c=no-component 2025-05-27 16:53:31 +02:00
Mr. M
3b56abf090
fix: Small fixes for split view and glance, b=(no-bug), c=common, compact-mode, split-view, tabs 2025-05-27 16:51:35 +02:00
Jai A P
590ba6de1b
Finally fix positioning of popups (#8532)
Co-authored-by: mr. m <91018726+mauro-balades@users.noreply.github.com>
2025-05-27 15:29:41 +02:00
Mr. M
4aa215e091
fix: Fixed changing tab having the wrong focus on the website, b=(closes #8587), c=workspaces 2025-05-27 13:38:16 +02:00
Mr. M
de175bff11
fix: Fixer resizing the sidebar break the urlbar formatting, b=(no-bug), c=common, workspaces 2025-05-27 13:38:10 +02:00
Mr. M
a6bc8d7105
chore: Cleanup calls to updateSplitViewButton, b=(no-bug), c=split-view 2025-05-27 13:02:28 +02:00
Mr. M
e48e7caef1
test: Fixed test test_Glance_Basic_Close, b=(no-bug), c=split-view 2025-05-27 12:51:17 +02:00
Mr. M
015cdad2df
feat: Made 'search test on <search engine>' open tabs in glance, b=(no-bug), c=common, glance, split-view, tests 2025-05-27 12:49:12 +02:00
Mr. M
ef6cf5fae1
chore: Remove icons from context menus, b=(no-bug), c=common 2025-05-27 12:11:58 +02:00
Bryan Galdámez
797152da89
refactor(mods): rework ZenMods module (#8618)
Co-authored-by: mr. m <mr.m@tuta.com>
Co-authored-by: mr. m <91018726+mauro-balades@users.noreply.github.com>
2025-05-27 12:02:59 +02:00
Mr. M
316ff45859
feat: Remove titlebar option on context menu, b=(no-bug), c=tabs 2025-05-27 10:43:55 +02:00
Mr. M
e0ac9ba424
chore: Added licenses to remanining files, b=(no-bug), c=common, compact-mode, folders, glance, media, mods, tabs, tests, workspaces 2025-05-25 17:15:19 +02:00
Mr. M
09ca430b88
feat: Improved tab transitions and fixed a couple of issues with glance, b=(no-bug), c=tabs, common, glance, split-view, workspaces 2025-05-25 17:06:22 +02:00
Mr. M
dda1dab6f3
fix: Fixed menu items being missaligned on windows, b=(closes #8590), c=no-component 2025-05-25 11:22:44 +02:00
mr. m
fbf411c096
Merge pull request #8578 from zen-browser/restore-fix 2025-05-24 17:21:40 +02:00
Mr. M
a3de3e221c
fix: Fixed restoring previous sesions from empty tabs, b=(no-bug), c=no-component 2025-05-24 17:07:21 +02:00
mr. m
4b0c6f2ca5
Merge pull request #8512 from zen-browser/firefox-139 2025-05-24 09:34:46 +02:00
Mr. M
c32dc7ecd2
feat: Added unload preference to settings, b=(no-bug), c=no-component 2025-05-24 09:33:13 +02:00
Mr. M
d6e14ca88c
Merge branch 'firefox-139' of https://github.com/zen-browser/desktop into firefox-139 2025-05-23 21:01:48 +02:00
Mr. M
ebfc885745
feat: Replace zen's tab unloader with firefox's one. Also added more tests, b=(no-bug), c=common, tabs, tests, glance 2025-05-23 21:01:33 +02:00
mr. m
89d7b29b12
Merge branch 'dev' into firefox-139 2025-05-23 19:39:42 +02:00
Mr. M
6f5d20fd49
Merge branch 'firefox-139' of https://github.com/zen-browser/desktop into firefox-139 2025-05-22 20:22:21 +02:00
Mr. M
15bd0b2675
test: Added more glance tests, b=(no-bug), c=tests, glance, workspaces 2025-05-22 20:22:10 +02:00
mr. m
9132019cb3
fix: Fixed unpining split view group still marking a tab as changed, b=(no-bug), c=folders 2025-05-22 20:08:56 +02:00
mr. m
a87cbfd7a3
Merge branch 'dev' into firefox-139 2025-05-22 20:01:27 +02:00
mr. m
d2c6c8b734
Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2025-05-22 19:59:36 +02:00
mr. m
6c5be98173
feat: Remove default icon from private workspaces, b=(no-bug), c=workspaces 2025-05-22 19:59:14 +02:00
mr. m
d51838caf9
Merge branch 'dev' into firefox-139 2025-05-22 19:36:20 +02:00
mr. m
a61dd0ab87
Fixed tabs patch
Signed-off-by: mr. m  <91018726+mauro-balades@users.noreply.github.com>
2025-05-22 19:30:11 +02:00
mr. m
d15b1f3c1e
Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2025-05-22 19:17:17 +02:00
mr. m
40d38b3961
feat: Added new private window looks, b=(no-bug), c=common, tabs, workspaces 2025-05-22 19:17:10 +02:00
Mr. M
addc318f29
test: Added more tests for glance, b=(no-bug), c=tests, scripts, tabs, glance, workspaces 2025-05-22 16:57:27 +02:00
Mr. M
ad124c9d95
chore: Recalcultae patches, b=(no-bug), c=tests, scripts, tabs, glance 2025-05-22 13:57:30 +02:00
Mr. M
4d48395c19
chore: Updated language packs, b=(no-bug), c=no-component 2025-05-22 13:46:11 +02:00
Mr. M
9eb0aa0de4
fix: Completed migrating to firefox 139, b=(no-bug), c=tabs, common, compact-mode, glance 2025-05-22 13:45:31 +02:00
mr. m
452b7e0e54
Merge pull request #8513 from timothebot/patch-1
fix: Faulty HTML comment hiding whole README
2025-05-22 12:55:06 +02:00
tiimo
e10a16bc0d
fix: Faulty HTML comment hiding whole README
Signed-off-by: tiimo <65387160+timothebot@users.noreply.github.com>
2025-05-22 12:31:23 +02:00
mr. m
b26da26192
Merge branch 'dev' into firefox-139 2025-05-22 12:13:37 +02:00
mr. m
be55a26a94
feat: Only dispatch elements to the tab browser if we are on the active workspace, b=(no-bug), c=workspaces 2025-05-22 12:13:18 +02:00
mr. m
22d4b22c53
Merge branch 'dev' into firefox-139 2025-05-22 12:10:30 +02:00
Mr. M
00a86df321
chore: Started to update to firefox 139, b=(no-bug), c=no-component 2025-05-22 12:08:44 +02:00
mr. m
b03cdba607
fix: Fixed notifications not appearing until hovering the top-bar, b=(closes #8510), c=common 2025-05-22 11:44:33 +02:00
mr. m
cce90e6ddc
feat: Initially hide essentials that wont be required on the current workspace, b=(no-bug), c=workspaces 2025-05-22 11:26:19 +02:00
mr. m
b6fc0e4db7
feat: Added support to drag-and-drop split views into glance, b=(no-bug), c=tabs, common, glance, split-view 2025-05-22 11:26:13 +02:00
mr. m
50ed1f0a64
feat: Wait for a new frame before animating workspace backgrounds, b=(no-bug), c=workspaces 2025-05-22 10:23:52 +02:00
mr. m
f40b780b95
fix: Fixed dragging tab to an essential, b=(bug #8465), c=no-component 2025-05-21 15:57:12 +02:00
mr. m
0f37364586
feat: Allow double click only on empty parts of the sidebar, b=(no-bug), c=tabs 2025-05-21 11:48:28 +02:00
mr. m
8cfff0e0bd
fix: Added a min size for welcome window, b=(no-bug), c=welcome 2025-05-21 09:19:43 +02:00
mr. m
e61963454c
fix: Fixed pressing arrow scroll canceling tab rename, b=(closes #8475), c=common 2025-05-21 09:08:01 +02:00
mr. m
eac698d846
fix: Fixed moving tabs into a glanced tab, b=(bug #8465), c=glance 2025-05-21 08:56:26 +02:00
mr. m
b536f98d94
fix: Fixed initializing workspaces, b=(closes #8476), c=workspaces 2025-05-21 08:31:26 +02:00
Mr. M
469f94bddf
fix: Make the appcontent navbar be a flexbox only when needed, b=(no-bug), c=tabs 2025-05-21 06:14:19 +02:00
Mr. M
7af0c64c30
fix: Make the appcontent navbar be a flexbox, b=(no-bug), c=tabs 2025-05-21 06:07:36 +02:00
Mr. M
8e6808ea61
style: Format, b=(no-bug), c=compact-mode 2025-05-20 22:23:22 +02:00
Mr. M
153c0e2fc5
fix: Fixed reordering tabs with glance, b=(bug #8465), c=tabs 2025-05-20 22:21:29 +02:00
Mr. M
b18e946869
feat: Added experimental (unfinished) compact mode animation when hovering, b=(no-bug), c=compact-mode 2025-05-20 22:10:48 +02:00
mr. m
e3a341c88d
feat: Transition grain changes, b=(no-bug), c=common 2025-05-20 21:35:35 +02:00
Mr. M
7671266633
feat: Improved gradient switching transitions, b=(no-bug), c=common, workspaces 2025-05-20 21:17:42 +02:00
Mr. M
1e1f02c764
feat: Animate background from numbers, not strings, b=(no-bug), c=workspaces 2025-05-20 19:38:54 +02:00
Mr. M
d3ec41d73f
fix: Fixed an issue with top toolbar not able to be hovered, b=(no-bug), c=common, compact-mode, tabs, workspaces 2025-05-20 19:02:44 +02:00
Mr. M
9982b1af34
feat: Better animations for app background, b=(no-bug), c=common, workspaces 2025-05-20 18:05:49 +02:00
Mr. M
133cce8bf8
feat: Prevent rebuilding workspaces when customizing items, b=(no-bug), c=workspaces 2025-05-20 17:27:58 +02:00
Mr. M
bb78fc165b
test: Added double click to open tab test, b=(no-bug), c=tabs, workspaces, tests 2025-05-20 17:18:09 +02:00
mr. m
adfc235865
fix: Fixed compact mode being available in popup windows, b=(no-bug), c=compact-mode 2025-05-20 08:53:03 +02:00
Mr. M
0392d60352
fix: Fixed compact mode double toolbar, b=(no-bug), c=compact-mode, workspaces 2025-05-20 07:46:53 +02:00
Mr. M
53ea662ef7
feat: Added migration method for customizable UI, b=(no-bug), c=common 2025-05-20 00:46:37 +02:00
Mr. M
7a846fa458
feat: Added better support for customizable UI, b=(no-bug), c=common, workspaces 2025-05-19 20:28:27 +02:00
Mr. M
273d7ce5d5
fix: Fixed adding more than 12 tabs to essentials, b=(no-bug), c=tabs 2025-05-19 20:04:06 +02:00
Mr. M
c378bf3842
fix: Fixed adding more than 12 tabs to essentials, b=(no-bug), c=tabs 2025-05-19 19:55:55 +02:00
Mr. M
e4de07d773
feat: Dont trim the urlbar when it's open, b=(no-bug), c=common 2025-05-19 19:37:43 +02:00
Mr. M
6dfb05e242
feat: Dont unload webviews when exiting glance on a split view, b=(no-bug), c=glance 2025-05-19 19:27:01 +02:00
Mr. M
3e9d98233c
fix: Fixed restoring tabs not showing the separator correctly, b=(no-bug), c=workspaces 2025-05-19 19:11:49 +02:00
mr. m
8536634fa4
feat: Correctly identify pinned tabs, b=(no-bug), c=tabs 2025-05-19 15:51:15 +02:00
mr. m
23b17b2635
feat: Correctly identify glance tabs, b=(no-bug), c=tabs, glance 2025-05-19 15:36:38 +02:00
mr. m
afcf49b25d
Fixed tabs patch
Signed-off-by: mr. m  <91018726+mauro-balades@users.noreply.github.com>
2025-05-19 14:01:43 +02:00
mr. m
c54ad93db6
fix: Fixed adding glance on a pinned split view, b=(no-bug), c=tabs 2025-05-19 13:49:43 +02:00
mr. m
8d99a97a9e
chore: Small details to split view, b=(no-bug), c=split-view, tabs 2025-05-19 13:31:18 +02:00
mr. m
66003832b2
feat: Dont show scrollbar to all workspaces when swiping, b=(no-bug), c=workspaces 2025-05-19 13:12:52 +02:00
mr. m
32b7af5834
fix: Fixed tabs being clipped when there's too much element separation, b=(closes #8412), c=compact-mode 2025-05-19 13:02:21 +02:00
mr. m
b4f61e48de
fix: Fixed tab label margin, b=(no-bug), c=tabs 2025-05-19 09:33:41 +02:00
mr. m
97e76a9cf2
fix: Fixed tab label margin, b=(no-bug), c=tabs 2025-05-19 09:32:33 +02:00
mr. m
52bfac98be
fix: Fixed compact mode height, b=(no-bug), c=compact-mode 2025-05-19 09:31:06 +02:00
mr. m
0ebe4b4f0a
Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2025-05-19 09:22:43 +02:00
mr. m
1561525d47
fix: Fixed canceling gesture not showing scrollbar, b=(no-bug), c=workspaces 2025-05-19 09:22:38 +02:00
Mr. M
d9c9e74cc8
fix: Fixed resizing workspaces at startup, b=(no-bug), c=workspaces 2025-05-19 01:32:49 +02:00
Mr. M
e3193c54f4
fix: Improved compact mode for multiple toolbar, b=(no-bug), c=compact-mode, tabs 2025-05-19 01:09:27 +02:00
Mr. M
90b0849308
style: Small style changes before release, b=(no-bug), c=common, compact-mode, workspaces 2025-05-19 00:18:10 +02:00
Mr. M
01e3cc1374
chore: Make sure to always apply shadow to urlbar, b=(no-bug), c=common 2025-05-18 23:53:56 +02:00
Mr. M
e5294908ec
style: Changed shadow for the urlbar, b=(no-bug), c=common 2025-05-18 23:52:01 +02:00
Mr. M
3ed15335fe
style: Use default scrollbar instad of thin for the workspace scrollbox, b=(no-bug), c=workspaces 2025-05-18 23:46:17 +02:00
mr. m
094fbb4ec8
fix: Fixed arrow scrollbox patch export, b=(no-bug), c=no-component 2025-05-18 23:25:19 +02:00
Mr. M
190f1f0cb5
Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2025-05-18 23:12:29 +02:00
Mr. M
d908700a9c
fix: Fixed selecting tab not scrolling, b=(no-bug), c=tabs, workspaces 2025-05-18 23:12:23 +02:00
mr. m
b669f81926
fix: Fixed swipe gestures when there's a scrollbar, b=(no-bug), c=workspaces 2025-05-18 23:09:42 +02:00
Mr. M
76c22cc896
fix: Fixed closing glance not removing unload attribute from the tab, b=(closes #7655), c=glance 2025-05-18 19:52:46 +02:00
Mr. M
d0d78d2953
fix: Fixed marking the scroll indicator for workspace periferies, b=(no-bug), c=workspaces 2025-05-18 18:33:12 +02:00
Mr. M
8b5e26759f
fix: Fixed moving tabs around with scrollbox overflowing, b=(no-bug), c=tabs, workspaces 2025-05-18 15:34:44 +02:00
mr. m
e4eb6d6fdd
Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2025-05-18 15:19:13 +02:00
mr. m
1a0ce0df7c
fix: Fixed issues with the XUL rendering, b=(no-bug), c=compact-mode, workspaces 2025-05-18 15:19:07 +02:00
mr. m
c95f0fce88
Merge pull request #8384 from JosueGalRe/bugfix/mods-page-empty-on-invalid-preferences
bugfix(mods): add file download retry and try catchs to fallback on f…
2025-05-18 15:19:05 +02:00
Bryan Galdámez
2abd23b344 bugfix(mods): add file download retry and try catchs to fallback 2025-05-18 06:55:42 -06:00
mr. m
ccb1bc521c
fix: Fixed single toolbar mode having labels on buttons, b=(no-bug), c=common, tabs 2025-05-18 14:43:11 +02:00
mr. m
26163c62da
fix: Fixed background tab toast showing when not hiding the sidebar, b=(no-bug), c=compact-mode 2025-05-18 14:22:05 +02:00
mr. m
8818d45d05
fix: Fixed all tabs button not having text, b=(no-bug), c=tabs 2025-05-18 13:50:41 +02:00
Mr. M
46941fe25a
fix: Fixed opening a new link in split view while having glance, b=(no-bug), c=split-view 2025-05-18 12:42:57 +02:00
Mr. M
44ffc842d3
chore: Update firefox version on the README, b=(no-bug), c=no-component 2025-05-18 12:31:47 +02:00
Mr. M
4641b8b590
Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2025-05-18 12:29:42 +02:00
Mr. M
148a5eebc2
fix: Improved workspace icons generation, b=(no-bug), c=common, mods, workspaces 2025-05-18 12:29:26 +02:00
mr. m
523c1fadbc
Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2025-05-18 12:22:47 +02:00
mr. m
820652bd5e
feat: Added support for swiping when scrolling on workspaces, b=(no-bug), c=workspaces 2025-05-18 12:22:11 +02:00
Mr. M
246e3b25a4
Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2025-05-18 11:27:06 +02:00
Mr. M
fe0e5a9101
feat: Apply padding top when animating elements, b=(no-bug), c=workspaces 2025-05-18 11:26:59 +02:00
mr. m
d9a6bb5b2d
Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2025-05-18 11:26:05 +02:00
mr. m
c9f632c1b8
fix: Small fixes for workspaces icons, b=(no-bug), c=common, tabs, workspaces 2025-05-18 11:26:00 +02:00
Mr. M
ab69ab8f80
chore: Updated firefox 138.0.4, b=(no-bug), c=no-component 2025-05-18 11:04:58 +02:00
Mr. M
297a95986c
fix: Fixed scrolling issues with workspaces, b=(no-bug), c=tabs, common, compact-mode, media, workspaces 2025-05-18 10:53:14 +02:00
Mr. M
7c1bdbfa68
fix: Fixed rearranging tabs from pinned to normal, b=(no-bug), c=workspaces 2025-05-17 23:29:25 +02:00
Mr. M
e712e8204d
test: Updated tests to the new names, b=(no-bug), c=tests, glance, workspaces, common 2025-05-17 14:12:43 +02:00
Mr. M
8e28e1a630
fix: Fixed reordering tabs and adding new essentials when the limit is reached, b=(no-bug), c=tabs 2025-05-17 00:28:38 +02:00
Mr. M
6d1742761c
fix: Fixed menu popups having an invisible background and color, b=(closes #7430), c=common 2025-05-17 00:17:22 +02:00
Mr. M
1c84a32a3c
fix: Fixed pinned tabs reordering on twilight, b=(no-bug), c=tabs, workspaces 2025-05-16 20:12:39 +02:00
mr. m
b07824489b
fix: Fixed workspaces import, b=(no-bug), c=no-component 2025-05-16 12:16:38 +02:00
mr. m
619a8d39be
Merge pull request #8346 from zen-browser/ultimate-sidebar-revamp 2025-05-16 08:43:39 +02:00
mr. m
9b8195d666
Update src/browser/base/content/zen-sidebar-icons.inc.xhtml
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Signed-off-by: mr. m  <91018726+mauro-balades@users.noreply.github.com>
2025-05-16 01:22:45 +02:00
Mr. M
22d04ad729
chore: Changed ZenWorkspaces to gZenWorkspaces, b=(no-bug), c=tabs, common, folders, glance, media, tests, welcome, workspaces 2025-05-16 01:17:11 +02:00
Mr. M
bac3e38318
feat: Re-implemented workspace icons, b=(no-bug), c=common, tabs, workspaces 2025-05-15 23:36:10 +02:00
Mr. M
1d8e0fc3d7
feat: Revamped the sidebar for complete stability over future releases, b=(no-bug), c=common, tabs, workspaces 2025-05-15 21:25:54 +02:00
mr. m
086d1633df
Merge pull request #8340 from SO9010/Fix-#7609
Fix #7609 by changing to orange when white.
2025-05-15 13:45:30 +02:00
Samuel Oldham
b260942e22 Fix #7609 by changing to orange when white. 2025-05-15 12:24:58 +00:00
mr. m
d7bf8b24fd
fix: Try to fix alignment issues for audio icons, b=(no-bug), c=tabs 2025-05-15 00:35:55 +02:00
Mr. M
0ded78eb06
fix: Fixed all tabs button appearing on the sidebar, b=(no-bug), c=common, tabs 2025-05-14 16:10:28 +02:00
mr. m
c2d484a725
fix: Fixed a bunch of small styling issues, b=(no-bug), c=common, compact-mode 2025-05-14 15:49:44 +02:00
mr. m
7ca3a9e377
Create funding-manifest-urls
Signed-off-by: mr. m  <91018726+mauro-balades@users.noreply.github.com>
2025-05-14 12:45:40 +02:00
Mr. M
2bd548fe41 Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2025-05-14 08:45:15 +02:00
mr. m
d9d3076e2e
Merge pull request #8300 from zen-browser/revert-8286-alert-autofix-9
Revert "Potential fix for code scanning alert no. 9: Workflow does not contain permissions"
2025-05-14 10:42:54 +02:00
mr. m
b8254fdd36
Revert "Potential fix for code scanning alert no. 9: Workflow does not contain permissions" 2025-05-14 10:42:46 +02:00
mr. m
562274a161
Merge pull request #8299 from zen-browser/revert-8282-alert-autofix-16
Revert "Potential fix for code scanning alert no. 16: Workflow does not contain permissions"
2025-05-14 10:41:33 +02:00
mr. m
19f96241e5
Merge pull request #8298 from zen-browser/revert-8291-alert-autofix-11
Revert "Potential fix for code scanning alert no. 11: Workflow does not contain permissions"
2025-05-14 10:41:25 +02:00
mr. m
d735a1fa91
Merge pull request #8297 from zen-browser/revert-8293-alert-autofix-20
Revert "Potential fix for code scanning alert no. 20: Workflow does not contain permissions"
2025-05-14 10:41:21 +02:00
mr. m
40baf2627c
Revert "Potential fix for code scanning alert no. 16: Workflow does not contain permissions" 2025-05-14 10:41:14 +02:00
mr. m
5880636b3a
Revert "Potential fix for code scanning alert no. 20: Workflow does not contain permissions" 2025-05-14 10:41:11 +02:00
mr. m
531f569f3a
Revert "Potential fix for code scanning alert no. 11: Workflow does not contain permissions" 2025-05-14 10:41:06 +02:00
mr. m
00fcd74552
Merge pull request #8296 from zen-browser/revert-8294-alert-autofix-6
Revert "Potential fix for code scanning alert no. 6: Workflow does not contain permissions"
2025-05-14 10:39:35 +02:00
mr. m
f594a0b5c0
Revert "Potential fix for code scanning alert no. 6: Workflow does not contain permissions" 2025-05-14 10:39:27 +02:00
mr. m
94779133ec
Merge pull request #8295 from zen-browser/revert-8285-alert-autofix-13
Revert "Potential fix for code scanning alert no. 13: Workflow does not contain permissions"
2025-05-14 10:37:33 +02:00
mr. m
a2b1b38e0c
Revert "Potential fix for code scanning alert no. 13: Workflow does not contain permissions" 2025-05-14 10:37:24 +02:00
mr. m
cd3823f180
Merge pull request #8294 from zen-browser/alert-autofix-6
Potential fix for code scanning alert no. 6: Workflow does not contain permissions
2025-05-14 10:31:15 +02:00
mr. m
8451a71af7
Potential fix for code scanning alert no. 6: Workflow does not contain permissions
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Signed-off-by: mr. m  <91018726+mauro-balades@users.noreply.github.com>
2025-05-14 10:31:08 +02:00
mr. m
455a2c005b
Merge pull request #8293 from zen-browser/alert-autofix-20
Potential fix for code scanning alert no. 20: Workflow does not contain permissions
2025-05-14 10:29:04 +02:00
mr. m
4ad29e0ca5
Potential fix for code scanning alert no. 20: Workflow does not contain permissions
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Signed-off-by: mr. m  <91018726+mauro-balades@users.noreply.github.com>
2025-05-14 10:28:57 +02:00
mr. m
52b19fc137
Merge pull request #8292 from zen-browser/alert-autofix-8
Potential fix for code scanning alert no. 8: Workflow does not contain permissions
2025-05-14 10:26:48 +02:00
mr. m
7958417f96
Merge pull request #8291 from zen-browser/alert-autofix-11
Potential fix for code scanning alert no. 11: Workflow does not contain permissions
2025-05-14 10:26:30 +02:00
mr. m
744618ac25
Potential fix for code scanning alert no. 8: Workflow does not contain permissions
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Signed-off-by: mr. m  <91018726+mauro-balades@users.noreply.github.com>
2025-05-14 10:26:26 +02:00
mr. m
07296f19a6
Potential fix for code scanning alert no. 11: Workflow does not contain permissions
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Signed-off-by: mr. m  <91018726+mauro-balades@users.noreply.github.com>
2025-05-14 10:26:23 +02:00
mr. m
db271db087
Merge pull request #8287 from zen-browser/alert-autofix-5
Potential fix for code scanning alert no. 5: Workflow does not contain permissions
2025-05-14 10:25:37 +02:00
mr. m
d30a24e768
Merge pull request #8289 from zen-browser/alert-autofix-1
Potential fix for code scanning alert no. 1: Workflow does not contain permissions
2025-05-14 10:25:00 +02:00
mr. m
2b359ea451
Merge pull request #8288 from zen-browser/alert-autofix-2
Potential fix for code scanning alert no. 2: Workflow does not contain permissions
2025-05-14 10:24:53 +02:00
mr. m
8af3faea16
Merge pull request #8290 from zen-browser/alert-autofix-12
Potential fix for code scanning alert no. 12: Workflow does not contain permissions
2025-05-14 10:24:31 +02:00
mr. m
0c5716fb81
Merge pull request #8286 from zen-browser/alert-autofix-9
Potential fix for code scanning alert no. 9: Workflow does not contain permissions
2025-05-14 10:20:15 +02:00
mr. m
d19a484cb0
Potential fix for code scanning alert no. 12: Workflow does not contain permissions
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Signed-off-by: mr. m  <91018726+mauro-balades@users.noreply.github.com>
2025-05-14 10:19:55 +02:00
mr. m
38bf9bebc8
Merge pull request #8285 from zen-browser/alert-autofix-13
Potential fix for code scanning alert no. 13: Workflow does not contain permissions
2025-05-14 10:19:47 +02:00
mr. m
d79b89f79b
Merge pull request #8284 from zen-browser/alert-autofix-14
Potential fix for code scanning alert no. 14: Workflow does not contain permissions
2025-05-14 10:19:23 +02:00
mr. m
7855d657fd
Merge pull request #8283 from zen-browser/alert-autofix-15
Potential fix for code scanning alert no. 15: Workflow does not contain permissions
2025-05-14 10:19:16 +02:00
mr. m
67a52ae02c
Potential fix for code scanning alert no. 1: Workflow does not contain permissions
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Signed-off-by: mr. m  <91018726+mauro-balades@users.noreply.github.com>
2025-05-14 10:18:37 +02:00
mr. m
4b14c1e2f8
Potential fix for code scanning alert no. 2: Workflow does not contain permissions
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Signed-off-by: mr. m  <91018726+mauro-balades@users.noreply.github.com>
2025-05-14 10:18:35 +02:00
mr. m
fc908f9d4a
Potential fix for code scanning alert no. 5: Workflow does not contain permissions
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Signed-off-by: mr. m  <91018726+mauro-balades@users.noreply.github.com>
2025-05-14 10:18:30 +02:00
mr. m
77bc3ced5d
Potential fix for code scanning alert no. 9: Workflow does not contain permissions
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Signed-off-by: mr. m  <91018726+mauro-balades@users.noreply.github.com>
2025-05-14 10:18:25 +02:00
mr. m
34dc835631
Potential fix for code scanning alert no. 13: Workflow does not contain permissions
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Signed-off-by: mr. m  <91018726+mauro-balades@users.noreply.github.com>
2025-05-14 10:18:15 +02:00
mr. m
81b279be5f
Potential fix for code scanning alert no. 14: Workflow does not contain permissions
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Signed-off-by: mr. m  <91018726+mauro-balades@users.noreply.github.com>
2025-05-14 10:18:13 +02:00
mr. m
828c7bea19
Potential fix for code scanning alert no. 15: Workflow does not contain permissions
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Signed-off-by: mr. m  <91018726+mauro-balades@users.noreply.github.com>
2025-05-14 10:18:12 +02:00
mr. m
b4a49636d7
Merge pull request #8282 from zen-browser/alert-autofix-16
Potential fix for code scanning alert no. 16: Workflow does not contain permissions
2025-05-14 10:17:45 +02:00
mr. m
1caa6d9aa5
Potential fix for code scanning alert no. 16: Workflow does not contain permissions
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Signed-off-by: mr. m  <91018726+mauro-balades@users.noreply.github.com>
2025-05-14 10:17:24 +02:00
mr. m
ecc6df3301
Merge pull request #8281 from zen-browser/alert-autofix-17
Potential fix for code scanning alert no. 17: Overly permissive regular expression range
2025-05-14 10:17:11 +02:00
mr. m
0310e89c39
Potential fix for code scanning alert no. 17: Overly permissive regular expression range
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Signed-off-by: mr. m  <91018726+mauro-balades@users.noreply.github.com>
2025-05-14 10:16:59 +02:00
mr. m
252af87d9b
Merge pull request #8280 from zen-browser/alert-autofix-19
Potential fix for code scanning alert no. 19: Overly permissive regular expression range
2025-05-14 10:16:48 +02:00
mr. m
6732a69c2b
Potential fix for code scanning alert no. 19: Overly permissive regular expression range
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Signed-off-by: mr. m  <91018726+mauro-balades@users.noreply.github.com>
2025-05-14 10:16:36 +02:00
mr. m
3868f8e30f
Merge pull request #8279 from zen-browser/alert-autofix-18
Potential fix for code scanning alert no. 18: Overly permissive regular expression range
2025-05-14 10:14:55 +02:00
mr. m
937408f3f6
Potential fix for code scanning alert no. 18: Overly permissive regular expression range
Co-authored-by: Copilot Autofix powered by AI <62310815+github-advanced-security[bot]@users.noreply.github.com>
Signed-off-by: mr. m  <91018726+mauro-balades@users.noreply.github.com>
2025-05-14 10:14:16 +02:00
mr. m
e53a95e297
Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2025-05-14 10:13:05 +02:00
mr. m
b74153290b
chore: Remove remaining bits from zen rices, b=(no-bug), c=workspaces 2025-05-14 10:12:51 +02:00
mr. m
0021c3522f
Added security instructions for new reports
Signed-off-by: mr. m  <91018726+mauro-balades@users.noreply.github.com>
2025-05-14 10:03:06 +02:00
Mr. M
367ad74fba chore: Use npm for surfer CI windows signing, b=(no-bug), c=no-component 2025-05-14 08:45:07 +02:00
Mr. M
0abf17cb6b
fix: Fixed an issue with opening bookmarks with different containers, b=(no-bug), c=common 2025-05-13 20:00:31 +02:00
mr. m
be76e751e7
Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2025-05-13 19:43:11 +02:00
mr. m
f8a893e6de
fix: Small fixes for toast notifications, b=(no-bug), c=common 2025-05-13 19:43:00 +02:00
Mr. M
89dfc86bfb
fix: Fixed missaligment on mute/unmute icon, b=(no-bug), c=tabs 2025-05-13 17:33:07 +02:00
Mr. M
bc894f8beb
style: Improved URL bar styles, b=(no-bug), c=common 2025-05-13 17:00:58 +02:00
Mr. M
20120ecf27
Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2025-05-13 16:35:38 +02:00
Mr. M
a9c344d385
fix: Fixed background tabs opening when a tab is created by an addon, b=(no-bug), c=tabs, common, compact-mode 2025-05-13 16:35:24 +02:00
mr. m
3cbfae7a8f
fix: Fixed macos close buttons being misaligned on collapsed sidebar, b=(closes #7129), c=tabs 2025-05-13 16:12:15 +02:00
Mr. M
90876532b9
fix: Fixed the download animation appearing on all the windows, b=(closes #8247), c=no-component 2025-05-13 16:07:24 +02:00
Mr. M
641d4d0f87
chore: Updated to firefox 138.0.3, b=(no-bug), c=scripts, common 2025-05-13 15:58:39 +02:00
mr. m
7c12ad72b8
Merge pull request #8266 from zen-browser/haptic-feedback 2025-05-13 13:39:54 +02:00
Mr. M
66e0dde1ed
fix: Make sure to remove the stylesheets before removing the file, b=(no-bug), c=mods 2025-05-13 13:38:47 +02:00
mr. m
5a4877a141
chore: Minor changes before merge of haptic feedback, b=(no-bug), c=workspaces 2025-05-13 13:37:36 +02:00
mr. m
f9b0f8c436
feat: Finished haptic feedback support, b=(no-bug), c=common, tabs, workspaces 2025-05-13 13:31:03 +02:00
Mr. M
6552ec5f02
test: Added tests for closing glance, b=(no-bug), c=glance, tests 2025-05-13 12:00:39 +02:00
Mr. M
337b1aec53
fix: Fixed top toolbar staying at the top when clicking on the urlbar, b=(no-bug), c=compact-mode 2025-05-13 11:31:07 +02:00
mr. m
33fff9e19b
Merge branch 'haptic-feedback' of https://github.com/zen-browser/desktop into haptic-feedback 2025-05-13 10:40:48 +02:00
Mr. M
2cdaf4850d
feat: Compile the function even if we are not on mac, b=(no-bug), c=common 2025-05-13 10:40:41 +02:00
mr. m
561da4b6ef
chore: Format, b=(no-bug), c=common 2025-05-13 10:39:47 +02:00
Mr. M
3a8767ea5f
fix: Fixed windows API build, b=(no-bug), c=tabs, common 2025-05-13 10:37:36 +02:00
Mr. M
4947b4c9a3
feat: Addded haptic feedback support, b=(no-bug), c=common 2025-05-13 10:33:24 +02:00
mr. m
0f140b706e
Merge pull request #8265 from kritishd8/dev
Added workspace color bg to search mode indicators
2025-05-13 09:59:48 +02:00
Obscure.
b4812e8182
Added workspace color bg to search mode indicators
Signed-off-by: Obscure. <69711181+kritishd8@users.noreply.github.com>
2025-05-13 08:29:19 +05:45
mr. m
7d94cad876
Merge pull request #8243 from zen-browser/new-share-api
New share API and implementation
2025-05-13 02:55:26 +02:00
mr. m
866e6987a2
feat: Added last details, b=(no-bug), c=common 2025-05-13 02:54:59 +02:00
Mr. M
524f34a461
chore: Bump version, b=(no-bug), c=no-component 2025-05-13 01:11:57 +02:00
Mr. M
949d93d546
Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2025-05-13 01:10:23 +02:00
Mr. M
bd638022df
test: Added tests for glance, b=(no-bug), c=tabs, glance, tests 2025-05-13 01:10:18 +02:00
mr. m
26e6d704f5
Merge pull request #8261 from SO9010/Fix-#7910 2025-05-13 00:31:48 +02:00
mr. m
1be8b20b64
Make use of lazy preferences
Signed-off-by: mr. m  <91018726+mauro-balades@users.noreply.github.com>
2025-05-13 00:31:17 +02:00
Samuel Oldham
c8150ccdcc
Fix for #7910
This fixes #7910 by adding a conditional check for whether the sidebar is on the right and adjusting the CSS accordingly. 

Signed-off-by: Samuel Oldham <77629938+SO9010@users.noreply.github.com>
2025-05-12 23:26:16 +01:00
Mr. M
77bac52b07 fix: Completed windows API, b=(no-bug), c=no-component 2025-05-13 00:23:33 +02:00
mr. m
3566289cb5
feat: Completed API for cocoa, b=(no-bug), c=common 2025-05-13 01:25:55 +02:00
mr. m
0b34cc3033
chore: Added native macos handling, b=(no-bug), c=common 2025-05-12 23:31:48 +02:00
Mr. M
fdb71c6b0e
feat: Make sure switching woprkspaces from browsers always selects the tab first, b=(no-bug), c=common, workspaces 2025-05-12 22:48:09 +02:00
Mr. M
ffea12305d
fix: Fixed urlbar shifting when focusing on it, b=(no-bug), c=common 2025-05-12 22:30:57 +02:00
Mr. M
e90f20e1d4
fix: Fixed search engine suggestions being half the height, b=(closes #8258), c=welcome 2025-05-12 21:59:35 +02:00
Mr. M
f58dbd71b6
feat: Added cocoa APIs, b=(no-bug), c=common 2025-05-12 21:53:15 +02:00
Mr. M
b4c7a64631
feat: Added a share button to copy url, b=(no-bug), c=common 2025-05-12 20:36:46 +02:00
Mr. M
e496655953
chore: Made a functioning API for sharing, b=(no-bug), c=common 2025-05-12 19:58:14 +02:00
mr. m
fea0e9b864
Merge pull request #8256 from SO9010/Fix-#7810 2025-05-12 18:04:15 +02:00
mr. m
7a7fb01928
Merge branch 'dev' into Fix-#7810 2025-05-12 18:04:01 +02:00
mr. m
d4575841df
Merge pull request #8253 from SO9010/Fix-#7701 2025-05-12 18:03:11 +02:00
Samuel Oldham
d7e634fcfd
Undo change to firefox-js.patch
Signed-off-by: Samuel Oldham <77629938+SO9010@users.noreply.github.com>
2025-05-12 15:53:46 +00:00
Samuel Oldham
b1e3df783d
Update disablemozilla.inc to remove firefox mobile app advert
Signed-off-by: Samuel Oldham <77629938+SO9010@users.noreply.github.com>
2025-05-12 15:50:42 +00:00
mr. m
80dfcf5eaa
Merge branch 'dev' into Fix-#7701 2025-05-12 17:45:40 +02:00
Mr. M
c0d66ee649
Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2025-05-12 17:13:21 +02:00
Mr. M
93e8f6bbd6
fix: Did common fixes for mods, b=(no-bug), c=mods 2025-05-12 17:13:15 +02:00
Samuel Oldham
cdbdaac913
Fix #7701 complete
Added the lock to the pref section.

Signed-off-by: Samuel Oldham <77629938+SO9010@users.noreply.github.com>
2025-05-12 15:12:11 +00:00
Samuel Oldham
9bec7a88fe
Lint
Signed-off-by: Samuel Oldham <77629938+SO9010@users.noreply.github.com>
2025-05-12 15:53:21 +01:00
Samuel Oldham
50342e945d
Add fix for #7810
Signed-off-by: Samuel Oldham <77629938+SO9010@users.noreply.github.com>
2025-05-12 15:35:49 +01:00
Samuel Oldham
c087493f38
Set browser.contentblocking.report.show_mobile_app to false
Signed-off-by: Samuel Oldham <77629938+SO9010@users.noreply.github.com>
2025-05-12 14:31:36 +00:00
Samuel Oldham
df3c554f27
Delete src/browser/components/protections directory
Signed-off-by: Samuel Oldham <77629938+SO9010@users.noreply.github.com>
2025-05-12 14:26:56 +00:00
Samuel Oldham
e81994a748
Add patch fix #7701
This fixes this issue by just setting it to removed in the preferences automatically, meaning that the users will never see it. This made more sense than having it rewritten just for this page. But if we think linking to Firefox mobile here is necessary, please let me know.

Signed-off-by: Samuel Oldham <77629938+SO9010@users.noreply.github.com>
2025-05-12 14:03:11 +01:00
mr. m
0d1d75588d
fix: Fixed gradient having wrong percentages, b=(no-bug), c=workspaces 2025-05-12 13:36:06 +02:00
mr. m
5ddedbbd50
Disable acrylic pref for now
Signed-off-by: mr. m  <91018726+mauro-balades@users.noreply.github.com>
2025-05-12 00:14:21 -07:00
Mr. M
fcc823c33a
feat: Add experimental acrylic components for linux and windows, b=(no-bug), c=common, compact-mode, workspaces 2025-05-12 00:52:56 +02:00
Mr. M
1a7f9d9ee0
feat: Added priviledged window sharing API, b=(no-bug), c=common 2025-05-12 00:50:01 +02:00
Mr. M
1a2b527070
fix: Fixed issue with installing mods and unlock normandy preference, b=(closes #7198), c=mods, workspaces 2025-05-11 19:33:06 +02:00
Mr. M
39a357fa57
chore: Format, b=(no-bug), c=common 2025-05-11 19:11:48 +02:00
Mr. M
d2c50df0ab
feat: Added more shadow to the urlbar, b=(no-bug), c=common 2025-05-11 19:07:52 +02:00
Mr. M
5dc30c44ff
feat: Added blur to compact mode sidebar and the urlbar, b=(no-bug), c=common, compact-mode, workspaces 2025-05-11 18:34:23 +02:00
Mr. M
01d705a3b5
fix: Fixed media player hiding on fullscreen, b=(closes #8228), c=media 2025-05-11 12:56:53 +02:00
Mr. M
fff86fd068
fix: Fixed session restore not opening an essential tab on startup, b=(no-bug), c=workspaces 2025-05-11 12:54:19 +02:00
Mr. M
0fb9b51cc9
feat: Sort browser elements to make the current workspace have more priority, b=(no-bug), c=workspaces 2025-05-11 12:47:16 +02:00
Mr. M
bda91cd9d5
test: Added tests for contaienr specific bookmarks, b=(no-bug), c=tests, workspaces 2025-05-11 12:27:35 +02:00
Mr. M
0343430611
test: Added tests for compact mode, b=(no-bug), c=compact-mode, tests, workspaces 2025-05-11 01:38:31 +02:00
mr. m
1df7da7836
Merge pull request #8221 from SO9010/Fix-#7654 2025-05-11 01:14:23 +02:00
Mr. M
dc018561a0
test: Fixed result number for patch fix, b=(no-bug), c=tests 2025-05-11 01:14:01 +02:00
mr. m
520b41215c
Merge branch 'dev' into Fix-#7654
Signed-off-by: mr. m  <91018726+mauro-balades@users.noreply.github.com>
2025-05-11 01:10:54 +02:00
Mr. M
3537680e45
test: Added tests for https://github.com/zen-browser/desktop/pull/8221, b=(no-bug), c=tests 2025-05-11 01:09:46 +02:00
Mr. M
d236035b72
test: Added some tests for pinned tabs, b=(no-bug), c=tabs, tests 2025-05-11 00:58:20 +02:00
Samuel Oldham
e2e742aba2
Add patch file to fix #7654
What I did was add the pinned tabs to the SQL query which allowed that to get searched too, thus fixing the error!

Signed-off-by: Samuel Oldham <77629938+SO9010@users.noreply.github.com>
2025-05-10 22:21:15 +01:00
Mr. M
3d8fc203f9
feat: Lower the time for a toast to exist, b=(no-bug), c=common 2025-05-10 21:23:27 +02:00
Mr. M
7b99f227cd
chore: Format with only a maximum of 10 columns, b=(no-bug), c=workflows, common, compact-mode, folders, glance, kbs, media, mods, split-view, tabs, tests, workspaces, welcome 2025-05-10 21:22:16 +02:00
Mr. M
1f68a45417
chore: Better support for restoring previous tabs, b=(no-bug), c=workspaces 2025-05-10 20:00:25 +02:00
Mr. M
cc1619ab5d
chore: Upload virus total checker from previous zen repo, b=(no-bug), c=no-component 2025-05-10 18:03:04 +02:00
Mr. M
5c30c83341
chore: Added more checks for restoring previous sessions, b=(no-bug), c=workspaces, tests 2025-05-10 15:50:29 +02:00
Mr. M
d788ac4ad6
style: Fixed compact mode styles for colllapsed toolbar, b=(no-bug), c=compact-mode, folders 2025-05-10 15:09:08 +02:00
Mr. M
826802df21
chore: Cleaned up workflows, b=(no-bug), c=workflows 2025-05-10 15:02:26 +02:00
Mr. M
3b4f96ab2f
test: Added tests for https://github.com/zen-browser/desktop/issues/7385, b=(closes #7385), c=tests, vendor 2025-05-10 15:00:22 +02:00
Mr. M
5a59eb6902
test: Added some tests, b=(no-bug), c=tests, workspaces 2025-05-10 14:15:00 +02:00
Mr. M
64293af6f7
fix: Fixed greyed out part of URL sometimes turns back to white incosistently, b=(closes #7315), c=common 2025-05-10 01:13:15 +02:00
Mr. M
8afd08a3d9
fix: Fixed urlbar in double toolbar mode, b=(bug #7385), c=common 2025-05-10 01:01:23 +02:00
Mr. M
6a21a6fdb1
chore: Added some tests for container specific essentials, b=(no-bug), c=tests, workspaces 2025-05-10 00:20:09 +02:00
Mr. M
3e53787a62
fix: Fixed 'show all tabs' button not showing, b=(closes #8188), c=common 2025-05-10 00:19:55 +02:00
mr. m
9823353d8b
Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2025-05-09 23:33:10 +02:00
mr. m
d189221f10
fix: Fixed toast notifications appearing offscreen, b=(no-bug), c=workspaces 2025-05-09 23:33:04 +02:00
Mr. M
271fa03cfc
fix: Fixed restoring previous session with replace newtab enabled, b=(no-bug), c=workspaces 2025-05-09 23:05:38 +02:00
mr. m
1fc2299801
fix: Fixed workspace tests having an extra tab, b=(no-bug), c=common, compact-mode, workspaces, tests 2025-05-09 19:29:53 +02:00
mr. m
7df278f7ed
Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2025-05-09 18:32:12 +02:00
mr. m
2f68f77f87
feat: Added better toast management, b=(no-bug), c=common, compact-mode 2025-05-09 18:32:03 +02:00
Mr. M
49a3974b34
chore: Added more tests and debug points for twilight, b=(no-bug), c=common, workspaces, tests 2025-05-09 17:42:38 +02:00
mr. m
7a00f3c67c
feat: Added an option to disable background tab toasts, b=(no-bug), c=common, compact-mode 2025-05-09 08:18:17 +02:00
mr. m
e079732686
fix: Fixed workspace tests not running successfully, b=(no-bug), c=no-component 2025-05-08 20:02:42 +02:00
mr. m
71f2680eef
style: Added support for scrolling on private browsing mode, b=(no-bug), c=tabs 2025-05-08 17:03:48 +02:00
mr. m
808a376c65
feat: Disable search suggestions by default, b=(no-bug), c=no-component 2025-05-08 16:32:33 +02:00
mr. m
eff7cfc5fe
fix: Fixed the window always closing with last tab, b=(no-bug), c=workspaces 2025-05-08 14:40:05 +02:00
mr. m
bbb6ba4078
style: Fixed essentials width on compact mode, b=(no-bug), c=tabs 2025-05-08 14:14:41 +02:00
mr. m
c10131aca8
fix: Fixed startup tabs being an index behind, b=(no-bug), c=workspaces 2025-05-08 13:46:04 +02:00
mr. m
49159a6d5c
fix: Fixed toasts not showing on right side tabs, b=(closes #8143), c=common 2025-05-08 13:45:20 +02:00
mr. m
d80ba6b058
fix: Fixed tabs not loading at startup, b=(closes #8147), c=workspaces 2025-05-08 12:54:21 +02:00
mr. m
f2e188a86c
fix: Fixed pinned tabs not being able to reset, b=(no-bug), c=tabs, workspaces 2025-05-08 12:34:41 +02:00
mr. m
2f03446c37
fix: Fixed foreground tabs showing the toast, b=(closes #8146), c=compact-mode 2025-05-08 12:29:35 +02:00
mr. m
039b7ca85c
feat: Remove home button from default toolbar, b=(no-bug), c=no-component 2025-05-07 23:05:07 +02:00
Mr. M
507b27dbda
chore: Add support for just 2 search engines on the welcome page, b=(no-bug), c=welcome 2025-05-07 20:36:51 +02:00
mr. m
78f54895e2
fix: Fixed newtabs opening where essentials, b=(closes #8133), c=no-component 2025-05-07 20:21:36 +02:00
mr. m
4ca172d40f
Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2025-05-07 20:20:11 +02:00
mr. m
81774ad352
fix: Fixed newtabs opening where essentials, b=(closes #8133), c=no-component 2025-05-07 20:18:39 +02:00
Mr. M
ad32b31904
chore: Small changes before release, b=(no-bug), c=tabs 2025-05-07 17:13:09 +02:00
Mr. M
414bafde9c
feat: Hide change to tab context menu line, b=(no-bug), c=common, workspaces 2025-05-07 16:51:50 +02:00
mr. m
be1d8ec408
fix: Fixed restoring previous tab on other workspaces, b=(no-bug), c=compact-mode, workspaces 2025-05-07 15:34:17 +02:00
mr. m
7f4effe4b6
Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2025-05-07 14:30:06 +02:00
mr. m
7ca3396c8b
feat: Final touches for release, b=(no-bug), c=common, compact-mode 2025-05-07 14:29:04 +02:00
Mr. M
853c204746
fix: Fixed pinned tab titles resseting after saving the tab, b=(no-bug), c=tabs 2025-05-07 07:22:07 +02:00
Mr. M
a22c5085d9
fix: Fixed adding tabs to essentials changing the workspace, b=(closes #8123), c=workspaces 2025-05-07 07:14:18 +02:00
Mr. M
1021a78f46
feat: Added support for 'restore where left off' for when only pinned tabs are present, b=(no-bug), c=no-component 2025-05-07 06:56:16 +02:00
Mr. M
637747ab53
feat: Add support for non-replace-newtab for startup, b=(no-bug), c=workspaces 2025-05-06 23:53:38 +02:00
Mr. M
15b8385e49
feat: Added support for opening external links with 'continue where left off' preference enabled, b=(no-bug), c=split-view, tabs, workspaces 2025-05-06 22:36:09 +02:00
Mr. M
27d3b903d3
fix: Fixed right side tabs on collapsed mode shifting the browser to the right, b=(no-bug), c=compact-mode, tabs 2025-05-06 17:32:51 +02:00
Mr. M
70b9f66f4c
fix: Fixed importing themes from a JSON file, b=(no-bug), c=common, mods 2025-05-06 17:12:49 +02:00
mr. m
019779e425
feat: Added a min-height to the main window, b=(no-bug), c=common 2025-05-06 14:43:58 +02:00
mr. m
951ff28688
feat: Only show newtab if selecting empty page, b=(no-bug), c=workspaces 2025-05-06 14:36:32 +02:00
mr. m
d394702606
Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2025-05-06 14:34:57 +02:00
mr. m
6f88c5d2d1
feat: Added an option to restore tabs from where they left off, b=(no-bug), c=common, workspaces 2025-05-06 14:34:47 +02:00
mr. m
53332937c2
fix: Fixed customize mode being transparent on auto-theme, b=(closes #8104), c=no-component 2025-05-06 14:32:36 +02:00
Mr. M
a79678a0cb
chore: Remove extra animation frame to update toolbars, b=(no-bug), c=common 2025-05-06 07:59:27 +02:00
Mr. M
f16b0526af
feat: Remove urlbar overrides and make it a pref, b=(closes #8092), c=common, media, images, kbs, mods, split-view, welcome, workspaces 2025-05-06 07:59:00 +02:00
Mr. M
808e186dae
fix: Fixed ctrl+K into the urlbar having the wrong coordinates, b=(closes #8093), c=common, tabs, workspaces 2025-05-06 07:23:14 +02:00
Mr. M
0a39cdef7c
fix: Fixed moving tabs to other workspaces, b=(closes #8095), c=workspaces 2025-05-06 07:06:03 +02:00
Mr. M
8a042cb110
fix: Fixed auto-theme having a darker tint that other themes, b=(closes #8094), c=no-component 2025-05-06 06:50:30 +02:00
Mr. M
2942ab3c08
fix: Fixed transitions on the urlbar while closing, b=(no-bug), c=common, compact-mode 2025-05-05 22:54:58 +02:00
Mr. M
1d269e9203
feat(no-component): no-bug - Added new 'switch to tab' UI 2025-05-05 22:34:15 +02:00
Mr. M
def0ed7a52
fix: Fixed essentials content not loading, b=(closes #8039), c=common, tabs 2025-05-05 20:10:48 +02:00
mr. m
9d7c33228f
Merge pull request #8085 from tmlnv/dev
fix: fixed actionButtonUninstall typo in ZenThemeMarketplaceChild
2025-05-05 19:45:51 +02:00
Mr. M
54d5a747ba
Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2025-05-05 19:44:39 +02:00
Mr. M
3b4c2f6d76
feat: Make URL bar stay perfectly at the center always, b=(no-bug), c=common 2025-05-05 19:44:31 +02:00
tmlnv
7968b79039 fix: fixed actionButtonUninstall typo in ZenThemeMarketplaceChild 2025-05-05 20:26:38 +03:00
mr. m
4c02f76187
Merge pull request #8082 from CosmoCreeper/dev
Fixed typo (markplace) in child actor and replaced it with marketplace.
2025-05-05 18:52:27 +02:00
mr. m
ec90027c5e
style: Styled session restore patch, b=(no-bug), c=no-component 2025-05-05 18:42:01 +02:00
mr. m
0588dbfd64
feat: Show pending tabs if the config is enabled, b=(closes #8076), c=no-component 2025-05-05 18:31:06 +02:00
mr. m
293c6b1de2
Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2025-05-05 18:28:40 +02:00
mr. m
3f2dd0a60c
feat: Do restore previously closed windows on macos after clicking on the X button, b=(bug #7079), c=no-component 2025-05-05 18:28:33 +02:00
Mr. M
89404cc649
style: Styled a bit better urlbar and essentials hover, b=(no-bug), c=common, tabs 2025-05-05 18:27:56 +02:00
CosmoCreeper
2ade4030c8
Fixed typo (markplace) and replaced it with marketplace.
Signed-off-by: CosmoCreeper <179134799+CosmoCreeper@users.noreply.github.com>
2025-05-05 12:15:16 -04:00
Mr. M
7c81063b90
chore: Remove weather feature gate for the urlbar, b=(no-bug), c=no-component 2025-05-05 17:31:43 +02:00
Mr. M
786903d57c
Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2025-05-05 17:31:27 +02:00
Mr. M
395cc0a19d
feat: Organized preferences by files, b=(no-bug), c=media, common 2025-05-05 17:30:11 +02:00
mr. m
cc2c9044f3
feat: Set auto theme as default theme for zen, b=(no-bug), c=common, tabs 2025-05-05 17:26:23 +02:00
mr. m
d816bca7e0
fix: Fixed spelling for urlbar selected color, b=(no-bug), c=common 2025-05-05 13:25:49 +02:00
mr. m
87bcd7ccfb
fix: Fixed big delay when closing URL bar on compact mode, b=(no-bug), c=no-component 2025-05-05 12:53:14 +02:00
mr. m
a9f136ae8a
chore: Bumped version, b=(no-bug), c=no-component 2025-05-05 12:22:02 +02:00
mr. m
ef3b61ded7
fix: Fixed starting styles for glance buttons, b=(no-bug), c=glance 2025-05-05 12:06:05 +02:00
mr. m
c9d8623e4a
fix: Fixed popup for context menu not updating when updating, b=(closes #8056), c=workspaces 2025-05-05 11:06:16 +02:00
Mr. M
13923b84f2
chore: Small fixes for testing, b=(no-bug), c=kbs, split-view, tests, workspaces 2025-05-04 23:17:17 +02:00
Mr. M
05df28ae72
fix: Fixed compact mode not resizing properly, b=(no-bug), c=compact-mode 2025-05-04 22:01:30 +02:00
Mr. M
f75e74b678
Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2025-05-04 21:32:01 +02:00
Mr. M
123cbfa644
fix: Fixed issues with light mode on the url bar, b=(no-bug), c=common 2025-05-04 21:31:54 +02:00
mr. m
5cc13cf77f
fix: Fixed adding tabs to essentials with a different container, b=(closes #8019), c=compact-mode, tabs 2025-05-04 12:29:44 +02:00
mr. m
56275abbaf
fix: Fixed small issue on compact mode, b=(no-bug), c=compact-mode 2025-05-04 02:18:41 +02:00
mr. m
6ccbdcbdfa
fix: Fixed duplicate newtabs when replace newtab is disabled, b=(no-bug), c=workspaces 2025-05-03 17:04:12 +02:00
mr. m
ebbec7f0b2
Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2025-05-03 16:37:32 +02:00
mr. m
a7d0719877
chore: Removed invalid height for workspace indicators, b=(no-bug), c=workspaces 2025-05-03 16:37:21 +02:00
Mr. M
1831e3e2fa
chore: Bump version, b=(no-bug), c=no-component 2025-05-03 12:29:16 +02:00
Mr. M
fc2c119b94
fix: Fixed jittering when opening compact mode on windows, b=(closes #7990), c=compact-mode, workspaces 2025-05-03 12:24:36 +02:00
mr. m
163b276f7e
Merge pull request #7989 from alvinsjoy/dev
fix: use list-style rather than menu for appMenu items
2025-05-03 12:05:25 +02:00
Mr. M
72ab38b9af
fix: Fixed compact mode collapsed toolbar, b=(no-bug), c=compact-mode 2025-05-03 11:32:20 +02:00
Alvin Joy
991437ab2f
Add !important 2025-05-03 10:03:21 +05:30
Alvin Joy
57679238de
Merge branch 'dev' of https://github.com/alvinsjoy/zen-desktop into dev 2025-05-03 09:08:29 +05:30
Mr. M
d800c20905
fix: Fixed some issues before release, b=(no-bug), c=common, compact-mode, workspaces 2025-05-02 23:39:14 +02:00
Alvin Joy
2550b2fe41
fix: use list-style-image rather than menu-image for appMenu items, b=(no-bug), c=images 2025-05-03 00:43:39 +05:30
Mr. M
8a72d253aa
style: Fixed minimum floating size of 4px for compact mode, b=(no-bug), c=compact-mode 2025-05-02 18:38:34 +02:00
Mr. M
71558dca71
fix: Fixed sidebar not appearing from the right side on linux, b=(no-bug), c=common, compact-mode 2025-05-02 18:04:05 +02:00
Mr. M
6dbc5bf6db
Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2025-05-02 17:12:22 +02:00
Mr. M
98448b9572
chore: Added support for hidden sidebar with opened urlbar, b=(no-bug), c=compact-mode 2025-05-02 17:11:47 +02:00
mr. m
79bd7794a5
chore: Disabled acuweather for newtabs, b=(no-bug), c=no-component 2025-05-02 17:06:34 +02:00
mr. m
3ab70ff9a8
fix: Fixed sidebar jittering on windows, b=(no-bug), c=compact-mode 2025-05-02 14:22:21 +02:00
mr. m
e1894d5fb4
chore: Added semi-support for different container cross-window drag and drop, b=(no-bug), c=tabs 2025-05-02 12:27:32 +02:00
mr. m
58646d1d08
fix: Fixed right side compact mode not opening when element separation is 0 on windows and linux, b=(no-bug), c=compact-mode 2025-05-02 12:04:01 +02:00
Mr. M
2132f44812
fix: Fixed compact mode twitching on windows, b=(bug #7973), c=compact-mode, welcome 2025-05-02 10:06:17 +02:00
Mr. M
62f56d7949
feat: Added default engine selection step on the onboarding, b=(bug #7000), c=welcome, workspaces 2025-05-02 09:29:54 +02:00
Mr. M
33ac98c2b3
fix: Fixed a few things before release, b=(no-bug), c=common, compact-mode, mods, tabs, welcome 2025-05-02 01:10:44 +02:00
mr. m
8f962816ea
chore: Fixed swiping tabs, b=(no-bug), c=tabs 2025-05-01 21:01:24 +02:00
mr. m
e95363adc8
fix: Fixed switching workspaces on containerized essentials, b=(no-bug), c=workspaces 2025-05-01 20:52:50 +02:00
mr. m
6250e9dfb2
fix: Common fixed before release, b=(no-bug), c=tabs, workspaces 2025-05-01 20:51:20 +02:00
Mr. M
0f57148418
fix: Changing workspace to a different container, b=(no-bug), c=tabs, workspaces 2025-05-01 20:31:21 +02:00
mr. m
9bd02871e2
fix: Small fixes before release, b=(closes #7940), c=tabs, workspaces 2025-05-01 17:36:56 +02:00
mr. m
f1fbe78f93
style: Improved how workspace containers are set, b=(no-bug), c=tabs 2025-05-01 17:17:01 +02:00
Mr. M
02c429993c
fix: Fixed compact mode sidebar showing an extra pixel, b=(no-bug), c=compact-mode 2025-05-01 17:04:51 +02:00
Mr. M
beab17074d
fix: Fixed opening glance on split views, b=(no-bug), c=workspaces 2025-05-01 16:56:09 +02:00
Mr. M
f608d6a8ce
Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2025-05-01 16:33:21 +02:00
Mr. M
16c2ff8449
chore: Updated to firefox 138.0.1, b=(no-bug), c=no-component 2025-05-01 16:32:47 +02:00
mr. m
5c61ca688f
Merge pull request #7961 from BrielOtero/improve-download-animation
Fix: Ensure download animation works properly when tabs are right
2025-05-01 16:19:07 +02:00
Mr. M
095a5f38f3
style: Styled a bit better the URL bar, b=(no-bug), c=common 2025-05-01 15:49:08 +02:00
Gabriel
696757003b
Fixed download animation when tabs are on the right 2025-05-01 15:36:34 +02:00
Mr. M
9300004cbd
fix: Fixed downloads panels, b=(no-bug), c=common 2025-05-01 15:32:09 +02:00
Mr. M
9c13275aca
Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2025-05-01 14:27:55 +02:00
Mr. M
5c6b4736be
fix: Fixed essentials jumping around when switching workspaces, b=(no-bug), c=tabs 2025-05-01 14:27:49 +02:00
mr. m
c566cc32fe
Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2025-05-01 14:27:37 +02:00
mr. m
8dc0e6b4bf
fix: Fixed urlbar having high margins, b=(no-bug), c=common 2025-05-01 14:27:32 +02:00
mr. m
f8f3f8abcb
Merge pull request #7959 from zen-browser/revert-7958-patch-3 2025-05-01 14:14:19 +02:00
mr. m
22414da6a8
Revert "Oklch to Oklab (even better gradients)" 2025-05-01 05:14:10 -07:00
mr. m
150c94c0e9
Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2025-05-01 14:13:04 +02:00
mr. m
d845853643
feat: Added support for double clicking the resize bar, b=(no-bug), c=common 2025-05-01 14:12:55 +02:00
mr. m
ffbf4a703b
Merge pull request #7958 from BlueFox1616/patch-3 2025-05-01 14:12:36 +02:00
BlueFox1616
649378b695
Oklch to Oklab (even better gradients)
Not 100% sure it will work as intended but it should give way better gradients

Signed-off-by: BlueFox1616 <149878174+BlueFox1616@users.noreply.github.com>
2025-05-01 15:03:08 +03:00
mr. m
8aa964bc78
chore: Pre-release changes, b=(no-bug), c=common, mods, tabs, workspaces 2025-05-01 13:20:01 +02:00
mr. m
6c89cd4a26
Merge pull request #7956 from BlueFox1616/patch-2
Update lch to oklch (changed gradients to a better colorspace)
2025-05-01 12:10:46 +02:00
BlueFox1616
2ba4ffb4f8
Update lch to oklch
Update to a better gradient 

Signed-off-by: BlueFox1616 <149878174+BlueFox1616@users.noreply.github.com>
2025-05-01 13:06:22 +03:00
mr-cheff
38753ab8b0 Update monthly issue metrics 2025-05-01 02:42:01 +00:00
mr. m
9da8a28345
feat: Added swipe support for containerized essentials, b=(no-bug), c=common, workspaces 2025-04-30 23:54:17 +02:00
mr. m
a4e79d4738
chore: Removed installer / uninstaller telemetry from firefox, b=(bug #7000), c=no-component 2025-04-30 21:16:28 +02:00
mr. m
44cff2b498
fix: Fixed opening urlbar on compact mode, b=(no-bug), c=compact-mode 2025-04-30 20:42:13 +02:00
mr. m
5fe326aad8
chore: Add support for 9 essentials dynamic layout, b=(no-bug), c=workspaces 2025-04-30 20:12:44 +02:00
mr. m
b4a5c1504c
chore: Add support for 6 essentials dynamic layout, b=(no-bug), c=tabs, workspaces 2025-04-30 20:08:19 +02:00
mr. m
270254c760
style: Format before twilight release, b=(no-bug), c=common 2025-04-30 19:59:28 +02:00
mr. m
a71f24a1fa
Merge pull request #7945 from sporocyst/1.12tsidebarOrder 2025-04-30 19:58:40 +02:00
mr. m
90bce607b0
fix: Fixed adding tabs to essentials from pinned tabs, b=(no-bug), c=tabs 2025-04-30 19:50:57 +02:00
mr. m
1540d6b411
chore: Make gradients use LCH for browser backgrounds, b=(no-bug), c=common, workspaces 2025-04-30 19:45:36 +02:00
sporocyst
b51af13bb0
Make Move sidebar to right works
Signed-off-by: sporocyst <sporocyst.tw@gmail.com>
2025-05-01 01:44:35 +08:00
mr. m
3eaeb4a0a1
chore: Added an outline to the urlbar on light mode, b=(no-bug), c=common 2025-04-30 19:29:05 +02:00
mr. m
aa6a03b5f9
chore: Added better stylings for mute/unmute button, b=(no-bug), c=tabs 2025-04-30 19:25:10 +02:00
mr. m
3ca5b24e25
chore: Improved essentials layouts and URL bar stylings, b=(no-bug), c=common, tabs, workspaces 2025-04-30 19:21:47 +02:00
559 changed files with 42014 additions and 5817 deletions

2
.gitattributes vendored
View file

@ -1,2 +1,4 @@
*.patch linguist-language=C++
*.d.ts linguist-language=TypeScript
src/zen/tests/*.js linguist-language=Test

View file

@ -475,7 +475,18 @@ jobs:
if: ${{ inputs.create_release || inputs.update_branch == 'twilight' }}
permissions: write-all
name: Release
needs: [build-data, linux, windows-step-3, check-release, mac-uni, appimage, source, lint, stop-self-hosted]
needs:
[
build-data,
linux,
windows-step-3,
check-release,
mac-uni,
appimage,
source,
lint,
stop-self-hosted,
]
runs-on: ubuntu-latest
environment:
name: ${{ inputs.update_branch == 'release' && 'Deploy-Release' || 'Deploy-Twilight' }}
@ -490,9 +501,6 @@ jobs:
- name: Download artifact
uses: actions/download-artifact@v4
- name: List
run: find .
- name: Checkout updates repository
uses: actions/checkout@v4
with:

View file

@ -5,6 +5,9 @@ on:
- cron: '59 4 * * 2'
workflow_dispatch:
permissions:
contents: read
jobs:
check_candidates:
runs-on: ubuntu-latest

View file

@ -10,6 +10,9 @@ on:
branches:
- dev
permissions:
contents: read
jobs:
lint:
runs-on: ubuntu-latest

View file

@ -1,4 +1,7 @@
name: Monthly issue metrics
permissions:
contents: write
issues: read
on:
workflow_dispatch:
schedule:
@ -59,6 +62,6 @@ jobs:
- name: Commit changes
uses: stefanzweifel/git-auto-commit-action@v5
with:
commit_message: 'Update monthly issue metrics'
commit_message: 'docs: Update monthly issue metrics, b=(no bug), c={docs}'
commit_user_name: Zen Browser Robot
commit_user_email: zen-browser-auto@users.noreply.github.com

View file

@ -1,4 +1,6 @@
name: macOS Release Build
permissions:
contents: read
on:
workflow_call:

View file

@ -1,4 +1,6 @@
name: Pull request test
permissions:
contents: read
on:
pull_request:

View file

@ -1,5 +1,8 @@
name: Windows PGO Builds
permissions:
contents: read
on:
workflow_call:
inputs:

View file

@ -1,5 +1,8 @@
name: Windows Release Build
permissions:
contents: read
on:
workflow_call:
inputs:

View file

@ -9,6 +9,8 @@ engine/
**/*.svg
**/*.inc.css
surfer.json
src/browser/app/profile/*.js
@ -26,4 +28,6 @@ src/zen/tabs/zen-tabs.css
src/zen/compact-mode/zen-compact-mode.css
src/zen/common/ZenEmojies.mjs
src/zen/workspaces/zen-workspaces.css
*.inc

View file

@ -7,6 +7,6 @@
"useTabs": false,
"jsxSingleQuote": false,
"semi": true,
"printWidth": 128,
"printWidth": 100,
"plugins": ["prettier-plugin-sh"]
}

31
.vscode/settings.json vendored
View file

@ -1,31 +0,0 @@
{
"files.associations": {
"*.inc": "cpp",
"typeindex": "cpp",
"typeinfo": "cpp",
"functional": "cpp",
"array": "cpp",
"*.tcc": "cpp",
"memory": "cpp",
"future": "cpp",
"istream": "cpp",
"tuple": "cpp",
"utility": "cpp",
"variant": "cpp",
"compare": "cpp",
"thread": "cpp",
"string": "cpp",
"string_view": "cpp",
"span": "cpp",
"vector": "cpp",
"charconv": "cpp",
"chrono": "cpp",
"optional": "cpp",
"format": "cpp",
"ratio": "cpp",
"system_error": "cpp",
"regex": "cpp",
"type_traits": "cpp"
},
"git.ignoreLimitWarning": true
}

View file

@ -0,0 +1 @@
https://zen-browser.app/funding.json

View file

@ -1,3 +1,4 @@
<!-- TODO: Get a job -->
<img src="./docs/assets/zen-dark.svg" width="100px" align="left">
### `Zen Browser`
@ -28,9 +29,9 @@
## 🖥️ Compatibility
Zen is currently built using Firefox version `138.0`! 🚀
Zen is currently built using Firefox version `139.0`! 🚀
- [`Zen Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 138.0`!
- [`Zen Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 139.0`!
- Check out the latest [release notes](https://zen-browser.app/release-notes)!
- Part of our mission is to keep Zen up-to-date with the latest version of Firefox, so you can enjoy the latest features and security updates!

5
SECURITY.md Normal file
View file

@ -0,0 +1,5 @@
# Security Policy
## Reporting a Vulnerability
Please report security vulnerabilities [here](https://github.com/zen-browser/desktop/security/advisories/new)

View file

@ -1 +1 @@
8113a66aeeec42dca9739c7b742a3408cb5b7cf7
da30619f3ea895b356ded705b8dff9e4f271198f

View file

@ -30,8 +30,8 @@ Start-Job -Name "DownloadGitl10n" -ScriptBlock {
Start-Job -Name "SurferInit" -ScriptBlock {
param($PWD)
cd $PWD
surfer -- ci --brand release
npm run import -- --verbose
npm run surfer -- ci --brand release
} -Verbose -ArgumentList $PWD -Debug
echo "Downloading artifacts info"

View file

@ -0,0 +1,587 @@
# Issue Metrics
| Metric | Average | Median | 90th percentile |
| --- | --- | --- | ---: |
| Time to first response | 1 day, 10:58:31 | 4:19:41 | 4 days, 7:38:02 |
| Time to close | 2 days, 13:49:59 | 11:11:45 | 9 days, 19:10:27 |
| Metric | Count |
| --- | ---: |
| Number of items that remain open | 236 |
| Number of items closed | 333 |
| Total number of items created | 569 |
| Title | URL | Time to first response | Time to close |
| --- | --- | --- | --- |
| Cloudflare Turnstile can't be passed on Zen | https://github.com/zen-browser/desktop/issues/7948 | None | None |
| [Gecko engine] - Zen doesn't load a site (Doom loading) | https://github.com/zen-browser/desktop/issues/7946 | 0:09:25 | 0:09:25 |
| Unable to open URL bar when sidebar is unfocused | https://github.com/zen-browser/desktop/issues/7944 | 1:22:42 | None |
| Remove AutoPlay Icon | https://github.com/zen-browser/desktop/issues/7943 | None | None |
| "Prevent tab unload" doesn't save it's state on browser restart | https://github.com/zen-browser/desktop/issues/7942 | None | None |
| Unable to emoji picker when creating/editing workspace | https://github.com/zen-browser/desktop/issues/7940 | None | None |
| Tabs crash when loading any video stream. | https://github.com/zen-browser/desktop/issues/7939 | None | None |
| Resizing the window on MacOS triggers websites shortcuts | https://github.com/zen-browser/desktop/issues/7937 | None | None |
| MDN Search add-on does not work anymore | https://github.com/zen-browser/desktop/issues/7936 | 6:23:47 | None |
| Browser extensions often fail to work, randomly breaking in different workspaces. | https://github.com/zen-browser/desktop/issues/7934 | None | None |
| The Settings Page does not resize based on browser view size. | https://github.com/zen-browser/desktop/issues/7933 | None | None |
| Often Zen fills ram and makes computer unresponsive | https://github.com/zen-browser/desktop/issues/7931 | None | None |
| weird newtab behaviour in certain sites | https://github.com/zen-browser/desktop/issues/7930 | None | None |
| YouTube fails to load any content that is not specifically a video stream | https://github.com/zen-browser/desktop/issues/7929 | 11:28:37 | 18:24:51 |
| Empty url bar looses focus | https://github.com/zen-browser/desktop/issues/7926 | 0:33:26 | 3:02:07 |
| The toolbar is still unable to adapt with the rest of the theme | https://github.com/zen-browser/desktop/issues/7925 | None | None |
| Closing the frozen browser, deletes all tabs | https://github.com/zen-browser/desktop/issues/7923 | 0:45:02 | 0:45:02 |
| split tab shortcut is already taken by OS shortcut on macOS | https://github.com/zen-browser/desktop/issues/7922 | 15:41:24 | 15:41:24 |
| Zen not properly restoring previously opened tabs in the previous session (Only pinned tabs restored; potential container or Sidebery issue?) | https://github.com/zen-browser/desktop/issues/7920 | 3:01:11 | None |
| Help entrypoints in Help menu and About Zen go to Firefox docs | https://github.com/zen-browser/desktop/issues/7919 | None | None |
| "Split horizontal" shortcut conflicts with macOS default | https://github.com/zen-browser/desktop/issues/7918 | None | None |
| Zen not remembering where the tabs opened in the previous sessions. | https://github.com/zen-browser/desktop/issues/7916 | 15:46:31 | None |
| Incorrect behavior when pressing ctrl+enter in URL bar after typing a string | https://github.com/zen-browser/desktop/issues/7915 | 14:56:31 | 14:56:31 |
| Additional Zen icons added to Dock when links are opened | https://github.com/zen-browser/desktop/issues/7914 | None | None |
| New Tab Startup Opening | https://github.com/zen-browser/desktop/issues/7912 | 2:27:10 | 2:27:10 |
| Cannot scroll webpages using Wacom Pen tablet | https://github.com/zen-browser/desktop/issues/7911 | None | 1 day, 1:16:05 |
| When using Tabs on the Right, the Glance controls are on the wrong side | https://github.com/zen-browser/desktop/issues/7910 | None | None |
| Displaying the Wrong Information | https://github.com/zen-browser/desktop/issues/7909 | 19:28:41 | 19:28:41 |
| Compact mode doesn't hide sidebar | https://github.com/zen-browser/desktop/issues/7908 | 5:31:34 | None |
| Black content on extensions window | https://github.com/zen-browser/desktop/issues/7907 | 0:09:00 | 4:16:12 |
| Slash character (/) in URL field opens search bar and making it impossible to write https:// | https://github.com/zen-browser/desktop/issues/7906 | 1 day, 0:32:34 | None |
| After I delete everything in the address bar, I lose focus and have to click it again to type. Is there a way to fix this? | https://github.com/zen-browser/desktop/issues/7905 | None | 0:01:26 |
| Tabs not restored on startup under specific conditions | https://github.com/zen-browser/desktop/issues/7902 | 6:24:57 | 12:52:38 |
| Duplicating a renamed Pinned Tab causes the duplicated tab to be named "New Tab" instead of the website name | https://github.com/zen-browser/desktop/issues/7900 | None | 5:09:46 |
| When the theme is set to System theme - Auto and the System theme is Dark, the highlighted search suggestion is the wrong color | https://github.com/zen-browser/desktop/issues/7899 | None | None |
| Inconsistent/Incorrect behavior when using ctrl+enter from new tab addressbar | https://github.com/zen-browser/desktop/issues/7898 | 1 day, 16:47:43 | 3 days, 2:50:21 |
| [Twilight 1.11.5] Sizing issue with essentials in multi toolbar mode | https://github.com/zen-browser/desktop/issues/7897 | 1:40:18 | 5:03:44 |
| AWS Console Session/Credential Error "Missing credentials in config, if using AWS_CONFIG_FILE, set AWS_SDK_LOAD_CONFIG=1" | https://github.com/zen-browser/desktop/issues/7896 | None | None |
| Dark Mode not persistent | https://github.com/zen-browser/desktop/issues/7894 | None | None |
| pinned tabs closed via firefox on android open after restart | https://github.com/zen-browser/desktop/issues/7892 | None | None |
| Idle inhibit not released after fullscreen video finishes playing on Wayland | https://github.com/zen-browser/desktop/issues/7891 | None | 0:19:07 |
| Not every window in compact mode on startup if multiple window is open. | https://github.com/zen-browser/desktop/issues/7890 | None | 4:40:46 |
| ctrl+tab goes through essentials and pinned tabs | https://github.com/zen-browser/desktop/issues/7889 | 11:45:57 | 11:46:05 |
| Extensions only show a blank popup in full-screen | https://github.com/zen-browser/desktop/issues/7888 | None | 0:01:28 |
| Command+Option+[arrow key] switches tabs on Mac but not on Windows | https://github.com/zen-browser/desktop/issues/7886 | 15:40:50 | 15:40:50 |
| Dark mode (despite changing to light) | https://github.com/zen-browser/desktop/issues/7885 | 1 day, 20:57:57 | 1 day, 20:57:57 |
| Spotify seems broken on Zen browser | https://github.com/zen-browser/desktop/issues/7878 | 0:10:25 | 0:25:06 |
| ALT not being recognize when using the key | https://github.com/zen-browser/desktop/issues/7877 | 4 days, 2:54:12 | None |
| Tooltips and popups flickering on Zen / OS X | https://github.com/zen-browser/desktop/issues/7876 | 0:06:03 | 1:33:13 |
| Intermittent pink frame in YT videos | https://github.com/zen-browser/desktop/issues/7874 | 0:21:12 | None |
| Extensions view is blank when opened in taskbar | https://github.com/zen-browser/desktop/issues/7873 | 0:46:08 | 0:46:08 |
| SSL certificate error on trusted custom root CA: SEC_ERROR_UNKNOWN_ISSUER | https://github.com/zen-browser/desktop/issues/7872 | 10:27:53 | 10:27:53 |
| [BUG?] High RAM consumption | https://github.com/zen-browser/desktop/issues/7871 | None | 12:00:20 |
| Compact sidebar appearch when switching tabs with the shortcuts | https://github.com/zen-browser/desktop/issues/7870 | 3:10:22 | 14:26:17 |
| Horizontal Scrollbar Appears in Full-Screen Mode on YouTube | https://github.com/zen-browser/desktop/issues/7867 | 1 day, 1:53:22 | None |
| Tabs crashing after click Links in Thunderbird Mail | https://github.com/zen-browser/desktop/issues/7866 | 1 day, 0:14:36 | 2 days, 2:58:17 |
| Ctrl+Tab Cycling through tabs crashes if pressed without recent tabs | https://github.com/zen-browser/desktop/issues/7865 | None | 3:20:55 |
| Browser freezes when using Glance with webpages open in another workspace | https://github.com/zen-browser/desktop/issues/7864 | 1:54:48 | 3 days, 22:16:17 |
| youtube video flickers on nvidia gpu | https://github.com/zen-browser/desktop/issues/7860 | 0:58:00 | 1 day, 3:33:06 |
| Feedback on Tab and Sidebar Behavior | https://github.com/zen-browser/desktop/issues/7859 | 0:07:25 | 0:07:25 |
| YouTube Music Media Controller Pause Button has no Effect | https://github.com/zen-browser/desktop/issues/7858 | None | 0:04:51 |
| Text jitter in popup window on macOS | https://github.com/zen-browser/desktop/issues/7856 | 7:16:06 | None |
| Setting theme in Firefox also applies to Zen | https://github.com/zen-browser/desktop/issues/7855 | 7:45:30 | None |
| Clearing cookies fails when using the single toolbar layout | https://github.com/zen-browser/desktop/issues/7851 | None | None |
| Pinned Tabs: "open in new tab" from glance window places the tab into pinned tabs automatically | https://github.com/zen-browser/desktop/issues/7850 | None | 4:17:16 |
| Bug with enlarged extension icon after expanding and minimazing right sidebar. | https://github.com/zen-browser/desktop/issues/7848 | 0:09:31 | 0:13:57 |
| Running firefox in incognito mode makes Zen lose saved tabs (Windows) | https://github.com/zen-browser/desktop/issues/7847 | 1:51:53 | None |
| Picture-in-picture "Back to tab" button restores pin in the incorrect workspace | https://github.com/zen-browser/desktop/issues/7845 | 6:23:29 | 1 day, 7:14:12 |
| weird link opening behavior | https://github.com/zen-browser/desktop/issues/7844 | 6:08:34 | 6:18:12 |
| Linux-zen can not access directory page directly | https://github.com/zen-browser/desktop/issues/7841 | 11:54:43 | 11:54:43 |
| Moving a split screen tab across workspaces is broken | https://github.com/zen-browser/desktop/issues/7840 | 6:28:28 | 2 days, 10:33:34 |
| The web panel is gone? | https://github.com/zen-browser/desktop/issues/7839 | 0:02:32 | 0:02:32 |
| Tabs on right has an empty margin | https://github.com/zen-browser/desktop/issues/7838 | 4:55:32 | None |
| Twitch.tv - Zen Browser | https://github.com/zen-browser/desktop/issues/7837 | 1:55:02 | 1:55:02 |
| Zen Mod "Better Tab indicators v1.0.0" not function | https://github.com/zen-browser/desktop/issues/7833 | 0:41:23 | 0:45:22 |
| Pinned tabs remember scrolling position when unloaded and reset | https://github.com/zen-browser/desktop/issues/7830 | 0:30:46 | 6:04:50 |
| SponsorBlock Breaks the custom volume slider and theme. | https://github.com/zen-browser/desktop/issues/7829 | 5:24:28 | 5:24:29 |
| Problem with video uploads on Xiaohongshu's Creator Platform through Zen | https://github.com/zen-browser/desktop/issues/7828 | 3 days, 1:04:18 | 3 days, 2:55:43 |
| Cant click/open essentials | https://github.com/zen-browser/desktop/issues/7826 | 1 day, 15:20:15 | 1 day, 15:20:15 |
| [Twilight 1.11.5t] Tabs break and browser flickers after unloading pinned tabs | https://github.com/zen-browser/desktop/issues/7825 | 3 days, 3:19:07 | 3 days, 6:38:13 |
| [Twilight 1.11.5t] Close window button doesn't work. | https://github.com/zen-browser/desktop/issues/7824 | 2:28:27 | 1 day, 15:45:18 |
| iCloud Passwords broken with latest macOS | https://github.com/zen-browser/desktop/issues/7823 | None | None |
| Tab scrollbar dragging is broken again | https://github.com/zen-browser/desktop/issues/7821 | 1 day, 21:12:24 | None |
| "Unload tab" doesn't work when tabs are in Split Mode | https://github.com/zen-browser/desktop/issues/7819 | 22:02:39 | 22:02:39 |
| Compact mode single toolbar repeatedly goes from hidden to visible while using Raycast focus | https://github.com/zen-browser/desktop/issues/7818 | 0:22:13 | 1:20:26 |
| Performance benchmarks link in README.md is broken | https://github.com/zen-browser/desktop/issues/7817 | None | 0:07:57 |
| Google Meet Widget's Microphone and Camera Controls Have no Effects | https://github.com/zen-browser/desktop/issues/7815 | None | 0:02:32 |
| Every startup does not display the homepage | https://github.com/zen-browser/desktop/issues/7814 | 0:11:47 | 0:11:47 |
| Unable to click links from Thunderbird and other apps to jump to zen browser | https://github.com/zen-browser/desktop/issues/7813 | 0:26:55 | 0:27:32 |
| Suspicious New Tab in every startup | https://github.com/zen-browser/desktop/issues/7812 | 1:14:48 | 1:14:48 |
| Using private window always prompts the user to solve a Google CAPTCHA for "unusual traffic" | https://github.com/zen-browser/desktop/issues/7811 | 4:08:25 | 4:08:25 |
| No keyboard shortcut assigned, yet still error 'conflict with another shortcut' | https://github.com/zen-browser/desktop/issues/7810 | 7:33:18 | None |
| Show Bookmarks Toolbar shortcut not wroking in Single Toolbar Layout | https://github.com/zen-browser/desktop/issues/7809 | 0:48:50 | 10:04:21 |
| Cannot inject scripts into same-origin iframes | https://github.com/zen-browser/desktop/issues/7808 | 10:11:50 | 10:11:50 |
| Change Tab(s) to Workspace not working with split tabs | https://github.com/zen-browser/desktop/issues/7806 | 13:20:30 | 4 days, 9:18:08 |
| Reset and pin tab button doesn't work for local folder path | https://github.com/zen-browser/desktop/issues/7805 | None | None |
| Middle-click to open new tab unintentionally pastes clipboard contents into address bar | https://github.com/zen-browser/desktop/issues/7804 | 8:36:38 | None |
| Chinese Language in URL Bar Causes Zen to Soft-Freeze | https://github.com/zen-browser/desktop/issues/7803 | 6 days, 13:54:47 | None |
| "New Tab" button at bottom of tab list doesn't do... anything? | https://github.com/zen-browser/desktop/issues/7802 | None | 0:01:24 |
| Default Workspace not showing `Essentials` Tabs. | https://github.com/zen-browser/desktop/issues/7800 | 1:30:16 | 13:48:39 |
| Muting a tab from the media controller does not change the state of the "Mute Tab" button to "Unmute Tab" | https://github.com/zen-browser/desktop/issues/7798 | None | 3 days, 16:05:34 |
| "Expand Sidebar" button shifts slightly and when sidebar is toggled | https://github.com/zen-browser/desktop/issues/7797 | 10:56:40 | None |
| Zen doesn't remember selected tab between sessions | https://github.com/zen-browser/desktop/issues/7795 | 3:15:56 | 3 days, 3:12:31 |
| The app name in GNOME notifications is "Mozilla zen" | https://github.com/zen-browser/desktop/issues/7794 | 1:09:59 | 1:35:44 |
| ctrl+space shortcut white space | https://github.com/zen-browser/desktop/issues/7793 | None | None |
| Compact Mode Expand-on-Hover Single Toolbar Does Not Have Same Padding as Browser Viewport | https://github.com/zen-browser/desktop/issues/7792 | None | 0:00:18 |
| Zen Bar closing when changing language | https://github.com/zen-browser/desktop/issues/7791 | 2 days, 9:32:56 | None |
| Compact mode open/close animation bugged | https://github.com/zen-browser/desktop/issues/7789 | 0:07:52 | 3:17:28 |
| Bookmarks unaccessible when no tabs are open in compact mode | https://github.com/zen-browser/desktop/issues/7788 | None | 0:13:38 |
| Zen forgets named Tabs after reopening | https://github.com/zen-browser/desktop/issues/7787 | 1:26:39 | None |
| After adding the Bing search engine, searching in the address bar, the search prompt cannot be displayed | https://github.com/zen-browser/desktop/issues/7786 | 1:28:38 | 1 day, 1:15:18 |
| Watt Toolkit's Network routing service fails to accelerate zen browser access to github | https://github.com/zen-browser/desktop/issues/7785 | 4:45:53 | 4:45:53 |
| Terrible performance on Power Saving mode | https://github.com/zen-browser/desktop/issues/7784 | 1:03:17 | None |
| duplicate of 504 | https://github.com/zen-browser/desktop/issues/7781 | None | 2:30:56 |
| hitting `Ctrl+T` in Fullscreen mode opens new tab menu only when fullscreen mode is exited | https://github.com/zen-browser/desktop/issues/7779 | None | 9:22:25 |
| Button that works on Firefox does not work on Zen | https://github.com/zen-browser/desktop/issues/7778 | 0:45:05 | None |
| No homepage or totally blank homepage problem! | https://github.com/zen-browser/desktop/issues/7773 | 7:35:50 | 7:35:50 |
| Firefox multi-account container and browsing history | https://github.com/zen-browser/desktop/issues/7768 | 20:19:15 | None |
| The Extensions Not Work | https://github.com/zen-browser/desktop/issues/7766 | None | 0:26:32 |
| Bitwarden blank window after sign-in | https://github.com/zen-browser/desktop/issues/7763 | 10:45:22 | 7 days, 5:07:50 |
| The Facebook page turns pale white after open link. | https://github.com/zen-browser/desktop/issues/7760 | 7:32:21 | 6 days, 9:26:33 |
| Linux arm64 builds does neither have drm enable option nor detect widevine CDM in plugins | https://github.com/zen-browser/desktop/issues/7759 | 20:47:30 | 2 days, 13:42:10 |
| Spliting Essentials or Pinned Tabs is off | https://github.com/zen-browser/desktop/issues/7758 | 7:05:27 | 7:05:27 |
| Zen browser does not support higher refresh rates on macOS | https://github.com/zen-browser/desktop/issues/7757 | 16:41:57 | 2 days, 10:42:28 |
| Address bar loses focus when changing language in GNOME | https://github.com/zen-browser/desktop/issues/7756 | None | 1:48:13 |
| Customize Toolbar tab becomes transparent | https://github.com/zen-browser/desktop/issues/7755 | None | None |
| Auto-PIP was enabled by default and cant find how to turn it off | https://github.com/zen-browser/desktop/issues/7754 | 0:19:14 | 0:19:14 |
| Higher CPU Usage and Choppy Video Playback in Glance | https://github.com/zen-browser/desktop/issues/7753 | None | 0:04:19 |
| Auto-PIP does not work if the PIP button is disabled | https://github.com/zen-browser/desktop/issues/7752 | None | 0:11:15 |
| F1 TV bug | https://github.com/zen-browser/desktop/issues/7751 | 0:26:19 | 0:26:19 |
| Zen crashes after sometime while screensharing on discord web | https://github.com/zen-browser/desktop/issues/7750 | 17:39:57 | None |
| Picture-in-Picture auto-starts when changing tabs or workspaces | https://github.com/zen-browser/desktop/issues/7749 | 0:13:43 | 0:26:03 |
| Toolbar disappears | https://github.com/zen-browser/desktop/issues/7746 | 0:51:00 | None |
| [GNOME] changing keyboard layout while on the search bar makes the search bar disappear | https://github.com/zen-browser/desktop/issues/7744 | None | 0:12:23 |
| AI Chatbot selecting text shortcut open AI website in new tab instead of sidebar. | https://github.com/zen-browser/desktop/issues/7742 | 0:39:10 | None |
| switching workspaces focuses on the URL bar | https://github.com/zen-browser/desktop/issues/7741 | 0:49:53 | 1:10:53 |
| split tabs issue | https://github.com/zen-browser/desktop/issues/7736 | 1:40:14 | None |
| PIP video covers new tab | https://github.com/zen-browser/desktop/issues/7735 | 0:03:58 | 1:36:34 |
| After an update, Zen is installed twice. As visible in "Installed Apps" in Windows. | https://github.com/zen-browser/desktop/issues/7734 | None | None |
| CMD+T &#124; floating URL bar does not show | https://github.com/zen-browser/desktop/issues/7733 | 1:14:20 | 0:59:06 |
| The rounded corner theme affects the mouse's access to the scroll bar | https://github.com/zen-browser/desktop/issues/7732 | 3 days, 9:30:14 | 3 days, 10:14:34 |
| Menubar Text Turns Black in Dark Mode When Switching Apps via Stage Manager | https://github.com/zen-browser/desktop/issues/7731 | None | None |
| Epic Games Store - no audio in videos | https://github.com/zen-browser/desktop/issues/7730 | 2:21:02 | 4:06:29 |
| Wrong aspect ratio when opening on sway wm | https://github.com/zen-browser/desktop/issues/7729 | 12:23:25 | None |
| Moving cursor from addon popup to website keeps tab sidebar showing in compact mode | https://github.com/zen-browser/desktop/issues/7728 | None | None |
| URL bar not focused upon opening zen (with replace-newtab: false) | https://github.com/zen-browser/desktop/issues/7727 | None | 0:22:28 |
| Pop up video(PIP) window that won't go away (Facebook) | https://github.com/zen-browser/desktop/issues/7726 | 11:06:08 | 1 day, 12:17:11 |
| Zen does not use system theme setting | https://github.com/zen-browser/desktop/issues/7725 | 1:16:41 | 1:30:14 |
| Zen doesnt Display Proxmox WebUi correctly.... | https://github.com/zen-browser/desktop/issues/7724 | 12:19:36 | None |
| css attribute "breakout="true"" not persistant | https://github.com/zen-browser/desktop/issues/7722 | 0:08:57 | 0:08:57 |
| Media control incorrectly shows a duration for onging live stream on youtube | https://github.com/zen-browser/desktop/issues/7721 | None | None |
| Cannot copy selected text when right-clicking on the address bar in Linux Mint | https://github.com/zen-browser/desktop/issues/7719 | None | 0:58:16 |
| Zen freezes - nothing responds | https://github.com/zen-browser/desktop/issues/7718 | 2:01:46 | 2:41:50 |
| sidebar not hiding on blankpage | https://github.com/zen-browser/desktop/issues/7717 | 2:53:33 | 2:53:33 |
| Zen seems to crash randomly when switching tabs | https://github.com/zen-browser/desktop/issues/7716 | 1 day, 14:07:42 | 10 days, 18:03:06 |
| Invalid page background in dark themes | https://github.com/zen-browser/desktop/issues/7715 | 5:05:23 | 5:05:23 |
| Hardware Acceleration - Browser almost unusable without it | https://github.com/zen-browser/desktop/issues/7714 | 5:32:14 | 5:48:30 |
| Magic Mouse swipe does not change workspaces on macOS | https://github.com/zen-browser/desktop/issues/7713 | 5 days, 3:11:30 | None |
| Where is zen sidebar | https://github.com/zen-browser/desktop/issues/7712 | 1:06:23 | 5:59:31 |
| URL bar flashes when exiting fullscreen mode | https://github.com/zen-browser/desktop/issues/7711 | 1:31:07 | None |
| Inconsistent behaviour of reset button when tab is loading | https://github.com/zen-browser/desktop/issues/7710 | None | None |
| user.js | https://github.com/zen-browser/desktop/issues/7709 | 0:08:13 | 0:08:13 |
| Changing Zoom keybindings is not taking effect on windows | https://github.com/zen-browser/desktop/issues/7708 | None | None |
| Google Maps not showing route (the blue line) | https://github.com/zen-browser/desktop/issues/7707 | 3:34:36 | 2 days, 5:27:24 |
| Basic Authorization doesn't works on some websites | https://github.com/zen-browser/desktop/issues/7706 | 1:59:13 | 1:59:13 |
| Sometimes there are vertical black bars on the left/right size of picture in picture mini player | https://github.com/zen-browser/desktop/issues/7705 | None | None |
| Blank Extension Popup when activated using the keyboard shortcut | https://github.com/zen-browser/desktop/issues/7703 | None | 10:14:29 |
| Can no longer cycle through tabs in Macos using cmd+opt+right for seemingly no reason | https://github.com/zen-browser/desktop/issues/7702 | 1 day, 8:49:40 | 1 day, 8:49:40 |
| about:protections advertises "Zen for Android and iOS," links to Firefox | https://github.com/zen-browser/desktop/issues/7701 | None | None |
| In the new window, voice input is not working. This prevents me from writing in the browsers. | https://github.com/zen-browser/desktop/issues/7698 | None | None |
| picture in picture disappears | https://github.com/zen-browser/desktop/issues/7697 | 1 day, 13:00:12 | None |
| Tab Switching Unresponsive in Split View Mode | https://github.com/zen-browser/desktop/issues/7696 | 2:24:28 | None |
| content-element-separation=0 doesn't show browser windows controls | https://github.com/zen-browser/desktop/issues/7694 | None | 0:03:33 |
| last used tabs not in focus in startup | https://github.com/zen-browser/desktop/issues/7693 | 0:58:59 | 1:06:21 |
| Unexpected Behavior When Opening New Tab (CTRL + T) During YouTube Fullscreen Video | https://github.com/zen-browser/desktop/issues/7692 | 2:48:18 | 23:21:28 |
| Zen does not appear in Start Menu | https://github.com/zen-browser/desktop/issues/7691 | 0:17:52 | 1:41:13 |
| Unable to perform new update | https://github.com/zen-browser/desktop/issues/7689 | None | 1:46:21 |
| Bitwarden does not ask to save new passwords | https://github.com/zen-browser/desktop/issues/7687 | None | None |
| YouTube eventually gets very slow and sluggish to use | https://github.com/zen-browser/desktop/issues/7685 | 10 days, 7:27:25 | None |
| Small inconsistencies with zen.urlbar.replace-newtab disabled | https://github.com/zen-browser/desktop/issues/7684 | 0:39:19 | 1 day, 6:02:08 |
| Clicking New Tab multiple times briefly flickers the browser back to the previous tab. | https://github.com/zen-browser/desktop/issues/7683 | None | None |
| Compact mode not active for 2/3 windows on startup, switching to single toolbar and back again breaks layout | https://github.com/zen-browser/desktop/issues/7682 | 1 day, 2:24:51 | None |
| Zen did not auto update to 1.11.3b when I thought it did | https://github.com/zen-browser/desktop/issues/7681 | 1:36:45 | 1:36:45 |
| Text colors arent correctly visible while `zen.theme.gradient.show-custom-colors` is enabled | https://github.com/zen-browser/desktop/issues/7680 | 6:46:05 | 6:46:05 |
| Zen shows warning icon next to "This is a secure Zen page" | https://github.com/zen-browser/desktop/issues/7679 | 2:12:33 | None |
| Tabs alignment is off when the tab-bar is collapsed and there are enough tabs that they can be scrolled | https://github.com/zen-browser/desktop/issues/7678 | None | None |
| Zen using a lot of memory | https://github.com/zen-browser/desktop/issues/7673 | 0:08:16 | 9:36:13 |
| Cannot play DRM content (Specifcally crunchyroll.com) on Linux since 1.11.3b | https://github.com/zen-browser/desktop/issues/7671 | 1:10:45 | 10 days, 6:30:28 |
| zen seemingly tiling into 4 windows on hyprland | https://github.com/zen-browser/desktop/issues/7670 | None | None |
| Tabs are not opening on startup when closing using X button | https://github.com/zen-browser/desktop/issues/7669 | 2:08:51 | 1 day, 10:29:12 |
| When I hit ctrl+t for new tab, start writing url, change my mind and cancel it, then invoke it again, the typed text is still there | https://github.com/zen-browser/desktop/issues/7667 | 0:53:10 | 7:59:08 |
| URL Bar not showing on fullscreen mode and glitchin when exiting it | https://github.com/zen-browser/desktop/issues/7665 | 0:21:09 | None |
| Flatpak reverted to an older version today. | https://github.com/zen-browser/desktop/issues/7664 | 8:07:44 | 17:35:17 |
| Hyprland blur not working at the start | https://github.com/zen-browser/desktop/issues/7663 | 9:54:03 | None |
| Switch Profile Button Gone | https://github.com/zen-browser/desktop/issues/7662 | 10:56:49 | 1 day, 1:39:17 |
| Issue with Zen browser after unexpected PC crash. | https://github.com/zen-browser/desktop/issues/7661 | 7:06:45 | None |
| Zen tries to automatically download a PDF on sites that use iframe elements to embed a PDF | https://github.com/zen-browser/desktop/issues/7660 | 0:23:40 | 1:47:54 |
| [Twilight 1.11.3t] Essential/Pinned tabs reload when already loading. | https://github.com/zen-browser/desktop/issues/7659 | 15:23:47 | 1 day, 4:59:18 |
| Nvidia RTX video super resolution doesn't work in Zen | https://github.com/zen-browser/desktop/issues/7658 | 12:30:11 | 21:59:00 |
| "zen.view.grey-out-inactive-windows" is bugged on Windows | https://github.com/zen-browser/desktop/issues/7657 | 22:45:09 | None |
| Twitch not supported | https://github.com/zen-browser/desktop/issues/7656 | 1:28:28 | None |
| Tab unloading fails on tabs using the Glance view | https://github.com/zen-browser/desktop/issues/7655 | 0:57:35 | None |
| Renamed Tabs do not show up in URL Bar | https://github.com/zen-browser/desktop/issues/7654 | 0:17:42 | None |
| When a tab is not loaded, searching it via % clones it instead of switching to it | https://github.com/zen-browser/desktop/issues/7653 | 0:37:13 | None |
| If you clear the contents of the address bar, the focus of the address bar will be released. | https://github.com/zen-browser/desktop/issues/7651 | 1:48:28 | 11 days, 5:19:00 |
| New tab search, stay on right click. | https://github.com/zen-browser/desktop/issues/7650 | None | 0:22:00 |
| Context Menu Colors Incorrectly Follow Application Theme | https://github.com/zen-browser/desktop/issues/7649 | 11 days, 5:49:13 | 12 days, 1:15:41 |
| Screen Sharing Bug on Mac | https://github.com/zen-browser/desktop/issues/7648 | None | 0:01:19 |
| Scrolling on the tabs on a touch screen does nothing | https://github.com/zen-browser/desktop/issues/7647 | None | 0:00:58 |
| Scrollbar in tabs doesn't appear in collapsed toolbar layout | https://github.com/zen-browser/desktop/issues/7646 | 0:13:13 | 0:19:22 |
| Overflow menu icon missing in single sidebar view mode | https://github.com/zen-browser/desktop/issues/7644 | 0:01:07 | 0:01:07 |
| Zen browser doesnt show minimize button on linux | https://github.com/zen-browser/desktop/issues/7643 | 2:28:48 | 2:28:48 |
| Claude “App Integration” panel disappears instantly after click | https://github.com/zen-browser/desktop/issues/7642 | 1:32:22 | 1:32:22 |
| Unable to revert "On macos, you can now cycle through tabs with cmd+opt+UP or cmd+opt+DOWN" | https://github.com/zen-browser/desktop/issues/7640 | 3:46:56 | 3:46:55 |
| Missing .dll files after installation | https://github.com/zen-browser/desktop/issues/7638 | None | 0:14:40 |
| Webpage content overflow window region after initing Zen | https://github.com/zen-browser/desktop/issues/7637 | None | 0:04:41 |
| Mouse history back and history forward buttons change workspaces when not inside tab container | https://github.com/zen-browser/desktop/issues/7636 | 6 days, 12:45:14 | None |
| Spotify Skips and Only Plays 10 seconds of audio | https://github.com/zen-browser/desktop/issues/7635 | 2:06:02 | 2:06:02 |
| Add-ons GUIs are not loaded correctly | https://github.com/zen-browser/desktop/issues/7633 | 13:04:07 | None |
| Zen window gaining focus makes the hidden sidebar glitch | https://github.com/zen-browser/desktop/issues/7632 | 6:31:37 | 21:43:01 |
| Dragging a tab to essentials makes it disappear | https://github.com/zen-browser/desktop/issues/7631 | 0:15:33 | 23:19:25 |
| VC Runtime Errors in Installer | https://github.com/zen-browser/desktop/issues/7630 | 3:31:22 | 8:34:38 |
| Perform a component refactoring | https://github.com/zen-browser/desktop/issues/7628 | None | 0:23:06 |
| zen mods and Tag records | https://github.com/zen-browser/desktop/issues/7623 | None | None |
| Losing all tabs when closing the main window with the private one open | https://github.com/zen-browser/desktop/issues/7622 | 2:04:11 | 2:04:11 |
| Can't re-arrange essential Icons | https://github.com/zen-browser/desktop/issues/7617 | 0:09:59 | 5:01:31 |
| Sidebar breifly appears when exiting fullscreen video | https://github.com/zen-browser/desktop/issues/7615 | 0:57:48 | 2 days, 11:44:49 |
| Resetting the fixed tab is invalid, it is not possible to click the tab icon to reset the tab | https://github.com/zen-browser/desktop/issues/7614 | 7:47:12 | 21:41:31 |
| Ctrl+Tab Cycling preview is at desktop size instead of window size | https://github.com/zen-browser/desktop/issues/7612 | None | None |
| Synced containers disrupted in synced workspaces | https://github.com/zen-browser/desktop/issues/7611 | 3 days, 8:25:51 | None |
| [a11y] Yellow-on-white warning when rebinding keys | https://github.com/zen-browser/desktop/issues/7609 | 1:38:15 | None |
| missing workspace emojis | https://github.com/zen-browser/desktop/issues/7608 | None | None |
| Two workspace managers , I can't delete the lowest workspace manager, it takes up half the browser screen ,no option to change wokspace manager to "menu" type in settings anymore. | https://github.com/zen-browser/desktop/issues/7607 | 3:17:15 | None |
| Issues with Detaching Tabs from Parent Window | https://github.com/zen-browser/desktop/issues/7606 | 0:04:52 | None |
| New Window doesn't focus URL bar on compact mode | https://github.com/zen-browser/desktop/issues/7605 | 0:05:43 | 1 day, 18:08:01 |
| Unable to copy clean link | https://github.com/zen-browser/desktop/issues/7604 | 0:26:36 | 5:16:04 |
| Closing the last tab doesn't close the window | https://github.com/zen-browser/desktop/issues/7603 | None | 0:21:59 |
| split screen not working on draging the tabs | https://github.com/zen-browser/desktop/issues/7601 | 0:46:35 | None |
| Closing a pinned tab won't open it to the reset URL when opening it again | https://github.com/zen-browser/desktop/issues/7600 | 9:10:40 | 19:51:32 |
| Cannot Screenshare with Zen (Teams, Meet, Jitsi, and alike) | https://github.com/zen-browser/desktop/issues/7597 | 0:35:35 | None |
| Microsoft teams fails to initialize | https://github.com/zen-browser/desktop/issues/7596 | 3:00:35 | 2 days, 6:17:50 |
| Microsoft Word Online prevents Zen from opening split view | https://github.com/zen-browser/desktop/issues/7595 | 12 days, 5:47:57 | None |
| splitView.change-on-hover not working | https://github.com/zen-browser/desktop/issues/7594 | 7:21:42 | 7:21:42 |
| Transparent background on toolbar customization page on Linux (Fedora 42, GNOME 48) | https://github.com/zen-browser/desktop/issues/7593 | None | None |
| Compact mode state not being consistant to all workspaces | https://github.com/zen-browser/desktop/issues/7591 | 11:38:56 | None |
| Zen window gaining focus makes the hidden sidebar glitch | https://github.com/zen-browser/desktop/issues/7590 | 3:49:52 | None |
| youtube theater option not available | https://github.com/zen-browser/desktop/issues/7589 | None | 0:03:22 |
| Address Bar shifts slightly when selecting part of the URL, changing the selection | https://github.com/zen-browser/desktop/issues/7586 | 10:21:52 | None |
| "Profiles" Persists in Menu After Disabling `browser.profiles.enabled` | https://github.com/zen-browser/desktop/issues/7584 | 0:33:05 | 2:55:19 |
| Window Tab Managment breaks when using "Switch to Tab" with multiple windows | https://github.com/zen-browser/desktop/issues/7583 | 1 day, 19:13:20 | None |
| If You Open a Second Zen Browser Instance You Lose Your Split Tabs If You Close The Main Window First | https://github.com/zen-browser/desktop/issues/7582 | 10:22:23 | None |
| Dragging Tabs Quickly Causes Split Position to Lock Left Even When Hovering Right | https://github.com/zen-browser/desktop/issues/7581 | None | None |
| URL box in bookmark editing window is small | https://github.com/zen-browser/desktop/issues/7580 | 21:15:14 | None |
| Tabs crashed | https://github.com/zen-browser/desktop/issues/7577 | None | None |
| bug: modifying app-id with `--name` doesn't work anymore | https://github.com/zen-browser/desktop/issues/7576 | 9:00:29 | None |
| iCloud Password Firefox extension is not working! | https://github.com/zen-browser/desktop/issues/7575 | 0:34:42 | 0:34:42 |
| With firefox sidebar opened on left, glance view control botton floats over the sidebar | https://github.com/zen-browser/desktop/issues/7574 | 1 day, 2:06:38 | None |
| Flatpak version of Zen browser tries to upgrade to v1.7b instead of v1.11.2b | https://github.com/zen-browser/desktop/issues/7571 | 0:23:15 | 1:50:02 |
| no firefox labs button & feature highlight , Ai chatbot & picture in Picture on tab switch etc. | https://github.com/zen-browser/desktop/issues/7568 | None | 3:17:25 |
| 1.11.2b : no firefox labs button & feature highlight , Ai chatbot & picture in Picture on tab switch etc. | https://github.com/zen-browser/desktop/issues/7567 | None | 0:02:13 |
| Vieus IDP.HEUR.28 detected by Norton when trying to install Zen browser | https://github.com/zen-browser/desktop/issues/7565 | None | 0:55:15 |
| Alert box cutoff half way | https://github.com/zen-browser/desktop/issues/7564 | 5:12:02 | 13 days, 8:10:41 |
| Retaining pinned split essential tabs and changing layout for split essential tabs | https://github.com/zen-browser/desktop/issues/7563 | None | None |
| Horizontal splitting vertical split and closing split leaves page buggy | https://github.com/zen-browser/desktop/issues/7562 | None | None |
| Closing the tab shortcut doesn't close the window. | https://github.com/zen-browser/desktop/issues/7561 | 9:21:08 | 9:21:08 |
| Zen minimizes after closing download options | https://github.com/zen-browser/desktop/issues/7559 | 8:22:23 | 17:23:11 |
| URL Bar disappearing when no text is there even when behaviour is always floating. | https://github.com/zen-browser/desktop/issues/7558 | 8:30:20 | 11:46:40 |
| Updating Zen hides all my tabs in the tab list | https://github.com/zen-browser/desktop/issues/7557 | 0:12:37 | 0:15:56 |
| Zen is being updated by another instance | https://github.com/zen-browser/desktop/issues/7556 | 1:06:46 | None |
| URL bar in sidebar transitions faster than the sidebar itself when enabling compact mode without floating mode | https://github.com/zen-browser/desktop/issues/7554 | 2:25:13 | None |
| Can't display local files properly | https://github.com/zen-browser/desktop/issues/7553 | 2:48:35 | 2:48:35 |
| Drag & Drop Essentials To Split Incompatible With Mod "Bottom Essentials" | https://github.com/zen-browser/desktop/issues/7552 | None | 0:04:48 |
| Zen browser does not save a web page | https://github.com/zen-browser/desktop/issues/7551 | 2:45:42 | 5:12:17 |
| Workspace Bug | https://github.com/zen-browser/desktop/issues/7549 | 0:31:53 | 1 day, 5:23:29 |
| no sidebar in compact mode | https://github.com/zen-browser/desktop/issues/7548 | 6:22:41 | 17:25:22 |
| Deleted workspaces remain accessible and breaks the browser | https://github.com/zen-browser/desktop/issues/7547 | 2 days, 0:29:41 | None |
| Ukrainian language not available in "Translate Selection" menu despite being downloaded | https://github.com/zen-browser/desktop/issues/7546 | None | None |
| about:editprofile does not work | https://github.com/zen-browser/desktop/issues/7545 | 1:10:38 | 8:57:39 |
| Sidebar overflow on restart | https://github.com/zen-browser/desktop/issues/7544 | None | 2 days, 13:49:54 |
| Unable to resize the pane if it's on the right side | https://github.com/zen-browser/desktop/issues/7543 | 0:20:18 | 2 days, 8:54:19 |
| changing Workspace position doesn't work | https://github.com/zen-browser/desktop/issues/7542 | 1:54:30 | 4 days, 23:51:53 |
| Web Developer Toolbar in the Network tab does not show the response of streamed XHR calls | https://github.com/zen-browser/desktop/issues/7541 | 0:34:03 | 1:46:10 |
| Inconsistent Tab Unload When Disabled (Context Menu Item Missing) | https://github.com/zen-browser/desktop/issues/7539 | 0:31:50 | None |
| Button to switch between profiles has disappeared from the toolbar since 1.8.1b | https://github.com/zen-browser/desktop/issues/7538 | 1:38:27 | 5:12:38 |
| Icon on macOS:slightly alter the black background | https://github.com/zen-browser/desktop/issues/7537 | None | None |
| Delayed loading of secondary components on YouTube pages while main video loads immediately | https://github.com/zen-browser/desktop/issues/7536 | 2:21:49 | 5:27:13 |
| Closing an essential tab removes it from essentials | https://github.com/zen-browser/desktop/issues/7534 | 1:29:28 | 3:16:13 |
| What is "menu bar" | https://github.com/zen-browser/desktop/issues/7531 | 21:31:23 | 21:31:28 |
| unwanted corners rendering during fullscreen videos | https://github.com/zen-browser/desktop/issues/7530 | None | 0:21:41 |
| splitting tab with pip freezes browser | https://github.com/zen-browser/desktop/issues/7529 | None | 3 days, 2:31:32 |
| Toggle Floating Sidebar keyboard shortcut not working | https://github.com/zen-browser/desktop/issues/7528 | 22:40:20 | None |
| Windows 11 taskbar previewing all tabs instead of window instance and preview icon not shown | https://github.com/zen-browser/desktop/issues/7527 | 1:23:13 | 1:23:13 |
| Cant CTRL+T to open a new tab, while in fullscreen (e.g. YouTube Fullscreen) | https://github.com/zen-browser/desktop/issues/7526 | 2:21:27 | 13:13:36 |
| Cant scroll tab list on touch screen. | https://github.com/zen-browser/desktop/issues/7524 | None | None |
| Glance gets stuck in half-open state | https://github.com/zen-browser/desktop/issues/7522 | 14 days, 18:10:24 | 14 days, 18:10:24 |
| Restarting zen causes sidebar to not appear when hovered (compact mode, hide both) | https://github.com/zen-browser/desktop/issues/7521 | 6:01:35 | 9:15:43 |
| Facebook page goes all blue if I open one ot its links in Glance | https://github.com/zen-browser/desktop/issues/7520 | None | None |
| Sidebar action previews are glitchy when you hover (Extensions, Back button, Forward button, Tabs and etc) | https://github.com/zen-browser/desktop/issues/7518 | 0:49:25 | 10:15:00 |
| Youtube videos not loading if i update zen-browser: (1.10.3b-1 => 1.11.1b-1) | https://github.com/zen-browser/desktop/issues/7517 | None | 10:37:45 |
| If the download file is in Chinese, the file name encoding is incorrect | https://github.com/zen-browser/desktop/issues/7515 | 1:06:02 | None |
| Extensions are not getting pinned. | https://github.com/zen-browser/desktop/issues/7514 | 1 day, 14:33:37 | 16 days, 5:13:01 |
| The tab on the right displays an exception | https://github.com/zen-browser/desktop/issues/7513 | None | None |
| Sidebar tab UI breaks when dragging tab to pinned area during Glance preview | https://github.com/zen-browser/desktop/issues/7511 | 1:30:49 | None |
| The sidetab is bugged | https://github.com/zen-browser/desktop/issues/7510 | 7:06:42 | None |
| The pop-up window has two lines | https://github.com/zen-browser/desktop/issues/7509 | 1 day, 10:21:56 | 1 day, 10:21:56 |
| Delay in updating changes during web development on Windows 11 | https://github.com/zen-browser/desktop/issues/7508 | 11 days, 1:09:00 | None |
| Closing tabs is too slow when many tabs are open | https://github.com/zen-browser/desktop/issues/7507 | None | 6 days, 10:18:17 |
| Zen browser does not have rounded corners on the bottom | https://github.com/zen-browser/desktop/issues/7506 | 1 day, 11:22:11 | 1 day, 11:22:11 |
| Many keyboard shortctut stopped working | https://github.com/zen-browser/desktop/issues/7504 | None | 1 day, 13:16:17 |
| Keyboard Shortcuts Conflict with Polish Programmer Layout on Windows | https://github.com/zen-browser/desktop/issues/7502 | None | 1 day, 16:06:30 |
| "wheel" event does not fire for horizontal scrolling on web pages | https://github.com/zen-browser/desktop/issues/7499 | 0:23:12 | 1 day, 6:35:06 |
| handoffToAwesomebar set to false no longer works. | https://github.com/zen-browser/desktop/issues/7494 | 7:04:46 | 7:04:46 |
| Zen Sidebar got really big and I cannot use the browser | https://github.com/zen-browser/desktop/issues/7493 | 0:50:22 | 8:53:04 |
| Closing Glance from Essentials or Pinned tabs exits tab to blank screen | https://github.com/zen-browser/desktop/issues/7492 | 1 day, 13:50:43 | 1 day, 13:50:43 |
| logs off from every account on restart on MAC x64 | https://github.com/zen-browser/desktop/issues/7491 | 12 days, 4:18:12 | 12 days, 13:46:23 |
| Tab Preview not working | https://github.com/zen-browser/desktop/issues/7490 | 3:07:01 | 7:09:23 |
| [Twilight 1.11.2] Sidebar wont open in compact mode upon startup | https://github.com/zen-browser/desktop/issues/7489 | 12:38:26 | 21:42:47 |
| Zen specific Shortcut Keys not working | https://github.com/zen-browser/desktop/issues/7488 | 3 days, 1:42:36 | 6 days, 12:29:56 |
| Tabs not opening in startup | https://github.com/zen-browser/desktop/issues/7485 | 3:07:38 | 7 days, 2:44:07 |
| Incognito mode doent work | https://github.com/zen-browser/desktop/issues/7483 | None | 1 day, 23:03:21 |
| reddit comments can't be seen | https://github.com/zen-browser/desktop/issues/7482 | 3:00:09 | None |
| Multi-Containers add-on fails display setting sub-pages | https://github.com/zen-browser/desktop/issues/7481 | None | None |
| Essentials MAJOR layout shift when entering or exiting Compact Mode | https://github.com/zen-browser/desktop/issues/7480 | 8:02:54 | 2 days, 9:04:45 |
| Gnome Extensions addon not working | https://github.com/zen-browser/desktop/issues/7479 | 1 day, 0:41:57 | None |
| The Web Panel is missing (alt+p) | https://github.com/zen-browser/desktop/issues/7478 | 0:04:11 | 1:02:59 |
| Workspace icon not visible, unable to create new workspaces | https://github.com/zen-browser/desktop/issues/7476 | 9:46:52 | 9:46:53 |
| Sidebar option "Move sidebar to the right"/"Move sidebar to the left" stopped working. | https://github.com/zen-browser/desktop/issues/7474 | 0:39:39 | 0:39:39 |
| Unable to reorder essentials - dragging puts them at the end | https://github.com/zen-browser/desktop/issues/7473 | 5 days, 19:40:17 | None |
| Profile damaged after a power outage | https://github.com/zen-browser/desktop/issues/7472 | 2:36:37 | 2:36:37 |
| Refresh button going out of the single toolbar view (Tab) | https://github.com/zen-browser/desktop/issues/7469 | 1 day, 10:13:58 | None |
| Can't open Google page, but Edge can | https://github.com/zen-browser/desktop/issues/7468 | 3:34:47 | 7:01:59 |
| Tabs close when opening a private window | https://github.com/zen-browser/desktop/issues/7467 | 1:49:32 | 19:09:09 |
| Sidebar does not really hide properly and it still visible without tab bars | https://github.com/zen-browser/desktop/issues/7466 | 0:06:06 | 1:28:35 |
| In continuous loop of crashes after update | https://github.com/zen-browser/desktop/issues/7465 | 12:02:49 | None |
| Unable to produce videos from Disney and Netflix pages | https://github.com/zen-browser/desktop/issues/7463 | 0:40:20 | 12:38:43 |
| "Find in Settings" box can't type anything into | https://github.com/zen-browser/desktop/issues/7460 | None | 12:49:08 |
| Browser breaks shortly after 'Close other tabs' | https://github.com/zen-browser/desktop/issues/7459 | None | 17:27:47 |
| Split View fails when the history tab is open | https://github.com/zen-browser/desktop/issues/7458 | 8:04:46 | 16:12:37 |
| "The application has failed to start because its side-by-side configuration is incorrect." | https://github.com/zen-browser/desktop/issues/7457 | 0:54:42 | 4:45:02 |
| opacity of #urlbar element is sometimes overwritten | https://github.com/zen-browser/desktop/issues/7454 | None | 2:25:01 |
| Enable Restore pinned tabs to their originally pinned URL on startup setting does not work | https://github.com/zen-browser/desktop/issues/7453 | 2:00:44 | 9 days, 18:38:49 |
| misclick caused by tab context menu | https://github.com/zen-browser/desktop/issues/7452 | 0:56:17 | 0:56:17 |
| Cookie named SESS disappears after restart | https://github.com/zen-browser/desktop/issues/7451 | 3 days, 21:47:30 | None |
| Impossible to click "Add mailto handler" popup — only visible on hover and disappears immediately | https://github.com/zen-browser/desktop/issues/7450 | 6 days, 5:39:09 | None |
| pinned extensions appear visually bugged when activating 'toggle sidebars width' shortcut from single toolbar mode. | https://github.com/zen-browser/desktop/issues/7448 | 0:30:31 | 0:30:31 |
| URL only appears after typing even when set to Always Floating | https://github.com/zen-browser/desktop/issues/7446 | 0:47:21 | 2 days, 5:09:45 |
| Drag and drop files not working on Linux | https://github.com/zen-browser/desktop/issues/7445 | 1:14:52 | 10:51:52 |
| Tooltips flickering when there is a tab with a video(even if the video is paused) | https://github.com/zen-browser/desktop/issues/7444 | 0:05:12 | 0:08:28 |
| Zen URL Bar floats on New Tab with 'Floating Only When Typing' option | https://github.com/zen-browser/desktop/issues/7441 | 4:37:47 | None |
| Essentials Tab Confusing Right-Click Options (Close Tab & Remove from Essentails function exactly the same) | https://github.com/zen-browser/desktop/issues/7440 | 0:15:16 | 0:47:28 |
| Cannot close customize toolbar tab | https://github.com/zen-browser/desktop/issues/7438 | 9:45:55 | None |
| Miniplayer strange behaviour when redirecting to the music tab on another workspace | https://github.com/zen-browser/desktop/issues/7436 | None | None |
| Pinned Tab URL update toast being overlayed by container name | https://github.com/zen-browser/desktop/issues/7435 | None | None |
| "Open link in New Tab" does not follow the "Move the new tab button to the top" Setting | https://github.com/zen-browser/desktop/issues/7432 | 23:59:16 | None |
| Print Menu/Screen does not Adjust to Split Tabs | https://github.com/zen-browser/desktop/issues/7431 | 10 days, 16:43:02 | None |
| Mouse-over highlight colors in dropdown menus are virtually impossible to read. | https://github.com/zen-browser/desktop/issues/7430 | None | None |
| Sidebar padding takes space in full screen | https://github.com/zen-browser/desktop/issues/7429 | 2:42:13 | None |
| Passkey doesn't work on Windows Machine | https://github.com/zen-browser/desktop/issues/7428 | 3:55:01 | 4 days, 14:45:14 |
| Split button in search bar no longer present | https://github.com/zen-browser/desktop/issues/7427 | 4:46:19 | 1 day, 2:35:50 |
| Opening new window breaks essentials section | https://github.com/zen-browser/desktop/issues/7426 | 1 day, 20:57:12 | 2 days, 17:13:45 |
| Fixed split tabs don't preserve width after closing the browser | https://github.com/zen-browser/desktop/issues/7425 | 14 days, 19:41:02 | 18 days, 21:07:37 |
| Tab Hover Text Flickering | https://github.com/zen-browser/desktop/issues/7424 | 0:44:39 | 21:20:07 |
| Customise toolbar: Transparent background | https://github.com/zen-browser/desktop/issues/7423 | 2 days, 0:20:25 | None |
| The split-view view mode switch button is gone | https://github.com/zen-browser/desktop/issues/7422 | 0:24:53 | 1:15:04 |
| Close button bug on windows | https://github.com/zen-browser/desktop/issues/7421 | 3:16:32 | 6:04:38 |
| Button to manage split view no longer exists after recent update | https://github.com/zen-browser/desktop/issues/7420 | 0:07:59 | 1:47:42 |
| Right Click on tab spawns dropdown menu under mouse cursor leading to instantly chosing menu item. | https://github.com/zen-browser/desktop/issues/7419 | None | None |
| File Handler Dialog not opening in Archlinux (Hyprland) | https://github.com/zen-browser/desktop/issues/7418 | 14 days, 20:46:21 | None |
| New Tab UI Issue When Fullscreen | https://github.com/zen-browser/desktop/issues/7416 | 3:16:51 | 1 day, 10:25:21 |
| Re-arranging essentials tabs doesn't work as expected | https://github.com/zen-browser/desktop/issues/7415 | 8 days, 14:53:44 | None |
| Moderate hardening causes new tab functionality to break | https://github.com/zen-browser/desktop/issues/7414 | 1:28:39 | 1:45:02 |
| Mute icon of tab are clipped in compact mode | https://github.com/zen-browser/desktop/issues/7413 | 13:32:26 | 5 days, 9:41:24 |
| Terrible video playback performance, stuttering, freezing | https://github.com/zen-browser/desktop/issues/7412 | 7:19:05 | 9 days, 0:12:29 |
| Firefox notes doesn't open on the right even though that setting is toggled | https://github.com/zen-browser/desktop/issues/7411 | 2:24:04 | 11:55:33 |
| Popping sound when skipping/exiting YouTube videos | https://github.com/zen-browser/desktop/issues/7410 | None | None |
| 1.8b new Color Picker always clears custom colors after switching workspaces | https://github.com/zen-browser/desktop/issues/7409 | 2 days, 5:06:41 | 2 days, 11:01:52 |
| [Regression 1.8b+] Tab session extensions cannot record across workspaces anymore | https://github.com/zen-browser/desktop/issues/7408 | None | 5 days, 11:39:13 |
| While watching product videos on Temu.com, most of the time it does not open. | https://github.com/zen-browser/desktop/issues/7406 | 0:35:26 | None |
| search shortcut issues | https://github.com/zen-browser/desktop/issues/7405 | 0:59:18 | 2 days, 21:18:57 |
| Moving sidebar to right dosen't work | https://github.com/zen-browser/desktop/issues/7404 | 0:40:33 | 0:40:35 |
| Change tab to workspace doesn't work | https://github.com/zen-browser/desktop/issues/7403 | 0:54:36 | 5:40:26 |
| Closing the right hand side of a split tab shows the next tab, rather than the left side of the split. | https://github.com/zen-browser/desktop/issues/7402 | None | None |
| Search engines in search box selector gone | https://github.com/zen-browser/desktop/issues/7401 | 0:26:12 | 1:42:08 |
| Update Container while switching tab to another workspace | https://github.com/zen-browser/desktop/issues/7399 | 1:37:45 | 3:02:04 |
| Tooltips flickering | https://github.com/zen-browser/desktop/issues/7395 | 1 day, 8:58:26 | 1 day, 17:13:03 |
| Unable to render page when closing last tab with Ctrl+F4 | https://github.com/zen-browser/desktop/issues/7392 | None | None |
| Zen does not respect `gtk-application-prefer-dark-theme` | https://github.com/zen-browser/desktop/issues/7391 | 21:15:24 | 9 days, 9:00:51 |
| alt is not being recognize | https://github.com/zen-browser/desktop/issues/7390 | None | None |
| Zen HSTS Security Issue on genuine Websites | https://github.com/zen-browser/desktop/issues/7389 | None | None |
| Tiktok gives error while using | https://github.com/zen-browser/desktop/issues/7388 | 0:40:53 | 9 days, 11:10:46 |
| With v1.11b upgrade Firefox v137 but Not group tabs | https://github.com/zen-browser/desktop/issues/7387 | 0:47:12 | 0:51:31 |
| Alt + Clicking a link to open it in glance mode does not work in http pages | https://github.com/zen-browser/desktop/issues/7386 | 5 days, 9:24:16 | 5 days, 9:24:16 |
| URL click selects entire url instead of placing cursor at the clicked position | https://github.com/zen-browser/desktop/issues/7385 | 6 days, 1:13:15 | None |
| Close Window Keyboard Shortcut does nothing (due to conflict with Toggle DOM shortcut) | https://github.com/zen-browser/desktop/issues/7384 | 16 days, 14:22:58 | None |
| Bookmark/side bar aligns left when set to right | https://github.com/zen-browser/desktop/issues/7382 | 0:12:08 | 5 days, 0:06:03 |
| Opening the Web Inspector destroys Zen's layout in an unrecoverable manner with letterboxing | https://github.com/zen-browser/desktop/issues/7380 | 2 days, 10:03:45 | None |
| Extension Popout not Working on Multiple Toolbar View | https://github.com/zen-browser/desktop/issues/7379 | None | None |
| Extension background remains while extension window closes when moving main window | https://github.com/zen-browser/desktop/issues/7378 | 10:05:14 | 9 days, 2:14:11 |
| Firefox Labs Missing in 1.11.1b | https://github.com/zen-browser/desktop/issues/7377 | 1 day, 7:24:11 | None |
| Crashing of zen, reopening as a new browser every time | https://github.com/zen-browser/desktop/issues/7376 | 4:07:26 | 16 days, 7:00:23 |
| COMPLETE COLLAPSED TOOLBAR DISAPPERED | https://github.com/zen-browser/desktop/issues/7375 | 0:02:50 | 3:15:12 |
| Sidebar Scroll undraggable by mouse | https://github.com/zen-browser/desktop/issues/7374 | None | 9 days, 12:16:46 |
| Unload Tab Doesn't Release Resources | https://github.com/zen-browser/desktop/issues/7373 | 7:19:58 | 10 days, 9:05:02 |
| Tabs sent to another device go to the default workspace | https://github.com/zen-browser/desktop/issues/7371 | None | None |
| Color gradient window glitching when windowing browser | https://github.com/zen-browser/desktop/issues/7370 | None | 8:53:18 |
| (Gradient) Custom colors multiplying their instance in 1.11.1 | https://github.com/zen-browser/desktop/issues/7369 | 0:37:52 | 3 days, 12:39:46 |
| Opening in new tab from a Glance window opens under unloaded tabs instead of the current tab | https://github.com/zen-browser/desktop/issues/7368 | None | None |
| Extremely annoying update popups | https://github.com/zen-browser/desktop/issues/7367 | None | None |
| Unload Tabs Showing in Tab Cycling | https://github.com/zen-browser/desktop/issues/7365 | None | 9 days, 19:18:22 |
| Restoring previous session puts Zen into broken state | https://github.com/zen-browser/desktop/issues/7364 | 17 days, 21:23:34 | None |
| Unable to use split view with essentials | https://github.com/zen-browser/desktop/issues/7363 | 8:30:43 | 11:11:45 |
| Blurry text on ultrawide resolutions | https://github.com/zen-browser/desktop/issues/7362 | 0:06:03 | 23 days, 11:20:05 |
| Floating URL bar disappears on right click | https://github.com/zen-browser/desktop/issues/7361 | None | 7 days, 3:53:43 |
| Extension thinks it is always running in a private window | https://github.com/zen-browser/desktop/issues/7358 | None | None |
| All tabs keep crashing | https://github.com/zen-browser/desktop/issues/7356 | 1:29:18 | None |
| Error building Zen browser from AUR repositories | https://github.com/zen-browser/desktop/issues/7354 | 0:39:39 | 4:20:43 |
| Reproducable softlock on moving workspace | https://github.com/zen-browser/desktop/issues/7353 | 20:45:28 | None |
| Notifications appear as dialogue boxes | https://github.com/zen-browser/desktop/issues/7352 | 2:49:03 | None |
| Quiting browser closes all tabs when pressing the red close button (top left mac) | https://github.com/zen-browser/desktop/issues/7351 | 2:01:54 | 17:06:35 |
| YouTube player sometimes incorrectly opens in fullscreen mode | https://github.com/zen-browser/desktop/issues/7350 | None | None |
| Youtube video playback hangs when switching audio device | https://github.com/zen-browser/desktop/issues/7349 | 2:28:29 | None |
| AppImage GearLever updates broken since v1.11 | https://github.com/zen-browser/desktop/issues/7348 | None | None |
| On launch and changing workspace, will open first tab in tab list | https://github.com/zen-browser/desktop/issues/7347 | 22:54:43 | None |
| Subtitle in the Picture-In-Picture mode does not work properly | https://github.com/zen-browser/desktop/issues/7346 | None | 0:11:37 |
| Opening Findbar shifts main browser windows content up for a split second | https://github.com/zen-browser/desktop/issues/7345 | None | None |
| Bookmarks not showing in full-screen mode. | https://github.com/zen-browser/desktop/issues/7344 | 2 days, 21:14:21 | None |
| Cannot change sidebar location | https://github.com/zen-browser/desktop/issues/7342 | None | 0:02:42 |
| Workspace switch keyboard shortcut not working | https://github.com/zen-browser/desktop/issues/7341 | 7:44:33 | 10 days, 22:57:22 |
| The split tabs from glance aren't restored after browser restarted | https://github.com/zen-browser/desktop/issues/7340 | None | None |
| In split view, top bar onHover response is inconsistent | https://github.com/zen-browser/desktop/issues/7339 | 1:20:40 | 21 days, 0:00:20 |
| "Learn more" hyperlink leads to broken releases URL | https://github.com/zen-browser/desktop/issues/7338 | None | None |
| Flickering unusable menus if `widget.wayland.fractional-scale.enabled` is enabled | https://github.com/zen-browser/desktop/issues/7337 | None | None |
| Web Panel is missing and sidebar cant move to right side | https://github.com/zen-browser/desktop/issues/7335 | 0:32:24 | 1 day, 5:28:09 |
| Got IDBDatabase.transaction error when I tried to import Yomitan's dictionary | https://github.com/zen-browser/desktop/issues/7334 | 9:27:22 | 9:27:22 |
| Vsync is broken (Linux) | https://github.com/zen-browser/desktop/issues/7333 | 1:43:20 | 2:45:25 |
| Sidebar layout takes space when switching to fullscreen in compact mode | https://github.com/zen-browser/desktop/issues/7332 | 15:21:13 | 6 days, 1:37:58 |
| Input type `number` accept string | https://github.com/zen-browser/desktop/issues/7330 | 4 days, 5:56:33 | 4 days, 5:56:33 |
| Blur is no longer working on Linux | https://github.com/zen-browser/desktop/issues/7329 | 12:53:00 | 18:37:20 |
| Black text in right click menu | https://github.com/zen-browser/desktop/issues/7328 | 4 days, 9:19:32 | None |
| Window does not close with last tab, even with `browser.tabs.closeWindowWithLastTab` set to true | https://github.com/zen-browser/desktop/issues/7327 | 2 days, 23:22:12 | None |
| zen minimal exit buttons become square on new update | https://github.com/zen-browser/desktop/issues/7325 | 6:01:23 | None |
| Grey flash under mica context menus when clicked | https://github.com/zen-browser/desktop/issues/7324 | 4 days, 11:00:40 | 4 days, 11:00:40 |
| Zen Browser Releases replaced | https://github.com/zen-browser/desktop/issues/7322 | 0:13:52 | 0:13:54 |
| Tab Restore failed on Automatic Update | https://github.com/zen-browser/desktop/issues/7321 | 0:20:15 | None |
| Can't move sidebar to the right? | https://github.com/zen-browser/desktop/issues/7320 | 0:15:28 | 1 day, 9:22:24 |
| Glance Broken on Pinned Tabs | https://github.com/zen-browser/desktop/issues/7318 | 2:30:41 | 23:13:21 |
| Sidebar width becomes thinner in compact upon startup (doesn't retain predetermined width) | https://github.com/zen-browser/desktop/issues/7316 | 0:04:57 | 6 days, 2:27:44 |
| Greyed out part of URL sometimes turns back to white incosistently | https://github.com/zen-browser/desktop/issues/7315 | None | None |
| Dynamic theme mode not working | https://github.com/zen-browser/desktop/issues/7313 | 1 day, 2:42:51 | 2 days, 15:43:17 |
| Reading mode button is missing in single sidebar mode | https://github.com/zen-browser/desktop/issues/7312 | None | None |
| The sidebar is a little smaller, than its set size on startup in compact mode. | https://github.com/zen-browser/desktop/issues/7311 | 0:17:43 | 0:22:32 |
| Online TV doesn't show picture, there's only sound | https://github.com/zen-browser/desktop/issues/7309 | None | None |
| Glance window expand button doesn't work | https://github.com/zen-browser/desktop/issues/7308 | 2:01:15 | 2:01:15 |
| Resizing windows is broken when "privacy.resistfingerprinting" enabled and set to 1920x1080 | https://github.com/zen-browser/desktop/issues/7307 | 4 days, 0:12:26 | None |
| Going to the next or previous workspace using keyboard shortcuts is not working when the current tab has figma open | https://github.com/zen-browser/desktop/issues/7306 | None | None |
| Profile badge no longer shows up on taskbar icon | https://github.com/zen-browser/desktop/issues/7305 | None | 21 days, 20:20:01 |
| Unable to change how the new tab works | https://github.com/zen-browser/desktop/issues/7304 | 14:37:11 | 5 days, 22:16:36 |
| Bookmarks won't open when current container tab is not the default container of the workspace | https://github.com/zen-browser/desktop/issues/7303 | None | None |
| Extension view not rendered in single toolbar view | https://github.com/zen-browser/desktop/issues/7301 | 1:02:07 | None |
| scroll icon not working | https://github.com/zen-browser/desktop/issues/7299 | None | 1 day, 5:21:02 |
| see through background or grey. | https://github.com/zen-browser/desktop/issues/7298 | None | None |
| Glance split view button opens full page | https://github.com/zen-browser/desktop/issues/7297 | 8:01:18 | 14:37:04 |
| No split view icon in urlbar | https://github.com/zen-browser/desktop/issues/7296 | 2:35:01 | 12:19:25 |
| Workspaces temporarily inherit essential tabs from the source workspace a container tab was switched from | https://github.com/zen-browser/desktop/issues/7295 | 7 days, 16:30:59 | 11 days, 23:18:33 |
| UI misalignments in sidebar | https://github.com/zen-browser/desktop/issues/7294 | None | 1 day, 12:20:56 |
| Single Toolbar icons shuffle position on restart | https://github.com/zen-browser/desktop/issues/7293 | None | None |
| Fix for #7078 has broken zen workspaces (upon restart) | https://github.com/zen-browser/desktop/issues/7289 | 0:19:19 | 2 days, 0:09:09 |
| Anthropic's Claude freezes only on Zen browser | https://github.com/zen-browser/desktop/issues/7287 | 0:53:16 | 1:25:34 |
| Unable to change tabs in the certificate manager. | https://github.com/zen-browser/desktop/issues/7286 | 0:29:07 | 5:25:58 |
| Cyrillic display problem | https://github.com/zen-browser/desktop/issues/7285 | None | None |
| Panel goes off the screen when adding new extension | https://github.com/zen-browser/desktop/issues/7281 | None | 1 day, 2:35:00 |
| XDG Base Directory support, and/or data directory environment variable | https://github.com/zen-browser/desktop/issues/7280 | 2 days, 10:45:19 | None |
| Short width and fixed Side Bar | https://github.com/zen-browser/desktop/issues/7279 | 1:29:03 | 1 day, 2:14:11 |
| Switch to tab not working if tab is unloaded | https://github.com/zen-browser/desktop/issues/7278 | 1 day, 11:01:11 | None |
| Incorrect Cedilla Input Rendering | https://github.com/zen-browser/desktop/issues/7276 | None | None |
| Key bindings without modifier still apply when typing in to input fields | https://github.com/zen-browser/desktop/issues/7275 | None | None |
| MX Master 3 Forward/Back Mouse Buttons Don't Work For Switching Workspaces While Logi Options+ is Installed | https://github.com/zen-browser/desktop/issues/7274 | 12:18:06 | 13 days, 10:49:45 |
| Tab preview on hover doesn't work | https://github.com/zen-browser/desktop/issues/7273 | None | 0:03:37 |
| Change Tab(s) To Workspace broken in 1.11b | https://github.com/zen-browser/desktop/issues/7272 | 10:07:25 | 11:07:25 |
| Bookmarks don't open in new tab when using new tab | https://github.com/zen-browser/desktop/issues/7271 | 1:24:44 | None |
| Portable Installation Mode will no longer exist and will not be updated? | https://github.com/zen-browser/desktop/issues/7270 | 16:31:52 | 11 days, 17:33:57 |
| Split glance tab button opens in new tab when opened from Essentials tab | https://github.com/zen-browser/desktop/issues/7269 | 11 days, 17:48:17 | 11 days, 17:48:17 |
| Open animation for menus start from the wrong side | https://github.com/zen-browser/desktop/issues/7267 | 11 days, 18:21:58 | 11 days, 18:21:58 |
| There is no workspaces in fresh Zen install.. | https://github.com/zen-browser/desktop/issues/7266 | 0:16:38 | 14:56:31 |
| Extension Settings not displaying when no tab is selected | https://github.com/zen-browser/desktop/issues/7265 | 6 days, 14:56:37 | None |
| Modal window for a "New Tab" dissapears when switching language using Win + Space on Linux Mint | https://github.com/zen-browser/desktop/issues/7264 | 11 days, 19:09:08 | 11 days, 19:09:08 |
| Glance not works on local http pages | https://github.com/zen-browser/desktop/issues/7263 | 0:39:34 | 11 days, 19:55:22 |
| Compact mode leaves empty space after sidebar disappeared | https://github.com/zen-browser/desktop/issues/7262 | 0:10:52 | 15 days, 8:01:40 |
| In WIN10, when browser is maximized, an autohide taskbar cannot unhide | https://github.com/zen-browser/desktop/issues/7261 | None | 3 days, 7:50:43 |
| "Move sidebar to right" is not working | https://github.com/zen-browser/desktop/issues/7260 | 3:02:35 | 4 days, 3:22:44 |
| Side by side view leaves a gap in the tabs at the side bar | https://github.com/zen-browser/desktop/issues/7258 | None | None |
| White text in right click menu on browser chrome in light mode | https://github.com/zen-browser/desktop/issues/7257 | 8 days, 21:19:48 | None |
| URL always focused when I open a new tab. | https://github.com/zen-browser/desktop/issues/7255 | 5:53:57 | 9 days, 23:59:28 |
| Essential tabs. Glance window expanding event trigger the Leave event of the Google Meet stream | https://github.com/zen-browser/desktop/issues/7254 | 5:29:41 | 18:32:56 |
| IDN address shows punny code in URL | https://github.com/zen-browser/desktop/issues/7253 | None | None |
| UI display exception in right tab mode | https://github.com/zen-browser/desktop/issues/7252 | 18:35:56 | None |
| Bugs in Tiktok web site | https://github.com/zen-browser/desktop/issues/7250 | None | None |
| Pinned sidebar overlaps bookmarks bar in compact mode with no tabs open | https://github.com/zen-browser/desktop/issues/7249 | 1:14:48 | 13 days, 2:45:51 |
| Search Window Closes When Switching Keyboard Language in GNOME | https://github.com/zen-browser/desktop/issues/7248 | None | None |
| The Window Control Buttons sometimes are unavailable after screen sharing. | https://github.com/zen-browser/desktop/issues/7247 | None | None |
| [BUG] Extensions become huge after collapsing the side bar | https://github.com/zen-browser/desktop/issues/7246 | 0:05:27 | None |
| Essential tabs do not auto-load when opened after reopening Zen | https://github.com/zen-browser/desktop/issues/7245 | None | None |
| Azure Devops Server not loading properly | https://github.com/zen-browser/desktop/issues/7244 | None | None |
| Image Previews Not Displaying in Google Chat on Zen Browser | https://github.com/zen-browser/desktop/issues/7243 | 0:02:08 | None |
| [Twilight 1.11] Janky rendering behaviour with split view | https://github.com/zen-browser/desktop/issues/7242 | None | 1 day, 14:55:44 |
| INSANE MEMORY LEAK THAT YOU KEEP CLOSING & IGNORING | https://github.com/zen-browser/desktop/issues/7240 | 0:10:04 | 2:32:53 |
| --zen-sidebar-width not set correctly when opening Zen with compact mode enabled | https://github.com/zen-browser/desktop/issues/7239 | 7:28:04 | 7:56:39 |
| Ctrl + T and Ctrl + L popup address bar only shows up after starting to type | https://github.com/zen-browser/desktop/issues/7238 | None | None |
| Some Shortcuts not working in some keyboard layouts. | https://github.com/zen-browser/desktop/issues/7237 | 13 days, 9:31:33 | 13 days, 9:31:33 |
| Re-Opening: Stopping YouTube video on Zen forcing Alcove (dynamic island app) to quit and cannot be launched again | https://github.com/zen-browser/desktop/issues/7235 | None | None |
| Thumbwheel MX Master 3s to switch a workspace | https://github.com/zen-browser/desktop/issues/7234 | 14 days, 15:00:31 | None |
| Browser unsupported error on Google Docs | https://github.com/zen-browser/desktop/issues/7233 | None | None |
| Previous windows and tabs are not reopened on Zen for mac | https://github.com/zen-browser/desktop/issues/7232 | None | None |
| Keyboard shortcut binding: Recieve keys as accent characters | https://github.com/zen-browser/desktop/issues/7230 | 10 days, 2:40:15 | 13 days, 14:20:32 |
| Cannot login to Syncthing GUI with username/password | https://github.com/zen-browser/desktop/issues/7228 | 4 days, 11:35:55 | None |
| Minimize to taskbar and full screen buttons not showing up - Linux | https://github.com/zen-browser/desktop/issues/7227 | None | None |
| Zen makes PC completely unresponsive | https://github.com/zen-browser/desktop/issues/7226 | 1 day, 20:39:55 | 11 days, 16:18:54 |
| Bookmark Manager: Workspace not populated nor editable | https://github.com/zen-browser/desktop/issues/7225 | 2:56:17 | 2:56:17 |
| Twilight and Zen side by side install bugged on macOS | https://github.com/zen-browser/desktop/issues/7224 | None | None |
| Element.io: clicking on link can steal focus, dim page | https://github.com/zen-browser/desktop/issues/7222 | 22:41:10 | None |
| Essential tabs disappear if they are assigned to different containers | https://github.com/zen-browser/desktop/issues/7220 | 20:50:53 | None |
| Pages Not Loading Only Works in Private Mode | https://github.com/zen-browser/desktop/issues/7219 | 15:48:55 | 7 days, 12:35:00 |
| Youtube Audio Jitters while i play league of legends | https://github.com/zen-browser/desktop/issues/7217 | None | None |
| Split tabs resizing bar shows through Side web panels | https://github.com/zen-browser/desktop/issues/7216 | None | None |
| Close button hover makes browser have an epileptic attack | https://github.com/zen-browser/desktop/issues/7215 | None | None |
| Zen Support Link in Settings menu links to Mozilla instead of Zen | https://github.com/zen-browser/desktop/issues/7214 | None | None |
| Editing a URL always opens a new tab | https://github.com/zen-browser/desktop/issues/7213 | 19:28:32 | 20:39:12 |
| Keeps logging out of my accounts | https://github.com/zen-browser/desktop/issues/7212 | 20 days, 0:43:00 | None |
| Split View - Grid: When reopening Zen, grid layout is "forgotten" and reset back to default | https://github.com/zen-browser/desktop/issues/7211 | 16 days, 1:00:24 | None |
| iCloud Password Extension Bug on Mac 15.4 - This extension requires Sonoma or above / Verification Code does not appear | https://github.com/zen-browser/desktop/issues/7210 | 1 day, 8:30:59 | None |
| Status bar graphical issue/glitch | https://github.com/zen-browser/desktop/issues/7208 | 20:10:21 | 9 days, 12:31:32 |
| When restoring session manually, It always creates extra window apart from the previous session | https://github.com/zen-browser/desktop/issues/7207 | None | None |
| Split view bugs out when open a pop up page | https://github.com/zen-browser/desktop/issues/7206 | 0:48:48 | None |
| Can't Switch Profile | https://github.com/zen-browser/desktop/issues/7205 | 1:13:14 | 1:13:14 |
| start too slowly | https://github.com/zen-browser/desktop/issues/7204 | 0:29:57 | 1:43:28 |
| [twilight 1.10.3] can't create workspaces at all | https://github.com/zen-browser/desktop/issues/7203 | 1:36:25 | 2:02:36 |
| Zen ignores system trusted certs when run in flatpak | https://github.com/zen-browser/desktop/issues/7202 | 2:03:40 | None |
| Google Docs stops accepting keyboard input | https://github.com/zen-browser/desktop/issues/7201 | 1 day, 6:00:18 | None |
| Default Profile Cannot be Deleted | https://github.com/zen-browser/desktop/issues/7200 | 5:20:28 | 5 days, 16:04:35 |
| Zen not respecting system theme | https://github.com/zen-browser/desktop/issues/7199 | 3:10:26 | 4:25:44 |
| Opening multiple tabs to Zen Mods site to try multiple mods overwrites all new mods except the most recent | https://github.com/zen-browser/desktop/issues/7198 | None | None |
| INSANE MEMORY LEAK THAT YOU KEEP CLOSING & IGNORING | https://github.com/zen-browser/desktop/issues/7197 | 0:30:36 | 6:55:54 |
| ETP icon missing | https://github.com/zen-browser/desktop/issues/7195 | 0:05:14 | 8:42:37 |
| Any web page is not displayed | https://github.com/zen-browser/desktop/issues/7194 | 8:23:51 | 5 days, 1:34:24 |
| Window buttons aren't filled to the top right. | https://github.com/zen-browser/desktop/issues/7193 | 11:18:10 | 11:18:10 |
| Cursor not hiding when entering fullscreen playback on MacOS | https://github.com/zen-browser/desktop/issues/7192 | 0:02:58 | None |
| Crash on wayland when using discrete GPU | https://github.com/zen-browser/desktop/issues/7190 | None | 24 days, 7:14:40 |
| Web panel does not obey default zoom | https://github.com/zen-browser/desktop/issues/7189 | None | 3 days, 9:18:34 |
| Compact mode does not show popup/redirect warnings | https://github.com/zen-browser/desktop/issues/7188 | 14 days, 19:04:37 | None |
| Using lots of ram on mac | https://github.com/zen-browser/desktop/issues/7187 | 4:56:02 | 16:12:58 |
| Background goes gray when I maximize the window | https://github.com/zen-browser/desktop/issues/7185 | None | None |
| Level1techs forum loads VERY slowly only on Zen | https://github.com/zen-browser/desktop/issues/7184 | 5:43:12 | 17 days, 4:27:11 |
| After deleting the non-deafult workspaces, any reference to workspaces disappeared | https://github.com/zen-browser/desktop/issues/7183 | 10 days, 20:48:36 | 14 days, 6:48:03 |
| Essentials and pinned tabs get stuck in a half-glance state if a glance window is forced into a new container tab | https://github.com/zen-browser/desktop/issues/7182 | 7:36:25 | None |
| Workspace navigation emojis should be emojis at all times | https://github.com/zen-browser/desktop/issues/7181 | 5:37:07 | 21 days, 20:30:16 |
| Closing glance view with escape minimizes Zen on MacOS | https://github.com/zen-browser/desktop/issues/7179 | 7 days, 19:04:25 | None |
| Thick Border around the context menus | https://github.com/zen-browser/desktop/issues/7177 | 12 days, 0:26:31 | None |
| Sidebar popup doesn't work if running new tab from link on webpage | https://github.com/zen-browser/desktop/issues/7175 | 10 days, 10:52:50 | 15 days, 2:43:49 |
| Slow startup on Windows | https://github.com/zen-browser/desktop/issues/7174 | None | None |
| Glance opens on magnet links | https://github.com/zen-browser/desktop/issues/7173 | 23:54:11 | 1 day, 23:56:02 |
| WebGL isn't supported | https://github.com/zen-browser/desktop/issues/7172 | 4 days, 9:42:07 | 4 days, 9:42:07 |
| Cursor Auto-Highlight on Ctrl+Tab Disrupts Tab Cycling | https://github.com/zen-browser/desktop/issues/7170 | 11:18:59 | None |
| Confirmation dialog before quitting prevents unattended macOS updates | https://github.com/zen-browser/desktop/issues/7169 | None | None |
| Extension's options pop-up in the address after switching between single and multiple toolbars | https://github.com/zen-browser/desktop/issues/7168 | None | None |
| Lag and auto-scroll upon switching from a workspace that has split tabs open | https://github.com/zen-browser/desktop/issues/7167 | None | None |
| Essentials turning into pinned tab in new window | https://github.com/zen-browser/desktop/issues/7166 | None | None |
| Option "Open links in tabs instead of new windows" unchecked after restart browser | https://github.com/zen-browser/desktop/issues/7165 | 4:30:57 | None |
| Massive Screen Time spikes on MacOS | https://github.com/zen-browser/desktop/issues/7163 | 17 days, 15:28:42 | None |
| Split screen weird behaviour | https://github.com/zen-browser/desktop/issues/7162 | 2 days, 7:25:53 | None |
_This report was generated with the [Issue Metrics Action](https://github.com/github/issue-metrics)_
Search query used to find these items: `repo:zen-browser/desktop is:issue created:2025-04-01..2025-04-30`

2
l10n

@ -1 +1 @@
Subproject commit e51bc808c44f5b7f1505e14a217720c9179f9cab
Subproject commit ebecb32da8929e4f14f9a20f40acb9dab401101c

524
package-lock.json generated
View file

@ -9,7 +9,7 @@
"version": "1.0.0",
"license": "MPL-2.0",
"dependencies": {
"@zen-browser/surfer": "^1.11.11"
"@zen-browser/surfer": "^1.11.13"
},
"devDependencies": {
"@babel/preset-typescript": "^7.27.0",
@ -817,14 +817,14 @@
"license": "MIT"
},
"node_modules/@zen-browser/surfer": {
"version": "1.11.11",
"resolved": "https://registry.npmjs.org/@zen-browser/surfer/-/surfer-1.11.11.tgz",
"integrity": "sha512-n5t25jjG77/rg1HETQBloriCc4GVlHaGWDTNdOxU35Y2qqokcSU+3mPP2cy8u/GBfF0AS6YQmCjE2636tbZkRA==",
"version": "1.11.13",
"resolved": "https://registry.npmjs.org/@zen-browser/surfer/-/surfer-1.11.13.tgz",
"integrity": "sha512-D0TyunAWYtTdJkuUkYeOc6VBXzE9aoDs58kWu/Oi/aU3vd8IbqXPbZZfYwj5FWPWDReMrJUNkkKAEdbL44y9aw==",
"license": "MPL-2.0",
"dependencies": {
"@resvg/resvg-js": "^1.4.0",
"async-icns": "^1.0.2",
"axios": "^0.21.1",
"axios": "^0.30.0",
"chalk": "^4.1.0",
"cli-progress": "^3.9.1",
"commander": "^6.2.1",
@ -841,7 +841,7 @@
"prompts": "^2.4.1",
"rustic": "^1.2.1",
"semver": "^7.3.7",
"sharp": "^0.30.7",
"sharp": "^0.32.6",
"tiny-glob": "^0.2.9",
"xmlbuilder2": "^3.0.2"
},
@ -942,13 +942,99 @@
"node": "^12.20.0 || >=14"
}
},
"node_modules/asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
"license": "MIT"
},
"node_modules/axios": {
"version": "0.21.4",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz",
"integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==",
"version": "0.30.0",
"resolved": "https://registry.npmjs.org/axios/-/axios-0.30.0.tgz",
"integrity": "sha512-Z4F3LjCgfjZz8BMYalWdMgAQUnEtKDmpwNHjh/C8pQZWde32TF64cqnSeyL3xD/aTIASRU30RHTNzRiV/NpGMg==",
"license": "MIT",
"dependencies": {
"follow-redirects": "^1.14.0"
"follow-redirects": "^1.15.4",
"form-data": "^4.0.0",
"proxy-from-env": "^1.1.0"
}
},
"node_modules/b4a": {
"version": "1.6.7",
"resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz",
"integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==",
"license": "Apache-2.0"
},
"node_modules/bare-events": {
"version": "2.5.4",
"resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.4.tgz",
"integrity": "sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==",
"license": "Apache-2.0",
"optional": true
},
"node_modules/bare-fs": {
"version": "4.1.4",
"resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.1.4.tgz",
"integrity": "sha512-r8+26Voz8dGX3AYpJdFb1ZPaUSM8XOLCZvy+YGpRTmwPHIxA7Z3Jov/oMPtV7hfRQbOnH8qGlLTzQAbgtdNN0Q==",
"license": "Apache-2.0",
"optional": true,
"dependencies": {
"bare-events": "^2.5.4",
"bare-path": "^3.0.0",
"bare-stream": "^2.6.4"
},
"engines": {
"bare": ">=1.16.0"
},
"peerDependencies": {
"bare-buffer": "*"
},
"peerDependenciesMeta": {
"bare-buffer": {
"optional": true
}
}
},
"node_modules/bare-os": {
"version": "3.6.1",
"resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.1.tgz",
"integrity": "sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g==",
"license": "Apache-2.0",
"optional": true,
"engines": {
"bare": ">=1.14.0"
}
},
"node_modules/bare-path": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz",
"integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==",
"license": "Apache-2.0",
"optional": true,
"dependencies": {
"bare-os": "^3.0.1"
}
},
"node_modules/bare-stream": {
"version": "2.6.5",
"resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.6.5.tgz",
"integrity": "sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==",
"license": "Apache-2.0",
"optional": true,
"dependencies": {
"streamx": "^2.21.0"
},
"peerDependencies": {
"bare-buffer": "*",
"bare-events": "*"
},
"peerDependenciesMeta": {
"bare-buffer": {
"optional": true
},
"bare-events": {
"optional": true
}
}
},
"node_modules/base64-js": {
@ -1111,6 +1197,19 @@
"integrity": "sha512-LdUw/JMZyKN+EBDbOHqynYtOLXDjgo+uf5vCUhfO5hVsU2chvbqyexizvxUMaU4ipYZy9MiQyIFwMeIgsb6nBA==",
"license": "(MIT OR Apache-2.0)"
},
"node_modules/call-bind-apply-helpers": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
"integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
"function-bind": "^1.1.2"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/call-once-fn": {
"version": "1.0.15",
"resolved": "https://registry.npmjs.org/call-once-fn/-/call-once-fn-1.0.15.tgz",
@ -1282,6 +1381,18 @@
"dev": true,
"license": "MIT"
},
"node_modules/combined-stream": {
"version": "1.0.8",
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
"license": "MIT",
"dependencies": {
"delayed-stream": "~1.0.0"
},
"engines": {
"node": ">= 0.8"
}
},
"node_modules/commander": {
"version": "6.2.1",
"resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
@ -1384,15 +1495,38 @@
"node": ">=4.0.0"
}
},
"node_modules/delayed-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
"license": "MIT",
"engines": {
"node": ">=0.4.0"
}
},
"node_modules/detect-libc": {
"version": "2.0.3",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz",
"integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==",
"version": "2.0.4",
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz",
"integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==",
"license": "Apache-2.0",
"engines": {
"node": ">=8"
}
},
"node_modules/dunder-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
"integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
"license": "MIT",
"dependencies": {
"call-bind-apply-helpers": "^1.0.1",
"es-errors": "^1.3.0",
"gopd": "^1.2.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/duplexify": {
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz",
@ -1455,6 +1589,51 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/es-define-property": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
"integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
"license": "MIT",
"engines": {
"node": ">= 0.4"
}
},
"node_modules/es-errors": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
"license": "MIT",
"engines": {
"node": ">= 0.4"
}
},
"node_modules/es-object-atoms": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
"integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/es-set-tostringtag": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
"integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
"license": "MIT",
"dependencies": {
"es-errors": "^1.3.0",
"get-intrinsic": "^1.2.6",
"has-tostringtag": "^1.0.2",
"hasown": "^2.0.2"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/escalade": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
@ -1577,6 +1756,12 @@
}
}
},
"node_modules/fast-fifo": {
"version": "1.3.2",
"resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
"integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==",
"license": "MIT"
},
"node_modules/fifo": {
"version": "2.4.1",
"resolved": "https://registry.npmjs.org/fifo/-/fifo-2.4.1.tgz",
@ -1640,6 +1825,21 @@
}
}
},
"node_modules/form-data": {
"version": "4.0.2",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz",
"integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==",
"license": "MIT",
"dependencies": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
"es-set-tostringtag": "^2.1.0",
"mime-types": "^2.1.12"
},
"engines": {
"node": ">= 6"
}
},
"node_modules/formal-git": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/formal-git/-/formal-git-1.1.5.tgz",
@ -1671,6 +1871,15 @@
"node": ">=12"
}
},
"node_modules/function-bind": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
"license": "MIT",
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/gensync": {
"version": "1.0.0-beta.2",
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
@ -1704,6 +1913,43 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/get-intrinsic": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
"integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
"license": "MIT",
"dependencies": {
"call-bind-apply-helpers": "^1.0.2",
"es-define-property": "^1.0.1",
"es-errors": "^1.3.0",
"es-object-atoms": "^1.1.1",
"function-bind": "^1.1.2",
"get-proto": "^1.0.1",
"gopd": "^1.2.0",
"has-symbols": "^1.1.0",
"hasown": "^2.0.2",
"math-intrinsics": "^1.1.0"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/get-proto": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
"integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
"license": "MIT",
"dependencies": {
"dunder-proto": "^1.0.1",
"es-object-atoms": "^1.0.0"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/get-stream": {
"version": "6.0.1",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
@ -1744,6 +1990,18 @@
"integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==",
"license": "MIT"
},
"node_modules/gopd": {
"version": "1.2.0",
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
"integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
"license": "MIT",
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/graceful-fs": {
"version": "4.2.11",
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
@ -1759,12 +2017,51 @@
"node": ">=8"
}
},
"node_modules/has-symbols": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
"integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
"license": "MIT",
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/has-tostringtag": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
"integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
"license": "MIT",
"dependencies": {
"has-symbols": "^1.0.3"
},
"engines": {
"node": ">= 0.4"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/hash-string": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/hash-string/-/hash-string-1.0.0.tgz",
"integrity": "sha512-dtNNyxXobzHavayZwOwRWhBTqS9GX4jDjIMsGc0fDyaN2A+4zMn5Ua9ODDCggN6w3Spma6mAHL3ImmW3BkWDmQ==",
"license": "ISC"
},
"node_modules/hasown": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
"license": "MIT",
"dependencies": {
"function-bind": "^1.1.2"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/human-signals": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
@ -2339,6 +2636,15 @@
"yallist": "^3.0.2"
}
},
"node_modules/math-intrinsics": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
"integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
"license": "MIT",
"engines": {
"node": ">= 0.4"
}
},
"node_modules/merge-stream": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
@ -2359,6 +2665,27 @@
"node": ">=8.6"
}
},
"node_modules/mime-db": {
"version": "1.52.0",
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
"license": "MIT",
"engines": {
"node": ">= 0.6"
}
},
"node_modules/mime-types": {
"version": "2.1.35",
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
"license": "MIT",
"dependencies": {
"mime-db": "1.52.0"
},
"engines": {
"node": ">= 0.6"
}
},
"node_modules/mimic-fn": {
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
@ -2477,9 +2804,9 @@
"license": "ISC"
},
"node_modules/node-abi": {
"version": "3.74.0",
"resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.74.0.tgz",
"integrity": "sha512-c5XK0MjkGBrQPGYG24GBADZud0NCbznxNx0ZkS+ebUTrmV1qTDxPxSL8zEAPURXSbLRWVexxmP4986BziahL5w==",
"version": "3.75.0",
"resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.75.0.tgz",
"integrity": "sha512-OhYaY5sDsIka7H7AtijtI9jwGYLyl29eQn/W623DiN/MIv5sUqc4g7BIDThX+gb7di9f6xK02nkp8sdfFWZLTg==",
"license": "MIT",
"dependencies": {
"semver": "^7.3.5"
@ -2489,9 +2816,9 @@
}
},
"node_modules/node-addon-api": {
"version": "5.1.0",
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz",
"integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==",
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz",
"integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==",
"license": "MIT"
},
"node_modules/node-releases": {
@ -2666,6 +2993,59 @@
"node": ">=10"
}
},
"node_modules/prebuild-install/node_modules/bl": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
"integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
"license": "MIT",
"dependencies": {
"buffer": "^5.5.0",
"inherits": "^2.0.4",
"readable-stream": "^3.4.0"
}
},
"node_modules/prebuild-install/node_modules/readable-stream": {
"version": "3.6.2",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
"integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
"license": "MIT",
"dependencies": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
"util-deprecate": "^1.0.1"
},
"engines": {
"node": ">= 6"
}
},
"node_modules/prebuild-install/node_modules/tar-fs": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.2.tgz",
"integrity": "sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==",
"license": "MIT",
"dependencies": {
"chownr": "^1.1.1",
"mkdirp-classic": "^0.5.2",
"pump": "^3.0.0",
"tar-stream": "^2.1.4"
}
},
"node_modules/prebuild-install/node_modules/tar-stream": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
"integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
"license": "MIT",
"dependencies": {
"bl": "^4.0.3",
"end-of-stream": "^1.4.1",
"fs-constants": "^1.0.0",
"inherits": "^2.0.3",
"readable-stream": "^3.1.1"
},
"engines": {
"node": ">=6"
}
},
"node_modules/prettier": {
"version": "3.5.3",
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz",
@ -2740,6 +3120,12 @@
"node": ">=6"
}
},
"node_modules/proxy-from-env": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
"license": "MIT"
},
"node_modules/pump": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz",
@ -2937,9 +3323,9 @@
"license": "MIT"
},
"node_modules/semver": {
"version": "7.7.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
"integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
"version": "7.7.2",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
"integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
"license": "ISC",
"bin": {
"semver": "bin/semver.js"
@ -2965,23 +3351,23 @@
}
},
"node_modules/sharp": {
"version": "0.30.7",
"resolved": "https://registry.npmjs.org/sharp/-/sharp-0.30.7.tgz",
"integrity": "sha512-G+MY2YW33jgflKPTXXptVO28HvNOo9G3j0MybYAHeEmby+QuD2U98dT6ueht9cv/XDqZspSpIhoSW+BAKJ7Hig==",
"version": "0.32.6",
"resolved": "https://registry.npmjs.org/sharp/-/sharp-0.32.6.tgz",
"integrity": "sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==",
"hasInstallScript": true,
"license": "Apache-2.0",
"dependencies": {
"color": "^4.2.3",
"detect-libc": "^2.0.1",
"node-addon-api": "^5.0.0",
"detect-libc": "^2.0.2",
"node-addon-api": "^6.1.0",
"prebuild-install": "^7.1.1",
"semver": "^7.3.7",
"semver": "^7.5.4",
"simple-get": "^4.0.1",
"tar-fs": "^2.1.1",
"tar-fs": "^3.0.4",
"tunnel-agent": "^0.6.0"
},
"engines": {
"node": ">=12.13.0"
"node": ">=14.15.0"
},
"funding": {
"url": "https://opencollective.com/libvips"
@ -3152,6 +3538,19 @@
"integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==",
"license": "MIT"
},
"node_modules/streamx": {
"version": "2.22.0",
"resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.0.tgz",
"integrity": "sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==",
"license": "MIT",
"dependencies": {
"fast-fifo": "^1.3.2",
"text-decoder": "^1.1.0"
},
"optionalDependencies": {
"bare-events": "^2.2.0"
}
},
"node_modules/string_decoder": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
@ -3268,15 +3667,17 @@
}
},
"node_modules/tar-fs": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.2.tgz",
"integrity": "sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==",
"version": "3.0.8",
"resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.8.tgz",
"integrity": "sha512-ZoROL70jptorGAlgAYiLoBLItEKw/fUxg9BSYK/dF/GAGYFJOJJJMvjPAKDJraCXFwadD456FCuvLWgfhMsPwg==",
"license": "MIT",
"dependencies": {
"chownr": "^1.1.1",
"mkdirp-classic": "^0.5.2",
"pump": "^3.0.0",
"tar-stream": "^2.1.4"
"tar-stream": "^3.1.5"
},
"optionalDependencies": {
"bare-fs": "^4.0.1",
"bare-path": "^3.0.0"
}
},
"node_modules/tar-iterator": {
@ -3299,19 +3700,14 @@
}
},
"node_modules/tar-stream": {
"version": "2.2.0",
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
"integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
"version": "3.1.7",
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz",
"integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==",
"license": "MIT",
"dependencies": {
"bl": "^4.0.3",
"end-of-stream": "^1.4.1",
"fs-constants": "^1.0.0",
"inherits": "^2.0.3",
"readable-stream": "^3.1.1"
},
"engines": {
"node": ">=6"
"b4a": "^1.6.4",
"fast-fifo": "^1.2.0",
"streamx": "^2.15.0"
}
},
"node_modules/tar-stream-compat": {
@ -3341,31 +3737,6 @@
"safe-buffer": "^5.1.1"
}
},
"node_modules/tar-stream/node_modules/bl": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
"integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
"license": "MIT",
"dependencies": {
"buffer": "^5.5.0",
"inherits": "^2.0.4",
"readable-stream": "^3.4.0"
}
},
"node_modules/tar-stream/node_modules/readable-stream": {
"version": "3.6.2",
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
"integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
"license": "MIT",
"dependencies": {
"inherits": "^2.0.3",
"string_decoder": "^1.1.1",
"util-deprecate": "^1.0.1"
},
"engines": {
"node": ">= 6"
}
},
"node_modules/temp-suffix": {
"version": "0.1.14",
"resolved": "https://registry.npmjs.org/temp-suffix/-/temp-suffix-0.1.14.tgz",
@ -3378,6 +3749,15 @@
"node": ">=0.8"
}
},
"node_modules/text-decoder": {
"version": "1.2.3",
"resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz",
"integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==",
"license": "Apache-2.0",
"dependencies": {
"b4a": "^1.6.4"
}
},
"node_modules/through": {
"version": "2.3.8",
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",

View file

@ -23,7 +23,9 @@
"lint": "npx prettier . --check && autopep8 --diff scripts/ src/",
"prepare": "husky",
"reset-ff": "surfer reset",
"surfer": "surfer"
"surfer": "surfer",
"test": "python3 scripts/run_tests.py",
"test:dbg": "python3 scripts/run_tests.py --jsdebugger --debug-on-failure"
},
"repository": {
"type": "git",
@ -40,7 +42,7 @@
},
"homepage": "https://github.com/zen-browser/desktop#readme",
"dependencies": {
"@zen-browser/surfer": "^1.11.11"
"@zen-browser/surfer": "^1.11.13"
},
"devDependencies": {
"@babel/preset-typescript": "^7.27.0",

View file

@ -38,7 +38,7 @@ def get_rc_response() -> Optional[str]:
for tag_dict in data["tags"]:
tag = tag_dict["tag"]
if (tag.startswith("FIREFOX") and tag.endswith("_BUILD1")
and "ESR" not in tag and "b" not in tag):
and "ESR" not in tag and "b" not in tag and "ANDROID" not in tag):
return (tag.replace("FIREFOX_", "").replace("_BUILD1",
"").replace("_", "."))
except (FileNotFoundError, json.JSONDecodeError) as e:

45
scripts/run_tests.py Normal file
View file

@ -0,0 +1,45 @@
import os
import sys
import subprocess
from pathlib import Path
def main():
project_root = Path(__file__).resolve().parent.parent
package_json = project_root / 'package.json'
# Ensure script is run from project root
if not package_json.exists():
print("Please run this script from the root of the project", file=sys.stderr)
sys.exit(1)
args = sys.argv[1:]
path = ""
for arg in args:
if not arg.startswith("--"):
path = arg
break
# Collect any additional arguments
other_args = [arg for arg in args if arg != path]
engine_dir = project_root / 'engine'
os.chdir(engine_dir)
def run_mach_with_paths(test_paths):
command = ['./mach', 'mochitest'] + other_args + test_paths
subprocess.run(command, check=True)
if path in ("", "all"):
test_dirs = [p for p in Path("zen/tests").iterdir() if p.is_dir()]
test_paths = [str(p) for p in test_dirs]
run_mach_with_paths(test_paths)
else:
run_mach_with_paths([f"zen/tests/{path}"])
# Return to original directory
os.chdir(project_root)
if __name__ == "__main__":
main()

View file

@ -1,8 +1,8 @@
diff --git a/Cargo.lock b/Cargo.lock
index 38508fffccbce801a02d4a4211f368674307c4d3..5ce56c36da2e242ad81621c2032eb68dcd26e960 100644
index f7ebed9b2a71da90c5751cfd5d5f018cc8b73612..96e881c7782198f1e58be2578f167c7079a8191e 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -3931,8 +3931,6 @@ dependencies = [
@@ -4014,8 +4014,6 @@ dependencies = [
[[package]]
name = "mime_guess"
version = "2.0.4"

View file

@ -1,8 +1,8 @@
diff --git a/Cargo.toml b/Cargo.toml
index d3d529b487f80d4b4f3bfa13cdd3f62946352db8..b35a9e0e3339d48d1cd0cab7b22d030f330e40d1 100644
index 8c6b99bc629ec26e01ab3746f2ae46174bfaa0b1..5791c7470923c7c15986089b40357ce80365e942 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -217,6 +217,9 @@ rure = { path = "third_party/rust/rure" }
@@ -233,6 +233,9 @@ rure = { path = "third_party/rust/rure" }
# Patch `plist` to work with `indexmap` 2.*
plist = { path = "third_party/rust/plist" }

View file

@ -1,5 +1,5 @@
diff --git a/browser/actors/WebRTCParent.sys.mjs b/browser/actors/WebRTCParent.sys.mjs
index 40e3a057a1d4b2f9bcfb73fa5ff96b2555865434..a92bed06766dd930bd336d56cd9ddcf3c6c0eeca 100644
index 4ed2dd19207fc38b9e5cc22ea2947aba94b2f5ad..ffc88d62dc46683399c68cdfd35f1b1efde70902 100644
--- a/browser/actors/WebRTCParent.sys.mjs
+++ b/browser/actors/WebRTCParent.sys.mjs
@@ -152,6 +152,7 @@ export class WebRTCParent extends JSWindowActorParent {

View file

@ -0,0 +1,6 @@
pref("browser.ml.chat.enabled", false);
pref("browser.ml.chat.shortcuts", false);
pref("browser.ml.chat.shortcuts.custom", false);
pref("browser.ml.chat.sidebar", false);
pref("browser.ml.enable", false);

View file

@ -0,0 +1,52 @@
// Restore session on startup
pref("browser.startup.page", 3);
pref("browser.sessionstore.restore_pinned_tabs_on_demand", true);
// Toolbars
pref("browser.tabs.closeWindowWithLastTab", false);
pref("browser.tabs.loadBookmarksInTabs", false);
pref("browser.tabs.hoverPreview.enabled", false);
pref("browser.tabs.dragdrop.moveOverThresholdPercent", 50);
pref("browser.tabs.unloadTabInContextMenu", true);
pref("browser.tabs.fadeOutExplicitlyUnloadedTabs", true);
pref('browser.toolbars.bookmarks.visibility', 'never');
pref("browser.bookmarks.openInTabClosesMenu", false);
pref("browser.menu.showViewImageInfo", true);
pref("findbar.highlightAll", true);
pref("layout.word_select.eat_space_to_next_word", false);
// Better Windows theming
pref("widget.non-native-theme.scrollbar.style", 2);
pref("widget.non-native-theme.use-theme-accent", true);
// for the new layout:
pref('browser.download.autohideButton', false);
// Disable Firefox's revamp
pref("sidebar.revamp", false, locked);
pref("sidebar.verticalTabs", false, locked);
// Enable experimental settings page (Used for Zen Labs)
pref('browser.preferences.experimental', true);
// Downloads
pref("browser.download.manager.addToRecentDocs", false);
pref('browser.download.open_pdf_attachments_inline', true);
pref('browser.download.alwaysOpenPanel', false);
// Updates
#ifdef MOZILLA_OFFICIAL
pref("app.update.checkInstallTime.days", 6);
#endif
#include fullscreen.inc
#include ai.inc
#include disablemozilla.inc
// TODO: Check this out!
pref("browser.profiles.enabled", false);
pref("browser.tabs.groups.enabled", false);

View file

@ -0,0 +1,11 @@
// Common UI changes
pref("browser.privatebrowsing.vpnpromourl", "", locked);
pref("extensions.getAddons.showPane", false);
pref("extensions.htmlaboutaddons.recommendations.enabled", false);
pref("browser.discovery.enabled", false);
pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons", false);
pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features", false);
pref("browser.preferences.moreFromMozilla", false, locked);
pref("browser.aboutwelcome.enabled", false);
pref("browser.contentblocking.report.show_mobile_app", false, locked);

View file

@ -0,0 +1,5 @@
// security: They must enable this themselves, to avoid people downloading malware
pref('xpinstall.signatures.required', true);
pref("extensions.pocket.enabled", false);

View file

@ -0,0 +1,142 @@
pref('zen.welcome-screen.seen', false, sticky);
pref('zen.tabs.vertical', true);
pref('zen.tabs.vertical.right-side', false);
pref('zen.tabs.rename-tabs', true);
pref('zen.tabs.show-newtab-vertical', true);
pref('zen.ctrlTab.show-pending-tabs', false);
pref('zen.theme.accent-color', "#ffb787");
pref('zen.theme.content-element-separation', 8); // In pixels
pref('zen.theme.gradient', true);
pref('zen.theme.gradient.show-custom-colors', false);
pref('zen.theme.essentials-favicon-bg', true);
pref('zen.view.show-newtab-button-border-top', false);
pref('zen.view.show-newtab-button-top', true);
pref('zen.mediacontrols.enabled', true);
// Exposure:
pref('zen.haptic-feedback.enabled', true);
pref('zen.mods.auto-update-days', 20); // In days
#ifdef MOZILLA_OFFICIAL
pref('zen.mods.auto-update', true);
pref('zen.rice.api.url', 'https://share.zen-browser.app', locked);
pref('zen.injections.match-urls', 'https://zen-browser.app/*,https://share.zen-browser.app/*', locked);
#else
pref('zen.mods.auto-update', false);
pref('zen.rice.api.url', "http://localhost", locked);
pref('zen.injections.match-urls', 'http://localhost/*', locked);
#endif
pref('zen.rice.share.notice.accepted', false);
#ifdef XP_MACOSX
pref('zen.theme.border-radius', 10); // In pixels
#else
pref('zen.theme.border-radius', 8); // In pixels
#endif
#ifdef XP_MACOSX
pref('zen.theme.acrylic-elements', false);
#else
pref('zen.theme.acrylic-elements', false);
#endif
pref('zen.theme.color-prefs.use-workspace-colors', true);
pref('zen.view.compact.hide-tabbar', true);
pref('zen.view.compact.hide-toolbar', false);
pref('zen.view.compact.toolbar-flash-popup', false);
pref('zen.view.compact.toolbar-flash-popup.duration', 800);
pref('zen.view.compact.toolbar-hide-after-hover.duration', 1000);
pref('zen.view.compact.color-toolbar', true);
pref('zen.view.compact.color-sidebar', true);
pref('zen.view.compact.animate-sidebar', true);
pref('zen.view.compact.show-sidebar-and-toolbar-on-hover', true);
pref('zen.view.compact.show-background-tab-toast', true);
pref('zen.urlbar.replace-newtab', true);
pref('zen.urlbar.show-protections-icon', false);
pref('zen.urlbar.behavior', 'floating-on-type'); // default, floating-on-type, float
pref('zen.urlbar.wait-to-clear', 45000); // in ms (default 45s)
pref('zen.urlbar.show-domain-only-in-sidebar', true);
pref('zen.urlbar.hide-one-offs', true);
pref('zen.urlbar.enable-overrides', false);
// Glance
pref('zen.glance.enabled', true);
pref('zen.glance.hold-duration', 300); // in ms
pref('zen.glance.open-essential-external-links', true);
pref('zen.glance.activation-method', 'alt'); // ctrl, alt, shift, none, hold
pref('zen.view.sidebar-height-throttle', 200); // in ms
pref('zen.view.sidebar-expanded.max-width', 500);
#ifdef XP_MACOSX
pref('zen.view.mac.show-three-dot-menu', false);
pref('zen.widget.mac.mono-window-controls', true);
#endif
pref('zen.view.use-single-toolbar', true);
pref('zen.view.sidebar-expanded', true);
pref('zen.view.sidebar-collapsed.hide-mute-button', true);
pref('zen.view.experimental-force-window-controls-left', false);
#ifdef XP_MACOSX
pref('zen.view.grey-out-inactive-windows', false);
#else
pref('zen.view.grey-out-inactive-windows', true);
#endif
pref('zen.view.hide-window-controls', true);
pref('zen.view.experimental-no-window-controls', false);
pref('zen.keyboard.shortcuts.enabled', true);
pref('zen.keyboard.shortcuts.version', 0); // Empty string means default shortcuts
pref('zen.keyboard.shortcuts.disable-mainkeyset-clear', false); // for debugging
pref('zen.themes.updated-value-observer', false);
pref('zen.pinned-tab-manager.debug', false);
pref('zen.pinned-tab-manager.restore-pinned-tabs-to-pinned-url', false);
pref('zen.pinned-tab-manager.close-shortcut-behavior', 'reset-unload-switch');
#ifdef MOZILLA_OFFICIAL
pref('zen.watermark.enabled', true, sticky);
#else
pref('zen.watermark.enabled', false, sticky);
#endif
// Startup flags
pref('zen.startup.smooth-scroll-in-tabs', true);
// Zen Workspaces
pref('zen.workspaces.continue-where-left-off', false);
pref('zen.workspaces.hide-default-container-indicator', true);
pref('zen.workspaces.force-container-workspace', false);
pref('zen.workspaces.open-new-tab-if-last-unpinned-tab-is-closed', false);
pref('zen.workspaces.swipe-actions', true);
pref('zen.workspaces.wrap-around-navigation', true);
pref('zen.workspaces.natural-scroll', false);
pref('zen.workspaces.scroll-modifier-key','ctrl'); // can be ctrl, alt, shift, or a meta key
pref('services.sync.engine.workspaces', false);
pref('zen.workspaces.container-specific-essentials-enabled', false);
#ifdef MOZILLA_OFFICIAL
pref('zen.workspaces.debug', false);
#else
pref('zen.workspaces.debug', true);
#endif
// Zen Split View
pref('zen.splitView.enable-tab-drop', true);
pref('zen.splitView.min-resize-width', 7);
pref('zen.splitView.rearrange-hover-size', 24);
// Zen Download Animations
pref('zen.downloads.download-animation', true);
pref('zen.downloads.download-animation-duration', 1000); // ms

View file

@ -1,8 +1,8 @@
diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js
index 89b8b830e8f53582dd9910b0172098d31a8d8967..51bdc847823cb95f811b7e9d2d864b9aacf0e364 100644
index beced8067e6c8b5c8cf8e3f6060ba259ec9a294d..33a264e7f9cf97944da3888bdb957fa6e7c4c346 100644
--- a/browser/app/profile/firefox.js
+++ b/browser/app/profile/firefox.js
@@ -3375,3 +3375,5 @@ pref("toolkit.contentRelevancy.enabled", false);
@@ -3398,3 +3398,5 @@ pref("toolkit.contentRelevancy.enabled", false);
pref("toolkit.contentRelevancy.ingestEnabled", false);
// Pref to enable extra logging for the content relevancy feature
pref("toolkit.contentRelevancy.log", false);

View file

@ -0,0 +1,5 @@
pref("full-screen-api.transition-duration.enter", "0 0");
pref("full-screen-api.transition-duration.leave", "0 0");
pref("full-screen-api.warning.delay", -1);
pref("full-screen-api.warning.timeout", 0);

View file

@ -0,0 +1,11 @@
pref("widget.gtk.rounded-bottom-corners.enabled", true);
// Enable transparent background for linux
#ifdef MOZ_WIDGET_GTK
pref('zen.widget.linux.transparency', false);
// VAAPI/FFMPEG is Linux only
pref('media.ffmpeg.vaapi.enabled', true);
pref('media.ffmpeg.encoder.enabled', true);
#endif

View file

@ -0,0 +1,11 @@
// Enable transparent background for macos
pref('widget.macos.titlebar-blend-mode.behind-window', true);
// 1. hudWindow
// 2. fullScreenUI
// 3. popover
// 4. menu
// 5. toolTip
// 6. headerView
// 7. underlay
pref('zen.widget.macos.window-material', 3);

View file

@ -0,0 +1,6 @@
pref('image.jxl.enabled', true, locked);
pref("svg.context-properties.content.enabled", true);
pref("image.avif.enabled", true, locked);
pref("media.eme.enabled", true);

View file

@ -0,0 +1,9 @@
pref('browser.newtabpage.activity-stream.feeds.topsites', false);
pref('browser.newtabpage.activity-stream.feeds.section.topstories', false);
pref("browser.topsites.contile.enabled", false);
pref('browser.newtabpage.activity-stream.system.showWeather', false);
pref('browser.newtabpage.activity-stream.newtabWallpapers.enabled', true);
pref('browser.newtabpage.activity-stream.newtabWallpapers.v2.enabled', true);
pref('browser.translations.newSettingsUI.enable', true);

View file

@ -0,0 +1,4 @@
pref('pdfjs.enableHighlightEditor', true);
pref('pdfjs.enableHighlightFloatingButton', true);
pref("pdfjs.enableScripting", false);

View file

@ -0,0 +1,41 @@
// ---- Experimental settings to try make zen faster
pref("media.memory_cache_max_size", 1048576);
pref("media.cache_readahead_limit", 9000);
pref("media.cache_resume_threshold", 3600);
pref("media.memory_caches_combined_limit_kb", 2560000);
pref("image.mem.decode_bytes_at_a_time", 32768);
// Enable GPU by default
pref("gfx.canvas.accelerated", true);
pref("media.hardware-video-decoding.enabled", true);
pref("layers.gpu-process.enabled", true);
#ifdef XP_MACOSX
// Pref to control the reponse taken on macOS when the OS is under memory
// pressure. Changes to the pref take effect immediately. Browser restart not
// required. The pref value is a bitmask:
// 0x0: No response (other than recording for telemetry, crash reporting)
// 0x1: Use the tab unloading feature to reduce memory use. Requires that
// the above "browser.tabs.unloadOnLowMemory" pref be set to true for tab
// unloading to occur.
// 0x2: Issue the internal "memory-pressure" notification to reduce memory use
// 0x3: Both 0x1 and 0x2.
pref("browser.lowMemoryResponseMask", 3);
#endif
// Prefetching:
pref("network.dns.disablePrefetch", false);
pref("network.prefetch-next", true);
pref("network.dns.disablePrefetchFromHTTPS", false);
pref("network.predictor.enable-hover-on-ssl", true);
pref("network.http.rcwn.enabled", false);
// Experimental Zen Features
// Strategy to use for bytecode cache (Thanks https://github.com/gunir)
pref('dom.script_loader.bytecode_cache.strategy', 2);
pref("layout.css.grid-template-masonry-value.enabled", true);
// No Proxy should be default, Use system proxy allows antivirus, virus or system proxy to MITM or slowing down Zen
pref("network.proxy.type", 0);

View file

@ -0,0 +1,4 @@
pref("media.videocontrols.picture-in-picture.video-toggle.enabled", true);
// TODO: Enable once we have a proper settings page
pref("media.videocontrols.picture-in-picture.enable-when-switching-tabs.enabled", false);

View file

@ -0,0 +1,44 @@
pref("datareporting.policy.dataSubmissionEnabled", false, locked);
pref("datareporting.healthreport.uploadEnabled", false, locked);
pref("toolkit.telemetry.unified", false, locked);
pref("toolkit.telemetry.enabled", false, locked);
pref("toolkit.telemetry.server", "data:,", locked);
pref("toolkit.telemetry.archive.enabled", false, locked);
pref("toolkit.telemetry.newProfilePing.enabled", false, locked);
pref("toolkit.telemetry.shutdownPingSender.enabled", false, locked);
pref("toolkit.telemetry.updatePing.enabled", false, locked);
pref("toolkit.telemetry.bhrPing.enabled", false, locked);
pref("toolkit.telemetry.firstShutdownPing.enabled", false, locked);
pref("toolkit.telemetry.coverage.opt-out", true, locked);
pref("toolkit.coverage.opt-out", true, locked);
pref("toolkit.coverage.endpoint.base", "", locked);
pref("browser.newtabpage.activity-stream.feeds.telemetry", false, locked);
pref("browser.newtabpage.activity-stream.telemetry", false, locked);
pref("browser.ping-centre.telemetry", false);
pref("browser.attribution.enabled", false);
pref("toolkit.telemetry.pioneer-new-studies-available", false);
pref("app.shield.optoutstudies.enabled", false, locked);
pref("app.normandy.enabled", false);
pref("app.normandy.api_url", "", locked);
// Crash reports
pref("breakpad.reportURL", "");
pref("browser.tabs.crashReporting.sendReport", false);
pref("browser.crashReports.unsubmittedCheck.autoSubmit2", false);
// Other privacy
pref("extensions.getAddons.cache.enabled", false);
// Disable cache for private browsing
pref("browser.privatebrowsing.forceMediaMemoryCache", true);
// Tracking protection
pref("browser.helperApps.deleteTempFileOnExit", true);
pref("browser.uitour.enabled", false);
pref("privacy.globalprivacycontrol.enabled", true);
// Contextual identity
pref('privacy.userContext.enabled', true);
pref('privacy.userContext.ui.enabled', true);

View file

@ -0,0 +1,14 @@
pref("apz.overscroll.enabled", true);
pref("general.smoothScroll", true);
pref("general.smoothScroll.msdPhysics.enabled", true);
pref("general.smoothScroll.currentVelocityWeighting", "0.15");
pref("general.smoothScroll.stopDecelerationWeighting", "0.6");
pref("mousewheel.min_line_scroll_amount", 10);
pref("general.smoothScroll.mouseWheel.durationMinMS", 80);
pref("general.smoothScroll.msdPhysics.continuousMotionMaxDeltaMS", 12);
pref("general.smoothScroll.msdPhysics.motionBeginSpringConstant", 600);
pref("general.smoothScroll.msdPhysics.regularSpringConstant", 650);
pref("general.smoothScroll.msdPhysics.slowdownMinDeltaMS", 25);
pref("general.smoothScroll.msdPhysics.slowdownSpringConstant", 250);
pref("mousewheel.default.delta_multiplier_y", 200);

View file

@ -0,0 +1,32 @@
pref('browser.urlbar.unitConversion.enabled', true);
pref('browser.urlbar.trending.featureGate', false);
pref('browser.urlbar.weather.featureGate', false);
pref('browser.urlbar.quickactions.enabled', true);
pref('browser.urlbar.clipboard.featureGate', true);
pref('browser.urlbar.suggest.calculator', true);
pref("browser.urlbar.trimHttps", true);
pref("browser.urlbar.untrimOnUserInteraction.featureGate", true);
// Keep in sync with browser/components/topsites/constants.mjs
pref("browser.urlbar.maxRichResults", 7);
// Enable private suggestions
pref('browser.search.suggest.enabled', false);
pref('browser.search.suggest.enabled.private', false);
pref("browser.urlbar.trimHttps", true);
pref("browser.search.separatePrivateDefault.ui.enabled", true);
pref("browser.urlbar.update2.engineAliasRefresh", true);
pref("browser.urlbar.quicksuggest.enabled", false, locked);
pref("browser.urlbar.suggest.quicksuggest.sponsored", false, locked);
pref("browser.urlbar.suggest.quicksuggest.nonsponsored", false, locked);
pref("browser.urlbar.groupLabels.enabled", false);
pref("browser.urlbar.keepPanelOpenDuringImeComposition", true); // IMPORTANT: Fixes closing the urlbar when on some languages
pref("browser.formfill.enable", false);
pref("security.insecure_connection_text.enabled", true);
pref("security.insecure_connection_text.pbmode.enabled", true);
pref("network.IDN_show_punycode", true);
pref("browser.urlbar.suggest.topsites", true, locked);

View file

@ -0,0 +1,7 @@
// Mica
pref("widget.windows.mica", true);
pref("widget.windows.mica.popups", true);
pref("widget.windows.mica.toplevel-backdrop", 2);
pref("dom.ipc.processPriorityManager.backgroundUsesEcoQoS", false);

View file

@ -8,458 +8,37 @@
#endif
#endif
pref("browser.tabs.hoverPreview.enabled", false);
#ifdef MOZ_UPDATE_CHANNEL
pref("devtools.debugger.prompt-connection", true);
#endif
// Dont download the multilingual dictionary
pref("intl.multilingual.downloadEnabled", false);
// Restore session on startup
pref("browser.startup.page", 3);
pref("browser.sessionstore.restore_pinned_tabs_on_demand", true);
// Theme
pref('toolkit.legacyUserProfileCustomizations.stylesheets', true);
pref('browser.compactmode.show', true);
#ifdef XP_WIN
pref("browser.privateWindowSeparation.enabled", false);
// Mica
pref("widget.windows.mica", true);
pref("widget.windows.mica.popups", true);
pref("widget.windows.mica.toplevel-backdrop", 2);
#endif
pref('browser.newtabpage.activity-stream.newtabWallpapers.enabled', true);
pref('browser.newtabpage.activity-stream.newtabWallpapers.v2.enabled', true);
pref('browser.translations.newSettingsUI.enable', true);
pref('privacy.userContext.enabled', true);
pref('privacy.userContext.ui.enabled', true);
pref("browser.urlbar.trimHttps", true);
pref("browser.urlbar.untrimOnUserInteraction.featureGate", true);
// Url bar
pref('browser.urlbar.unitConversion.enabled', true);
pref('browser.urlbar.trending.featureGate', false);
pref('browser.urlbar.weather.featureGate', true);
pref('browser.urlbar.quickactions.enabled', true);
pref('browser.urlbar.clipboard.featureGate', true);
pref('browser.urlbar.suggest.calculator', true);
// new tab page
pref('browser.newtabpage.activity-stream.feeds.topsites', false);
pref('browser.newtabpage.activity-stream.feeds.section.topstories', false);
pref("browser.topsites.contile.enabled", true);
// Pdf
pref('pdfjs.enableHighlightEditor', true);
pref('pdfjs.enableHighlightFloatingButton', true);
pref("alerts.showFavicons", true);
// Toolbars
pref("browser.tabs.closeWindowWithLastTab", false);
pref("browser.tabs.loadBookmarksInTabs", false);
pref("browser.tabs.dragdrop.moveOverThresholdPercent", 50);
pref('browser.toolbars.bookmarks.visibility', 'never');
pref("browser.bookmarks.openInTabClosesMenu", false);
pref("browser.menu.showViewImageInfo", true);
pref("findbar.highlightAll", true);
pref("layout.word_select.eat_space_to_next_word", false);
// TODO:
pref("browser.tabs.groups.enabled", false);
// Enable Do Not Track and GPC by default.
pref("privacy.donottrackheader.enabled", false);
pref("privacy.globalprivacycontrol.enabled", true);
pref("app.update.checkInstallTime.days", 6);
// CUSTOM ZEN PREFS
pref('zen.welcome-screen.seen', false, sticky);
pref('zen.tabs.vertical', true);
pref('zen.tabs.vertical.right-side', false);
pref('zen.tabs.rename-tabs', true);
pref('zen.theme.accent-color', "#ffb787");
pref('zen.theme.content-element-separation', 8); // In pixels
pref('zen.theme.gradient', true);
pref('zen.theme.gradient.show-custom-colors', false);
pref('zen.theme.essentials-favicon-bg', true);
pref('zen.tabs.show-newtab-vertical', true);
pref('zen.view.show-newtab-button-border-top', false);
pref('zen.view.show-newtab-button-top', true);
pref('zen.mediacontrols.enabled', true);
#ifdef MOZILLA_OFFICIAL
pref('zen.rice.api.url', 'https://share.zen-browser.app', locked);
pref('zen.injections.match-urls', 'https://zen-browser.app/*,https://share.zen-browser.app/*', locked);
#else
pref('zen.rice.api.url', "http://localhost", locked);
pref('zen.injections.match-urls', 'http://localhost/*', locked);
#endif
pref('zen.rice.share.notice.accepted', false);
#ifdef XP_MACOSX
pref('zen.theme.border-radius', 10); // In pixels
#else
pref('zen.theme.border-radius', 8); // In pixels
#endif
pref('zen.theme.color-prefs.use-workspace-colors', true);
pref('zen.view.compact.hide-tabbar', true);
pref('zen.view.compact.hide-toolbar', false);
pref('zen.view.compact.toolbar-flash-popup', false);
pref('zen.view.compact.toolbar-flash-popup.duration', 800);
pref('zen.view.compact.toolbar-hide-after-hover.duration', 1000);
pref('zen.view.compact.color-toolbar', true);
pref('zen.view.compact.color-sidebar', true);
pref('zen.view.compact.animate-sidebar', true);
pref('zen.view.compact.show-sidebar-and-toolbar-on-hover', true);
pref('zen.urlbar.replace-newtab', true);
pref('zen.urlbar.show-protections-icon', false);
pref('zen.urlbar.behavior', 'floating-on-type'); // default, floating-on-type, float
pref('zen.urlbar.wait-to-clear', 45000); // in ms (default 45s)
pref('zen.urlbar.show-domain-only-in-sidebar', true);
pref('zen.urlbar.hide-one-offs', true);
#ifdef XP_MACOSX
// Disable for macos in the meantime until @HarryHeres finds a solution for hight DPI screens
pref('zen.view.experimental-rounded-view', false);
#else
pref('zen.view.experimental-rounded-view', true);
#endif
// Glance
pref('zen.glance.enabled', true);
pref('zen.glance.hold-duration', 300); // in ms
pref('zen.glance.open-essential-external-links', true);
pref('zen.glance.activation-method', 'alt'); // ctrl, alt, shift, none, hold
pref('zen.view.sidebar-height-throttle', 200); // in ms
pref('zen.view.sidebar-expanded.max-width', 500);
#ifdef XP_MACOSX
pref('zen.view.mac.show-three-dot-menu', false);
pref('zen.widget.mac.mono-window-controls', true);
#endif
pref('zen.view.use-single-toolbar', true);
pref('zen.view.sidebar-expanded', true);
pref('zen.view.sidebar-collapsed.hide-mute-button', true);
pref('zen.view.experimental-force-window-controls-left', false);
#ifdef XP_MACOSX
pref('zen.view.grey-out-inactive-windows', false);
#else
pref('zen.view.grey-out-inactive-windows', true);
#endif
pref('zen.view.hide-window-controls', true);
pref('zen.view.experimental-no-window-controls', false);
pref('zen.tabs.dim-pending', true);
pref('zen.keyboard.shortcuts.enabled', true);
pref('zen.keyboard.shortcuts.version', 0); // Empty string means default shortcuts
pref('zen.keyboard.shortcuts.disable-mainkeyset-clear', false); // for debugging
pref('zen.themes.updated-value-observer', false);
pref('zen.tab-unloader.enabled', true);
pref('zen.tab-unloader.timeout-minutes', 40);
pref('zen.tab-unloader.excluded-urls', "example.com,example.org");
pref('zen.pinned-tab-manager.debug', false);
pref('zen.pinned-tab-manager.restore-pinned-tabs-to-pinned-url', false);
pref('zen.pinned-tab-manager.close-shortcut-behavior', 'reset-unload-switch');
// TODO: Check this out!
pref("browser.profiles.enabled", false);
// Zen Split View
pref('zen.splitView.enable-tab-drop', true);
pref('zen.splitView.min-resize-width', 7);
pref('zen.splitView.rearrange-hover-size', 24);
// Zen Download Animations
pref('zen.downloads.download-animation', true);
pref('zen.downloads.download-animation-duration', 1000); // ms
// Startup flags
pref('zen.startup.smooth-scroll-in-tabs', true);
// Zen Workspaces
pref('zen.workspaces.hide-default-container-indicator', true);
pref('zen.workspaces.force-container-workspace', false);
pref('zen.workspaces.open-new-tab-if-last-unpinned-tab-is-closed', false);
pref('zen.workspaces.show-workspace-indicator', true);
pref('zen.workspaces.swipe-actions', true);
pref('zen.workspaces.wrap-around-navigation', true);
pref('zen.workspaces.natural-scroll', false);
pref('zen.workspaces.scroll-modifier-key','ctrl'); // can be ctrl, alt, shift, or a meta key
pref('services.sync.engine.workspaces', false);
pref('zen.workspaces.container-specific-essentials-enabled', false);
// Essentials
pref('zen.essentials.enabled', true);
// Zen Watermark
#ifdef MOZILLA_OFFICIAL
pref('zen.watermark.enabled', true, sticky);
#else
pref('zen.watermark.enabled', false, sticky);
#endif
// Privacy
pref('dom.private-attribution.submission.enabled', false);
pref('dom.security.https_only_mode', true);
// Crash reports
pref("breakpad.reportURL", "");
pref("browser.tabs.crashReporting.sendReport", false);
pref("browser.crashReports.unsubmittedCheck.autoSubmit2", false);
// TLS / SSL
pref("security.ssl.treat_unsafe_negotiation_as_broken", true);
pref("browser.xul.error_pages.expert_bad_cert", true);
pref("security.tls.enable_0rtt_data", false);
pref("network.http.http3.enable_0rtt", false);
// Network
pref("network.http.max-urgent-start-excessive-connections-per-host", 5);
pref("network.dnsCacheExpiration", 3600);
pref("network.http.max-persistent-connections-per-proxy", 48); // default=32
pref("network.websocket.max-connections", 400); // default=200
pref("network.ssl_tokens_cache_capacity", 32768);
// Enable importers for other browsers
pref('browser.migrate.vivaldi.enabled', true);
pref('browser.migrate.opera-gx.enabled', true);
pref('browser.migrate.opera.enabled', true);
// DNS
// pref('network.trr.mode', 5);
// security: They must enable this themselves, to avoid people downloading malware
pref('xpinstall.signatures.required', true);
// Experimental Zen Features
// Strategy to use for bytecode cache (Thanks https://github.com/gunir)
pref('dom.script_loader.bytecode_cache.strategy', 2);
pref("dom.text_fragments.enabled", true);
pref("layout.css.grid-template-masonry-value.enabled", true);
pref("dom.security.sanitizer.enabled", true);
// Pocket
pref("extensions.pocket.enabled", false);
// MIXED CONTENT + CROSS-SITE
pref("pdfjs.enableScripting", false);
pref("extensions.postDownloadThirdPartyPrompt", false);
// Downloads
pref("browser.download.manager.addToRecentDocs", false);
pref('browser.download.open_pdf_attachments_inline', true);
pref('browser.download.alwaysOpenPanel', false);
// Tracking protection
pref("browser.helperApps.deleteTempFileOnExit", true);
pref("browser.uitour.enabled", false);
// Disable cache for private browsing
pref("browser.privatebrowsing.forceMediaMemoryCache", true);
// Enable private suggestions
pref('browser.search.suggest.enabled', true);
pref('browser.search.suggest.enabled.private', true);
pref("extensions.enabledScopes", 5); // [HIDDEN PREF]
// Media codecs
pref('image.jxl.enabled', true, locked);
pref("svg.context-properties.content.enabled", true);
pref("image.avif.enabled", true, locked);
// Smooth scrolling
#ifndef XP_MACOSX
pref("apz.overscroll.enabled", true);
pref("general.smoothScroll", true);
pref("general.smoothScroll.msdPhysics.enabled", true);
pref("general.smoothScroll.currentVelocityWeighting", "0.15");
pref("general.smoothScroll.stopDecelerationWeighting", "0.6");
pref("mousewheel.min_line_scroll_amount", 10);
pref("general.smoothScroll.mouseWheel.durationMinMS", 80);
pref("general.smoothScroll.msdPhysics.continuousMotionMaxDeltaMS", 12);
pref("general.smoothScroll.msdPhysics.motionBeginSpringConstant", 600);
pref("general.smoothScroll.msdPhysics.regularSpringConstant", 650);
pref("general.smoothScroll.msdPhysics.slowdownMinDeltaMS", 25);
pref("general.smoothScroll.msdPhysics.slowdownSpringConstant", 250);
pref("mousewheel.default.delta_multiplier_y", 200);
#endif
#if defined(XP_WIN)
pref("dom.ipc.processPriorityManager.backgroundUsesEcoQoS", false);
#include windows.inc
#endif
#ifdef UNIX_BUT_NOT_MAC
pref("widget.gtk.rounded-bottom-corners.enabled", true);
#include linux.inc
#endif
pref('browser.newtabpage.activity-stream.system.showWeather', true);
// Enable experimental settings page (Used for Zen Labs)
pref('browser.preferences.experimental', true);
// Prefetching:
pref("network.dns.disablePrefetch", false);
pref("network.prefetch-next", true);
pref("network.predictor.enabled", true);
pref("network.dns.disablePrefetchFromHTTPS", false);
pref("network.predictor.enable-hover-on-ssl", true);
pref("network.http.speculative-parallel-limit", 10);
pref("network.http.rcwn.enabled", false);
// Disable Firefox's revamp
pref("sidebar.revamp", false, locked);
pref("sidebar.verticalTabs", false, locked);
// Better Windows theming
pref("widget.non-native-theme.scrollbar.style", 2);
pref("widget.non-native-theme.use-theme-accent", true);
// Expose Letterboxing https://github.com/zen-browser/desktop/issues/475
pref("privacy.resistFingerprinting.letterboxing", false);
pref("privacy.resistFingerprinting.letterboxing.dimensions", "");
// Remove Inspect Accessibity Properties menu
pref("devtools.accessibility.enabled", false);
// Enable GPU by default
// pref('gfx.webrender.all', true);
// VAAPI/FFMPEG is Linux only
#ifdef MOZ_WIDGET_GTK
pref('media.ffmpeg.vaapi.enabled', true);
pref('media.ffmpeg.encoder.enabled', true);
#endif
// Fix buffering issues: Youtube, Archive bugzilla.mozilla.org/show_bug.cgi?id=1854077
pref("network.fetchpriority.enabled", true);
// No Proxy should be default, Use system proxy allows antivirus, virus or system proxy to MITM or slowing down Zen
pref("network.proxy.type", 0);
// for the new layout:
pref('browser.download.autohideButton', false);
// Enable transparent background for macos
#ifdef XP_MACOSX
pref('widget.macos.titlebar-blend-mode.behind-window', true);
// 1. hudWindow
// 2. fullScreenUI
// 3. popover
// 4. menu
// 5. toolTip
// 6. headerView
// 7. underlay
pref('zen.widget.macos.window-material', 3);
#include macos.inc
#endif
// Enable transparent background for linux
#ifdef MOZ_WIDGET_GTK
pref('zen.widget.linux.transparency', false);
#include urlbar.inc
#include newtab.inc
#include pdf.inc
#include extensions.inc
#include privacy.inc
#include media.inc
#include browser.inc
#include features.inc
#ifndef XP_MACOSX
#include smoothscroll.inc
#endif
// Urlbar and autocomplete
pref("browser.urlbar.maxRichResults", 8);
pref("browser.urlbar.trimHttps", true);
pref("browser.search.separatePrivateDefault.ui.enabled", true);
pref("browser.urlbar.update2.engineAliasRefresh", true);
pref("browser.search.suggest.enabled", false);
pref("browser.urlbar.quicksuggest.enabled", false);
pref("browser.urlbar.suggest.quicksuggest.sponsored", false);
pref("browser.urlbar.suggest.quicksuggest.nonsponsored", false);
pref("browser.urlbar.groupLabels.enabled", false);
pref("browser.urlbar.keepPanelOpenDuringImeComposition", true); // IMPORTANT: Fixes closing the urlbar when on some languages
pref("browser.formfill.enable", false);
pref("security.insecure_connection_text.enabled", true);
pref("security.insecure_connection_text.pbmode.enabled", true);
pref("network.IDN_show_punycode", true);
// Telemetry
pref("datareporting.policy.dataSubmissionEnabled", false, locked);
pref("datareporting.healthreport.uploadEnabled", false, locked);
pref("toolkit.telemetry.unified", false, locked);
pref("toolkit.telemetry.enabled", false, locked);
pref("toolkit.telemetry.server", "data:,", locked);
pref("toolkit.telemetry.archive.enabled", false, locked);
pref("toolkit.telemetry.newProfilePing.enabled", false, locked);
pref("toolkit.telemetry.shutdownPingSender.enabled", false, locked);
pref("toolkit.telemetry.updatePing.enabled", false, locked);
pref("toolkit.telemetry.bhrPing.enabled", false, locked);
pref("toolkit.telemetry.firstShutdownPing.enabled", false, locked);
pref("toolkit.telemetry.coverage.opt-out", true, locked);
pref("toolkit.coverage.opt-out", true, locked);
pref("toolkit.coverage.endpoint.base", "", locked);
pref("browser.newtabpage.activity-stream.feeds.telemetry", false, locked);
pref("browser.newtabpage.activity-stream.telemetry", false, locked);
pref("browser.ping-centre.telemetry", false);
pref("browser.attribution.enabled", false);
pref("toolkit.telemetry.pioneer-new-studies-available", false);
pref("app.shield.optoutstudies.enabled", false, locked);
pref("app.normandy.enabled", false, locked);
pref("app.normandy.api_url", "", locked);
// Fullscreen notice
pref("full-screen-api.transition-duration.enter", "0 0");
pref("full-screen-api.transition-duration.leave", "0 0");
pref("full-screen-api.warning.delay", -1);
pref("full-screen-api.warning.timeout", 0);
// Common UI changes
pref("browser.privatebrowsing.vpnpromourl", "", locked);
pref("extensions.getAddons.showPane", false);
pref("extensions.htmlaboutaddons.recommendations.enabled", false);
pref("browser.discovery.enabled", false);
pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons", false);
pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features", false);
pref("browser.preferences.moreFromMozilla", false, locked);
pref("browser.aboutwelcome.enabled", false);
// AI/ML stuff
pref("browser.ml.chat.enabled", false);
pref("browser.ml.chat.shortcuts", false);
pref("browser.ml.chat.shortcuts.custom", false);
pref("browser.ml.chat.sidebar", false);
pref("browser.ml.enable", false);
// ---- Experimental settings to try make zen faster
pref("media.memory_cache_max_size", 1048576);
pref("media.cache_readahead_limit", 9000);
pref("media.cache_resume_threshold", 3600);
pref("media.memory_caches_combined_limit_kb", 2560000);
pref("image.mem.decode_bytes_at_a_time", 32768);
// Enable GPU by default
pref("gfx.canvas.accelerated", true);
pref("media.hardware-video-decoding.enabled", true);
pref("layers.gpu-process.enabled", true);
// Picture-in-picture
pref("media.videocontrols.picture-in-picture.video-toggle.enabled", true);
// TODO: Enable once we have a proper settings page
pref("media.videocontrols.picture-in-picture.enable-when-switching-tabs.enabled", false);
#include performance.inc
#include pip.inc

View file

@ -1,5 +1,5 @@
diff --git a/browser/base/content/aboutDialog.js b/browser/base/content/aboutDialog.js
index f6e1391baf12abb91c85a95107bb3923118746c0..76c7b75a4e29056110f1631a50047c4ddd8b1f4a 100644
index f6e1391baf12abb91c85a95107bb3923118746c0..cac04aa288e8a305d0c8b28e0c919abce87658e5 100644
--- a/browser/base/content/aboutDialog.js
+++ b/browser/base/content/aboutDialog.js
@@ -52,7 +52,7 @@ function init() {
@ -20,3 +20,18 @@ index f6e1391baf12abb91c85a95107bb3923118746c0..76c7b75a4e29056110f1631a50047c4d
versionIdKey += "-nightly";
let buildID = Services.appinfo.appBuildID;
let year = buildID.slice(0, 4);
@@ -125,14 +125,6 @@ function init() {
window.close();
});
if (AppConstants.MOZ_UPDATER) {
- document
- .getElementById("aboutDialogHelpLink")
- .addEventListener("click", () => {
- openHelpLink("firefox-help");
- });
- document
- .getElementById("submit-feedback")
- .addEventListener("click", openFeedbackPage);
document
.getElementById("checkForUpdatesButton")
.addEventListener("command", () => {

View file

@ -1,5 +1,5 @@
diff --git a/browser/base/content/aboutDialog.xhtml b/browser/base/content/aboutDialog.xhtml
index c64980810570fcea84e33fdc2d66ac42a79f4e46..b7198e810a7510fa82cc6801cfd01c88a08d42c1 100644
index c64980810570fcea84e33fdc2d66ac42a79f4e46..6ef9bf4b88f0a0539d833f662c4dd890fd1fde93 100644
--- a/browser/base/content/aboutDialog.xhtml
+++ b/browser/base/content/aboutDialog.xhtml
@@ -35,6 +35,7 @@
@ -10,7 +10,18 @@ index c64980810570fcea84e33fdc2d66ac42a79f4e46..b7198e810a7510fa82cc6801cfd01c88
</linkset>
<html:div id="aboutDialogContainer">
@@ -125,21 +126,23 @@
@@ -102,10 +103,6 @@
<label id="version" class="update"/>
<label id="releasenotes" is="text-link" hidden="true" data-l10n-id="releaseNotes-link"/>
</hbox>
- <description class="text-blurb">
- <label id="aboutDialogHelpLink" is="text-link" data-l10n-id="aboutdialog-help-user"/>
- <label id="submit-feedback" is="text-link" data-l10n-id="aboutdialog-submit-feedback"/>
- </description>
</vbox>
#endif
</hbox>
@@ -125,21 +122,17 @@
</description>
</vbox>
<description class="text-blurb" id="communityDesc" data-l10n-id="community-2">
@ -18,12 +29,10 @@ index c64980810570fcea84e33fdc2d66ac42a79f4e46..b7198e810a7510fa82cc6801cfd01c88
+ <label is="text-link" href="https://github.com/zen-browser/desktop" data-l10n-name="community-mozillaLink"/>
<label is="text-link" useoriginprincipal="true" href="about:credits" data-l10n-name="community-creditsLink"/>
</description>
+#if 0
<description class="text-blurb" id="contributeDesc" data-l10n-id="helpus">
<label is="text-link" href="https://foundation.mozilla.org/?form=firefox-about" data-l10n-name="helpus-donateLink"/>
<label is="text-link" href="https://www.mozilla.org/contribute/?utm_source=firefox-browser&#38;utm_medium=firefox-desktop&#38;utm_campaign=about-dialog" data-l10n-name="helpus-getInvolvedLink"/>
</description>
+#endif
- <description class="text-blurb" id="contributeDesc" data-l10n-id="helpus">
- <label is="text-link" href="https://foundation.mozilla.org/?form=firefox-about" data-l10n-name="helpus-donateLink"/>
- <label is="text-link" href="https://www.mozilla.org/contribute/?utm_source=firefox-browser&#38;utm_medium=firefox-desktop&#38;utm_campaign=about-dialog" data-l10n-name="helpus-getInvolvedLink"/>
- </description>
</vbox>
</vbox>
</hbox>

View file

@ -1,15 +0,0 @@
diff --git a/browser/base/content/appmenu-viewcache.inc.xhtml b/browser/base/content/appmenu-viewcache.inc.xhtml
index 3c5c4f29b1de25a4ce17089502f2251a27e5c7f5..dfa3260ed3c2bb6067745696fbf103c7e56c639a 100644
--- a/browser/base/content/appmenu-viewcache.inc.xhtml
+++ b/browser/base/content/appmenu-viewcache.inc.xhtml
@@ -421,6 +421,10 @@
class="subviewbutton"
data-l10n-id="appmenu-customizetoolbar"
command="cmd_CustomizeToolbars"/>
+ <toolbarbutton id="appmenu-zen-share-rice"
+ class="subviewbutton"
+ data-l10n-id="appmenu-zen-share-rice"
+ oncommand="gZenThemePicker.shareTheme()" />
<toolbarseparator/>
<html:h2 id="appmenu-developer-tools"
data-l10n-id="appmenu-developer-tools-subheader"

View file

@ -1,8 +1,35 @@
diff --git a/browser/base/content/browser-addons.js b/browser/base/content/browser-addons.js
index 992d07daaef1abc4554a43aa654888f66963c575..73e620b70b7ed14e9d140e875c2cd5f5ac31456b 100644
index 73593191936cc345ee8e2c28cb251dc13f4c2fd4..e6c459c1ebc60a1f3930a55e212570f696bf07a0 100644
--- a/browser/base/content/browser-addons.js
+++ b/browser/base/content/browser-addons.js
@@ -2105,18 +2105,20 @@ var gUnifiedExtensions = {
@@ -735,7 +735,7 @@ var gXPInstallObserver = {
persistent: true,
hideClose: true,
popupOptions: {
- position: "bottomright topright",
+ position: gZenUIManager.panelUIPosition,
},
};
@@ -942,7 +942,7 @@ var gXPInstallObserver = {
hideClose: true,
timeout: Date.now() + 30000,
popupOptions: {
- position: "bottomright topright",
+ position: gZenUIManager.panelUIPosition,
},
};
@@ -2125,7 +2125,7 @@ var gUnifiedExtensions = {
panel.hidden = false;
PanelMultiView.openPopup(panel, this._button, {
- position: "bottomright topright",
+ position: gZenUIManager.panelUIPosition,
triggerEvent: aEvent,
});
}
@@ -2294,18 +2294,20 @@ var gUnifiedExtensions = {
this._maybeMoveWidgetNodeBack(widgetId);
}

View file

@ -1,13 +1,15 @@
diff --git a/browser/base/content/browser-box.inc.xhtml b/browser/base/content/browser-box.inc.xhtml
index 7d7e8697f02f90d4f336c9ab0a73a89848e0c21c..d113b439888d26629ce5f6b5d35f8fa12249774b 100644
index 7d7e8697f02f90d4f336c9ab0a73a89848e0c21c..64e950106dd05b443ce72107613ac9cc405d56ea 100644
--- a/browser/base/content/browser-box.inc.xhtml
+++ b/browser/base/content/browser-box.inc.xhtml
@@ -23,7 +23,13 @@
@@ -23,7 +23,15 @@
<browser id="sidebar" autoscroll="false" disablehistory="true" disablefullscreen="true" tooltip="aHTMLTooltip"/>
</vbox>
<splitter id="sidebar-splitter" class="chromeclass-extrachrome sidebar-splitter" resizebefore="sibling" resizeafter="none" hidden="true"/>
+<vbox flex="1" id="zen-appcontent-wrapper">
+ <html:div id="zen-appcontent-navbar-container"></html:div>
+ <html:div id="zen-appcontent-navbar-wrapper">
+ <html:div id="zen-appcontent-navbar-container"></html:div>
+ </html:div>
+ <hbox id="zen-tabbox-wrapper" flex="1">
<tabbox id="tabbrowser-tabbox" flex="1" tabcontainer="tabbrowser-tabs">
+#include zen-tabbrowser-elements.inc.xhtml

View file

@ -15,7 +15,7 @@ index 3d5173315812589c0b79beec5f0419fc37cb8868..c4216db9e414fbbaead6ecd89b40366b
TelemetryTimestamps.add("delayedStartupStarted");
this._cancelDelayedStartup();
+ ZenWorkspaces.afterLoadInit();
+ gZenWorkspaces.afterLoadInit();
gBrowser.addEventListener(
"PermissionStateChange",

View file

@ -1,5 +1,5 @@
diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
index ea79d296e7dd0f8fd812b0677a252af5cf7ad26e..bd95ef5d6b99399c859af1cf71d9d62477f4ac2b 100644
index 6d664917a5a3bb1cea8a747e42e8bc0065ec999e..5059293ebfa29d646455b7a3505bd6eae408ba64 100644
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -33,6 +33,7 @@ ChromeUtils.defineESModuleGetters(this, {
@ -10,33 +10,32 @@ index ea79d296e7dd0f8fd812b0677a252af5cf7ad26e..bd95ef5d6b99399c859af1cf71d9d624
DevToolsSocketStatus:
"resource://devtools/shared/security/DevToolsSocketStatus.sys.mjs",
DownloadUtils: "resource://gre/modules/DownloadUtils.sys.mjs",
@@ -2338,6 +2339,11 @@ var XULBrowserWindow = {
@@ -2340,6 +2341,10 @@ var XULBrowserWindow = {
AboutReaderParent.updateReaderButton(gBrowser.selectedBrowser);
TranslationsParent.onLocationChange(gBrowser.selectedBrowser);
+ gZenViewSplitter.onLocationChange(gBrowser.selectedBrowser);
+ ZenWorkspaces.onLocationChange(gBrowser.selectedBrowser);
+ gZenTabUnloader.onLocationChange(gBrowser.selectedBrowser);
+ gZenWorkspaces.onLocationChange(gBrowser.selectedBrowser);
+ gZenPinnedTabManager.onLocationChange(gBrowser.selectedBrowser);
+
PictureInPicture.updateUrlbarToggle(gBrowser.selectedBrowser);
if (!gMultiProcessBrowser) {
@@ -4814,7 +4820,7 @@ function switchToTabHavingURI(
@@ -4816,7 +4821,7 @@ function switchToTabHavingURI(
ignoreQueryString || replaceQueryString,
ignoreFragmentWhenComparing
);
- let browsers = aWindow.gBrowser.browsers;
+ let browsers = aWindow.ZenWorkspaces.allUsedBrowsers;
+ let browsers = aWindow.gZenWorkspaces.allUsedBrowsers;
for (let i = 0; i < browsers.length; i++) {
let browser = browsers[i];
let browserCompare = cleanURL(
@@ -4857,7 +4863,7 @@ function switchToTabHavingURI(
@@ -4859,7 +4864,7 @@ function switchToTabHavingURI(
}
if (!doAdopt) {
- aWindow.gBrowser.tabContainer.selectedIndex = i;
+ aWindow.ZenWorkspaces.switchIfNeeded(browser, i);
+ aWindow.gZenWorkspaces.switchIfNeeded(browser, i);
}
return true;

View file

@ -1,5 +1,5 @@
diff --git a/browser/base/content/browser.xhtml b/browser/base/content/browser.xhtml
index 51a25aaa5558e6e17246d54a7ed95d5ddf3ecdab..b49984c8711fc9f5f19f0cf6ecca07a8cca0d125 100644
index 8f8c5536cb6e54300897180ca3f950974c60e930..79305485631f14712d8b2674f477b641ec53fcd6 100644
--- a/browser/base/content/browser.xhtml
+++ b/browser/base/content/browser.xhtml
@@ -26,6 +26,7 @@
@ -10,7 +10,7 @@ index 51a25aaa5558e6e17246d54a7ed95d5ddf3ecdab..b49984c8711fc9f5f19f0cf6ecca07a8
persist="screenX screenY width height sizemode"
data-l10n-sync="true">
<head>
@@ -104,8 +105,11 @@
@@ -105,8 +106,11 @@
<title data-l10n-id="browser-main-window-default-title"></title>
@ -22,12 +22,11 @@ index 51a25aaa5558e6e17246d54a7ed95d5ddf3ecdab..b49984c8711fc9f5f19f0cf6ecca07a8
</head>
<html:body xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
# All sets except for popupsets (commands, keys, and stringbundles)
@@ -127,9 +131,12 @@
@@ -128,9 +132,11 @@
</vbox>
</html:template>
+<hbox id="zen-main-app-wrapper" flex="1" persist="zen-compact-mode">
+ <vbox id="zen-toast-container"></vbox>
#include navigator-toolbox.inc.xhtml
#include browser-box.inc.xhtml

View file

@ -1,5 +1,5 @@
diff --git a/browser/base/content/navigator-toolbox.inc.xhtml b/browser/base/content/navigator-toolbox.inc.xhtml
index 00c8976d3e258c0875d7da2f3ec823d8907a84c9..b5735712aaa7c2ae2baa4b858e735413b130ca94 100644
index 00c8976d3e258c0875d7da2f3ec823d8907a84c9..cc61d5a845b5ce22a61f5a1aab8b280b2bcdf101 100644
--- a/browser/base/content/navigator-toolbox.inc.xhtml
+++ b/browser/base/content/navigator-toolbox.inc.xhtml
@@ -2,7 +2,7 @@
@ -22,27 +22,24 @@ index 00c8976d3e258c0875d7da2f3ec823d8907a84c9..b5735712aaa7c2ae2baa4b858e735413
<toolbar id="TabsToolbar"
class="browser-toolbar browser-titlebar"
fullscreentoolbar="true"
@@ -50,6 +50,10 @@
@@ -50,6 +50,8 @@
tooltip="tabbrowser-tab-tooltip"
orient="horizontal"
stopwatchid="tabClick">
+<html:div id="zen-essentials-wrapper" skipintoolbarset="true"></html:div>
+<hbox id="zen-current-workspace-indicator-container"></hbox>
+<html:div id="zen-essentials" skipintoolbarset="true"></html:div>
+<html:div id="zen-tabs-wrapper">
+<html:div id="zen-browser-tabs-container">
<hbox class="tab-drop-indicator" hidden="true"/>
<html:span id="tab-drag-empty-feedback" role="presentation"/>
# If the name (tabbrowser-arrowscrollbox) or structure of this changes
@@ -76,6 +80,8 @@
@@ -76,6 +78,7 @@
tooltip="dynamic-shortcut-tooltip"
data-l10n-id="tabs-toolbar-new-tab"/>
<html:span id="tabbrowser-tab-a11y-desc" hidden="true"/>
+</html:div>
+</html:div>
</tabs>
<toolbarbutton id="new-tab-button"
@@ -101,9 +107,10 @@
@@ -101,9 +104,10 @@
#include private-browsing-indicator.inc.xhtml
<toolbarbutton class="content-analysis-indicator toolbarbutton-1 content-analysis-indicator-icon"/>

View file

@ -29,19 +29,15 @@
</linkset>
# Scripts used all over the browser
<script>
Services.scriptloader.loadSubScript("chrome://browser/content/ZenUIManager.mjs", this);
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenFolders.mjs", this);
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenThemesCommon.mjs", this);
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenThemesImporter.mjs", this);
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenCompactMode.mjs", this);
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenTabUnloader.mjs", this);
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenPinnedTabsStorage.mjs", this);
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenWorkspacesStorage.mjs", this);
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenPinnedTabManager.mjs", this);
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenGradientGenerator.mjs", this);
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenViewSplitter.mjs", this);
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenGlanceManager.mjs", this);
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenMediaController.mjs", this);
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenDownloadAnimation.mjs", this);
</script>
<script src="chrome://browser/content/ZenUIManager.mjs"></script>
<script src="chrome://browser/content/zen-components/ZenFolders.mjs"></script>
<script src="chrome://browser/content/zen-components/ZenMods.mjs"></script>
<script src="chrome://browser/content/zen-components/ZenCompactMode.mjs"></script>
<script src="chrome://browser/content/zen-components/ZenPinnedTabsStorage.mjs"></script>
<script src="chrome://browser/content/zen-components/ZenWorkspacesStorage.mjs"></script>
<script src="chrome://browser/content/zen-components/ZenPinnedTabManager.mjs"></script>
<script src="chrome://browser/content/zen-components/ZenGradientGenerator.mjs"></script>
<script src="chrome://browser/content/zen-components/ZenViewSplitter.mjs"></script>
<script src="chrome://browser/content/zen-components/ZenGlanceManager.mjs"></script>
<script src="chrome://browser/content/zen-components/ZenMediaController.mjs"></script>
<script src="chrome://browser/content/zen-components/ZenDownloadAnimation.mjs"></script>

View file

@ -9,6 +9,7 @@
content/browser/ZenCustomizableUI.sys.mjs (../../zen/common/ZenCustomizableUI.sys.mjs)
content/browser/zen-components/ZenUIMigration.mjs (../../zen/common/ZenUIMigration.mjs)
content/browser/zen-components/ZenCommonUtils.mjs (../../zen/common/ZenCommonUtils.mjs)
content/browser/zen-components/ZenSessionStore.mjs (../../zen/common/ZenSessionStore.mjs)
content/browser/zen-styles/zen-theme.css (../../zen/common/styles/zen-theme.css)
content/browser/zen-styles/zen-buttons.css (../../zen/common/styles/zen-buttons.css)
@ -34,21 +35,19 @@
content/browser/zen-components/ZenViewSplitter.mjs (../../zen/split-view/ZenViewSplitter.mjs)
content/browser/zen-styles/zen-decks.css (../../zen/split-view/zen-decks.css)
content/browser/zen-components/ZenThemesCommon.mjs (../../zen/mods/ZenThemesCommon.mjs)
content/browser/zen-components/ZenThemesImporter.mjs (../../zen/mods/ZenThemesImporter.mjs)
content/browser/zen-components/actors/ZenThemeMarketplaceParent.sys.mjs (../../zen/mods/actors/ZenThemeMarketplaceParent.sys.mjs)
content/browser/zen-components/actors/ZenThemeMarketplaceChild.sys.mjs (../../zen/mods/actors/ZenThemeMarketplaceChild.sys.mjs)
content/browser/zen-components/ZenMods.mjs (../../zen/mods/ZenMods.mjs)
content/browser/zen-components/ZenWorkspaceIcons.mjs (../../zen/workspaces/ZenWorkspaceIcons.mjs)
content/browser/zen-components/ZenWorkspace.mjs (../../zen/workspaces/ZenWorkspace.mjs)
content/browser/zen-components/ZenWorkspaces.mjs (../../zen/workspaces/ZenWorkspaces.mjs)
content/browser/zen-components/ZenWorkspacesStorage.mjs (../../zen/workspaces/ZenWorkspacesStorage.mjs)
content/browser/zen-components/ZenWorkspacesSync.mjs (../../zen/workspaces/ZenWorkspacesSync.mjs)
content/browser/zen-components/ZenGradientGenerator.mjs (../../zen/workspaces/ZenGradientGenerator.mjs)
content/browser/zen-styles/zen-workspaces.css (../../zen/workspaces/zen-workspaces.css)
* content/browser/zen-styles/zen-workspaces.css (../../zen/workspaces/zen-workspaces.css)
content/browser/zen-styles/zen-gradient-generator.css (../../zen/workspaces/zen-gradient-generator.css)
content/browser/zen-components/ZenKeyboardShortcuts.mjs (../../zen/kbs/ZenKeyboardShortcuts.mjs)
content/browser/zen-components/ZenTabUnloader.mjs (../../zen/tabs/ZenTabUnloader.mjs)
content/browser/zen-components/ZenPinnedTabsStorage.mjs (../../zen/tabs/ZenPinnedTabsStorage.mjs)
content/browser/zen-components/ZenPinnedTabManager.mjs (../../zen/tabs/ZenPinnedTabManager.mjs)
* content/browser/zen-styles/zen-tabs.css (../../zen/tabs/zen-tabs.css)
@ -56,8 +55,6 @@
content/browser/zen-components/ZenGlanceManager.mjs (../../zen/glance/ZenGlanceManager.mjs)
content/browser/zen-styles/zen-glance.css (../../zen/glance/zen-glance.css)
content/browser/zen-components/actors/ZenGlanceChild.sys.mjs (../../zen/glance/actors/ZenGlanceChild.sys.mjs)
content/browser/zen-components/actors/ZenGlanceParent.sys.mjs (../../zen/glance/actors/ZenGlanceParent.sys.mjs)
content/browser/zen-components/ZenFolders.mjs (../../zen/folders/ZenFolders.mjs)
content/browser/zen-styles/zen-folders.css (../../zen/folders/zen-folders.css)
@ -73,7 +70,7 @@
content/browser/zen-styles/zen-download-box-animation.css (../../zen/downloads/zen-download-box-animation.css)
# Images
# Images
content/browser/zen-images/gradient.png (../../zen/images/gradient.png)
content/browser/zen-images/brand-header.svg (../../zen/images/brand-header.svg)
content/browser/zen-images/layouts/collapsed.png (../../zen/images/layouts/collapsed.png)
@ -85,7 +82,7 @@
content/browser/zen-images/downloads/download.svg (../../zen/images/downloads/download.svg)
content/browser/zen-images/downloads/archive.svg (../../zen/images/downloads/archive.svg)
# Fonts
# Fonts
content/browser/zen-fonts/JunicodeVF-Italic.woff2 (../../zen/fonts/JunicodeVF-Italic.woff2)
content/browser/zen-fonts/JunicodeVF-Roman.woff2 (../../zen/fonts/JunicodeVF-Roman.woff2)
@ -103,4 +100,4 @@
content/browser/zen-images/favicons/slack.ico (../../zen/images/favicons/slack.ico)
content/browser/zen-images/favicons/reddit.ico (../../zen/images/favicons/reddit.ico)
content/browser/zen-images/favicons/x.ico (../../zen/images/favicons/x.ico)
content/browser/zen-images/favicons/trello.ico (../../zen/images/favicons/trello.ico)
content/browser/zen-images/favicons/trello.ico (../../zen/images/favicons/trello.ico)

View file

@ -43,10 +43,6 @@
<command id="cmd_zenCopyCurrentURL" />
<command id="cmd_zenCopyCurrentURLMarkdown" />
<command id="cmd_zenUnloadTab" />
<command id="cmd_zenPreventUnloadTab" />
<command id="cmd_zenIgnoreUnloadTab" />
</commandset>
<keyset id="zenKeyset"></keyset>

View file

@ -45,7 +45,7 @@
<label data-l10n-id="zen-panel-ui-gradient-generator-custom-color"></label>
<hbox>
<html:input type="text" placeholder="#000000" id="PanelUI-zen-gradient-generator-custom-input" />
<toolbarbutton id="PanelUI-zen-gradient-generator-color-custom-add" class="subviewbutton" data-l10n-id="zen-panel-ui-gradient-generator-custom-color-add">
<toolbarbutton id="PanelUI-zen-gradient-generator-color-custom-add" class="subviewbutton">
<image></image>
</toolbarbutton>
</hbox>

View file

@ -1,11 +1,13 @@
# This needs to be here, before all the other scripts, because it's used before
# the window is fully loaded.
# Make sure they are loaded before the global-scripts.inc file.
<script type="text/javascript">
Services.scriptloader.loadSubScript("chrome://browser/content/zen-sets.js", this);
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenCommonUtils.mjs", this);
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenKeyboardShortcuts.mjs", this);
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenWorkspaces.mjs", this);
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenWorkspacesSync.mjs", this);
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenActorsManager.mjs", this);
</script>
<script type="text/javascript" src="chrome://browser/content/zen-sets.js"></script>
<script type="text/javascript" src="chrome://browser/content/zen-components/ZenCommonUtils.mjs"></script>
<script type="text/javascript" src="chrome://browser/content/zen-components/ZenKeyboardShortcuts.mjs"></script>
<script type="text/javascript" src="chrome://browser/content/zen-components/ZenWorkspaceIcons.mjs"></script>
<script type="text/javascript" src="chrome://browser/content/zen-components/ZenWorkspace.mjs"></script>
<script type="text/javascript" src="chrome://browser/content/zen-components/ZenWorkspaces.mjs"></script>
<script type="text/javascript" src="chrome://browser/content/zen-components/ZenWorkspacesSync.mjs"></script>
<script type="text/javascript" src="chrome://browser/content/zen-components/ZenActorsManager.mjs"></script>
<script type="text/javascript" src="chrome://browser/content/zen-components/ZenSessionStore.mjs"></script>

View file

@ -2,12 +2,12 @@
<toolbar brighttext="true"
id="zen-sidebar-bottom-buttons"
fullscreentoolbar="true"
class="browser-toolbar customization-target zen-dont-hide-on-fullscreen"
class="browser-toolbar customization-target"
data-l10n-id="tabs-toolbar"
customizable="true"
skipintoolbarset="true"
context="toolbar-context-menu"
mode="icons">
<toolbarbutton removable="true" class="chromeclass-toolbar-additional toolbarbutton-1 zen-sidebar-action-button" id="zen-expand-sidebar-button" command="cmd_zenToggleSidebar" data-l10n-id="sidebar-zen-expand" cui-areatype="toolbar"></toolbarbutton>
<toolbarbutton id="zen-workspaces-button" class="chromeclass-toolbar-additional" overflows="false" removable="false"></toolbarbutton>
<toolbarbutton removable="true" class="chromeclass-toolbar-additional toolbarbutton-1 zen-sidebar-action-button" id="zen-expand-sidebar-button" command="cmd_zenToggleSidebar" data-l10n-id="sidebar-zen-expand"></toolbarbutton>
<zen-workspace-icons id="zen-workspaces-button" overflows="false" removable="false"></zen-workspace-icons>
</toolbar>

View file

@ -1,2 +1,4 @@
<vbox id="zen-toast-container"></vbox>
#include ../../../zen/split-view/zen-splitview-overlay.inc.xhtml
#include ../../../zen/glance/zen-glance.inc.xhtml

View file

@ -1,9 +1,9 @@
diff --git a/browser/base/moz.build b/browser/base/moz.build
index 636e0841786735a63ddea00e819c0b6f0b8a5d4d..62e4531bd19caf098fd76c69b213fa32d62546a6 100644
index 9da444880c4dbf188443d43e8d0a71d98311a2b7..3a654be6f78931e92479b30de6f0a6e50da81908 100644
--- a/browser/base/moz.build
+++ b/browser/base/moz.build
@@ -87,3 +87,5 @@ if CONFIG["MOZ_WIDGET_TOOLKIT"] in ("windows", "gtk"):
DEFINES["MENUBAR_CAN_AUTOHIDE"] = 1
@@ -81,3 +81,5 @@ DEFINES["MOZ_APP_VERSION_DISPLAY"] = CONFIG["MOZ_APP_VERSION_DISPLAY"]
DEFINES["APP_LICENSE_BLOCK"] = "%s/content/overrides/app-license.html" % SRCDIR
JAR_MANIFESTS += ["jar.mn"]
+

View file

@ -1,8 +1,8 @@
diff --git a/browser/components/BrowserContentHandler.sys.mjs b/browser/components/BrowserContentHandler.sys.mjs
index 5911b276fdc9889d3cb61bac3d302ec5239e4a90..a405f8a0204e98fa9de08f1cd7b6761f0fc6198e 100644
index e72feb538c0dc182211945a66e51bcea73d3d4a0..b4d9115873b7af414043c53fb817b611b78ec58f 100644
--- a/browser/components/BrowserContentHandler.sys.mjs
+++ b/browser/components/BrowserContentHandler.sys.mjs
@@ -1270,6 +1270,7 @@ function maybeRecordToHandleTelemetry(uri, isLaunch) {
@@ -1281,6 +1281,7 @@ function maybeRecordToHandleTelemetry(uri, isLaunch) {
".avif",
".htm",
".html",

View file

@ -1,5 +1,5 @@
diff --git a/browser/components/BrowserGlue.sys.mjs b/browser/components/BrowserGlue.sys.mjs
index a6a7f9165aece774c3f1c15f7e352b11a4bf90f4..a4b6124b85f099c6f12d297fc26f2040370c337c 100644
index cebca6d017a0c3fc8eff7a38f987726324789e69..73a24df91bec368f2f27c538b37d57595e18c599 100644
--- a/browser/components/BrowserGlue.sys.mjs
+++ b/browser/components/BrowserGlue.sys.mjs
@@ -8,6 +8,7 @@ import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs";
@ -10,7 +10,7 @@ index a6a7f9165aece774c3f1c15f7e352b11a4bf90f4..a4b6124b85f099c6f12d297fc26f2040
AboutHomeStartupCache: "resource:///modules/AboutHomeStartupCache.sys.mjs",
AboutNewTab: "resource:///modules/AboutNewTab.sys.mjs",
AWToolbarButton: "resource:///modules/aboutwelcome/AWToolbarUtils.sys.mjs",
@@ -1886,6 +1887,7 @@ BrowserGlue.prototype = {
@@ -881,6 +882,7 @@ BrowserGlue.prototype = {
lazy.ProcessHangMonitor.init();

View file

@ -1,5 +1,5 @@
diff --git a/browser/components/customizableui/CustomizableUI.sys.mjs b/browser/components/customizableui/CustomizableUI.sys.mjs
index 91088fab1759b9af908912648d28daa5938a29c9..3f52ee8cd77ac171fd2cbf355ade1371e57d0db5 100644
index 5bb6be19f7f855b129aac921af1ed5cfc63d732b..41230a61f3088a234903dcc10abd361efac34729 100644
--- a/browser/components/customizableui/CustomizableUI.sys.mjs
+++ b/browser/components/customizableui/CustomizableUI.sys.mjs
@@ -13,6 +13,7 @@ ChromeUtils.defineESModuleGetters(lazy, {
@ -10,22 +10,19 @@ index 91088fab1759b9af908912648d28daa5938a29c9..3f52ee8cd77ac171fd2cbf355ade1371
HomePage: "resource:///modules/HomePage.sys.mjs",
PanelMultiView: "resource:///modules/PanelMultiView.sys.mjs",
PrivateBrowsingUtils: "resource://gre/modules/PrivateBrowsingUtils.sys.mjs",
@@ -25,7 +26,7 @@ ChromeUtils.defineLazyGetter(lazy, "gWidgetsBundle", function () {
return Services.strings.createBundle(kUrl);
});
-const kDefaultThemeID = "default-theme@mozilla.org";
+const kDefaultThemeID = "firefox-compact-dark@mozilla.org";
const kSpecialWidgetPfx = "customizableui-special-";
@@ -338,13 +339,11 @@ var CustomizableUIInternal = {
@@ -331,20 +332,14 @@ var CustomizableUIInternal = {
"back-button",
"forward-button",
"stop-reload-button",
- Services.policies.isAllowed("removeHomeButtonByDefault")
- ? null
- : "home-button",
"spring",
"vertical-spacer",
"urlbar-container",
"spring",
- "save-to-pocket-button",
- "downloads-button",
+// "downloads-button",
AppConstants.MOZ_DEV_EDITION ? "developer-button" : null,
- "fxa-toolbar-menu-button",
lazy.resetPBMToolbarButtonEnabled ? "reset-pbm-toolbar-button" : null,
@ -35,15 +32,16 @@ index 91088fab1759b9af908912648d28daa5938a29c9..3f52ee8cd77ac171fd2cbf355ade1371
this.registerArea(
CustomizableUI.AREA_NAVBAR,
{
@@ -352,7 +351,6 @@ var CustomizableUIInternal = {
@@ -352,8 +347,6 @@ var CustomizableUIInternal = {
overflowable: true,
defaultPlacements: navbarPlacements,
verticalTabsDefaultPlacements: [
- "firefox-view-button",
"alltabs-button",
- "alltabs-button",
],
defaultCollapsed: false,
@@ -377,10 +375,7 @@ var CustomizableUIInternal = {
},
@@ -377,10 +370,7 @@ var CustomizableUIInternal = {
{
type: CustomizableUI.TYPE_TOOLBAR,
defaultPlacements: [
@ -54,7 +52,7 @@ index 91088fab1759b9af908912648d28daa5938a29c9..3f52ee8cd77ac171fd2cbf355ade1371
],
verticalTabsDefaultPlacements: [],
defaultCollapsed: null,
@@ -462,6 +457,7 @@ var CustomizableUIInternal = {
@@ -462,6 +452,7 @@ var CustomizableUIInternal = {
CustomizableUI.AREA_NAVBAR,
CustomizableUI.AREA_BOOKMARKS,
CustomizableUI.AREA_TABSTRIP,
@ -62,7 +60,7 @@ index 91088fab1759b9af908912648d28daa5938a29c9..3f52ee8cd77ac171fd2cbf355ade1371
]);
if (AppConstants.platform != "macosx") {
toolbars.add(CustomizableUI.AREA_MENUBAR);
@@ -1262,6 +1258,9 @@ var CustomizableUIInternal = {
@@ -1262,6 +1253,9 @@ var CustomizableUIInternal = {
placements = gPlacements.get(area);
}
@ -72,7 +70,7 @@ index 91088fab1759b9af908912648d28daa5938a29c9..3f52ee8cd77ac171fd2cbf355ade1371
// For toolbars that need it, mark as dirty.
let defaultPlacements = areaProperties.get("defaultPlacements");
if (
@@ -1769,7 +1768,7 @@ var CustomizableUIInternal = {
@@ -1769,7 +1763,7 @@ var CustomizableUIInternal = {
lazy.log.info(
"Widget " + aWidgetId + " not found, unable to remove from " + aArea
);
@ -81,7 +79,7 @@ index 91088fab1759b9af908912648d28daa5938a29c9..3f52ee8cd77ac171fd2cbf355ade1371
}
this.notifyDOMChange(widgetNode, null, container, true, () => {
@@ -1779,7 +1778,7 @@ var CustomizableUIInternal = {
@@ -1779,7 +1773,7 @@ var CustomizableUIInternal = {
// We also need to remove the panel context menu if it's there:
this.ensureButtonContextMenu(widgetNode);
if (gPalette.has(aWidgetId) || this.isSpecialWidget(aWidgetId)) {
@ -90,7 +88,7 @@ index 91088fab1759b9af908912648d28daa5938a29c9..3f52ee8cd77ac171fd2cbf355ade1371
} else {
window.gNavToolbox.palette.appendChild(widgetNode);
}
@@ -1947,16 +1946,16 @@ var CustomizableUIInternal = {
@@ -1947,16 +1941,16 @@ var CustomizableUIInternal = {
elem.setAttribute("skipintoolbarset", "true");
}
}
@ -110,7 +108,7 @@ index 91088fab1759b9af908912648d28daa5938a29c9..3f52ee8cd77ac171fd2cbf355ade1371
// Handle initial state of vertical tabs.
if (isVerticalTabs) {
// Show the vertical tabs toolbar
@@ -2198,6 +2197,10 @@ var CustomizableUIInternal = {
@@ -2198,6 +2192,10 @@ var CustomizableUIInternal = {
* The identifier string of the area that aNode is being inserted into.
*/
insertWidgetBefore(aNode, aNextNode, aContainer, aAreaId) {
@ -121,7 +119,7 @@ index 91088fab1759b9af908912648d28daa5938a29c9..3f52ee8cd77ac171fd2cbf355ade1371
this.notifyDOMChange(aNode, aNextNode, aContainer, false, () => {
this.setLocationAttributes(aNode, aAreaId);
aContainer.insertBefore(aNode, aNextNode);
@@ -3321,7 +3324,6 @@ var CustomizableUIInternal = {
@@ -3321,7 +3319,6 @@ var CustomizableUIInternal = {
if (!this.isWidgetRemovable(aWidgetId)) {
return;
}
@ -129,7 +127,7 @@ index 91088fab1759b9af908912648d28daa5938a29c9..3f52ee8cd77ac171fd2cbf355ade1371
let placements = gPlacements.get(oldPlacement.area);
let position = placements.indexOf(aWidgetId);
if (position != -1) {
@@ -4556,7 +4558,7 @@ var CustomizableUIInternal = {
@@ -4556,7 +4553,7 @@ var CustomizableUIInternal = {
* For all registered areas, builds those areas to reflect the current
* placement state of all widgets.
*/
@ -138,7 +136,7 @@ index 91088fab1759b9af908912648d28daa5938a29c9..3f52ee8cd77ac171fd2cbf355ade1371
for (let [areaId, areaNodes] of gBuildAreas) {
let placements = gPlacements.get(areaId);
let isFirstChangedToolbar = true;
@@ -4567,7 +4569,7 @@ var CustomizableUIInternal = {
@@ -4567,7 +4564,7 @@ var CustomizableUIInternal = {
if (area.get("type") == CustomizableUI.TYPE_TOOLBAR) {
let defaultCollapsed = area.get("defaultCollapsed");
let win = areaNode.ownerGlobal;
@ -147,7 +145,7 @@ index 91088fab1759b9af908912648d28daa5938a29c9..3f52ee8cd77ac171fd2cbf355ade1371
win.setToolbarVisibility(
areaNode,
typeof defaultCollapsed == "string"
@@ -5858,6 +5860,7 @@ export var CustomizableUI = {
@@ -5858,6 +5855,7 @@ export var CustomizableUI = {
unregisterArea(aName, aDestroyPlacements) {
CustomizableUIInternal.unregisterArea(aName, aDestroyPlacements);
},
@ -155,7 +153,7 @@ index 91088fab1759b9af908912648d28daa5938a29c9..3f52ee8cd77ac171fd2cbf355ade1371
/**
* Add a widget to an area.
* If the area to which you try to add is not known to CustomizableUI,
@@ -7905,11 +7908,11 @@ class OverflowableToolbar {
@@ -7905,11 +7903,11 @@ class OverflowableToolbar {
parseFloat(style.paddingLeft) -
parseFloat(style.paddingRight) -
toolbarChildrenWidth;
@ -169,7 +167,7 @@ index 91088fab1759b9af908912648d28daa5938a29c9..3f52ee8cd77ac171fd2cbf355ade1371
});
lazy.log.debug(
@@ -7919,7 +7922,8 @@ class OverflowableToolbar {
@@ -7919,7 +7917,8 @@ class OverflowableToolbar {
// If the target has min-width: 0, their children might actually overflow
// it, so check for both cases explicitly.
let targetContentWidth = Math.max(targetWidth, targetChildrenWidth);
@ -179,7 +177,7 @@ index 91088fab1759b9af908912648d28daa5938a29c9..3f52ee8cd77ac171fd2cbf355ade1371
return { isOverflowing, targetContentWidth, totalAvailWidth };
}
@@ -8013,7 +8017,7 @@ class OverflowableToolbar {
@@ -8013,7 +8012,7 @@ class OverflowableToolbar {
}
}
if (!inserted) {
@ -188,7 +186,7 @@ index 91088fab1759b9af908912648d28daa5938a29c9..3f52ee8cd77ac171fd2cbf355ade1371
}
child.removeAttribute("cui-anchorid");
child.removeAttribute("overflowedItem");
@@ -8358,7 +8362,7 @@ class OverflowableToolbar {
@@ -8358,7 +8357,7 @@ class OverflowableToolbar {
break;
}
case "mousedown": {

View file

@ -1,5 +1,5 @@
diff --git a/browser/components/customizableui/CustomizeMode.sys.mjs b/browser/components/customizableui/CustomizeMode.sys.mjs
index 619bb2af5a3a0995fc93fa040696dd2854848ab5..bbc6bad906e9ccaf668ca99f4a0411f564ef1e56 100644
index 619bb2af5a3a0995fc93fa040696dd2854848ab5..14ad5f6122971a0a0dc20d22acdc073f84965dad 100644
--- a/browser/components/customizableui/CustomizeMode.sys.mjs
+++ b/browser/components/customizableui/CustomizeMode.sys.mjs
@@ -500,7 +500,7 @@ export class CustomizeMode {
@ -20,7 +20,15 @@ index 619bb2af5a3a0995fc93fa040696dd2854848ab5..bbc6bad906e9ccaf668ca99f4a0411f5
customizer.hidden = true;
browser.hidden = false;
@@ -3125,6 +3125,20 @@ export class CustomizeMode {
@@ -1173,6 +1173,7 @@ export class CustomizeMode {
return (
aNode.localName == "toolbarbutton" ||
aNode.localName == "toolbaritem" ||
+ aNode.localName == "zen-workspace-icons" ||
aNode.localName == "toolbarseparator" ||
aNode.localName == "toolbarspring" ||
aNode.localName == "toolbarspacer"
@@ -3125,6 +3126,20 @@ export class CustomizeMode {
if (makeSpaceImmediately) {
aDraggedOverItem.setAttribute("notransition", "true");
}

View file

@ -1,8 +1,8 @@
diff --git a/browser/components/customizableui/content/panelUI.js b/browser/components/customizableui/content/panelUI.js
index ec52437dba30633a374299a46c856e1df05dec0e..48617e32d56c3b3f525557ddeac6297555c48c04 100644
index 689205034d9df67ff1fe0ebbf4a3481a5f414391..2626b7286deb51f66b6ccbbc32d510139cacb109 100644
--- a/browser/components/customizableui/content/panelUI.js
+++ b/browser/components/customizableui/content/panelUI.js
@@ -515,8 +515,7 @@ const PanelUI = {
@@ -516,8 +516,7 @@ const PanelUI = {
tempPanel.setAttribute("animate", "false");
}
tempPanel.setAttribute("context", "");
@ -12,7 +12,7 @@ index ec52437dba30633a374299a46c856e1df05dec0e..48617e32d56c3b3f525557ddeac62975
.appendChild(tempPanel);
let multiView = document.createXULElement("panelmultiview");
@@ -957,7 +956,7 @@ const PanelUI = {
@@ -959,7 +958,7 @@ const PanelUI = {
el.removeAttribute("data-lazy-l10n-id");
});

View file

@ -1,8 +1,8 @@
diff --git a/browser/components/extensions/parent/ext-tabs.js b/browser/components/extensions/parent/ext-tabs.js
index b47f0510e32d788dfe7c3109474c4512c9900d4a..49697125a2998bbd50d87c54e2c5974baaf9a7e2 100644
index 517ea0079c12941a844a4f9e4ba694c6411887ee..510ab14dfa2178c332c9862d6a01b75bd12dfe3b 100644
--- a/browser/components/extensions/parent/ext-tabs.js
+++ b/browser/components/extensions/parent/ext-tabs.js
@@ -468,6 +468,7 @@ this.tabs = class extends ExtensionAPIPersistent {
@@ -482,6 +482,7 @@ this.tabs = class extends ExtensionAPIPersistent {
}
let tab = tabManager.getWrapper(event.originalTarget);
@ -10,3 +10,11 @@ index b47f0510e32d788dfe7c3109474c4512c9900d4a..49697125a2998bbd50d87c54e2c5974b
let changeInfo = {};
for (let prop of needed) {
@@ -836,6 +837,7 @@ this.tabs = class extends ExtensionAPIPersistent {
});
}
+ window.gZenCompactModeManager._nextTimeWillBeActive = active;
let nativeTab = window.gBrowser.addTab(url, options);
if (active) {

View file

@ -1,5 +1,5 @@
diff --git a/browser/components/places/PlacesUIUtils.sys.mjs b/browser/components/places/PlacesUIUtils.sys.mjs
index 1f5e163bae58f3f1cac750ca32846cc8a80bd2ca..16034842b4ca5295aa3c9237db55035ecc4016d2 100644
index c7c5c28e1ea6d05094ed9fe751c6b50ab9645370..72f1038aa37b0951a1e78331ee317f714e5b6e8b 100644
--- a/browser/components/places/PlacesUIUtils.sys.mjs
+++ b/browser/components/places/PlacesUIUtils.sys.mjs
@@ -59,6 +59,7 @@ class BookmarkState {
@ -157,20 +157,12 @@ index 1f5e163bae58f3f1cac750ca32846cc8a80bd2ca..16034842b4ca5295aa3c9237db55035e
/**
* Append transactions to update tags by given information.
*
@@ -903,8 +1012,15 @@ export var PlacesUIUtils = {
@@ -903,7 +1012,7 @@ export var PlacesUIUtils = {
aNode,
aWhere,
aWindow,
- { aPrivate = false, userContextId = 0 } = {}
+ { aPrivate = false, userContextId = undefined } = {}
) {
+ if (typeof userContextId == "undefined") {
+ try {
+ let browserWindow = getBrowserWindow(aWindow);
+ userContextId = browserWindow.ZenWorkspaces.getDefaultContainer();
+ } catch {}
+ }
+
if (
aNode &&
lazy.PlacesUtils.nodeIsURI(aNode) &&

View file

@ -1,5 +1,5 @@
diff --git a/browser/components/places/content/browserPlacesViews.js b/browser/components/places/content/browserPlacesViews.js
index ad138a38340e8e8510d395f46c30ec4121d731bb..9294f05633acbe560df003333b7ef7d9a12a2a11 100644
index ad138a38340e8e8510d395f46c30ec4121d731bb..52beaa66395e2b240a7122936cd4d2452b386724 100644
--- a/browser/components/places/content/browserPlacesViews.js
+++ b/browser/components/places/content/browserPlacesViews.js
@@ -330,12 +330,23 @@ class PlacesViewBase {
@ -13,7 +13,7 @@ index ad138a38340e8e8510d395f46c30ec4121d731bb..9294f05633acbe560df003333b7ef7d9
+ let child = resultNode.getChild(i);
+ // Skip nodes that don't belong in current workspace
+ if (PlacesUtils.nodeIsURI(child) || PlacesUtils.containerTypes.includes(child.type)) {
+ if (typeof ZenWorkspaces !== 'undefined' && ZenWorkspaces.isBookmarkInAnotherWorkspace(child)) {
+ if (typeof gZenWorkspaces !== 'undefined' && gZenWorkspaces.isBookmarkInAnotherWorkspace(child)) {
+ continue;
+ }
+ }
@ -52,7 +52,7 @@ index ad138a38340e8e8510d395f46c30ec4121d731bb..9294f05633acbe560df003333b7ef7d9
+ for (let i = 0; i < cc; i++) {
+ let child = this._resultNode.getChild(i);
+ if (PlacesUtils.nodeIsURI(child) || PlacesUtils.containerTypes.includes(child.type)) {
+ if (!(typeof ZenWorkspaces !== 'undefined' && ZenWorkspaces.isBookmarkInAnotherWorkspace(child))) {
+ if (!(typeof gZenWorkspaces !== 'undefined' && gZenWorkspaces.isBookmarkInAnotherWorkspace(child))) {
+ visibleNodes.push(child);
+ }
+ } else {

View file

@ -1,8 +1,18 @@
diff --git a/browser/components/preferences/main.inc.xhtml b/browser/components/preferences/main.inc.xhtml
index cdcf50ec1bc4a54c69f5baf4a6d40ab0c63a8121..87603323c2b0b9ea0c847a8a06e293a16c1252b8 100644
index f9129fb171362e81369056923bf25acbb87d2ad8..924bcd2cd66a5dfcf9c45aac0c63cd0257c21a2c 100644
--- a/browser/components/preferences/main.inc.xhtml
+++ b/browser/components/preferences/main.inc.xhtml
@@ -183,6 +183,7 @@
@@ -29,6 +29,9 @@
<vbox id="startupPageBox">
<checkbox id="browserRestoreSession"
data-l10n-id="startup-restore-windows-and-tabs"/>
+ <checkbox id="zenWorkspaceContinueWhereLeftOff"
+ data-l10n-id="zen-workspace-continue-where-left-off"
+ preference="zen.workspaces.continue-where-left-off"/>
#ifdef XP_WIN
<hbox id="windowsLaunchOnLoginBox" align="center" hidden="true">
<checkbox id="windowsLaunchOnLogin"
@@ -186,6 +189,7 @@
</groupbox>
<!-- Browser layout -->
@ -10,7 +20,7 @@ index cdcf50ec1bc4a54c69f5baf4a6d40ab0c63a8121..87603323c2b0b9ea0c847a8a06e293a1
<groupbox data-category="paneGeneral"
data-subcategory="layout"
hidden="true">
@@ -198,6 +199,7 @@
@@ -201,6 +205,7 @@
preference="sidebar.revamp"/>
<description class="indent" data-l10n-id="browser-layout-show-sidebar-desc"></description>
</groupbox>
@ -18,7 +28,7 @@ index cdcf50ec1bc4a54c69f5baf4a6d40ab0c63a8121..87603323c2b0b9ea0c847a8a06e293a1
<hbox id="languageAndAppearanceCategory"
class="subcategory"
@@ -411,6 +413,7 @@
@@ -421,6 +426,7 @@
languages-customize-add.label,
" />
</hbox>

View file

@ -1,5 +1,5 @@
diff --git a/browser/components/preferences/main.js b/browser/components/preferences/main.js
index aa339be9ba94ed776fa25f2d72f9e6b25dc86cd3..4c6c725942b3d6f2a42938d444ac7645526623cc 100644
index 2116a8a3b5746b79280f2d73b5e29b01c7a15993..448269adeab747fd2da419509e6923eefbb87d8a 100644
--- a/browser/components/preferences/main.js
+++ b/browser/components/preferences/main.js
@@ -389,7 +389,7 @@ function getBundleForLocales(newLocales) {

View file

@ -1,8 +1,8 @@
diff --git a/browser/components/preferences/preferences.js b/browser/components/preferences/preferences.js
index e4746e3408e68273126e6d2baf5afcf80721674b..e478aaf6bfefa6acd9062aeb3e4709ca0d5d779c 100644
index 6a575e3148de0c73f7ab7ff9afbd3ff179bce313..b7c2f2818358b7b6b6fc62b298dc67a66ebd9e3b 100644
--- a/browser/components/preferences/preferences.js
+++ b/browser/components/preferences/preferences.js
@@ -118,6 +118,7 @@ ChromeUtils.defineLazyGetter(this, "gSubDialog", function () {
@@ -117,6 +117,7 @@ ChromeUtils.defineLazyGetter(this, "gSubDialog", function () {
styleSheets: [
"chrome://browser/skin/preferences/dialog.css",
"chrome://browser/skin/preferences/preferences.css",
@ -10,7 +10,7 @@ index e4746e3408e68273126e6d2baf5afcf80721674b..e478aaf6bfefa6acd9062aeb3e4709ca
],
resizeCallback: async ({ title, frame }) => {
// Search within main document and highlight matched keyword.
@@ -197,6 +198,10 @@ function init_all() {
@@ -196,6 +197,10 @@ function init_all() {
register_module("paneSearch", gSearchPane);
register_module("panePrivacy", gPrivacyPane);
register_module("paneContainers", gContainersPane);

View file

@ -1,5 +1,5 @@
diff --git a/browser/components/preferences/preferences.xhtml b/browser/components/preferences/preferences.xhtml
index 43be2b6ac84827bd13723e0211a3ade401934591..513584d7e720451efdb87350ac07d8b2590c1705 100644
index b3b128cb5eb8c005c642965a8c8e5e68bf756e77..6e128d45c983b267e349b08097c56380dd04be3d 100644
--- a/browser/components/preferences/preferences.xhtml
+++ b/browser/components/preferences/preferences.xhtml
@@ -44,6 +44,8 @@
@ -11,7 +11,7 @@ index 43be2b6ac84827bd13723e0211a3ade401934591..513584d7e720451efdb87350ac07d8b2
<link rel="localization" href="branding/brand.ftl"/>
<link rel="localization" href="browser/browser.ftl"/>
<!-- Used by fontbuilder.js -->
@@ -105,6 +107,11 @@
@@ -104,6 +106,11 @@
<hbox flex="1">
<vbox class="navigation">
@ -23,7 +23,7 @@ index 43be2b6ac84827bd13723e0211a3ade401934591..513584d7e720451efdb87350ac07d8b2
<!-- category list -->
<richlistbox id="categories" data-l10n-id="category-list" data-l10n-attrs="aria-label">
<richlistitem id="category-general"
@@ -117,6 +124,50 @@
@@ -116,6 +123,50 @@
<label class="category-name" flex="1" data-l10n-id="pane-general-title"></label>
</richlistitem>
@ -74,7 +74,7 @@ index 43be2b6ac84827bd13723e0211a3ade401934591..513584d7e720451efdb87350ac07d8b2
<richlistitem id="category-home"
class="category"
value="paneHome"
@@ -228,11 +279,6 @@
@@ -227,11 +278,6 @@
<html:a href="about:policies" target="_blank" data-l10n-id="managed-notice"/>
</hbox>
</hbox>
@ -86,7 +86,7 @@ index 43be2b6ac84827bd13723e0211a3ade401934591..513584d7e720451efdb87350ac07d8b2
</hbox>
</hbox>
<vbox id="mainPrefPane">
@@ -246,6 +292,10 @@
@@ -245,6 +291,10 @@
#include sync.inc.xhtml
#include experimental.inc.xhtml
#include moreFromMozilla.inc.xhtml

View file

@ -14,30 +14,37 @@ var gZenMarketplaceManager = {
return;
}
if (!window.gZenMods) {
window.gZenMods = ZenMultiWindowFeature.currentBrowser.gZenMods;
}
header.appendChild(this._initDisableAll());
this._initImportExport();
this.__hasInitializedEvents = true;
await this._buildThemesList();
await this._buildModsList();
Services.prefs.addObserver(this.updatePref, this);
Services.prefs.addObserver(gZenMods.updatePref, this);
const checkForUpdateClick = (event) => {
if (event.target === checkForUpdates) {
event.preventDefault();
this._checkForThemeUpdates(event);
}
};
checkForUpdates.addEventListener('click', checkForUpdateClick);
document.addEventListener('ZenThemeMarketplace:CheckForUpdatesFinished', (event) => {
document.addEventListener('ZenModsMarketplace:CheckForUpdatesFinished', (event) => {
checkForUpdates.disabled = false;
const updates = event.detail.updates;
const success = document.getElementById('zenThemeMarketplaceUpdatesSuccess');
const error = document.getElementById('zenThemeMarketplaceUpdatesFailure');
if (updates) {
success.hidden = false;
error.hidden = true;
@ -48,13 +55,16 @@ var gZenMarketplaceManager = {
});
window.addEventListener('unload', () => {
Services.prefs.removeObserver(this.updatePref, this);
Services.prefs.removeObserver(gZenMods.updatePref, this);
this.__hasInitializedEvents = false;
document.removeEventListener('ZenThemeMarketplace:CheckForUpdatesFinished', this);
document.removeEventListener('ZenCheckForThemeUpdates', this);
document.removeEventListener('ZenModsMarketplace:CheckForUpdatesFinished', this);
document.removeEventListener('ZenCheckForModUpdates', this);
checkForUpdates.removeEventListener('click', checkForUpdateClick);
this.themesList.innerHTML = '';
this._doNotRebuildThemesList = false;
this.modsList.innerHTML = '';
this._doNotRebuildModsList = false;
});
},
@ -63,121 +73,98 @@ var gZenMarketplaceManager = {
const exportButton = document.getElementById('zenThemeMarketplaceExport');
if (importButton) {
importButton.addEventListener('click', async () => {
await this._importThemes();
});
importButton.addEventListener('click', this._importThemes.bind(this));
}
if (exportButton) {
exportButton.addEventListener('click', async () => {
await this._exportThemes();
});
exportButton.addEventListener('click', this._exportThemes.bind(this));
}
},
_initDisableAll() {
const areThemesDisabled = Services.prefs.getBoolPref('zen.themes.disable-all', false);
const browser = ZenThemesCommon.currentBrowser;
const areModsDisabled = Services.prefs.getBoolPref('zen.themes.disable-all', false);
const browser = ZenMultiWindowFeature.currentBrowser;
const mozToggle = document.createElement('moz-toggle');
mozToggle.className = 'zenThemeMarketplaceItemPreferenceToggle zenThemeMarketplaceDisableAllToggle';
mozToggle.pressed = !areThemesDisabled;
mozToggle.className =
'zenThemeMarketplaceItemPreferenceToggle zenThemeMarketplaceDisableAllToggle';
mozToggle.pressed = !areModsDisabled;
browser.document.l10n.setAttributes(mozToggle, `zen-theme-disable-all-${!areThemesDisabled ? 'enabled' : 'disabled'}`);
browser.document.l10n.setAttributes(
mozToggle,
`zen-theme-disable-all-${!areModsDisabled ? 'enabled' : 'disabled'}`
);
mozToggle.addEventListener('toggle', async (event) => {
const { pressed = false } = event.target || {};
this.themesList.style.display = pressed ? '' : 'none';
this.modsList.style.display = pressed ? '' : 'none';
Services.prefs.setBoolPref('zen.themes.disable-all', !pressed);
browser.document.l10n.setAttributes(mozToggle, `zen-theme-disable-all-${pressed ? 'enabled' : 'disabled'}`);
browser.document.l10n.setAttributes(
mozToggle,
`zen-theme-disable-all-${pressed ? 'enabled' : 'disabled'}`
);
});
if (areThemesDisabled) {
this.themesList.style.display = 'none';
if (areModsDisabled) {
this.modsList.style.display = 'none';
}
return mozToggle;
},
async observe() {
ZenThemesCommon.resetThemesCache();
await this._buildThemesList();
await this._buildModsList();
},
_checkForThemeUpdates(event) {
// Send a message to the child to check for theme updates.
event.target.disabled = true;
// send an event that will be listened by the child process.
document.dispatchEvent(new CustomEvent('ZenCheckForThemeUpdates'));
document.dispatchEvent(new CustomEvent('ZenCheckForModUpdates'));
},
get updatePref() {
return 'zen.themes.updated-value-observer';
},
triggerThemeUpdate() {
Services.prefs.setBoolPref(this.updatePref, !Services.prefs.getBoolPref(this.updatePref));
},
get themesList() {
if (!this._themesList) {
this._themesList = document.getElementById('zenThemeMarketplaceList');
get modsList() {
if (!this._modsList) {
this._modsList = document.getElementById('zenThemeMarketplaceList');
}
return this._themesList;
return this._modsList;
},
async removeTheme(themeId) {
const themePath = ZenThemesCommon.getThemeFolder(themeId);
async removeMod(modId) {
await gZenMods.removeMod(modId);
console.info(`[ZenThemeMarketplaceParent:settings]: Removing theme ${themePath}`);
await IOUtils.remove(themePath, { recursive: true, ignoreAbsent: true });
const themes = await ZenThemesCommon.getThemes();
delete themes[themeId];
await IOUtils.writeJSON(ZenThemesCommon.themesDataFile, themes);
this.triggerThemeUpdate();
gZenMods.triggerModsUpdate();
},
async disableTheme(themeId) {
const themes = await ZenThemesCommon.getThemes();
const theme = themes[themeId];
async disableMod(modId) {
await gZenMods.disableMod(modId);
console.log(`[ZenThemeMarketplaceParent:settings]: Disabling theme ${theme.name}`);
theme.enabled = false;
await IOUtils.writeJSON(ZenThemesCommon.themesDataFile, themes);
this._doNotRebuildThemesList = true;
this.triggerThemeUpdate();
this._doNotRebuildModsList = true;
gZenMods.triggerModsUpdate();
},
async enableTheme(themeId) {
const themes = await ZenThemesCommon.getThemes();
const theme = themes[themeId];
async enableMod(modId) {
await gZenMods.enableMod(modId);
console.log(`[ZenThemeMarketplaceParent:settings]: Enabling theme ${theme.name}`);
theme.enabled = true;
await IOUtils.writeJSON(ZenThemesCommon.themesDataFile, themes);
this._doNotRebuildThemesList = true;
this.triggerThemeUpdate();
this._doNotRebuildModsList = true;
gZenMods.triggerModsUpdate();
},
_triggerBuildUpdateWithoutRebuild() {
this._doNotRebuildThemesList = true;
this.triggerThemeUpdate();
this._doNotRebuildModsList = true;
gZenMods.triggerModsUpdate();
},
async _importThemes() {
const errorBox = document.getElementById('zenThemeMarketplaceImportFailure');
const successBox = document.getElementById('zenThemeMarketplaceImportSuccess');
successBox.hidden = true;
errorBox.hidden = true;
const input = document.createElement('input');
input.type = 'file';
input.accept = '.json';
input.style.display = 'none';
@ -185,45 +172,52 @@ var gZenMarketplaceManager = {
input.setAttribute('accept', '.json');
let timeout;
const filePromise = new Promise((resolve) => {
input.addEventListener('change', (event) => {
if (timeout) clearTimeout(timeout);
if (timeout) {
clearTimeout(timeout);
}
const file = event.target.files[0];
resolve(file);
});
timeout = setTimeout(() => {
console.warn('[ZenThemeMarketplaceParent:settings]: Import timeout reached, aborting.');
console.warn('[ZenSettings:ZenMods]: Import timeout reached, aborting.');
resolve(null);
}, 60000);
});
input.addEventListener('cancel', () => {
console.warn('[ZenSettings:ZenMods]: Import cancelled by user.');
clearTimeout(timeout);
});
input.click();
try {
const file = await filePromise;
if (!file) {
return;
}
const content = await file.text();
const themes = JSON.parse(content);
const existingThemes = await ZenThemesCommon.getThemes();
const uniqueThemes = { ...themes, ...existingThemes };
const mods = JSON.parse(content);
console.log(`[ZenThemeMarketplaceParent:settings]: Importing ${Object.keys(themes).length} themes`);
await IOUtils.writeJSON(ZenThemesCommon.themesDataFile, uniqueThemes);
this.triggerThemeUpdate();
successBox.hidden = false;
let buttonIndex = await confirmRestartPrompt(true, 1, true, true);
if (buttonIndex == CONFIRM_RESTART_PROMPT_RESTART_NOW) {
Services.startup.quit(Ci.nsIAppStartup.eAttemptQuit | Ci.nsIAppStartup.eRestart);
for (const mod of Object.values(mods)) {
mod.modId = mod.id;
await window.ZenInstallMod(mod);
}
} catch (error) {
console.error('[ZenThemeMarketplaceParent:settings]: Error while importing themes:', error);
console.error('[ZenSettings:ZenMods]: Error while importing mods:', error);
errorBox.hidden = false;
} finally {
if (input) input.remove();
}
if (input) {
input.remove();
}
},
@ -234,51 +228,54 @@ var gZenMarketplaceManager = {
successBox.hidden = true;
errorBox.hidden = true;
let a, url;
let temporalAnchor, temporalUrl;
try {
const themes = await ZenThemesCommon.getThemes();
const themesJson = JSON.stringify(themes, null, 2);
const blob = new Blob([themesJson], { type: 'application/json' });
url = URL.createObjectURL(blob);
// Creating a link to download the JSON file
a = document.createElement('a');
a.href = url;
a.download = 'zen-themes-export.json';
const mods = await gZenMods.getMods();
const modsJson = JSON.stringify(mods, null, 2);
const blob = new Blob([modsJson], { type: 'application/json' });
temporalUrl = URL.createObjectURL(blob);
// Creating a link to download the JSON file
temporalAnchor = document.createElement('a');
temporalAnchor.href = temporalUrl;
temporalAnchor.download = 'zen-mods-export.json';
document.body.appendChild(temporalAnchor);
temporalAnchor.click();
temporalAnchor.remove();
document.body.appendChild(a);
a.click();
a.remove();
successBox.hidden = false;
} catch (error) {
console.error('[ZenThemeMarketplaceParent:settings]: Error while exporting themes:', error);
console.error('[ZenSettings:ZenMods]: Error while exporting mods:', error);
errorBox.hidden = false;
} finally {
if (a) {
a.remove();
}
if (url) {
URL.revokeObjectURL(url);
}
}
if (temporalAnchor) {
temporalAnchor.remove();
}
if (temporalUrl) {
URL.revokeObjectURL(temporalUrl);
}
},
async _buildThemesList() {
if (!this.themesList) {
async _buildModsList() {
if (!this.modsList) {
return;
}
if (this._doNotRebuildThemesList) {
this._doNotRebuildThemesList = false;
if (this._doNotRebuildModsList) {
this._doNotRebuildModsList = false;
return;
}
const themes = await ZenThemesCommon.getThemes();
const mods = await gZenMods.getMods();
const browser = ZenMultiWindowFeature.currentBrowser;
const themeList = document.createElement('div');
const modList = document.createElement('div');
for (const theme of Object.values(themes).sort((a, b) => a.name.localeCompare(b.name))) {
const sanitizedName = `theme-${theme.name?.replaceAll(/\s/g, '-')?.replaceAll(/[^A-z_-]+/g, '')}`;
const isThemeEnabled = theme.enabled === undefined || theme.enabled;
for (const mod of Object.values(mods).sort((a, b) => a.name.localeCompare(b.name))) {
const sanitizedName = gZenMods.sanitizeModName(mod.name);
const isModEnabled = mod.enabled === undefined || mod.enabled;
const fragment = window.MozXULElement.parseXULToFragment(`
<vbox class="zenThemeMarketplaceItem">
<vbox class="zenThemeMarketplaceItemContent">
@ -288,14 +285,14 @@ var gZenMarketplaceManager = {
<description class="description-deemphasized zenThemeMarketplaceItemDescription"></description>
</vbox>
<hbox class="zenThemeMarketplaceItemActions">
${theme.preferences ? `<button id="zenThemeMarketplaceItemConfigureButton-${sanitizedName}" class="zenThemeMarketplaceItemConfigureButton" hidden="true"></button>` : ''}
${theme.homepage ? `<button id="zenThemeMarketplaceItemHomePageLink-${sanitizedName}" class="zenThemeMarketplaceItemHomepageButton" zen-theme-id="${theme.id}"></button>` : ''}
<button class="zenThemeMarketplaceItemUninstallButton" data-l10n-id="zen-theme-marketplace-remove-button" zen-theme-id="${theme.id}"></button>
${mod.preferences ? `<button id="zenThemeMarketplaceItemConfigureButton-${sanitizedName}" class="zenThemeMarketplaceItemConfigureButton" hidden="true"></button>` : ''}
${mod.homepage ? `<button id="zenThemeMarketplaceItemHomePageLink-${sanitizedName}" class="zenThemeMarketplaceItemHomepageButton" zen-mod-id="${mod.id}"></button>` : ''}
<button class="zenThemeMarketplaceItemUninstallButton" data-l10n-id="zen-theme-marketplace-remove-button" zen-mod-id="${mod.id}"></button>
</hbox>
</vbox>
`);
const themeName = `${theme.name} (v${theme.version || '1.0.0'})`;
const modName = `${mod.name} (v${mod.version ?? '1.0.0'})`;
const base = fragment.querySelector('.zenThemeMarketplaceItem');
const baseHeader = fragment.querySelector('#zenThemeMarketplaceItemContentHeader');
@ -310,7 +307,7 @@ var gZenMarketplaceManager = {
mainDialogDiv.className = 'zenThemeMarketplaceItemPreferenceDialog';
headerDiv.className = 'zenThemeMarketplaceItemPreferenceDialogTopBar';
headerTitle.textContent = themeName;
headerTitle.textContent = modName;
browser.document.l10n.setAttributes(headerTitle, 'zen-theme-marketplace-theme-header-title', {
name: sanitizedName,
});
@ -321,10 +318,10 @@ var gZenMarketplaceManager = {
contentDiv.className = 'zenThemeMarketplaceItemPreferenceDialogContent';
mozToggle.className = 'zenThemeMarketplaceItemPreferenceToggle';
mozToggle.pressed = isThemeEnabled;
mozToggle.pressed = isModEnabled;
browser.document.l10n.setAttributes(
mozToggle,
`zen-theme-marketplace-toggle-${isThemeEnabled ? 'enabled' : 'disabled'}-button`
`zen-theme-marketplace-toggle-${isModEnabled ? 'enabled' : 'disabled'}-button`
);
baseHeader.appendChild(mozToggle);
@ -342,27 +339,37 @@ var gZenMarketplaceManager = {
});
mozToggle.addEventListener('toggle', async (event) => {
const themeId = event.target
const modId = event.target
.closest('.zenThemeMarketplaceItem')
.querySelector('.zenThemeMarketplaceItemUninstallButton')
.getAttribute('zen-theme-id');
.getAttribute('zen-mod-id');
event.target.setAttribute('disabled', true);
if (!event.target.hasAttribute('pressed')) {
await this.disableTheme(themeId);
await this.disableMod(modId);
browser.document.l10n.setAttributes(mozToggle, 'zen-theme-marketplace-toggle-disabled-button');
browser.document.l10n.setAttributes(
mozToggle,
'zen-theme-marketplace-toggle-disabled-button'
);
if (theme.preferences) {
document.getElementById(`zenThemeMarketplaceItemConfigureButton-${sanitizedName}`).setAttribute('hidden', true);
if (mod.preferences) {
document
.getElementById(`zenThemeMarketplaceItemConfigureButton-${sanitizedName}`)
.setAttribute('hidden', true);
}
} else {
await this.enableTheme(themeId);
await this.enableMod(modId);
browser.document.l10n.setAttributes(mozToggle, 'zen-theme-marketplace-toggle-enabled-button');
browser.document.l10n.setAttributes(
mozToggle,
'zen-theme-marketplace-toggle-enabled-button'
);
if (theme.preferences) {
document.getElementById(`zenThemeMarketplaceItemConfigureButton-${sanitizedName}`).removeAttribute('hidden');
if (mod.preferences) {
document
.getElementById(`zenThemeMarketplaceItemConfigureButton-${sanitizedName}`)
.removeAttribute('hidden');
}
}
setTimeout(() => {
@ -371,39 +378,47 @@ var gZenMarketplaceManager = {
}, 400);
});
fragment.querySelector('.zenThemeMarketplaceItemTitle').textContent = themeName;
fragment.querySelector('.zenThemeMarketplaceItemDescription').textContent = theme.description;
fragment.querySelector('.zenThemeMarketplaceItemUninstallButton').addEventListener('click', async (event) => {
const [msg] = await document.l10n.formatValues([{ id: 'zen-theme-marketplace-remove-confirmation' }]);
fragment.querySelector('.zenThemeMarketplaceItemTitle').textContent = modName;
fragment.querySelector('.zenThemeMarketplaceItemDescription').textContent = mod.description;
fragment
.querySelector('.zenThemeMarketplaceItemUninstallButton')
.addEventListener('click', async (event) => {
const [msg] = await document.l10n.formatValues([
{ id: 'zen-theme-marketplace-remove-confirmation' },
]);
if (!confirm(msg)) {
return;
}
if (!confirm(msg)) {
return;
}
await this.removeTheme(event.target.getAttribute('zen-theme-id'));
});
await this.removeMod(event.target.getAttribute('zen-mod-id'));
});
if (theme.homepage) {
if (mod.homepage) {
const homepageButton = fragment.querySelector('.zenThemeMarketplaceItemHomepageButton');
homepageButton.addEventListener('click', () => {
// open the homepage url in a new tab
const url = theme.homepage;
const url = mod.homepage;
window.open(url, '_blank');
});
}
if (theme.preferences) {
fragment.querySelector('.zenThemeMarketplaceItemConfigureButton').addEventListener('click', () => {
dialog.showModal();
});
if (mod.preferences) {
fragment
.querySelector('.zenThemeMarketplaceItemConfigureButton')
.addEventListener('click', () => {
dialog.showModal();
});
if (isThemeEnabled) {
fragment.querySelector('.zenThemeMarketplaceItemConfigureButton').removeAttribute('hidden');
if (isModEnabled) {
fragment
.querySelector('.zenThemeMarketplaceItemConfigureButton')
.removeAttribute('hidden');
}
}
const preferences = await ZenThemesCommon.getThemePreferences(theme);
const preferences = await gZenMods.getModPreferences(mod);
if (preferences.length > 0) {
const preferencesWrapper = document.createXULElement('vbox');
@ -440,7 +455,10 @@ var gZenMarketplaceManager = {
if (placeholder) {
defaultItem.setAttribute('label', placeholder || '-');
} else {
browser.document.l10n.setAttributes(defaultItem, 'zen-theme-marketplace-dropdown-default-label');
browser.document.l10n.setAttributes(
defaultItem,
'zen-theme-marketplace-dropdown-default-label'
);
}
menupopup.appendChild(defaultItem);
@ -452,7 +470,7 @@ var gZenMarketplaceManager = {
if (!['string', 'number'].includes(valueType)) {
console.log(
`[ZenThemeMarketplaceParent:settings]: Warning, invalid data type received (${valueType}), skipping.`
`[ZenSettings:ZenMods]: Warning, invalid data type received (${valueType}), skipping.`
);
continue;
}
@ -508,7 +526,9 @@ var gZenMarketplaceManager = {
</hbox>
`);
const checkboxElement = checkbox.querySelector('.zenThemeMarketplaceItemPreferenceCheckbox');
const checkboxElement = checkbox.querySelector(
'.zenThemeMarketplaceItemPreferenceCheckbox'
);
checkboxElement.setAttribute('label', label);
checkboxElement.setAttribute('tooltiptext', property);
checkboxElement.setAttribute('zen-pref', property);
@ -554,21 +574,28 @@ var gZenMarketplaceManager = {
if (placeholder) {
input.setAttribute('placeholder', placeholder || '-');
} else {
browser.document.l10n.setAttributes(input, 'zen-theme-marketplace-input-default-placeholder');
browser.document.l10n.setAttributes(
input,
'zen-theme-marketplace-input-default-placeholder'
);
}
input.addEventListener(
'input',
ZenThemesCommon.debounce((event) => {
'change',
gZenMods.debounce((event) => {
const value = event.target.value;
Services.prefs.setStringPref(property, value);
this._triggerBuildUpdateWithoutRebuild();
if (value === '') {
browser.document.querySelector(':root').style.removeProperty(`--${sanitizedProperty}`);
browser.document
.querySelector(':root')
.style.removeProperty(`--${sanitizedProperty}`);
} else {
browser.document.querySelector(':root').style.setProperty(`--${sanitizedProperty}`, value);
browser.document
.querySelector(':root')
.style.setProperty(`--${sanitizedProperty}`, value);
}
}, 500)
);
@ -589,18 +616,18 @@ var gZenMarketplaceManager = {
default:
console.log(
`[ZenThemeMarketplaceParent:settings]: Warning, unknown preference type received (${type}), skipping.`
`[ZenSettings:ZenMods]: Warning, unknown preference type received (${type}), skipping.`
);
continue;
}
}
contentDiv.appendChild(preferencesWrapper);
}
themeList.appendChild(fragment);
modList.appendChild(fragment);
}
this.themesList.replaceChildren(...themeList.children);
themeList.remove();
this.modsList.replaceChildren(...modList.children);
modList.remove();
},
};
@ -608,6 +635,19 @@ const kZenExtendedSidebar = 'zen.view.sidebar-expanded';
const kZenSingleToolbar = 'zen.view.use-single-toolbar';
var gZenLooksAndFeel = {
kZenColors: [
'#aac7ff',
'#74d7cb',
'#a0d490',
'#dec663',
'#ffb787',
'#dec1b1',
'#ffb1c0',
'#ddbfc3',
'#f6b0ea',
'#d4bbff',
],
init() {
if (this.__hasInitialized) return;
this.__hasInitialized = true;
@ -638,7 +678,11 @@ var gZenLooksAndFeel = {
layout.classList.remove('selected');
if (layout.getAttribute('layout') == 'single' && isSingleToolbar) {
layout.classList.add('selected');
} else if (layout.getAttribute('layout') == 'multiple' && !isSingleToolbar && isExtendedSidebar) {
} else if (
layout.getAttribute('layout') == 'multiple' &&
!isSingleToolbar &&
isExtendedSidebar
) {
layout.classList.add('selected');
} else if (layout.getAttribute('layout') == 'collapsed' && !isExtendedSidebar) {
layout.classList.add('selected');
@ -658,7 +702,10 @@ var gZenLooksAndFeel = {
layout.classList.add('selected');
Services.prefs.setBoolPref(kZenExtendedSidebar, layout.getAttribute('layout') != 'collapsed');
Services.prefs.setBoolPref(
kZenExtendedSidebar,
layout.getAttribute('layout') != 'collapsed'
);
Services.prefs.setBoolPref(kZenSingleToolbar, layout.getAttribute('layout') == 'single');
});
}
@ -702,7 +749,8 @@ var gZenLooksAndFeel = {
_initializeColorPicker(accentColor) {
let elem = document.getElementById('zenLooksAndFeelColorOptions');
elem.innerHTML = '';
for (let color of ZenThemesCommon.kZenColors) {
for (let color of this.kZenColors) {
let colorElemParen = document.createElement('div');
let colorElem = document.createElement('div');
colorElemParen.classList.add('zenLooksAndFeelColorOptionParen');
@ -726,7 +774,7 @@ var gZenLooksAndFeel = {
},
_getInitialAccentColor() {
return Services.prefs.getStringPref('zen.theme.accent-color', ZenThemesCommon.kZenColors[0]);
return Services.prefs.getStringPref('zen.theme.accent-color', this.kZenColors[0]);
},
};
@ -742,13 +790,19 @@ var gZenWorkspacesSettings = {
};
Services.prefs.addObserver('zen.tab-unloader.enabled', tabsUnloaderPrefListener);
Services.prefs.addObserver('zen.glance.enabled', tabsUnloaderPrefListener); // We can use the same listener for both prefs
Services.prefs.addObserver('zen.workspaces.container-specific-essentials-enabled', tabsUnloaderPrefListener);
Services.prefs.addObserver(
'zen.workspaces.container-specific-essentials-enabled',
tabsUnloaderPrefListener
);
Services.prefs.addObserver('zen.glance.activation-method', tabsUnloaderPrefListener);
window.addEventListener('unload', () => {
Services.prefs.removeObserver('zen.tab-unloader.enabled', tabsUnloaderPrefListener);
Services.prefs.removeObserver('zen.glance.enabled', tabsUnloaderPrefListener);
Services.prefs.removeObserver('zen.glance.activation-method', tabsUnloaderPrefListener);
Services.prefs.removeObserver('zen.workspaces.container-specific-essentials-enabled', tabsUnloaderPrefListener);
Services.prefs.removeObserver(
'zen.workspaces.container-specific-essentials-enabled',
tabsUnloaderPrefListener
);
});
},
};
@ -808,6 +862,11 @@ var zenMissingKeyboardShortcutL10n = {
key_accessibility: 'zen-devtools-toggle-accessibility-shortcut',
};
var zenIgnoreKeyboardShortcutL10n = [
'zen-full-zoom-reduce-shortcut-alt-b',
'zen-full-zoom-reduce-shortcut-alt-a',
];
var gZenCKSSettings = {
async init() {
await this._initializeCKS();
@ -871,6 +930,10 @@ var gZenCKSSettings = {
const labelValue = zenMissingKeyboardShortcutL10n[keyID] ?? l10nID;
if (zenIgnoreKeyboardShortcutL10n.includes(labelValue)) {
continue;
}
let fragment = window.MozXULElement.parseXULToFragment(`
<hbox class="${ZEN_CKS_CLASS_BASE}">
<label class="${ZEN_CKS_LABEL_CLASS}" for="${ZEN_CKS_CLASS_BASE}-${keyID}"></label>
@ -930,6 +993,9 @@ var gZenCKSSettings = {
sibling.remove();
}
}
if (target.classList.contains(`${ZEN_CKS_INPUT_FIELD_CLASS}-not-set`)) {
target.label = 'Not set';
}
});
const groupElem = wrapper.querySelector(`[data-group="${ZEN_CKS_GROUP_PREFIX}-${group}"]`);
@ -966,8 +1032,16 @@ var gZenCKSSettings = {
event.preventDefault();
let input = document.querySelector(`.${ZEN_CKS_INPUT_FIELD_CLASS}[${KEYBIND_ATTRIBUTE_KEY}="${this._currentActionID}"]`);
const modifiers = new KeyShortcutModifiers(event.ctrlKey, event.altKey, event.shiftKey, event.metaKey, false);
let input = document.querySelector(
`.${ZEN_CKS_INPUT_FIELD_CLASS}[${KEYBIND_ATTRIBUTE_KEY}="${this._currentActionID}"]`
);
const modifiers = new KeyShortcutModifiers(
event.ctrlKey,
event.altKey,
event.shiftKey,
event.metaKey,
false
);
const modifiersActive = modifiers.areAnyActive();
input.classList.remove(`${ZEN_CKS_INPUT_FIELD_CLASS}-not-set`);
@ -979,6 +1053,7 @@ var gZenCKSSettings = {
shortcut = shortcut.replace(/Ctrl|Control|Shift|Alt|Option|Cmd|Meta/, ''); // Remove all modifiers
if (shortcut == 'Tab' && !modifiersActive) {
input.classList.remove(`${ZEN_CKS_INPUT_FIELD_CLASS}-not-set`);
input.classList.remove(`${ZEN_CKS_INPUT_FIELD_CLASS}-editing`);
this._latestValidKey = null;
return;
@ -1006,6 +1081,9 @@ var gZenCKSSettings = {
input.classList.remove(`${ZEN_CKS_INPUT_FIELD_CLASS}-editing`);
this._editDone(this._latestValidKey, this._latestModifier);
if (this.name == 'Not set') {
input.classList.add(`${ZEN_CKS_INPUT_FIELD_CLASS}-not-set`);
}
this._latestValidKey = null;
this._latestModifier = null;
input.classList.remove(`${ZEN_CKS_INPUT_FIELD_CLASS}-invalid`);
@ -1027,6 +1105,10 @@ var gZenCKSSettings = {
this._latestValidKey = null;
this._latestModifier = null;
this._hasSafed = true;
const sibling = input.nextElementSibling;
if (sibling && sibling.classList.contains(`${ZEN_CKS_CLASS_BASE}-conflict`)) {
sibling.remove();
}
return;
}
@ -1120,11 +1202,6 @@ Preferences.addAll([
type: 'bool',
default: true,
},
{
id: 'zen.essentials.enabled',
type: 'bool',
default: true,
},
{
id: 'zen.workspaces.container-specific-essentials-enabled',
type: 'bool',
@ -1150,4 +1227,14 @@ Preferences.addAll([
type: 'bool',
default: true,
},
{
id: 'zen.workspaces.continue-where-left-off',
type: 'bool',
default: false,
},
{
id: 'zen.mods.auto-update',
type: 'bool',
default: true,
},
]);

View file

@ -78,9 +78,6 @@
</hbox>
<groupbox id="zenThemeGroup" data-category="paneZenLooks" hidden="true" class="highlighting-group">
<label><html:h2 data-l10n-id="zen-look-and-feel-urlbar-header"/></label>
<description class="description-deemphasized" data-l10n-id="zen-look-and-feel-urlbar-description" />
<label><html:h2 data-l10n-id="zen-look-and-feel-compact-view-header"/></label>
<description class="description-deemphasized" data-l10n-id="zen-look-and-feel-compact-view-description" />

View file

@ -1,5 +1,4 @@
<script src="chrome://browser/content/zen-components/ZenCommonUtils.mjs" defer=""/>
<script src="chrome://browser/content/zen-components/ZenThemesCommon.mjs" defer=""/>
<html:template id="template-paneZenMarketplace">
<hbox id="ZenMarketplaceCategory"
class="subcategory"
@ -21,6 +20,10 @@
<button id="zenThemeMarketplaceCheckForUpdates" data-l10n-id="zen-theme-marketplace-check-for-updates-button" />
</hbox>
<checkbox id="zenWorkspacesForceContainerTabsToWorkspace"
data-l10n-id="zen-themes-auto-update"
preference="zen.mods.auto-update"/>
<description class="description-deemphasized" data-l10n-id="zen-theme-marketplace-updates-success" hidden="true" id="zenThemeMarketplaceUpdatesSuccess" />
<description class="description-deemphasized" data-l10n-id="zen-theme-marketplace-updates-failure" hidden="true" id="zenThemeMarketplaceUpdatesFailure" />

View file

@ -3,7 +3,6 @@
class="subcategory"
hidden="true"
data-category="paneZenTabManagement">
<html:h1 data-l10n-id="pane-workspaces-title"/>
</hbox>
<hbox id="zenTabManagementCategory"
@ -32,26 +31,6 @@
<html:h1 data-l10n-id="pane-zen-tabs-unloader-title"/>
</hbox>
<groupbox id="zenTabsUnloadGroup" data-category="paneZenTabManagement" hidden="true" class="highlighting-group">
<label><html:h2 data-l10n-id="zen-tabs-unloader-header"/></label>
<description class="description-deemphasized" data-l10n-id="zen-tabs-unloader-description" />
<checkbox id="zenTabsUnloadActivate"
data-l10n-id="zen-tabs-unloader-enabled"
preference="zen.tab-unloader.enabled"/>
<label><html:h2 data-l10n-id="zen-tabs-unloader-unload-delay"/></label>
<hbox id="zenTabsUnloadDelayContainer">
<description class="description-deemphasized" data-l10n-id="zen-tabs-unloader-unload-delay-description" />
<html:input id="zenTabsUnloadDelay"
type="number"
min="1"
max="1000"
preference="zen.tab-unloader.timeout-minutes"/>
</hbox>
</groupbox>
<hbox id="zenPinnedTabsManagerCategory"
class="subcategory"
hidden="true"

View file

@ -0,0 +1,13 @@
diff --git a/browser/components/search/SearchUIUtils.sys.mjs b/browser/components/search/SearchUIUtils.sys.mjs
index ecebaad93acfc9eb7dfd9d9f56fec2e1a4abe392..8bb1348b3258dbc518d23ec39181a81f87fc8c1e 100644
--- a/browser/components/search/SearchUIUtils.sys.mjs
+++ b/browser/components/search/SearchUIUtils.sys.mjs
@@ -403,7 +403,7 @@ export var SearchUIUtils = {
triggeringSearchEngine: engine.name,
},
});
-
+ window.gZenGlanceManager?.onSearchSelectCommand(where);
return { engine, url: submission.uri };
},

View file

@ -1,8 +1,28 @@
diff --git a/browser/components/sessionstore/SessionStore.sys.mjs b/browser/components/sessionstore/SessionStore.sys.mjs
index 5633e5032f5d50c70512187d27e045b579978927..dd7aa4827eaa809dadc7e1fe6cdd1083e79f383a 100644
index 8c6047e1ada5a22e57e1e665965237c9e22641d7..8d0585e738a5a758ebbddfa0787c71d634dadd4d 100644
--- a/browser/components/sessionstore/SessionStore.sys.mjs
+++ b/browser/components/sessionstore/SessionStore.sys.mjs
@@ -3202,7 +3202,7 @@ var SessionStoreInternal = {
@@ -2088,7 +2088,6 @@ var SessionStoreInternal = {
if (closedWindowState) {
let newWindowState;
if (
- AppConstants.platform == "macosx" ||
!lazy.SessionStartup.willRestore()
) {
// We want to split the window up into pinned tabs and unpinned tabs.
@@ -2303,11 +2302,9 @@ var SessionStoreInternal = {
tabbrowser.selectedTab.label;
}
- if (AppConstants.platform != "macosx") {
// Until we decide otherwise elsewhere, this window is part of a series
// of closing windows to quit.
winData._shouldRestore = true;
- }
// Store the window's close date to figure out when each individual tab
// was closed. This timestamp should allow re-arranging data based on how
@@ -3216,7 +3213,7 @@ var SessionStoreInternal = {
if (!isPrivateWindow && tabState.isPrivate) {
return;
}
@ -11,22 +31,33 @@ index 5633e5032f5d50c70512187d27e045b579978927..dd7aa4827eaa809dadc7e1fe6cdd1083
return;
}
@@ -3911,6 +3911,9 @@ var SessionStoreInternal = {
@@ -3925,6 +3922,11 @@ var SessionStoreInternal = {
Math.min(tabState.index, tabState.entries.length)
);
tabState.pinned = false;
+ tabState.zenEssential = false;
+ tabState.zenPinnedId = null;
+ tabState.zenIsGlance = false;
+ tabState.zenGlanceId = null;
+ tabState.zenHasStaticLabel = false;
if (inBackground === false) {
aWindow.gBrowser.selectedTab = newTab;
@@ -5416,14 +5419,15 @@ var SessionStoreInternal = {
@@ -5239,7 +5241,7 @@ var SessionStoreInternal = {
}
let workspaceID = aWindow.getWorkspaceID();
- if (workspaceID) {
+ if (workspaceID && !(this.isLastRestorableWindow() && AppConstants.platform == "macosx")) {
winData.workspaceID = workspaceID;
}
},
@@ -5430,14 +5432,15 @@ var SessionStoreInternal = {
}
let tabbrowser = aWindow.gBrowser;
- let tabs = tabbrowser.tabs;
+ let tabs = aWindow.ZenWorkspaces.allStoredTabs;
+ let tabs = aWindow.gZenWorkspaces.allStoredTabs;
/** @type {WindowStateData} */
let winData = this._windows[aWindow.__SSi];
let tabsData = (winData.tabs = []);
@ -39,16 +70,29 @@ index 5633e5032f5d50c70512187d27e045b579978927..dd7aa4827eaa809dadc7e1fe6cdd1083
continue;
}
let tabData = lazy.TabState.collect(tab, TAB_CUSTOM_VALUES.get(tab));
@@ -5442,7 +5446,7 @@ var SessionStoreInternal = {
@@ -5456,8 +5459,8 @@ var SessionStoreInternal = {
// We don't store the Firefox View tab in Session Store, so if it was the last selected "tab" when
// a window is closed, point to the first item in the tab strip instead (it will never be the Firefox View tab,
// since it's only inserted into the tab strip after it's selected).
- if (aWindow.FirefoxViewHandler.tab?.selected) {
- selectedIndex = 1;
+ if (aWindow.FirefoxViewHandler.tab?.selected || tabbrowser.selectedTab.hasAttribute("zen-empty-tab")) {
selectedIndex = 1;
+ selectedIndex = 0;
winData.title = tabbrowser.tabs[0].label;
}
@@ -5599,6 +5603,7 @@ var SessionStoreInternal = {
winData.selected = selectedIndex;
@@ -5569,8 +5572,8 @@ var SessionStoreInternal = {
// selectTab represents.
let selectTab = 0;
if (overwriteTabs) {
- selectTab = parseInt(winData.selected || 1, 10);
- selectTab = Math.max(selectTab, 1);
+ selectTab = parseInt(winData.selected || 0, 10);
+ selectTab = Math.max(selectTab, 0);
selectTab = Math.min(selectTab, winData.tabs.length);
}
@@ -5613,6 +5616,7 @@ var SessionStoreInternal = {
winData.tabs,
winData.groups ?? []
);
@ -56,12 +100,13 @@ index 5633e5032f5d50c70512187d27e045b579978927..dd7aa4827eaa809dadc7e1fe6cdd1083
this._log.debug(
`restoreWindow, createTabsForSessionRestore returned ${tabs.length} tabs`
);
@@ -6148,8 +6153,23 @@ var SessionStoreInternal = {
@@ -6162,6 +6166,22 @@ var SessionStoreInternal = {
// Most of tabData has been restored, now continue with restoring
// attributes that may trigger external events.
+ if (tabData.zenEssential) {
+ tab.setAttribute("zen-essential", "true");
+ tabData.pinned = true; // Essential tabs are always pinned.
+ }
+ if (tabData.zenIsEmpty) {
+ tab.setAttribute("zen-empty-tab", "true");
@ -76,8 +121,5 @@ index 5633e5032f5d50c70512187d27e045b579978927..dd7aa4827eaa809dadc7e1fe6cdd1083
+ tab.setAttribute("zenDefaultUserContextId", true);
+ }
- if (tabData.pinned) {
+ if (tabData.pinned || tabData.zenEssential) {
if (tabData.pinned) {
tabbrowser.pinTab(tab);
} else {
tabbrowser.unpinTab(tab);

View file

@ -1,8 +1,8 @@
diff --git a/browser/components/sessionstore/TabState.sys.mjs b/browser/components/sessionstore/TabState.sys.mjs
index 8f7ed557e6aa61e7e16ed4a8d785ad5fe651b3d8..254849e13f7566029dc780c45e376e0f0d427cb5 100644
index 8f7ed557e6aa61e7e16ed4a8d785ad5fe651b3d8..76f4cf5aef30cb580ef0295fe6928b5a6a362f4b 100644
--- a/browser/components/sessionstore/TabState.sys.mjs
+++ b/browser/components/sessionstore/TabState.sys.mjs
@@ -84,6 +84,16 @@ class _TabState {
@@ -84,6 +84,18 @@ class _TabState {
tabData.groupId = tab.group.id;
}
@ -15,6 +15,8 @@ index 8f7ed557e6aa61e7e16ed4a8d785ad5fe651b3d8..254849e13f7566029dc780c45e376e0f
+ tabData.zenPinnedIcon = tab.getAttribute("zen-pinned-icon");
+ tabData.zenIsEmpty = tab.hasAttribute("zen-empty-tab");
+ tabData.zenHasStaticLabel = tab.hasAttribute("zen-has-static-label");
+ tabData.zenGlanceId = tab.getAttribute("glance-id");
+ tabData.zenIsGlance = tab.hasAttribute("zen-glance-tab");
+
tabData.searchMode = tab.ownerGlobal.gURLBar.getSearchMode(browser, true);

View file

@ -0,0 +1,13 @@
diff --git a/browser/components/tabbrowser/TabUnloader.sys.mjs b/browser/components/tabbrowser/TabUnloader.sys.mjs
index 44846cc902fd3fc17d12be38ac9abccb47a12f23..c715c7cf47486066b3fd6f92bf78bc8a720759bc 100644
--- a/browser/components/tabbrowser/TabUnloader.sys.mjs
+++ b/browser/components/tabbrowser/TabUnloader.sys.mjs
@@ -52,7 +52,7 @@ let CRITERIA_WEIGHT = 1;
*/
let DefaultTabUnloaderMethods = {
isNonDiscardable(tab, weight) {
- if (tab.undiscardable || tab.selected) {
+ if (tab.undiscardable || tab.selected || tab.zenModeActive) {
return weight;
}

View file

@ -1,17 +1,18 @@
diff --git a/browser/components/tabbrowser/content/browser-ctrlTab.js b/browser/components/tabbrowser/content/browser-ctrlTab.js
index 6753641cb579032306453be3f5054d7bc7661e8c..436ee8940c8a73d238a7aed10768a0a752a3f119 100644
index 6753641cb579032306453be3f5054d7bc7661e8c..bf21f6c14f825fbe2d322900595cd34456fe1231 100644
--- a/browser/components/tabbrowser/content/browser-ctrlTab.js
+++ b/browser/components/tabbrowser/content/browser-ctrlTab.js
@@ -252,7 +252,7 @@ var ctrlTab = {
@@ -252,7 +252,8 @@ var ctrlTab = {
},
get tabList() {
- return this._recentlyUsedTabs;
+ return this._recentlyUsedTabs.filter(tab => !tab.hasAttribute("pending"));
+ const canShowPending = Services.prefs.getBoolPref("zen.ctrlTab.show-pending-tabs", false);
+ return this._recentlyUsedTabs.filter(tab => !tab.hasAttribute("pending") || canShowPending);
},
init: function ctrlTab_init() {
@@ -459,7 +459,7 @@ var ctrlTab = {
@@ -459,7 +460,7 @@ var ctrlTab = {
// If the tab is hidden, don't add it to the list unless it's selected
// (Normally hidden tabs would be unhidden when selected, but that doesn't
// happen for Firefox View).
@ -20,7 +21,7 @@ index 6753641cb579032306453be3f5054d7bc7661e8c..436ee8940c8a73d238a7aed10768a0a7
return;
}
@@ -483,7 +483,7 @@ var ctrlTab = {
@@ -483,7 +484,7 @@ var ctrlTab = {
},
open: function ctrlTab_open() {
@ -29,7 +30,7 @@ index 6753641cb579032306453be3f5054d7bc7661e8c..436ee8940c8a73d238a7aed10768a0a7
return;
}
@@ -761,7 +761,7 @@ var ctrlTab = {
@@ -761,7 +762,7 @@ var ctrlTab = {
_initRecentlyUsedTabs() {
this._recentlyUsedTabs = Array.prototype.filter.call(
gBrowser.tabs,

View file

@ -1,5 +1,5 @@
diff --git a/browser/components/tabbrowser/content/tab.js b/browser/components/tabbrowser/content/tab.js
index dc92771ebc65095dfebbddc238ee6d4fffd897bf..ae9120f7cc8989cf625ac101d053d82582e32009 100644
index f43ab1cf6257ff1a9c9aa522a0180fd9bbfe4036..d9714c46de860243b06af7e8343d36b107efb855 100644
--- a/browser/components/tabbrowser/content/tab.js
+++ b/browser/components/tabbrowser/content/tab.js
@@ -21,6 +21,7 @@
@ -21,7 +21,7 @@ index dc92771ebc65095dfebbddc238ee6d4fffd897bf..ae9120f7cc8989cf625ac101d053d825
</hbox>
</stack>
`;
@@ -175,7 +178,7 @@
@@ -180,7 +183,7 @@
}
set _visuallySelected(val) {
@ -30,7 +30,7 @@ index dc92771ebc65095dfebbddc238ee6d4fffd897bf..ae9120f7cc8989cf625ac101d053d825
return;
}
@@ -211,7 +214,7 @@
@@ -216,7 +219,7 @@
}
get visible() {
@ -39,7 +39,7 @@ index dc92771ebc65095dfebbddc238ee6d4fffd897bf..ae9120f7cc8989cf625ac101d053d825
}
get hidden() {
@@ -282,7 +285,7 @@
@@ -287,7 +290,7 @@
return false;
}
@ -48,7 +48,7 @@ index dc92771ebc65095dfebbddc238ee6d4fffd897bf..ae9120f7cc8989cf625ac101d053d825
}
get lastAccessed() {
@@ -454,6 +457,8 @@
@@ -459,6 +462,8 @@
this.style.MozUserFocus = "ignore";
} else if (
event.target.classList.contains("tab-close-button") ||
@ -57,7 +57,18 @@ index dc92771ebc65095dfebbddc238ee6d4fffd897bf..ae9120f7cc8989cf625ac101d053d825
event.target.classList.contains("tab-icon-overlay") ||
event.target.classList.contains("tab-audio-button")
) {
@@ -554,6 +559,7 @@
@@ -513,6 +518,10 @@
this.style.MozUserFocus = "";
}
+ get glanceTab() {
+ return this.querySelector("tab[zen-glance-tab]");
+ }
+
on_click(event) {
if (event.button != 0) {
return;
@@ -559,6 +568,7 @@
telemetrySource: lazy.TabMetrics.METRIC_SOURCE.TAB_STRIP,
});
} else {
@ -65,7 +76,7 @@ index dc92771ebc65095dfebbddc238ee6d4fffd897bf..ae9120f7cc8989cf625ac101d053d825
gBrowser.removeTab(this, {
animate: true,
triggeringEvent: event,
@@ -564,6 +570,14 @@
@@ -569,6 +579,14 @@
// (see tabbrowser-tabs 'click' handler).
gBrowser.tabContainer._blockDblClick = true;
}
@ -80,7 +91,7 @@ index dc92771ebc65095dfebbddc238ee6d4fffd897bf..ae9120f7cc8989cf625ac101d053d825
}
on_dblclick(event) {
@@ -587,6 +601,8 @@
@@ -592,6 +610,8 @@
animate: true,
triggeringEvent: event,
});

View file

@ -1,15 +1,11 @@
diff --git a/browser/components/tabbrowser/content/tabbrowser.js b/browser/components/tabbrowser/content/tabbrowser.js
index 6dece2b9d0462d90a28e75350ce983d87816ef73..a285c5cbc23eaeebc8248b950c0275645f8a5cd3 100644
index d5aa64842a35c6697263c63fd3a0571b64b01344..14f5bc046f2e54109bd3fd0402a8f8b598a513c2 100644
--- a/browser/components/tabbrowser/content/tabbrowser.js
+++ b/browser/components/tabbrowser/content/tabbrowser.js
@@ -415,11 +415,58 @@
@@ -413,11 +413,41 @@
return this.tabContainer.visibleTabs;
}
+ zenInsertTabAtIndex(...args) {
+ return this.#insertTabAtElementIndex(...args);
+ }
+
+ get _numVisiblePinTabsWithoutCollapsed() {
+ let i = 0;
+ for (let item of this.tabContainer.ariaFocusableItems) {
@ -37,19 +33,6 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..a285c5cbc23eaeebc8248b950c027564
+ }
+ return i;
+ }
+
+ get _numZenVisibleEssentials() {
+ let i = 0;
+ for (let tab of this.tabs) {
+ if (!tab.hasAttribute("zen-essential") && !tab.hasAttribute("zen-glance-tab")) {
+ break;
+ }
+ if (!tab.hidden) {
+ i += !tab.hasAttribute("zen-glance-tab");
+ }
+ }
+ return i;
+ }
+
get pinnedTabCount() {
- for (var i = 0; i < this.tabs.length; i++) {
@ -63,15 +46,15 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..a285c5cbc23eaeebc8248b950c027564
}
return i;
}
@@ -571,6 +618,7 @@
@@ -569,6 +599,7 @@
this.tabpanels.appendChild(panel);
let tab = this.tabs[0];
+ ZenWorkspaces.handleInitialTab(tab, (!remoteType || remoteType === E10SUtils.PRIVILEGEDABOUT_REMOTE_TYPE) && !gZenUIManager.testingEnabled);
+ gZenWorkspaces.handleInitialTab(tab, (!remoteType || remoteType === E10SUtils.PRIVILEGEDABOUT_REMOTE_TYPE) && !gZenUIManager.testingEnabled);
tab.linkedPanel = uniqueId;
this._selectedTab = tab;
this._selectedBrowser = browser;
@@ -836,11 +884,13 @@
@@ -834,11 +865,13 @@
}
this.showTab(aTab);
@ -81,14 +64,14 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..a285c5cbc23eaeebc8248b950c027564
+ if (this.tabContainer.verticalMode && !handled) {
this.#handleTabMove(aTab, () =>
- this.verticalPinnedTabsContainer.appendChild(aTab)
+ aTab.hasAttribute("zen-essential") ? ZenWorkspaces.getEssentialsSection(aTab).appendChild(aTab) : this.verticalPinnedTabsContainer.insertBefore(aTab, this.verticalPinnedTabsContainer.lastChild)
+ aTab.hasAttribute("zen-essential") ? gZenWorkspaces.getEssentialsSection(aTab).appendChild(aTab) : this.verticalPinnedTabsContainer.insertBefore(aTab, this.verticalPinnedTabsContainer.lastChild)
);
- } else {
+ } else if (!handled) {
this.moveTabTo(aTab, {
tabIndex: this.pinnedTabCount,
forceUngrouped: true,
@@ -857,12 +907,15 @@
@@ -855,12 +888,15 @@
}
if (this.tabContainer.verticalMode) {
@ -100,12 +83,12 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..a285c5cbc23eaeebc8248b950c027564
aTab.removeAttribute("pinned");
- this.tabContainer.arrowScrollbox.prepend(aTab);
+ if (!handled) {
+ ZenWorkspaces.activeWorkspaceStrip.prepend(aTab);
+ gZenWorkspaces.activeWorkspaceStrip.prepend(aTab);
+ }
});
} else {
this.moveTabTo(aTab, {
@@ -1046,6 +1099,8 @@
@@ -1044,6 +1080,8 @@
let LOCAL_PROTOCOLS = ["chrome:", "about:", "resource:", "data:"];
@ -114,7 +97,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..a285c5cbc23eaeebc8248b950c027564
if (
aIconURL &&
!aLoadingPrincipal &&
@@ -1056,6 +1111,9 @@
@@ -1054,6 +1092,9 @@
);
return;
}
@ -124,7 +107,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..a285c5cbc23eaeebc8248b950c027564
let browser = this.getBrowserForTab(aTab);
browser.mIconURL = aIconURL;
@@ -1305,6 +1363,7 @@
@@ -1303,6 +1344,7 @@
if (!this._previewMode) {
newTab.recordTimeFromUnloadToReload();
newTab.updateLastAccessed();
@ -132,7 +115,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..a285c5cbc23eaeebc8248b950c027564
oldTab.updateLastAccessed();
// if this is the foreground window, update the last-seen timestamps.
if (this.ownerGlobal == BrowserWindowTracker.getTopWindow()) {
@@ -1457,6 +1516,9 @@
@@ -1455,6 +1497,9 @@
}
let activeEl = document.activeElement;
@ -142,7 +125,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..a285c5cbc23eaeebc8248b950c027564
// If focus is on the old tab, move it to the new tab.
if (activeEl == oldTab) {
newTab.focus();
@@ -1780,7 +1842,8 @@
@@ -1778,7 +1823,8 @@
}
_setTabLabel(aTab, aLabel, { beforeTabOpen, isContentTitle, isURL } = {}) {
@ -152,7 +135,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..a285c5cbc23eaeebc8248b950c027564
return false;
}
@@ -1888,7 +1951,7 @@
@@ -1886,7 +1932,7 @@
newIndex = this.selectedTab._tPos + 1;
}
@ -161,7 +144,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..a285c5cbc23eaeebc8248b950c027564
if (this.isTabGroupLabel(targetTab)) {
throw new Error(
"Replacing a tab group label with a tab is not supported"
@@ -2152,6 +2215,7 @@
@@ -2150,6 +2196,7 @@
uriIsAboutBlank,
userContextId,
skipLoad,
@ -169,7 +152,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..a285c5cbc23eaeebc8248b950c027564
} = {}) {
let b = document.createXULElement("browser");
// Use the JSM global to create the permanentKey, so that if the
@@ -2225,8 +2289,7 @@
@@ -2223,8 +2270,7 @@
// we use a different attribute name for this?
b.setAttribute("name", name);
}
@ -179,7 +162,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..a285c5cbc23eaeebc8248b950c027564
b.setAttribute("transparent", "true");
}
@@ -2391,7 +2454,7 @@
@@ -2389,7 +2435,7 @@
let panel = this.getPanel(browser);
let uniqueId = this._generateUniquePanelID();
@ -188,7 +171,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..a285c5cbc23eaeebc8248b950c027564
aTab.linkedPanel = uniqueId;
// Inject the <browser> into the DOM if necessary.
@@ -2450,8 +2513,8 @@
@@ -2448,8 +2494,8 @@
// If we transitioned from one browser to two browsers, we need to set
// hasSiblings=false on both the existing browser and the new browser.
if (this.tabs.length == 2) {
@ -199,7 +182,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..a285c5cbc23eaeebc8248b950c027564
} else {
aTab.linkedBrowser.browsingContext.hasSiblings = this.tabs.length > 1;
}
@@ -2679,6 +2742,7 @@
@@ -2680,6 +2726,7 @@
schemelessInput,
hasValidUserGestureActivation = false,
textDirectiveUserActivation = false,
@ -207,20 +190,20 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..a285c5cbc23eaeebc8248b950c027564
} = {}
) {
// all callers of addTab that pass a params object need to pass
@@ -2689,6 +2753,12 @@
@@ -2690,6 +2737,12 @@
);
}
+ let hasZenDefaultUserContextId = false;
+ let zenForcedWorkspaceId = undefined;
+ if (typeof ZenWorkspaces !== "undefined" && !_forZenEmptyTab) {
+ [userContextId, hasZenDefaultUserContextId, zenForcedWorkspaceId] = ZenWorkspaces.getContextIdIfNeeded(userContextId, fromExternal, allowInheritPrincipal);
+ if (typeof gZenWorkspaces !== "undefined" && !_forZenEmptyTab) {
+ [userContextId, hasZenDefaultUserContextId, zenForcedWorkspaceId] = gZenWorkspaces.getContextIdIfNeeded(userContextId, fromExternal, allowInheritPrincipal);
+ }
+
if (!UserInteraction.running("browser.tabs.opening", window)) {
UserInteraction.start("browser.tabs.opening", "initting", window);
}
@@ -2752,6 +2822,16 @@
@@ -2753,6 +2806,16 @@
noInitialLabel,
skipBackgroundNotify,
});
@ -235,9 +218,9 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..a285c5cbc23eaeebc8248b950c027564
+ t.setAttribute("zen-empty-tab", "true");
+ }
if (insertTab) {
if (typeof index == "number") {
elementIndex = this.#tabIndexToElementIndex(index);
@@ -2779,6 +2859,7 @@
// Insert the tab into the tab container in the correct position.
// For now, we support `index` as an alias for `tabIndex`.
@@ -2783,6 +2846,7 @@
openWindowInfo,
skipLoad,
triggeringRemoteType,
@ -245,45 +228,35 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..a285c5cbc23eaeebc8248b950c027564
}));
if (focusUrlBar) {
@@ -2898,6 +2979,9 @@
@@ -2902,6 +2966,12 @@
}
}
+ if (typeof window.gZenVerticalTabsManager !== "undefined") {
+ gZenVerticalTabsManager.animateTab(t);
+ }
+ if (typeof window.gZenCompactModeManager !== "undefined" && !skipLoad && insertTab) {
+ gZenCompactModeManager._onTabOpen(t, inBackground);
+ }
// Additionally send pinned tab events
if (pinned) {
this._notifyPinnedStatus(t);
@@ -2945,12 +3029,15 @@
* @param {string} [label=]
* @returns {MozTabbrowserTabGroup}
*/
- _createTabGroup(id, color, collapsed, label = "") {
+ _createTabGroup(id, color, collapsed, label = "", pinned = false, essential = false, splitViewGroup = false) {
let group = document.createXULElement("tab-group", { is: "tab-group" });
group.id = id;
group.collapsed = collapsed;
group.color = color;
group.label = label;
+ group.pinned = pinned;
+ group.essential = essential;
+ if (splitViewGroup) group.setAttribute('split-view-group', true);
return group;
}
@@ -2993,6 +3080,7 @@
insertBefore = null,
@@ -2990,10 +3060,10 @@
isAdoptingGroup = false,
isUserTriggered = false,
telemetryUserCreateSource = "unknown",
+ forSplitView = false,
} = {}
) {
if (!tabs?.length) {
@@ -3011,7 +3099,12 @@
id = `${Date.now()}-${Math.round(Math.random() * 100)}`;
- throw new Error("Cannot create tab group with zero tabs");
}
let group = this._createTabGroup(id, color, false, label);
if (!color) {
@@ -3014,7 +3084,12 @@
label,
isAdoptingGroup
);
- this.tabContainer.insertBefore(
+ if (forSplitView) {
+ group.setAttribute('split-view-group', true);
@ -294,7 +267,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..a285c5cbc23eaeebc8248b950c027564
group,
insertBefore?.group ?? insertBefore
);
@@ -3342,6 +3435,7 @@
@@ -3303,6 +3378,7 @@
openWindowInfo,
skipLoad,
triggeringRemoteType,
@ -302,7 +275,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..a285c5cbc23eaeebc8248b950c027564
}
) {
// If we don't have a preferred remote type (or it is `NOT_REMOTE`), and
@@ -3411,6 +3505,7 @@
@@ -3372,6 +3448,7 @@
openWindowInfo,
name,
skipLoad,
@ -310,64 +283,26 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..a285c5cbc23eaeebc8248b950c027564
});
}
@@ -3589,6 +3684,27 @@
) {
tabWasReused = true;
tab = this.selectedTab;
+ if (tabData.zenWorkspace) {
+ tab.setAttribute("zen-workspace-id", tabData.zenWorkspace);
+ }
+ if (tabData.zenIsEmpty) {
+ tab.setAttribute("zen-empty-tab", "true");
+ }
+ if (tabData.zenHasStaticLabel) {
+ tab.setAttribute("zen-has-static-label", "true");
+ }
+ if (tabData.zenPinnedId) {
+ tab.setAttribute("zen-pin-id", tabData.zenPinnedId);
+ }
+ if (tabData.zenEssential) {
+ tab.setAttribute("zen-essential", "true");
+ }
+ if (tabData.zenDefaultUserContextId) {
+ tab.setAttribute("zenDefaultUserContextId", "true");
+ }
+ if (tabData.zenPinnedEntry) {
+ tab.setAttribute("zen-pinned-entry", tabData.zenPinnedEntry);
+ }
if (!tabData.pinned) {
this.unpinTab(tab);
} else {
@@ -3637,7 +3753,27 @@
@@ -3560,7 +3637,7 @@
// Add a new tab if needed.
if (!tab) {
let createLazyBrowser =
- restoreTabsLazily && !select && !tabData.pinned;
+ restoreTabsLazily && !tabData.pinned;
let url = "about:blank";
if (tabData.entries?.length) {
@@ -3598,7 +3675,8 @@
skipLoad: true,
preferredRemoteType,
});
-
+ if (tabData.zenWorkspace) {
+ tab.setAttribute("zen-workspace-id", tabData.zenWorkspace);
+ }
+ if (tabData.zenPinnedId) {
+ tab.setAttribute("zen-pin-id", tabData.zenPinnedId);
+ }
+ if (tabData.zenIsEmpty) {
+ tab.setAttribute("zen-empty-tab", "true");
+ }
+ if (tabData.zenHasStaticLabel) {
+ tab.setAttribute("zen-has-static-label", "true");
+ }
+ if (tabData.zenEssential) {
+ tab.setAttribute("zen-essential", "true");
+ }
+ if (tabData.zenDefaultUserContextId) {
+ tab.setAttribute("zenDefaultUserContextId", "true");
+ }
+ if (tabData.zenPinnedEntry) {
+ tab.setAttribute("zen-pinned-entry", tabData.zenPinnedEntry);
+ }
+ tab._originalUrl = url;
+ gZenSessionStore.restoreInitialTabData(tab, tabData);
if (select) {
tabToSelect = tab;
}
@@ -3661,7 +3797,8 @@
@@ -3622,7 +3700,8 @@
// needs calling:
shouldUpdateForPinnedTabs = true;
}
@ -377,7 +312,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..a285c5cbc23eaeebc8248b950c027564
let { groupId } = tabData;
const tabGroup = tabGroupWorkingData.get(groupId);
// if a tab refers to a tab group we don't know, skip any group
@@ -3675,7 +3812,10 @@
@@ -3636,7 +3715,10 @@
tabGroup.stateData.id,
tabGroup.stateData.color,
tabGroup.stateData.collapsed,
@ -389,47 +324,64 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..a285c5cbc23eaeebc8248b950c027564
);
tabsFragment.appendChild(tabGroup.node);
}
@@ -3723,8 +3863,15 @@
@@ -3684,8 +3766,16 @@
// to remove the old selected tab.
if (tabToSelect) {
let leftoverTab = this.selectedTab;
+ if (tabToSelect.pinned) {
+ ZenWorkspaces._tabToRemoveForEmpty = leftoverTab;
+ } else {
this.selectedTab = tabToSelect;
this.removeTab(leftoverTab);
- this.selectedTab = tabToSelect;
- this.removeTab(leftoverTab);
+ gZenWorkspaces._tabToRemoveForEmpty = leftoverTab;
+ if (Services.prefs.getBoolPref("zen.workspaces.continue-where-left-off")) {
+ gZenWorkspaces._tabToSelect = selectTab - 1;
+ }
+ if (gZenWorkspaces._initialTab && !gZenVerticalTabsManager._canReplaceNewTab) {
+ gZenWorkspaces._initialTab._shouldRemove = true;
+ }
+ }
+ else {
+ this.selectedTab._possiblyEmpty = this.selectedTab.isEmpty; // Not needed, but just in case.
+ gZenWorkspaces._tabToRemoveForEmpty = this.selectedTab;
}
if (tabs.length > 1 || !tabs[0].selected) {
@@ -3912,7 +4059,7 @@
@@ -3881,7 +3971,7 @@
// Ensure we have an index if one was not provided.
if (typeof index != "number") {
if (typeof elementIndex != "number" && typeof tabIndex != "number") {
// Move the new tab after another tab if needed, to the end otherwise.
- index = Infinity;
+ index = Services.prefs.getBoolPref("zen.view.show-newtab-button-top") ? this.pinnedTabCount : Infinity;
- elementIndex = Infinity;
+ elementIndex = Services.prefs.getBoolPref("zen.view.show-newtab-button-top") ? this._numVisiblePinTabsWithoutCollapsed : Infinity;
if (
!bulkOrderedOpen &&
((openerTab &&
@@ -3958,18 +4105,18 @@
@@ -3904,7 +3994,7 @@
) {
elementIndex = Infinity;
} else if (previousTab.visible) {
- elementIndex = previousTab.elementIndex + 1;
+ elementIndex = (typeof previousTab.elementIndex === 'undefined') ? index : (previousTab.elementIndex + 1);
} else if (previousTab == FirefoxViewHandler.tab) {
elementIndex = 0;
}
@@ -3932,14 +4022,14 @@
}
// Ensure index is within bounds.
if (tab.pinned) {
- index = Math.max(index, 0);
- index = Math.min(index, this.pinnedTabCount);
+ index = Math.max(index, tab.hasAttribute("zen-essential") ? 0 : this._numZenEssentials);
+ index = Math.min(index, tab.hasAttribute("zen-essential") ? this._numZenEssentials : this.pinnedTabCount);
+ index = Math.min(index, tab.hasAttribute("zen-essential") ? this._numZenEssentials : this._numVisiblePinTabsWithoutCollapsed);
} else {
index = Math.max(index, this.pinnedTabCount);
index = Math.min(index, this.tabContainer.ariaFocusableItems.length);
- index = Math.max(index, this.pinnedTabCount);
+ index = Math.max(index, this._numVisiblePinTabsWithoutCollapsed);
index = Math.min(index, allItems.length);
}
/** @type {MozTabbrowserTab|undefined} */
- let itemAfter = this.tabContainer.ariaFocusableItems.at(index);
+ let itemAfter = this.tabContainer.ariaFocusableItems.filter(tab => !tab.hasAttribute("zen-glance-tab")).at(index);
- let itemAfter = allItems.at(index);
+ let itemAfter = gZenGlanceManager.getTabOrGlanceParent(allItems.at(index));
// Prevent a flash of unstyled content by setting up the tab content
// and inherited attributes before appending it (see Bug 1592054):
@@ -3947,7 +4037,7 @@
this.tabContainer._invalidateCachedTabs();
- if (tabGroup) {
@ -437,7 +389,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..a285c5cbc23eaeebc8248b950c027564
if (this.isTab(itemAfter) && itemAfter.group == tabGroup) {
// Place at the front of, or between tabs in, the same tab group
this.tabContainer.insertBefore(tab, itemAfter);
@@ -4290,6 +4437,9 @@
@@ -4268,6 +4358,9 @@
return;
}
@ -447,7 +399,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..a285c5cbc23eaeebc8248b950c027564
this.removeTabs(selectedTabs, { telemetrySource });
}
@@ -4542,6 +4692,7 @@
@@ -4520,6 +4613,7 @@
telemetrySource,
} = {}
) {
@ -455,7 +407,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..a285c5cbc23eaeebc8248b950c027564
// When 'closeWindowWithLastTab' pref is enabled, closing all tabs
// can be considered equivalent to closing the window.
if (
@@ -4626,6 +4777,7 @@
@@ -4604,6 +4698,7 @@
if (lastToClose) {
this.removeTab(lastToClose, aParams);
}
@ -463,20 +415,12 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..a285c5cbc23eaeebc8248b950c027564
} catch (e) {
console.error(e);
}
@@ -4650,6 +4802,7 @@
telemetrySource,
} = {}
) {
+ gZenUIManager.saveScrollbarState();
if (UserInteraction.running("browser.tabs.opening", window)) {
UserInteraction.finish("browser.tabs.opening", window);
}
@@ -4663,6 +4816,12 @@
@@ -4641,6 +4736,12 @@
aTab._closeTimeNoAnimTimerId = Glean.browserTabclose.timeNoAnim.start();
}
+ if (ZenWorkspaces.workspaceEnabled) {
+ let newTab = ZenWorkspaces.handleTabBeforeClose(aTab);
+ if (gZenWorkspaces.workspaceEnabled) {
+ let newTab = gZenWorkspaces.handleTabBeforeClose(aTab, closeWindowWithLastTab);
+ if (newTab) {
+ this.selectedTab = newTab;
+ }
@ -484,7 +428,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..a285c5cbc23eaeebc8248b950c027564
// Handle requests for synchronously removing an already
// asynchronously closing tab.
if (!animate && aTab.closing) {
@@ -4677,7 +4836,9 @@
@@ -4655,7 +4756,9 @@
// frame created for it (for example, by updating the visually selected
// state).
let tabWidth = window.windowUtils.getBoundsWithoutFlushing(aTab).width;
@ -495,97 +439,86 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..a285c5cbc23eaeebc8248b950c027564
if (
!this._beginRemoveTab(aTab, {
closeWindowFastpath: true,
@@ -4840,7 +5001,7 @@
@@ -4821,7 +4924,7 @@
closeWindowWithLastTab != null
? closeWindowWithLastTab
: !window.toolbar.visible ||
- Services.prefs.getBoolPref("browser.tabs.closeWindowWithLastTab");
+ Services.prefs.getBoolPref("browser.tabs.closeWindowWithLastTab") && !ZenWorkspaces._isClosingWindow && !ZenWorkspaces._removedByStartupPage;
+ Services.prefs.getBoolPref("browser.tabs.closeWindowWithLastTab") && !gZenWorkspaces._isClosingWindow && !gZenWorkspaces._removedByStartupPage;
if (closeWindow) {
// We've already called beforeunload on all the relevant tabs if we get here,
@@ -4864,6 +5025,7 @@
@@ -4845,6 +4948,7 @@
newTab = true;
}
+ ZenWorkspaces._removedByStartupPage = false;
+ gZenWorkspaces._removedByStartupPage = false;
aTab._endRemoveArgs = [closeWindow, newTab];
// swapBrowsersAndCloseOther will take care of closing the window without animation.
@@ -4903,9 +5065,7 @@
@@ -4885,9 +4989,7 @@
aTab._mouseleave();
if (newTab) {
- this.addTrustedTab(BROWSER_NEW_TAB_URL, {
- skipAnimation: true,
- });
+ ZenWorkspaces.selectEmptyTab(BROWSER_NEW_TAB_URL);
+ gZenWorkspaces.selectEmptyTab(BROWSER_NEW_TAB_URL);
} else {
TabBarVisibility.update();
}
@@ -5034,6 +5194,8 @@
@@ -5016,6 +5118,8 @@
this.tabs[i]._tPos = i;
}
+ ZenWorkspaces.updateTabsContainers();
+ gZenWorkspaces.updateTabsContainers();
+
if (!this._windowIsClosing) {
if (wasPinned) {
this.tabContainer._positionPinnedTabs();
@@ -5159,8 +5321,8 @@
return closedCount;
}
- async explicitUnloadTabs(tabs) {
- let unloadBlocked = await this.runBeforeUnloadForTabs(tabs);
+ async explicitUnloadTabs(tabs, skipPermitUnload = false) {
+ let unloadBlocked = skipPermitUnload ? false : await this.runBeforeUnloadForTabs(tabs);
if (unloadBlocked) {
return;
}
@@ -5247,6 +5409,7 @@
aExcludeTabs.push(FirefoxViewHandler.tab);
@@ -5230,6 +5334,7 @@
}
+ aExcludeTabs.push(...ZenWorkspaces.getTabsToExclude(aTab));
let excludeTabs = new Set(aExcludeTabs);
+ gZenWorkspaces.getTabsToExclude(aTab).forEach(tab => excludeTabs.add(tab));
// If this tab has a successor, it should be selectable, since
@@ -5260,13 +5423,13 @@
// hiding or closing a tab removes that tab as a successor.
@@ -5242,13 +5347,13 @@
!excludeTabs.has(aTab.owner) &&
Services.prefs.getBoolPref("browser.tabs.selectOwnerOnClose")
) {
- return aTab.owner;
+ return ZenWorkspaces.findTabToBlur(aTab.owner);
+ return gZenWorkspaces.findTabToBlur(aTab.owner);
}
// Try to find a remaining tab that comes after the given tab
let remainingTabs = Array.prototype.filter.call(
this.visibleTabs,
- tab => !excludeTabs.has(tab)
+ tab => !excludeTabs.has(tab) && ZenWorkspaces._shouldChangeToTab(tab)
+ tab => !excludeTabs.has(tab) && gZenWorkspaces._shouldChangeToTab(tab)
);
let tab = this.tabContainer.findNextTab(aTab, {
@@ -5282,7 +5445,7 @@
@@ -5264,7 +5369,7 @@
}
if (tab) {
- return tab;
+ return ZenWorkspaces.findTabToBlur(tab);
+ return gZenWorkspaces.findTabToBlur(tab);
}
// If no qualifying visible tab was found, see if there is a tab in
@@ -5303,7 +5466,7 @@
@@ -5285,7 +5390,7 @@
});
}
- return tab;
+ return ZenWorkspaces.findTabToBlur(tab);
+ return gZenWorkspaces.findTabToBlur(tab);
}
_blurTab(aTab) {
@@ -5704,10 +5867,10 @@
@@ -5686,10 +5791,10 @@
SessionStore.deleteCustomTabValue(aTab, "hiddenBy");
}
@ -598,21 +531,22 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..a285c5cbc23eaeebc8248b950c027564
aTab.selected ||
aTab.closing ||
// Tabs that are sharing the screen, microphone or camera cannot be hidden.
@@ -6001,7 +6164,7 @@
@@ -5986,7 +6091,7 @@
// Don't allow mixing pinned and unpinned tabs.
if (this.isTab(element) && element.pinned) {
- tabIndex = Math.min(tabIndex, this.pinnedTabCount - 1);
+ tabIndex = element.hasAttribute('zen-essential') ? Math.min(tabIndex, this._numZenEssentials - 1) : Math.min(tabIndex, this.pinnedTabCount - 1);
+ tabIndex = element.hasAttribute('zen-essential') ? Math.min(tabIndex, this._numZenEssentials - 1) : Math.min(Math.max(tabIndex, this._numZenEssentials), this.pinnedTabCount - 1);
} else {
tabIndex = Math.max(tabIndex, this.pinnedTabCount);
}
@@ -6028,9 +6191,16 @@
@@ -6012,10 +6117,16 @@
this.#handleTabMove(
element,
() => {
let neighbor = this.tabs[tabIndex];
- if (forceUngrouped && neighbor.group) {
+ const _tPos = element._tPos;
- let neighbor = this.tabs[tabIndex];
- if (forceUngrouped && neighbor?.group) {
+ let neighbor = gZenGlanceManager.getTabOrGlanceParent(this.tabs[tabIndex]);
+ if ((forceUngrouped && neighbor?.group) || neighbor?.group?.hasAttribute("split-view-group")) {
neighbor = neighbor.group;
}
@ -625,7 +559,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..a285c5cbc23eaeebc8248b950c027564
if (neighbor && this.isTab(element) && tabIndex > element._tPos) {
neighbor.after(element);
} else {
@@ -6099,7 +6269,9 @@
@@ -6084,17 +6195,29 @@
targetElement = targetElement.group;
}
}
@ -634,23 +568,32 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..a285c5cbc23eaeebc8248b950c027564
+ element = element.group;
+ }
// Don't allow mixing pinned and unpinned tabs.
if (element.pinned && !targetElement?.pinned) {
targetElement = this.tabs[this.pinnedTabCount - 1];
@@ -6109,7 +6281,13 @@
- if (element.pinned && !targetElement?.pinned) {
- targetElement = this.tabs[this.pinnedTabCount - 1];
+ if (element.hasAttribute('zen-essential') && !targetElement?.hasAttribute('zen-essential')) {
+ targetElement = this.tabs.filter(tab => !tab.hasAttribute('zen-glance-tab'))[this._numZenEssentials - 1];
+ moveBefore = false;
+ } else if (element.pinned && !targetElement?.pinned) {
+ targetElement = this.tabs.filter(tab => !tab.hasAttribute('zen-glance-tab'))[this.pinnedTabCount - 1];
moveBefore = false;
} else if (!element.pinned && targetElement && targetElement.pinned) {
- targetElement = this.tabs[this.pinnedTabCount];
+ targetElement = this.tabs.filter(tab => !tab.hasAttribute('zen-glance-tab'))[this.pinnedTabCount];
moveBefore = true;
}
+ if (targetElement?.group?.hasAttribute("split-view-group")) {
+ targetElement = targetElement.group;
+ }
+ targetElement = gZenGlanceManager.getTabOrGlanceParent(targetElement);
let getContainer = () => {
+ if (element.hasAttribute("zen-essential")) {
+ return ZenWorkspaces.getEssentialsSection(element);
+ return gZenWorkspaces.getEssentialsSection(element);
+ }
if (element.pinned && this.tabContainer.verticalMode) {
return this.tabContainer.verticalPinnedTabsContainer;
}
@@ -6169,7 +6347,7 @@
@@ -6154,7 +6277,7 @@
if (!this.isTab(aTab)) {
throw new Error("Can only move a tab into a tab group");
}
@ -659,27 +602,27 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..a285c5cbc23eaeebc8248b950c027564
return;
}
if (aTab.group && aTab.group.id === aGroup.id) {
@@ -6263,6 +6441,10 @@
@@ -6248,6 +6371,10 @@
moveActionCallback();
+ ZenWorkspaces._makeSureEmptyTabIsLast();
+ gZenWorkspaces._makeSureEmptyTabIsLast();
+ gZenViewSplitter._maybeRemoveFakeBrowser(false);
+ gZenViewSplitter._canDrop = false;
+
// Clear tabs cache after moving nodes because the order of tabs may have
// changed.
this.tabContainer._invalidateCachedTabs();
@@ -7080,7 +7262,7 @@
@@ -7145,7 +7272,7 @@
// preventDefault(). It will still raise the window if appropriate.
break;
}
- this.selectedTab = tab;
+ ZenWorkspaces.switchTabIfNeeded(tab);
+ gZenWorkspaces.switchTabIfNeeded(tab);
window.focus();
aEvent.preventDefault();
break;
@@ -7981,6 +8163,7 @@
@@ -8044,6 +8171,7 @@
aWebProgress.isTopLevel
) {
this.mTab.setAttribute("busy", "true");
@ -687,7 +630,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..a285c5cbc23eaeebc8248b950c027564
gBrowser._tabAttrModified(this.mTab, ["busy"]);
this.mTab._notselectedsinceload = !this.mTab.selected;
}
@@ -8954,7 +9137,7 @@ var TabContextMenu = {
@@ -9009,7 +9137,7 @@ var TabContextMenu = {
);
contextUnpinSelectedTabs.hidden =
!this.contextTab.pinned || !this.multiselected;
@ -696,7 +639,7 @@ index 6dece2b9d0462d90a28e75350ce983d87816ef73..a285c5cbc23eaeebc8248b950c027564
// Move Tab items
let contextMoveTabOptions = document.getElementById(
"context_moveTabOptions"
@@ -9223,6 +9406,7 @@ var TabContextMenu = {
@@ -9278,6 +9406,7 @@ var TabContextMenu = {
telemetrySource: gBrowser.TabMetrics.METRIC_SOURCE.TAB_STRIP,
});
} else {

View file

@ -0,0 +1,13 @@
diff --git a/browser/components/tabbrowser/content/tabgroup.js b/browser/components/tabbrowser/content/tabgroup.js
index 6dc774ea335b0c5dba7dcf76cdb23728faae1343..b0b9ef236c2e8517db4bcf3270596456bbefe11d 100644
--- a/browser/components/tabbrowser/content/tabgroup.js
+++ b/browser/components/tabbrowser/content/tabgroup.js
@@ -301,7 +301,7 @@
*/
addTabs(tabs, metricsContext) {
for (let tab of tabs) {
- if (tab.pinned) {
+ if (tab.pinned !== this.pinned) {
tab.ownerGlobal.gBrowser.unpinTab(tab);
}
let tabToMove =

View file

@ -1,5 +1,5 @@
diff --git a/browser/components/tabbrowser/content/tabs.js b/browser/components/tabbrowser/content/tabs.js
index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..2885d896c4026278dfcb309f12230d6f86275ada 100644
index 84d633471c89230b981d8a07babef4e0c76c0338..de8b1ecf7cb844f6cf3e66a41b6024c574dfc103 100644
--- a/browser/components/tabbrowser/content/tabs.js
+++ b/browser/components/tabbrowser/content/tabs.js
@@ -83,7 +83,7 @@
@ -11,33 +11,33 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..2885d896c4026278dfcb309f12230d6f
}
return true;
};
@@ -342,7 +342,7 @@
@@ -293,6 +293,7 @@
on_TabGroupCollapse(event) {
this._invalidateCachedVisibleTabs();
this._unlockTabSizing();
+ return;
// If the user's selected tab is in the collapsing group, kick them off
// the tab. If no tabs exist outside the group, create a new one and
@@ -349,7 +350,7 @@
// and we're not hitting the scroll buttons.
if (
event.button != 0 ||
- event.target != this.arrowScrollbox ||
+ event.target != document.getElementById("zen-tabs-wrapper") ||
+ !event.target.classList.contains("zen-workspace-normal-tabs-section") ||
event.composedTarget.localName == "toolbarbutton"
) {
return;
@@ -391,6 +391,7 @@
// Reset the "ignored click" flag
target._ignoredCloseButtonClicks = false;
}
+ gZenUIManager.saveScrollbarState();
}
/* Protects from close-tab-button errant doubleclick:
@@ -692,7 +693,7 @@
@@ -699,7 +700,7 @@
if (this.#isContainerVerticalPinnedGrid(tab)) {
// In expanded vertical mode, the max number of pinned tabs per row is dynamic
// Set this before adjusting dragged tab's position
- let pinnedTabs = this.visibleTabs.slice(0, gBrowser.pinnedTabCount);
+ let pinnedTabs = this.visibleTabs.filter(tab => !tab.hasAttribute("zen-glance-tab")).slice(0, gBrowser._numZenVisibleEssentials);
+ let pinnedTabs = this.ariaFocusableItems.slice(0, gBrowser._numZenEssentials);
let tabsPerRow = 0;
let position = 0;
for (let pinnedTab of pinnedTabs) {
@@ -764,7 +765,7 @@
@@ -772,7 +773,7 @@
} else if (isTabGroupLabel(tab) && !tab.group.collapsed) {
this._lockTabSizing();
this.#keepTabSizeLocked = true;
@ -46,7 +46,16 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..2885d896c4026278dfcb309f12230d6f
expandGroupOnDrop = true;
}
}
@@ -913,6 +914,10 @@
@@ -868,7 +869,7 @@
? event.screenY - window.screenY - tabOffset
: event.screenY - window.screenY,
scrollPos:
- this.verticalMode && tab.pinned
+ this.verticalMode && tab.pinned && false
? this.verticalPinnedTabsContainer.scrollPosition
: this.arrowScrollbox.scrollPosition,
screenX: event.screenX,
@@ -921,6 +922,10 @@
}
let draggedTab = event.dataTransfer.mozGetDataAt(TAB_DROP_TYPE, 0);
@ -57,7 +66,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..2885d896c4026278dfcb309f12230d6f
if (
(effects == "move" || effects == "copy") &&
document == draggedTab.ownerDocument &&
@@ -1069,6 +1074,18 @@
@@ -1077,6 +1082,18 @@
this._tabDropIndicator.hidden = true;
event.stopPropagation();
@ -76,32 +85,38 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..2885d896c4026278dfcb309f12230d6f
if (draggedTab && dropEffect == "copy") {
let duplicatedDraggedTab;
let duplicatedTabs = [];
@@ -1108,10 +1125,11 @@
@@ -1116,10 +1133,11 @@
}
} else {
let isPinned = draggedTab.pinned;
- let numPinned = gBrowser.pinnedTabCount;
- let tabs = this.ariaFocusableItems.slice(
- isPinned ? 0 : numPinned,
- isPinned ? numPinned : undefined
+ let numPinned = gBrowser._numVisiblePinTabsWithoutCollapsed;
+ let essential = draggedTab.hasAttribute("zen-essential");
+ let tabs = this.ariaFocusableItems.filter(tab => !tab.hasAttribute("zen-glance-tab")).slice(
+ isPinned ? (essential ? 0 : gBrowser._numZenVisibleEssentials) : numPinned,
+ isPinned ? (essential ? gBrowser._numZenVisibleEssentials : numPinned) : undefined
let tabs = this.ariaFocusableItems.slice(
- isPinned ? 0 : numPinned,
- isPinned ? numPinned : undefined
+ isPinned ? (essential ? 0 : gBrowser._numZenEssentials) : numPinned,
+ isPinned ? (essential ? gBrowser._numZenEssentials : numPinned) : undefined
);
let size = this.verticalMode ? "height" : "width";
let screenAxis = this.verticalMode ? "screenY" : "screenX";
@@ -1203,7 +1221,7 @@
item.removeAttribute("tabdrop-samewindow");
resolve();
};
- if (gReduceMotion) {
+ if (true || gReduceMotion) {
postTransitionCleanup();
} else {
let onTransitionEnd = transitionendEvent => {
@@ -1327,6 +1345,7 @@
@@ -1135,8 +1153,14 @@
(lastMovingTabScreen + tabSize);
if (this.verticalMode) {
+ if (oldTranslateY > 0 && translateOffsetY > tabHeight / 2) {
+ newTranslateY += tabHeight;
+ }
+ if (oldTranslateY < 0 && -translateOffsetY > tabHeight / 2) {
+ newTranslateY -= tabHeight;
+ }
newTranslateY = Math.min(
- Math.max(oldTranslateY, firstBound),
+ Math.max(newTranslateY, firstBound),
lastBound
);
} else {
@@ -1337,6 +1361,7 @@
let nextItem = this.ariaFocusableItems[newIndex];
let tabGroup = isTab(nextItem) && nextItem.group;
@ -109,7 +124,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..2885d896c4026278dfcb309f12230d6f
gBrowser.loadTabs(urls, {
inBackground,
replace,
@@ -1359,6 +1378,17 @@
@@ -1369,6 +1394,17 @@
this.finishMoveTogetherSelectedTabs(draggedTab);
this.finishAnimateTabMove();
@ -127,21 +142,21 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..2885d896c4026278dfcb309f12230d6f
this.#expandGroupOnDrop(draggedTab);
if (
@@ -1582,7 +1612,7 @@
@@ -1597,7 +1633,7 @@
}
get newTabButton() {
- return this.querySelector("#tabs-newtab-button");
+ return ZenWorkspaces.activeWorkspaceStrip.querySelector("#tabs-newtab-button");
+ return gZenWorkspaces.activeWorkspaceStrip.querySelector("#tabs-newtab-button");
}
get verticalMode() {
@@ -1606,29 +1636,41 @@
@@ -1621,29 +1657,54 @@
if (this.#allTabs) {
return this.#allTabs;
}
- let children = Array.from(this.arrowScrollbox.children);
+ let children = ZenWorkspaces.tabboxChildren;
+ let children = gZenWorkspaces.tabboxChildren;
// remove arrowScrollbox periphery element
children.pop();
@ -151,51 +166,55 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..2885d896c4026278dfcb309f12230d6f
- for (let i = children.length - 1; i >= 0; i--) {
- if (children[i].tagName == "tab-group") {
- children.splice(i, 1, ...children[i].tabs);
- }
- }
this.#allTabs = [
+ const pinnedTabs = [...gZenWorkspaces.getCurrentEssentialsContainer().children, ...this.verticalPinnedTabsContainer.children];
+ const expandTabs = (tabs) => {
+ for (let i = tabs.length - 1; i >= 0; i--) {
+ const tab = tabs[i];
+ if (isTabGroup(tab)) {
+ // remove the group from the list
+ tabs.splice(i, 1);
+ // add the tabs in the group to the list
+ tabs.splice(i, 0, ...tab.tabs);
+ }
}
}
-
- this.#allTabs = [
- ...this.verticalPinnedTabsContainer.children,
+ ...ZenWorkspaces.getCurrentEssentialsContainer().children, ...this.verticalPinnedTabsContainer.children,
+ expandTabs(pinnedTabs);
+ expandTabs(children);
+ const allTabs = [
+ ...pinnedTabs,
...children,
];
+ const lastPinnedTabIdx = gBrowser.pinnedTabCount;
+ for (let i = 0; i < this.#allTabs.length; i++) {
+ const lastPinnedTabIdx = pinnedTabs.length - 1;
+ let i = 0;
+ for (const tab of [...allTabs]) {
+ // add glance tabs (tabs inside tabs) to the list
+ const glanceTab = this.#allTabs[i].querySelector("tab[zen-glance-tab]");
+ const glanceTab = tab.glanceTab;
+ if (glanceTab) {
+ // insert right after the parent tab. note: it must be inserted before
+ // the last pinned tab so it can be inserted in the correct order
+ this.#allTabs.splice(Math.max(i + 1, lastPinnedTabIdx), 0, glanceTab);
+ i++;
+ } else if (this.#allTabs[i].classList.contains("vertical-pinned-tabs-container-separator")) {
+ allTabs.splice(Math.max(i++ + 1, lastPinnedTabIdx), 0, glanceTab);
+ } else if (tab.classList.contains("vertical-pinned-tabs-container-separator")) {
+ // remove the separator from the list
+ this.#allTabs.splice(i, 1);
+ allTabs.splice(i, 1);
+ i--;
+ } else if (this.#allTabs[i].tagName == "tab-group") {
+ this.#allTabs.splice(i, 1, ...this.#allTabs[i].tabs);
+ }
+ i++;
+ }
+ this.#allTabs = allTabs;
return this.#allTabs;
}
get allGroups() {
let children = Array.from(this.arrowScrollbox.children);
- return children.filter(node => node.tagName == "tab-group");
+ return ZenWorkspaces.allTabGroups;
+ return gZenWorkspaces.allTabGroups;
}
/**
@@ -1648,7 +1690,7 @@
*/
get visibleTabs() {
if (!this.#visibleTabs) {
- this.#visibleTabs = this.openTabs.filter(tab => tab.visible);
+ this.#visibleTabs = this.openTabs.filter(tab => tab.visible && !tab.hasAttribute("zen-empty-tab"));
}
return this.#visibleTabs;
}
@@ -1683,23 +1725,18 @@
@@ -1698,23 +1759,18 @@
}
let elementIndex = 0;
@ -207,11 +226,11 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..2885d896c4026278dfcb309f12230d6f
- }
- let children = Array.from(this.arrowScrollbox.children);
+ let verticalPinnedTabsContainer = this.verticalPinnedTabsContainer
+ let children = ZenWorkspaces.tabboxChildrenWithoutEmpty;
+ let children = gZenWorkspaces.tabboxChildrenWithoutEmpty;
let focusableItems = [];
- for (let child of children) {
+ for (let child of [...ZenWorkspaces.getCurrentEssentialsContainer().children, ...verticalPinnedTabsContainer.children, ...children]) {
+ for (let child of [...gZenWorkspaces.getCurrentEssentialsContainer().children, ...verticalPinnedTabsContainer.children, ...children]) {
if (isTab(child) && child.visible) {
child.elementIndex = elementIndex++;
focusableItems.push(child);
@ -223,15 +242,8 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..2885d896c4026278dfcb309f12230d6f
let visibleTabsInGroup = child.tabs.filter(tab => tab.visible);
visibleTabsInGroup.forEach(tab => {
tab.elementIndex = elementIndex++;
@@ -1707,12 +1744,14 @@
focusableItems.push(...visibleTabsInGroup);
}
@@ -1724,10 +1780,7 @@
}
+ let glanceTab = child.querySelector("tab[zen-glance-tab]");
+ if (isTab(child) && glanceTab) {
+ glanceTab.elementIndex = elementIndex++;
+ focusableItems.push(glanceTab);
+ }
}
- this.#focusableItems = [
@ -242,15 +254,15 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..2885d896c4026278dfcb309f12230d6f
return this.#focusableItems;
}
@@ -1720,6 +1759,7 @@
@@ -1735,6 +1788,7 @@
_invalidateCachedTabs() {
this.#allTabs = null;
this._invalidateCachedVisibleTabs();
+ ZenWorkspaces._allStoredTabs = null;
+ gZenWorkspaces._allStoredTabs = null;
}
_invalidateCachedVisibleTabs() {
@@ -1734,8 +1774,8 @@
@@ -1749,8 +1803,8 @@
#isContainerVerticalPinnedGrid(tab) {
return (
this.verticalMode &&
@ -261,25 +273,25 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..2885d896c4026278dfcb309f12230d6f
!this.expandOnHover
);
}
@@ -1751,7 +1791,7 @@
@@ -1766,7 +1820,7 @@
if (node == null) {
// We have a container for non-tab elements at the end of the scrollbox.
- node = this.arrowScrollbox.lastChild;
+ node = ZenWorkspaces.activeWorkspaceStrip.lastChild;
+ node = gZenWorkspaces.activeWorkspaceStrip.lastChild;
}
node.before(tab);
@@ -1846,7 +1886,7 @@
@@ -1861,7 +1915,7 @@
// There are separate "new tab" buttons for horizontal tabs toolbar, vertical tabs and
// for when the tab strip is overflowed (which is shared by vertical and horizontal tabs);
// Attach the long click popup to all of them.
- const newTab = document.getElementById("new-tab-button");
+ const newTab = ZenWorkspaces.activeWorkspaceStrip.querySelector("#tabs-newtab-button");
+ const newTab = gZenWorkspaces.activeWorkspaceStrip.querySelector("#tabs-newtab-button");
const newTab2 = this.newTabButton;
const newTabVertical = document.getElementById(
"vertical-tabs-newtab-button"
@@ -1941,10 +1981,12 @@
@@ -1956,10 +2010,12 @@
_handleTabSelect(aInstant) {
let selectedTab = this.selectedItem;
@ -292,91 +304,55 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..2885d896c4026278dfcb309f12230d6f
selectedTab._notselectedsinceload = false;
}
@@ -2085,16 +2127,15 @@
// Move pinned tabs to another container when the tabstrip is toggled to vertical
// and when session restore code calls _positionPinnedTabs; update styling whenever
// the number of pinned tabs changes.
- let verticalTabsContainer = document.getElementById(
- "vertical-pinned-tabs-container"
- );
+ let verticalTabsContainer = this.verticalPinnedTabsContainer;
let numPinned = gBrowser.pinnedTabCount;
-
- if (gBrowser.pinnedTabCount !== verticalTabsContainer.children.length) {
- let tabs = this.visibleTabs;
+ if (!ZenWorkspaces._hasInitializedTabsStrip) return;
+ let count = ZenWorkspaces.makeSurePinTabIsInCorrectPosition();
+ if (gBrowser.pinnedTabCount !== (verticalTabsContainer.children.length - count - 1 + ZenWorkspaces.getCurrentEssentialsContainer().children.length)) {
+ let tabs = this.allTabs.filter(tab => !tab.hasAttribute("zen-glance-tab"));
for (let i = 0; i < numPinned; i++) {
tabs[i].style.marginInlineStart = "";
- verticalTabsContainer.appendChild(tabs[i]);
+ tabs[i].hasAttribute("zen-essential") ? ZenWorkspaces.getCurrentEssentialsContainer().appendChild(tabs[i].group?.hasAttribute("split-view-group") ? tabs[i].group : tabs[i]) : verticalTabsContainer.insertBefore(tabs[i].group?.hasAttribute("split-view-group") ? tabs[i].group : tabs[i], verticalTabsContainer.lastChild);
}
}
@@ -2102,9 +2143,7 @@
}
_resetVerticalPinnedTabs() {
- let verticalTabsContainer = document.getElementById(
- "vertical-pinned-tabs-container"
- );
+ let verticalTabsContainer = this.verticalPinnedTabsContainer;
if (!verticalTabsContainer.children.length) {
return;
@@ -2117,7 +2156,7 @@
@@ -2132,6 +2188,7 @@
}
_positionPinnedTabs() {
- let tabs = this.visibleTabs;
+ let tabs = this.visibleTabs.filter(tab => !tab.hasAttribute("zen-glance-tab"));
+ if (true) return;
let tabs = this.visibleTabs;
let numPinned = gBrowser.pinnedTabCount;
let absPositionHorizontalTabs =
this.overflowing && tabs.length > numPinned && numPinned > 0;
@@ -2127,7 +2166,7 @@
if (this.verticalMode) {
this._updateVerticalPinnedTabs();
- } else if (absPositionHorizontalTabs) {
+ } else if (absPositionHorizontalTabs && false) {
let layoutData = this._pinnedTabsLayoutCache;
let uiDensity = document.documentElement.getAttribute("uidensity");
if (!layoutData || layoutData.uiDensity != uiDensity) {
@@ -2191,7 +2230,7 @@
@@ -2206,7 +2263,7 @@
return;
}
- let tabs = this.visibleTabs.slice(0, gBrowser.pinnedTabCount);
+ let tabs = this.visibleTabs.filter(tab => !tab.hasAttribute("zen-glance-tab")).slice(0, gBrowser._numZenVisibleEssentials);
+ let tabs = this.ariaFocusableItems.slice(0, gBrowser._numZenEssentials);
let directionX = screenX > dragData.animLastScreenX;
let directionY = screenY > dragData.animLastScreenY;
@@ -2199,7 +2238,7 @@
dragData.animLastScreenX = screenX;
@@ -2215,6 +2272,8 @@
let { width: tabWidth, height: tabHeight } =
- draggedTab.getBoundingClientRect();
+ (draggedTab.group?.hasAttribute("split-view-group") ? draggedTab.group : draggedTab).getBoundingClientRect();
draggedTab.getBoundingClientRect();
+ tabWidth += 4; // Add 4px to account for the gap
+ tabHeight += 4;
let shiftSizeX = tabWidth * movingTabs.length;
let shiftSizeY = tabHeight;
dragData.tabWidth = tabWidth;
@@ -2374,12 +2413,16 @@
@@ -2244,7 +2303,7 @@
let translateX = screenX - dragData.screenX;
let translateY = screenY - dragData.screenY;
translateY +=
- this.verticalPinnedTabsContainer.scrollPosition - dragData.scrollPos;
+ dragData.scrollPos;
let firstBoundX = firstTabInRow.screenX - firstMovingTabScreenX;
let firstBoundY = firstTabInRow.screenY - firstMovingTabScreenY;
let lastBoundX =
@@ -2389,12 +2448,16 @@
this.#clearDragOverCreateGroupTimer();
- let isPinned = draggedTab.pinned;
- let numPinned = gBrowser.pinnedTabCount;
- let tabs = this.ariaFocusableItems.slice(
- isPinned ? 0 : numPinned,
- isPinned ? numPinned : undefined
+ let isPinned = draggedTab?.group ? draggedTab.group.pinned : draggedTab.pinned;
+ let numPinned = gBrowser._numVisiblePinTabsWithoutCollapsed;
+ let essential = draggedTab.hasAttribute("zen-essential");
+ let tabs = this.ariaFocusableItems.filter(tab => !tab.hasAttribute("zen-glance-tab")).slice(
+ isPinned ? (essential ? 0 : gBrowser._numZenVisibleEssentials) : numPinned,
+ isPinned ? (essential ? gBrowser._numZenVisibleEssentials : numPinned) : undefined
let tabs = this.ariaFocusableItems.slice(
- isPinned ? 0 : numPinned,
- isPinned ? numPinned : undefined
+ isPinned ? (essential ? 0 : gBrowser._numZenEssentials) : numPinned,
+ isPinned ? (essential ? gBrowser._numZenEssentials : numPinned) : undefined
);
+ if (draggedTab.group?.hasAttribute("split-view-group")) {
+ draggedTab = draggedTab.group.labelElement;
@ -384,7 +360,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..2885d896c4026278dfcb309f12230d6f
if (this.#rtlMode) {
tabs.reverse();
@@ -2393,7 +2436,7 @@
@@ -2408,7 +2471,7 @@
let size = this.verticalMode ? "height" : "width";
let translateAxis = this.verticalMode ? "translateY" : "translateX";
let scrollDirection = this.verticalMode ? "scrollTop" : "scrollLeft";
@ -393,7 +369,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..2885d896c4026278dfcb309f12230d6f
let translateX = event.screenX - dragData.screenX;
let translateY = event.screenY - dragData.screenY;
@@ -2407,10 +2450,19 @@
@@ -2422,12 +2485,21 @@
let lastTab = tabs.at(-1);
let lastMovingTab = movingTabs.at(-1);
let firstMovingTab = movingTabs[0];
@ -411,9 +387,12 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..2885d896c4026278dfcb309f12230d6f
+ shiftSize += 5; // A hack to allow more space for the group
+ }
let translate = screen - dragData[screenAxis];
if (!isPinned) {
- if (!isPinned) {
+ if (true) {
translate +=
@@ -2431,6 +2483,9 @@
this.arrowScrollbox.scrollbox[scrollDirection] - dragData.scrollPos;
} else if (isPinned && this.verticalMode) {
@@ -2446,6 +2518,9 @@
// Shift the `.tab-group-label-container` to shift the label element.
item = item.parentElement;
}
@ -423,7 +402,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..2885d896c4026278dfcb309f12230d6f
item.style.transform = `${translateAxis}(${translate}px)`;
}
@@ -2568,6 +2623,9 @@
@@ -2583,6 +2658,9 @@
break;
}
let element = tabs[mid];
@ -433,7 +412,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..2885d896c4026278dfcb309f12230d6f
let elementForSize = isTabGroupLabel(element)
? element.parentElement
: element;
@@ -2590,6 +2648,10 @@
@@ -2605,6 +2683,10 @@
if (!dropElement) {
dropElement = this.ariaFocusableItems[oldDropElementIndex];
}
@ -444,7 +423,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..2885d896c4026278dfcb309f12230d6f
let newDropElementIndex = dropElement
? dropElement.elementIndex
: oldDropElementIndex;
@@ -2598,7 +2660,7 @@
@@ -2613,7 +2695,7 @@
let shouldCreateGroupOnDrop;
let dropBefore;
if (dropElement) {
@ -453,7 +432,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..2885d896c4026278dfcb309f12230d6f
? dropElement.parentElement
: dropElement;
@@ -2660,12 +2722,12 @@
@@ -2675,12 +2757,12 @@
}
}
@ -468,7 +447,16 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..2885d896c4026278dfcb309f12230d6f
dropElement != draggedTab &&
isTab(dropElement) &&
!dropElement?.group &&
@@ -2735,7 +2797,7 @@
@@ -2720,7 +2802,7 @@
// Dropping right before the tab group.
dropElement = dropElementGroup;
colorCode = undefined;
- } else if (dropElementGroup.collapsed) {
+ } else if (dropElement?.group?.hasAttribute("split-view-group")) {
// Dropping right after the collapsed tab group.
dropElement = dropElementGroup;
colorCode = undefined;
@@ -2750,7 +2832,7 @@
// Shift background tabs to leave a gap where the dragged tab
// would currently be dropped.
for (let item of tabs) {
@ -477,7 +465,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..2885d896c4026278dfcb309f12230d6f
continue;
}
@@ -2744,6 +2806,9 @@
@@ -2759,6 +2841,9 @@
if (isTabGroupLabel(item)) {
// Shift the `.tab-group-label-container` to shift the label element.
item = item.parentElement;
@ -487,7 +475,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..2885d896c4026278dfcb309f12230d6f
}
item.style.transform = transform;
}
@@ -2796,8 +2861,9 @@
@@ -2811,8 +2896,9 @@
);
}
@ -499,7 +487,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..2885d896c4026278dfcb309f12230d6f
return;
}
@@ -2809,6 +2875,12 @@
@@ -2824,6 +2910,12 @@
item = item.parentElement;
}
item.style.transform = "";
@ -512,7 +500,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..2885d896c4026278dfcb309f12230d6f
item.removeAttribute("dragover-createGroup");
}
this.removeAttribute("movingtab-createGroup");
@@ -2855,7 +2927,7 @@
@@ -2870,7 +2962,7 @@
let postTransitionCleanup = () => {
movingTab._moveTogetherSelectedTabsData.animate = false;
};
@ -521,7 +509,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..2885d896c4026278dfcb309f12230d6f
postTransitionCleanup();
} else {
let onTransitionEnd = transitionendEvent => {
@@ -3028,7 +3100,7 @@
@@ -3043,7 +3135,7 @@
}
_notifyBackgroundTab(aTab) {
@ -530,7 +518,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..2885d896c4026278dfcb309f12230d6f
return;
}
@@ -3154,6 +3226,9 @@
@@ -3169,6 +3261,9 @@
return null;
}
}

View file

@ -1,5 +1,5 @@
diff --git a/browser/components/urlbar/UrlbarInput.sys.mjs b/browser/components/urlbar/UrlbarInput.sys.mjs
index 4b69136aa31bfef3a1d3b57ad0c75fe07fa26be0..2de9f51784a92442da84ead54312e879c1da127b 100644
index 0c5145c3d31862bd2c6b5ed2faa88f02425ffde1..1cf86995514b2c00360f6ed681f0c640dac8ab56 100644
--- a/browser/components/urlbar/UrlbarInput.sys.mjs
+++ b/browser/components/urlbar/UrlbarInput.sys.mjs
@@ -68,6 +68,13 @@ XPCOMUtils.defineLazyPreferenceGetter(
@ -16,19 +16,24 @@ index 4b69136aa31bfef3a1d3b57ad0c75fe07fa26be0..2de9f51784a92442da84ead54312e879
const DEFAULT_FORM_HISTORY_NAME = "searchbar-history";
const SEARCH_BUTTON_CLASS = "urlbar-search-button";
@@ -349,7 +356,11 @@ export class UrlbarInput {
@@ -355,7 +362,16 @@ export class UrlbarInput {
// See _on_select(). HTMLInputElement.select() dispatches a "select"
// event but does not set the primary selection.
this._suppressPrimaryAdjustment = true;
+ this.document.getElementById("navigator-toolbox").setAttribute("supress-primary-adjustment", !this.document.getElementById("navigator-toolbox").hasAttribute("zen-has-hover"));
+ const zenToolbox = this.document.getElementById("navigator-toolbox");
+ this.window.document.documentElement.setAttribute("supress-primary-adjustment", !(
+ zenToolbox.hasAttribute("zen-has-hover") ||
+ zenToolbox.hasAttribute("zen-has-empty-tab") ||
+ zenToolbox.hasAttribute("zen-user-show")
+ ));
this.inputField.select();
+ this.document.ownerGlobal.setTimeout(() => {
+ this.document.getElementById("navigator-toolbox").removeAttribute("supress-primary-adjustment");
+ }, 100);
+ this.window.document.documentElement.removeAttribute("supress-primary-adjustment");
+ }, 0);
this._suppressPrimaryAdjustment = false;
}
@@ -425,6 +436,10 @@ export class UrlbarInput {
@@ -431,6 +447,10 @@ export class UrlbarInput {
hideSearchTerms = false,
isSameDocument = false
) {
@ -39,20 +44,25 @@ index 4b69136aa31bfef3a1d3b57ad0c75fe07fa26be0..2de9f51784a92442da84ead54312e879
// We only need to update the searchModeUI on tab switch conditionally
// as we only persist searchMode with ScotchBonnet enabled.
if (
@@ -698,8 +713,11 @@ export class UrlbarInput {
@@ -735,8 +755,16 @@ export class UrlbarInput {
return;
}
}
-
+ this.document.getElementById("navigator-toolbox").setAttribute("supress-primary-adjustment", !this.document.getElementById("navigator-toolbox").hasAttribute("zen-has-hover"));
+ const zenToolbox = this.document.getElementById("navigator-toolbox");
+ this.window.document.documentElement.setAttribute("supress-primary-adjustment", !(
+ zenToolbox.hasAttribute("zen-has-hover") ||
+ zenToolbox.hasAttribute("zen-has-empty-tab") ||
+ zenToolbox.hasAttribute("zen-user-show")
+ ));
this.handleNavigation({ event });
+ this.document.ownerGlobal.setTimeout(() => {
+ this.document.getElementById("navigator-toolbox").removeAttribute("supress-primary-adjustment");
+ }, 200);
+ this.window.document.documentElement.removeAttribute("supress-primary-adjustment");
+ }, 0);
}
/**
@@ -1093,7 +1111,11 @@ export class UrlbarInput {
@@ -1142,7 +1170,11 @@ export class UrlbarInput {
}
if (!this.#providesSearchMode(result)) {
@ -64,8 +74,8 @@ index 4b69136aa31bfef3a1d3b57ad0c75fe07fa26be0..2de9f51784a92442da84ead54312e879
+ }
}
this.controller.recordSelectedResult(event, result);
@@ -2125,6 +2147,10 @@ export class UrlbarInput {
if (isCanonized) {
@@ -2191,6 +2223,10 @@ export class UrlbarInput {
await this.#updateLayoutBreakoutDimensions();
}
@ -76,19 +86,20 @@ index 4b69136aa31bfef3a1d3b57ad0c75fe07fa26be0..2de9f51784a92442da84ead54312e879
startLayoutExtend() {
if (!this.#allowBreakout || this.hasAttribute("breakout-extend")) {
// Do not expand if the Urlbar does not support being expanded or it is
@@ -2147,6 +2173,11 @@ export class UrlbarInput {
@@ -2205,6 +2241,12 @@ export class UrlbarInput {
this.setAttribute("breakout-extend", "true");
+ if (lazy.ZEN_URLBAR_BEHAVIOR == 'float' || (lazy.ZEN_URLBAR_BEHAVIOR == 'floating-on-type' && !this.focusedViaMousedown)) {
+ this.setAttribute("zen-floating-urlbar", "true");
+ this.window.gZenUIManager.onFloatingURLBarOpen();
+ } else {
+ this.removeAttribute("zen-floating-urlbar");
+ }
// Enable the animation only after the first extend call to ensure it
// doesn't run when opening a new window.
if (!this.hasAttribute("breakout-extend-animate")) {
@@ -2166,6 +2197,19 @@ export class UrlbarInput {
@@ -2224,6 +2266,24 @@ export class UrlbarInput {
return;
}
@ -97,18 +108,23 @@ index 4b69136aa31bfef3a1d3b57ad0c75fe07fa26be0..2de9f51784a92442da84ead54312e879
+ }
+
+ // Arc like URLbar: Blur the input on exit
+ this.document.getElementById("navigator-toolbox").setAttribute("supress-primary-adjustment", !this.document.getElementById("navigator-toolbox").hasAttribute("zen-has-hover"));
+ const zenToolbox = this.document.getElementById("navigator-toolbox");
+ this.window.document.documentElement.setAttribute("supress-primary-adjustment", !(
+ zenToolbox.hasAttribute("zen-has-hover") ||
+ zenToolbox.hasAttribute("zen-has-empty-tab") ||
+ zenToolbox.hasAttribute("zen-user-show")
+ ));
+ this.window.gBrowser.selectedBrowser.focus();
+ this.window.setTimeout(() => {
+ this.document.getElementById("navigator-toolbox").removeAttribute("supress-primary-adjustment");
+ }, 100);
+ this.document.ownerGlobal.setTimeout(() => {
+ this.window.document.documentElement.removeAttribute("supress-primary-adjustment");
+ }, 0);
+
+ this.removeAttribute("zen-floating-urlbar");
+
this.removeAttribute("breakout-extend");
this.#updateTextboxPosition();
}
@@ -2485,7 +2529,7 @@ export class UrlbarInput {
@@ -2553,7 +2613,7 @@ export class UrlbarInput {
this.textbox.parentNode.style.setProperty(
"--urlbar-container-height",
@ -117,7 +133,15 @@ index 4b69136aa31bfef3a1d3b57ad0c75fe07fa26be0..2de9f51784a92442da84ead54312e879
);
this.textbox.style.setProperty(
"--urlbar-height",
@@ -2998,7 +3042,7 @@ export class UrlbarInput {
@@ -2968,6 +3028,7 @@ export class UrlbarInput {
}
_toggleActionOverride(event) {
+ if (!Services.prefs.getBoolPref("zen.urlbar.enable-overrides")) return;
if (
event.keyCode == KeyEvent.DOM_VK_SHIFT ||
event.keyCode == KeyEvent.DOM_VK_ALT ||
@@ -3069,7 +3130,7 @@ export class UrlbarInput {
*/
_trimValue(val) {
let trimmedValue = lazy.UrlbarPrefs.get("trimURLs")
@ -126,7 +150,7 @@ index 4b69136aa31bfef3a1d3b57ad0c75fe07fa26be0..2de9f51784a92442da84ead54312e879
: val;
// Only trim value if the directionality doesn't change to RTL and we're not
// showing a strikeout https protocol.
@@ -3368,6 +3412,10 @@ export class UrlbarInput {
@@ -3439,6 +3500,10 @@ export class UrlbarInput {
}
reuseEmpty = true;
}
@ -137,7 +161,7 @@ index 4b69136aa31bfef3a1d3b57ad0c75fe07fa26be0..2de9f51784a92442da84ead54312e879
if (
where == "tab" &&
reuseEmpty &&
@@ -3375,6 +3423,9 @@ export class UrlbarInput {
@@ -3446,6 +3511,9 @@ export class UrlbarInput {
) {
where = "current";
}
@ -147,7 +171,7 @@ index 4b69136aa31bfef3a1d3b57ad0c75fe07fa26be0..2de9f51784a92442da84ead54312e879
return where;
}
@@ -3632,6 +3683,7 @@ export class UrlbarInput {
@@ -3703,6 +3771,7 @@ export class UrlbarInput {
this.setResultForCurrentValue(null);
this.handleCommand();
this.controller.clearLastQueryContextCache();
@ -155,7 +179,7 @@ index 4b69136aa31bfef3a1d3b57ad0c75fe07fa26be0..2de9f51784a92442da84ead54312e879
this._suppressStartQuery = false;
});
@@ -3639,7 +3691,6 @@ export class UrlbarInput {
@@ -3710,7 +3779,6 @@ export class UrlbarInput {
contextMenu.addEventListener("popupshowing", () => {
// Close the results pane when the input field contextual menu is open,
// because paste and go doesn't want a result selection.
@ -163,7 +187,7 @@ index 4b69136aa31bfef3a1d3b57ad0c75fe07fa26be0..2de9f51784a92442da84ead54312e879
let controller =
this.document.commandDispatcher.getControllerForCommand("cmd_paste");
@@ -4053,6 +4104,11 @@ export class UrlbarInput {
@@ -4136,6 +4204,11 @@ export class UrlbarInput {
}
_on_click(event) {
@ -175,7 +199,7 @@ index 4b69136aa31bfef3a1d3b57ad0c75fe07fa26be0..2de9f51784a92442da84ead54312e879
if (
event.target == this.inputField ||
event.target == this._inputContainer ||
@@ -4124,7 +4180,7 @@ export class UrlbarInput {
@@ -4207,7 +4280,7 @@ export class UrlbarInput {
}
}
@ -184,7 +208,7 @@ index 4b69136aa31bfef3a1d3b57ad0c75fe07fa26be0..2de9f51784a92442da84ead54312e879
this.view.autoOpen({ event });
} else {
if (this._untrimOnFocusAfterKeydown) {
@@ -4164,9 +4220,12 @@ export class UrlbarInput {
@@ -4247,9 +4320,16 @@ export class UrlbarInput {
}
_on_mousedown(event) {
@ -192,24 +216,28 @@ index 4b69136aa31bfef3a1d3b57ad0c75fe07fa26be0..2de9f51784a92442da84ead54312e879
+ switch (event.zenOriginalTarget || event.currentTarget) {
case this.textbox: {
this._mousedownOnUrlbarDescendant = true;
+ if (event.type != "click") {
+ const isProbablyFloating =
+ (lazy.ZEN_URLBAR_BEHAVIOR == "floating-on-type" &&
+ this.hasAttribute("breakout-extend") && !this.focusedViaMousedown) ||
+ (lazy.ZEN_URLBAR_BEHAVIOR == "float") || this.window.gZenVerticalTabsManager._hasSetSingleToolbar;
+ if (event.type != "click" && isProbablyFloating || event.type == "click" && !isProbablyFloating) {
+ return true;
+ }
if (
event.target != this.inputField &&
@@ -4176,8 +4235,8 @@ export class UrlbarInput {
break;
}
@@ -4261,6 +4341,10 @@ export class UrlbarInput {
- this.focusedViaMousedown = !this.focused;
- this._preventClickSelectsAll = this.focused;
+ this.focusedViaMousedown = !(lazy.ZEN_URLBAR_BEHAVIOR === 'default' ? this.focused : this.hasAttribute("breakout-extend"));
+ this._preventClickSelectsAll = lazy.ZEN_URLBAR_BEHAVIOR === 'default' ? this.focused : this.hasAttribute("breakout-extend");
this.focusedViaMousedown = !this.focused;
this._preventClickSelectsAll = this.focused;
+ if (isProbablyFloating) {
+ this.focusedViaMousedown = !this.hasAttribute("breakout-extend");
+ this._preventClickSelectsAll = this.hasAttribute("breakout-extend");
+ }
// Keep the focus status, since the attribute may be changed
// upon calling this.focus().
@@ -4218,7 +4277,7 @@ export class UrlbarInput {
@@ -4301,7 +4385,7 @@ export class UrlbarInput {
}
// Don't close the view when clicking on a tab; we may want to keep the
// view open on tab switch, and the TabSelect event arrived earlier.

View file

@ -0,0 +1,12 @@
diff --git a/browser/components/urlbar/UrlbarMuxerUnifiedComplete.sys.mjs b/browser/components/urlbar/UrlbarMuxerUnifiedComplete.sys.mjs
index dcf1af43d62979d3226d7f704c51a2f0bb935cc0..8879d657b99cb20cd657c2e4841738ffaa09c658 100644
--- a/browser/components/urlbar/UrlbarMuxerUnifiedComplete.sys.mjs
+++ b/browser/components/urlbar/UrlbarMuxerUnifiedComplete.sys.mjs
@@ -794,6 +794,7 @@ class MuxerUnifiedComplete extends UrlbarMuxer {
}
if (result.providerName == lazy.UrlbarProviderTabToSearch.name) {
+ return false;
// Discard the result if a tab-to-search result was added already.
if (!state.canAddTabToSearch) {
return false;

View file

@ -0,0 +1,56 @@
diff --git a/browser/components/urlbar/UrlbarProviderPlaces.sys.mjs b/browser/components/urlbar/UrlbarProviderPlaces.sys.mjs
index 899e808c5f8cf14577404e3d1766fe967b32b065..82854a04edc21ac4552d06d6ba45c4714b5ef5cb 100644
--- a/browser/components/urlbar/UrlbarProviderPlaces.sys.mjs
+++ b/browser/components/urlbar/UrlbarProviderPlaces.sys.mjs
@@ -35,6 +35,8 @@ const QUERYINDEX_SWITCHTAB = 9;
const QUERYINDEX_FRECENCY = 10;
const QUERYINDEX_USERCONTEXTID = 11;
const QUERYINDEX_LASTVIST = 12;
+const QUERYINDEX_PINNEDTITLE = 13;
+const QUERYINDEX_PINNEDURL = 14;
// This SQL query fragment provides the following:
// - whether the entry is bookmarked (QUERYINDEX_BOOKMARKED)
@@ -56,11 +58,14 @@ const SQL_BOOKMARK_TAGS_FRAGMENT = `EXISTS(SELECT 1 FROM moz_bookmarks WHERE fk
// condition once, and avoid evaluating "btitle" and "tags" when it is false.
function defaultQuery(conditions = "") {
let query = `SELECT :query_type, h.url, h.title, ${SQL_BOOKMARK_TAGS_FRAGMENT},
- h.visit_count, h.typed, h.id, t.open_count, ${lazy.PAGES_FRECENCY_FIELD}, t.userContextId, h.last_visit_date
+ h.visit_count, h.typed, h.id, t.open_count, ${lazy.PAGES_FRECENCY_FIELD}, t.userContextId, h.last_visit_date,
+ zp.title AS pinned_title, zp.url AS pinned_url
FROM moz_places h
LEFT JOIN moz_openpages_temp t
ON t.url = h.url
AND (t.userContextId = :userContextId OR (t.userContextId <> -1 AND :userContextId IS NULL))
+ LEFT JOIN zen_pins zp
+ ON zp.url = h.url
WHERE (
(:switchTabsEnabled AND t.open_count > 0) OR
${lazy.PAGES_FRECENCY_FIELD} <> 0
@@ -74,7 +79,7 @@ function defaultQuery(conditions = "") {
:matchBehavior, :searchBehavior, NULL)
ELSE
AUTOCOMPLETE_MATCH(:searchString, h.url,
- h.title, '',
+ IFNULL(zp.title, h.title), '',
h.visit_count, h.typed,
0, t.open_count,
:matchBehavior, :searchBehavior, NULL)
@@ -1130,11 +1135,14 @@ Search.prototype = {
let lastVisit = lastVisitPRTime
? lazy.PlacesUtils.toDate(lastVisitPRTime).getTime()
: undefined;
-
+ let pinnedTitle = row.getResultByIndex(QUERYINDEX_PINNEDTITLE);
+ let pinnedUrl = row.getResultByIndex(QUERYINDEX_PINNEDURL);
+
+
let match = {
placeId,
- value: url,
- comment: bookmarkTitle || historyTitle,
+ value: pinnedUrl || url,
+ comment: pinnedTitle || bookmarkTitle || historyTitle,
icon: UrlbarUtils.getIconForUrl(url),
frecency: frecency || FRECENCY_DEFAULT,
userContextId,

View file

@ -0,0 +1,12 @@
diff --git a/browser/components/urlbar/UrlbarValueFormatter.sys.mjs b/browser/components/urlbar/UrlbarValueFormatter.sys.mjs
index dfa91b76ad3890ceadb1b1b5d7a63b7074fbb776..6369fa1cdb242de32338bbce6debcdab2a04ca02 100644
--- a/browser/components/urlbar/UrlbarValueFormatter.sys.mjs
+++ b/browser/components/urlbar/UrlbarValueFormatter.sys.mjs
@@ -585,6 +585,7 @@ export class UrlbarValueFormatter {
this.window.requestAnimationFrame(() => {
if (instance == this._resizeInstance) {
this.#ensureFormattedHostVisible();
+ this._formatURL();
}
});
}, 100);

View file

@ -1,5 +1,5 @@
diff --git a/browser/components/urlbar/UrlbarView.sys.mjs b/browser/components/urlbar/UrlbarView.sys.mjs
index d5382623595de8daed8cd13ea2eb2de329a4bd92..8e160e0bb5a1cd626753feba2008a24e3bbd84cd 100644
index e17f3d34367d6567c89f632b6d1ce537608a6829..7528dfb0abc8ea8d9315591cd529a341b4c3962a 100644
--- a/browser/components/urlbar/UrlbarView.sys.mjs
+++ b/browser/components/urlbar/UrlbarView.sys.mjs
@@ -609,7 +609,7 @@ export class UrlbarView {
@ -11,3 +11,21 @@ index d5382623595de8daed8cd13ea2eb2de329a4bd92..8e160e0bb5a1cd626753feba2008a24e
// Try to reuse the cached top-sites context. If it's not cached, then
// there will be a gap of time between when the input is focused and
// when the view opens that can be perceived as flicker.
@@ -1325,7 +1325,7 @@ export class UrlbarView {
includeHiddenExposures: true,
});
let canBeVisible =
- newSpanCount <= this.#queryContext.maxResults && !seenMisplacedResult;
+ newSpanCount < this.#queryContext.maxResults && !seenMisplacedResult;
if (result.isHiddenExposure) {
if (canBeVisible) {
this.controller.engagementEvent.addExposure(
@@ -2975,7 +2975,7 @@ export class UrlbarView {
}
#enableOrDisableRowWrap() {
- let wrap = getBoundsWithoutFlushing(this.input.textbox).width < 650;
+ let wrap = false;
this.#rows.toggleAttribute("wrap", wrap);
this.oneOffSearchButtons.container.toggleAttribute("wrap", wrap);
}

View file

@ -1,8 +1,8 @@
diff --git a/browser/extensions/newtab/lib/ActivityStream.sys.mjs b/browser/extensions/newtab/lib/ActivityStream.sys.mjs
index 14183ad7165dc91126b4409b26f669409c4e9905..be979225b89b193b9e9c8903de5740dc04a8999f 100644
index a00011de585a40b91d33364a04c6bf5c86145ecd..f98b6d11519a80aff307513fd77361179f9914a4 100644
--- a/browser/extensions/newtab/lib/ActivityStream.sys.mjs
+++ b/browser/extensions/newtab/lib/ActivityStream.sys.mjs
@@ -215,7 +215,7 @@ export const PREFS_CONFIG = new Map([
@@ -228,7 +228,7 @@ export const PREFS_CONFIG = new Map([
"showSponsoredTopSites",
{
title: "Show sponsored top sites",

View file

@ -0,0 +1,22 @@
diff --git a/browser/installer/windows/nsis/defines.nsi.in b/browser/installer/windows/nsis/defines.nsi.in
index eb9e403c36510bfda09eb84b8a35dff731279f5d..939d34dff255122947bf3eeabc9087685f101568 100644
--- a/browser/installer/windows/nsis/defines.nsi.in
+++ b/browser/installer/windows/nsis/defines.nsi.in
@@ -90,7 +90,7 @@
!define BETA_UPDATE_CHANNEL
!endif
-!define BaseURLStubPing "http://download-stats.mozilla.org/stub"
+!define BaseURLStubPing ""
# ARCH is used when it is necessary to differentiate the x64 registry keys from
# the x86 registry keys (e.g. the uninstall registry key).
@@ -148,7 +148,7 @@ VIAddVersionKey "ProductVersion" "${AppVersion}"
!define APPROXIMATE_REQUIRED_SPACE_MB "145"
# Constants for parts of the telemetry submission URL
-!define TELEMETRY_BASE_URL https://incoming.telemetry.mozilla.org/submit
+!define TELEMETRY_BASE_URL
!define TELEMETRY_NAMESPACE firefox-installer
!define TELEMETRY_INSTALL_PING_VERSION 1
!define TELEMETRY_INSTALL_PING_DOCTYPE install

View file

@ -0,0 +1,20 @@
diff --git a/browser/installer/windows/nsis/installer.nsi b/browser/installer/windows/nsis/installer.nsi
index 491bcbbd8430410fa930e7b52491ea62f2c48bbc..42d960f4adb4837009e0106a137c14fcbd7a55f9 100755
--- a/browser/installer/windows/nsis/installer.nsi
+++ b/browser/installer/windows/nsis/installer.nsi
@@ -837,7 +837,7 @@ Section "-InstallEndCleanup"
; When we're using the GUI, .onGUIEnd sends the ping, but of course that isn't
; invoked when we're running silently.
${If} ${Silent}
- Call SendPing
+ ; Call SendPing
${EndIf}
SectionEnd
@@ -1965,5 +1965,5 @@ FunctionEnd
Function .onGUIEnd
${OnEndCommon}
- Call SendPing
+ ; Call SendPing
FunctionEnd

View file

@ -0,0 +1,13 @@
diff --git a/browser/locales/en-US/installer/custom.properties b/browser/locales/en-US/installer/custom.properties
index 8c33192e589de1d819cbb21c31cec0480ed4c85e..9db296363303c153dc05ad9e85493f1197bb1efd 100644
--- a/browser/locales/en-US/installer/custom.properties
+++ b/browser/locales/en-US/installer/custom.properties
@@ -73,7 +73,7 @@ STATUS_INSTALL_APP=Installing $BrandShortName
STATUS_UNINSTALL_MAIN=Uninstalling $BrandShortName
STATUS_CLEANUP=A Little Housekeeping
-UN_SURVEY_CHECKBOX_LABEL=Tell Mozilla why you uninstalled $BrandShortName
+UN_SURVEY_CHECKBOX_LABEL=Tell Zen´s Team why you uninstalled $BrandShortName
# _DESC strings support approximately 65 characters per line.
# One line

View file

@ -1,8 +1,8 @@
diff --git a/browser/modules/ExtensionsUI.sys.mjs b/browser/modules/ExtensionsUI.sys.mjs
index 3f74e47bf7602fa800d1cf3034ec67055cc792b6..e700b88d1aee80c946e234f89f695a31d71ff608 100644
index 9734d95742035dbe6f608ad3cdaaefc6ed5b83bc..9a7bbb272025e84968d3173faca259f558746c5e 100644
--- a/browser/modules/ExtensionsUI.sys.mjs
+++ b/browser/modules/ExtensionsUI.sys.mjs
@@ -436,7 +436,7 @@ export var ExtensionsUI = {
@@ -466,7 +466,7 @@ export var ExtensionsUI = {
eventCallback,
removeOnDismissal: true,
popupOptions: {

View file

@ -1,8 +1,8 @@
diff --git a/browser/themes/BuiltInThemeConfig.sys.mjs b/browser/themes/BuiltInThemeConfig.sys.mjs
index 081187147736f56abfe5866a69e00ac13a8dd940..9a980fe858c1a77af7634037aebc332d237e9c11 100644
index a5361f1f0ec57f575f8d76e118ff762dc7547501..db5c5eb2059b4ceef3911fd807bf985408859d1a 100644
--- a/browser/themes/BuiltInThemeConfig.sys.mjs
+++ b/browser/themes/BuiltInThemeConfig.sys.mjs
@@ -33,13 +33,6 @@ export const BuiltInThemeConfig = new Map([
@@ -33,11 +33,4 @@ export const BuiltInThemeConfig = new Map([
path: "resource://builtin-themes/dark/",
},
],
@ -13,6 +13,4 @@ index 081187147736f56abfe5866a69e00ac13a8dd940..9a980fe858c1a77af7634037aebc332d
- path: "resource://builtin-themes/alpenglow/",
- },
- ],
[
"2022red-colorway@mozilla.org",
{
]);

View file

@ -1,22 +0,0 @@
diff --git a/browser/themes/BuiltInThemes.sys.mjs b/browser/themes/BuiltInThemes.sys.mjs
index cc7f6cf93e04d339fb79a028b1e5ac6e79eae9c3..85e0d653f9a6d577bdea2a1c9d53018dd45684fa 100644
--- a/browser/themes/BuiltInThemes.sys.mjs
+++ b/browser/themes/BuiltInThemes.sys.mjs
@@ -74,7 +74,7 @@ class _BuiltInThemes {
maybeInstallActiveBuiltInTheme() {
const activeThemeID = Services.prefs.getStringPref(
kActiveThemePref,
- "default-theme@mozilla.org"
+ "firefox-compact-dark@mozilla.org"
);
let activeBuiltInTheme = this.builtInThemeMap.get(activeThemeID);
@@ -166,7 +166,7 @@ class _BuiltInThemes {
async _uninstallExpiredThemes() {
const activeThemeID = Services.prefs.getStringPref(
kActiveThemePref,
- "default-theme@mozilla.org"
+ "firefox-compact-dark@mozilla.org"
);
const now = new Date();
const expiredThemes = Array.from(this.builtInThemeMap.entries()).filter(

View file

@ -1,22 +0,0 @@
diff --git a/browser/themes/addons/jar.mn b/browser/themes/addons/jar.mn
index 69bb3000d6d2d249d1d77262dc2a0057d0318308..bbed04a6b6f11c582e17e08201db260b9ed496b7 100644
--- a/browser/themes/addons/jar.mn
+++ b/browser/themes/addons/jar.mn
@@ -5,8 +5,8 @@
browser.jar:
% resource builtin-themes %content/builtin-themes/
- content/builtin-themes/alpenglow (alpenglow/*.svg)
- content/builtin-themes/alpenglow/manifest.json (alpenglow/manifest.json)
+# content/builtin-themes/alpenglow (alpenglow/*.svg)
+# content/builtin-themes/alpenglow/manifest.json (alpenglow/manifest.json)
content/builtin-themes/dark (dark/*.svg)
content/builtin-themes/dark (dark/*.css)
@@ -100,3 +100,5 @@ browser.jar:
content/builtin-themes/colorways/2022innovator/balanced/manifest.json (colorways/2022-independent-voices/innovator/balanced/manifest.json)
content/builtin-themes/colorways/2022innovator/bold (colorways/2022-independent-voices/innovator/bold/*.svg)
content/builtin-themes/colorways/2022innovator/bold/manifest.json (colorways/2022-independent-voices/innovator/bold/manifest.json)
+
+#include zen-addons.inc.mn
\ No newline at end of file

Some files were not shown because too many files have changed in this diff Show more