Compare commits

...

147 Commits

Author SHA1 Message Date
mr. m
368cb06d77 Revert "chore: Change the twilight release tag name to canary, b=no-bug, c=workflows"
This reverts commit d28622e749.
2026-02-21 11:37:28 +01:00
mr. m
d28622e749 chore: Change the twilight release tag name to canary, b=no-bug, c=workflows 2026-02-21 10:30:28 +01:00
mr. m
84679f912d Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2026-02-21 10:10:21 +01:00
mr. m
b1ef36c670 feat: Only load about:blank for secondary views when needed, b=no-bug, c=no-component 2026-02-21 10:10:05 +01:00
Slowlife
c28d6520d6 feat: Live folders, p=#11921
Co-authored-by: Slowlife01 <slowlife1165@gmail.com>
Co-authored-by: mr. m <91018726+mr-cheffy@users.noreply.github.com>
Co-authored-by: reizumi <reizumichan@protonmail.com>
2026-02-21 00:17:05 +01:00
mr. m
97078b42ac feat: Make sure to search from other backups files when restoring, b=no-bug, c=no-component 2026-02-21 00:04:09 +01:00
mr. m
29eae92fcb feat: Fix spelling mistake on recovery data, b=no-bug, c=no-component 2026-02-20 22:23:00 +01:00
mr. m
124bcee596 Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2026-02-20 21:52:03 +01:00
mr. m
92faf227b7 feat: Disable rounded corners for GTK windows, b=closes #6302, c=no-component 2026-02-20 21:38:05 +01:00
kae
7280e03c12 fix: reset the search mode after closing the urlbar, p=#12437
Co-authored-by: mr. m <91018726+mr-cheffy@users.noreply.github.com>
2026-02-20 17:28:02 +01:00
mr. m
dbb1e28b2f chore: Sync upstream Firefox to version 148.0, p=#12440 2026-02-20 17:24:17 +01:00
mr. m
a8e245b28a feat: Listen for tabHide and tabShow events for window sync, b=bug #12408, c=no-component 2026-02-19 00:50:11 +01:00
mr. m
a30ddc98bd feat: Correctly calculate certain popup opening coordinates, b=no-bug, c=folders, workspaces 2026-02-19 00:38:21 +01:00
mr. m
6273313ce3 fix: Fixed startup freeze when a group was not found, b=closes #12420, c=no-component 2026-02-18 19:18:12 +01:00
mr. m
dd26ec1171 fix: Fixed tabs becoming empty tabs when switching between windows, b=bug #12421, c=no-component 2026-02-18 12:52:26 +01:00
mr. m
1d2a14f9e4 feat: Correctly calculate size of folder search popup, b=no-bug, c=flatpak, folders, workspaces 2026-02-17 22:40:00 +01:00
mr. m
5be2ffa418 fix: Fixed not being able to unload tabs that are in another workspace, b=closes #9683, c=no-component 2026-02-17 17:20:28 +01:00
mr. m
a30798a275 feat: Rework panel animations and updated Firefox 147.0.4, b=no-bug, c=split-view, folders, common, compact-mode, kbs, workspaces 2026-02-17 13:01:38 +01:00
mr. m
214fd4aff0 feat: Include X-AppImage-Version into the AppImage .desktop file, b=closes #12412, c=workflows 2026-02-17 12:13:41 +01:00
mr. m
ddd7f165bf feat: Lower the timing of panel animations, b=no-bug, c=common 2026-02-16 16:25:01 +01:00
Abdush salam
ae5f9060d4 fix: Remove duplicate fullscreen shortcuts from settings, b=closes #12237. p=#12395, c=kbs 2026-02-16 14:17:06 +01:00
mr. m
362764f497 Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2026-02-16 14:03:27 +01:00
mr. m
083f388176 chore: Remove x-checker-data for flatpak releases, b=no-bug, c=flatpak 2026-02-16 14:03:23 +01:00
Ivaon
813fc16986 fix: properly collapse folder when unloading all tabs, p=#12399
* fix: properly collapse folder when unloading all tabs

* chore: fix implementation in wrong function
2026-02-16 11:29:57 +01:00
mr. m
86a9c17acd feat: Make sure to always clear dragging-out flag on each new drag event, b=no-bug, c=tabs 2026-02-16 00:11:36 +01:00
mr. m
3d0bdbc71b chore: Fixed linting and formatting, b=no-bug, c=common 2026-02-15 23:54:22 +01:00
mr. m
119bedce30 feat: Don't trim the URL if the omnibox has been opened, b=no-bug, c=common 2026-02-15 22:41:00 +01:00
mr. m
1493c6be21 Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2026-02-15 22:32:19 +01:00
mr. m
4d4d6970e3 fix: Fixed DnD indicator not showing when there are no pinned tabs, b=no-bug, c=common, tabs 2026-02-15 22:31:59 +01:00
TogiFerretFerret
3914d33968 chore: fix issue where transparent browsers have a forced-white sync, p=#12392
* chore: fix issue where transparent browsers have a forced-white sync background without breaking non-transparent browsers

* chore: fix linting issue
2026-02-15 19:44:38 +01:00
mr. m
c4f98b0cd8 fix: Fixed back/frwd buttons switching tab's state instead of space, b=closes #9157, c=workspaces 2026-02-15 14:12:02 +01:00
mr. m
6e728d0e2f feat: Remove unnecesary browser flush calls, b=bug #12152, c=no-component 2026-02-15 13:59:08 +01:00
mr. m
3bd1101f7b fix: Fixed moving tabs to different spaces in separate windows, b=closes #12235, c=tabs 2026-02-15 13:50:51 +01:00
mr. m
c55126085b chore: Fix merge conflicts, b=no-bug, c=no-component 2026-02-15 13:38:00 +01:00
mr. m
9a6db5fb86 fix: Fixed migration data not working if there where any errors, b=no-bug, c=no-component 2026-02-15 13:36:37 +01:00
Ivaon
8274718d0d ft: add shortcut to toggle Firefox Sidebar, p=#12371 2026-02-13 23:42:48 +01:00
mr. m
5511defb1e feat: Dont restore sidebar if window-sync is disabled, b=no-bug, c=no-component 2026-02-13 21:18:13 +01:00
mr. m
894fbd6a4f fix: Fixed selected space not being highlighted, b=closes #12368, c=configs, common 2026-02-13 20:22:49 +01:00
mr. m
5a26cb6601 feat: Correctly start backup before-write session files, b=no-bug, c=folders 2026-02-13 00:01:35 +01:00
mr. m
2eb09f092c fix: Add a flag to change labels when restoring, b=bug #12152, c=no-component 2026-02-12 20:19:02 +01:00
mr. m
66081e97f6 fix: Remove clip overflow from nav-bar and update rust version, b=no-bug, c=workflows, common 2026-02-12 19:58:58 +01:00
mr. m
08873b0ce7 chore: Bump up rustc version, b=no-bug, c=no-component 2026-02-12 18:41:40 +01:00
mr. m
6dce6d60e9 fix: Fixed window caption buttons not having any padding, b=no-bug, c=common 2026-02-12 17:59:18 +01:00
mr. m
302e321da6 Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2026-02-12 12:05:49 +01:00
mr. m
5d5d51c6f3 fix: Only apply transparent background to windows of type navigator:browser, b=no-bug, c=common 2026-02-12 11:58:42 +01:00
Andrey Vlasenko
262209f5a3 feat: Add search option for URL-like input, p=#11998
Co-authored-by: mr. m <91018726+mr-cheffy@users.noreply.github.com>
Co-authored-by: Mr. M <mr.m@tuta.com>
2026-02-11 23:55:53 +01:00
Mr. M
aa4aae9e26 feat: Dont restore content to unsynced windows, b=no-bug, c=no-component 2026-02-11 23:46:59 +01:00
Mr. M
827b89d4e8 feat: Added --blank-window command line argument, b=no-bug, c=common, workspaces 2026-02-11 22:52:32 +01:00
mr. m
a1e7af81cc feat: Take always into account that no normal window may exist when restoring, b=no-bug, c=no-component 2026-02-11 20:35:56 +01:00
mr. m
1db7e19037 Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2026-02-11 13:47:50 +01:00
mr. m
c7db15fe9d feat: New ignore rules to moz.configure for patch calculations, b=no-bug, c=scripts 2026-02-11 13:47:34 +01:00
franky
502d3f7d94 fix: Restore current page URL when urlbar is emptied and blurred, p=#12322, c=no-component
When users click the address bar, clear all text, and then click away
to blur, the urlbar stays empty instead of restoring the current page
URL. This adds a handleRevert() call on blur when the urlbar content
is empty (non-newtab mode), so the current page URL is properly
restored. Partial input is still preserved on blur as before.
2026-02-11 12:50:30 +01:00
mr. m
bd0651165c fix: Fixed spaces disappearing when clearing all history, b=closes #12326, c=no-component 2026-02-11 12:34:44 +01:00
mr. m
af4f336bf5 fix: Make sure to save the state instantly on some occations, b=bug #12152, c=scripts 2026-02-11 11:59:05 +01:00
mr. m
bffc16ba29 chore: Run module list through a use-moz-source migration, b=no-bug, c=common, glance, workspaces 2026-02-11 00:35:08 +01:00
mr. m
7c53549076 feat: Allow favicons to have white boxes for more result types, b=no-bug, c=common 2026-02-10 13:53:54 +01:00
mr. m
0fe3a4af10 feat: Only allow overflowing webexts for twilight, b=no-bug, c=common, tabs 2026-02-10 13:44:27 +01:00
mr. m
4d1d4ab1b6 feat: Add pref to force synced windows to open on DnD, b=no-bug, c=no-component 2026-02-10 11:50:23 +01:00
mr. m
2990de8366 fix: Fixed wrong capitalized text for MacOS menu bar, b=closes #12213, c=common 2026-02-09 23:38:13 +01:00
mr. m
76966ee1c3 feat: Make sure to always restore tabs from a crash, b=no-bug, c=no-component 2026-02-09 23:14:51 +01:00
mr. m
4f9a932e77 fix: Fixed unpinned tabs not being cleared when the pref is off, b=closes #12307, c=no-component 2026-02-09 11:37:10 +01:00
mr. m
f2603521e5 chore: Update external patches, b=no-bug, c=folders 2026-02-09 11:34:02 +01:00
mr. m
24f695c452 Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2026-02-09 09:02:55 +01:00
mr. m
f5effd4dcd feat: Add preference to focus on urlbar on startup, b=no-bug, c=workspaces 2026-02-09 09:02:39 +01:00
Mr. M
b5bb7d7c8b feat: Make sure to use the proper parent reference for XDG paths, b=bug #11917, c=no-component 2026-02-08 20:07:14 +01:00
mr. m
604365dd38 chore: Update external mochitests, b=no-bug, c=tests, scripts, common 2026-02-08 19:20:36 +01:00
TogiFerretFerret
466d089fc0 feat: Add zen identification info, b=closes #12198, p=#12295
* feat: add zen identification to extension runtime for zen-specific features

* chore: add branding to nightly to assist with certain testing (e.g. browser identification)

* test: assert zen info in runtime.getBrowserInfo

* Revert "test: assert zen info in runtime.getBrowserInfo"

This reverts commit 94cfeff29f as the tests fail even without this commit.

* Discard changes to surfer.json

* chore: remove platform from getBrowserInfo (as requested)

---------

Co-authored-by: mr. m <91018726+mr-cheffy@users.noreply.github.com>
2026-02-08 17:48:04 +01:00
Roman
e28a10f6a9 fix: Use optional chaining and nullish coalescing in resetButton, p=#12300
Signed-off-by: Roman <58283566+rmdeuce@users.noreply.github.com>
2026-02-08 13:15:57 +01:00
mr. m
102be6cd90 fix: Remove psueod hidden browser background on close, b=no-bug, c=no-component 2026-02-08 13:15:42 +01:00
mr. m
6e1e1d061b fix: Fixed clicking on the 'add' button not closing the panel, b=no-bug, c=common, workspaces 2026-02-08 11:19:46 +01:00
mr. m
43250d6d37 fix: Fixed bookmarks not being synced with mozilla account, b=bug #12133, c=workspaces 2026-02-08 10:48:12 +01:00
mr. m
12f0c455d1 fix: Fixed 'restore previous tabs' ignored when only pinned sync is enabled, b=closes #12297, c=tabs 2026-02-08 10:35:05 +01:00
Andrey Bochkarev
049c3c6f54 feat: Implement vertical dnd tab splitting, p=#12289 2026-02-07 23:59:28 +01:00
Samuel Akhaze
658ac94334 fix: Fixed Incorrect (Reset pinned tab/Replace pinned url) Text on Essential tab context menu, p=#12283 2026-02-07 23:59:15 +01:00
mr. m
09a90099c7 Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2026-02-07 23:52:51 +01:00
mr. m
051470f139 feat: Small polishing changes, b=no-bug, c=common, workspaces 2026-02-07 21:25:24 +01:00
dependabot[bot]
8f1cb88c11 chore(deps-dev): bump lodash, p=#12292
Bumps the npm_and_yarn group with 1 update in the / directory: [lodash](https://github.com/lodash/lodash).


Updates `lodash` from 4.17.21 to 4.17.23
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.21...4.17.23)

---
updated-dependencies:
- dependency-name: lodash
  dependency-version: 4.17.23
  dependency-type: indirect
  dependency-group: npm_and_yarn
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-02-07 18:49:21 +01:00
mr. m
3ef233a4c2 Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2026-02-07 18:48:46 +01:00
mr. m
38fcd7e872 fix: Fixed private windows closing when all tabs are cleared, b=closes #12242, c=common, folders, tabs, workspaces 2026-02-07 18:47:06 +01:00
mr. m
76f17c3a57 chore: Automatically import patches from phabricator and librewolf, p=#12271
* chore: Automatically import patches from phabricator and librewolf, b=no-bug, c=workflows, scripts

Signed-off-by: mr. m <91018726+mr-cheffy@users.noreply.github.com>

* feat: Remove legacy flag, b=no-bug, c=common, configs

---------
2026-02-07 18:02:40 +01:00
mr. m
b5c2451525 fix: Fixed overflowing addons not opening the panel at the correct anchor, b=no-bug, c=common 2026-02-07 16:51:44 +01:00
mr. m
ba2a854784 feat: Overflow web extensions below the urlbar, p=#12273
* feat: Overflow web extensions below the urlbar, b=no-bug, c=common

* chore: Ignore toolbar CSS, b=no-bug, c=no-component
2026-02-06 22:56:11 +01:00
mr. m
c9474cecc0 feat: Remove null-setting for split view data on restore, b=no-bug, c=no-component 2026-02-06 14:10:02 +01:00
mr. m
531be839c9 fix: Fixed frozen window when restore split data is null, b=closes #12260, c=no-component 2026-02-06 14:04:04 +01:00
mr. m
226486b973 fix: Fixed selecting tabs when pinned tabs are collapsed, b=no-bug, c=no-component 2026-02-06 12:45:24 +01:00
mr. m
5a137c95e5 fix: Fixed wrong highlight possition in compact mode, b=closes #12252, c=compact-mode 2026-02-05 23:23:17 +01:00
mr. m
e6154ceb99 feat: Make sure we properly restore split views when only pinned sync is enabled, b=no-bug, c=no-component 2026-02-05 23:01:49 +01:00
mr. m
1ea5d2fa6f feat: Import zen.window-sync.sync-only-pinned-tabs to the prefs list, b=no-bug, c=no-component 2026-02-05 11:18:02 +01:00
mr. m
97d5ebc21e feat: Add pref observer for zen.window-sync.sync-only-pinned-tabs setting, b=no-bug, c=no-component 2026-02-05 11:14:48 +01:00
mr. m
442ec2a5d1 chore: Bump version and format, b=no-bug, c=tests 2026-02-05 11:13:02 +01:00
mr. m
43ae672b44 feat: Revert migration step for syncing only pinned tabs, b=no-bug, c=common 2026-02-05 11:12:01 +01:00
mr. m
84a54c9dbb feat: Add option to only sync up pinned tabs, b=closes #12173, p=#12246, c=common, tabs 2026-02-05 11:05:37 +01:00
mr. m
6c53c3bf37 chore: Sync upstream Firefox to version 147.0.3, p=#12243
* chore: Sync upstream to `Firefox 147.0.3`

* Update candidate version to 147.0.3

Signed-off-by: mr. m <91018726+mr-cheffy@users.noreply.github.com>

* Update Twilight version to RC 147.0.3 in README

Signed-off-by: mr. m <91018726+mr-cheffy@users.noreply.github.com>

---------

Signed-off-by: mr. m <91018726+mr-cheffy@users.noreply.github.com>
2026-02-05 11:04:53 +01:00
mr. m
66686ab7f8 New Crowdin updates, p=#11954
* New translations zen-general.ftl (Lithuanian)

* New translations zen-general.ftl (Portuguese)

* New translations zen-preferences.ftl (Lithuanian)

* New translations zen-preferences.ftl (Swedish)

* New translations zen-preferences.ftl (Chinese Traditional)

* New translations zen-preferences.ftl (Welsh)

* New translations zen-menubar.ftl (French)

* New translations zen-menubar.ftl (Catalan)

* New translations zen-menubar.ftl (Hebrew)

* New translations zen-menubar.ftl (Hungarian)

* New translations zen-menubar.ftl (Korean)

* New translations zen-menubar.ftl (Lithuanian)

* New translations zen-menubar.ftl (Portuguese)

* New translations zen-menubar.ftl (Swedish)

* New translations zen-menubar.ftl (Turkish)

* New translations zen-menubar.ftl (Chinese Traditional)

* New translations zen-menubar.ftl (Icelandic)

* New translations zen-menubar.ftl (Portuguese, Brazilian)

* New translations zen-menubar.ftl (Welsh)

* New translations zen-preferences.ftl (Catalan)

* New translations zen-preferences.ftl (Russian)

* New translations zen-preferences.ftl (Turkish)

* New translations zen-general.ftl (Indonesian)

* New translations zen-workspaces.ftl (Chinese Traditional)

* New translations zen-menubar.ftl (Chinese Traditional)

* New translations zen-menubar.ftl (Indonesian)

* New translations zen-workspaces.ftl (Indonesian)

* New translations zen-preferences.ftl (Indonesian)

* New translations zen-general.ftl (Welsh)

* New translations zen-menubar.ftl (French)

* New translations zen-menubar.ftl (Irish)
2026-02-05 11:00:01 +01:00
mr. m
0c684a9bdb fix: Fixed drag and dropping folders into different spaces, b=no-bug, c=tabs 2026-02-03 20:51:52 +01:00
mr. m
26dabffb96 feat: Use the correct drag event to detect window enters, b=no-bug, c=no-component 2026-02-03 00:44:36 +01:00
mr. m
ead077d16e fix: Fixed private windows adopting Blank windows styling, b=closes #12211, c=no-component 2026-02-02 18:23:25 +01:00
mr. m
a72fa3f79e Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2026-02-02 14:57:49 +01:00
mr. m
33846dbce0 fix: Fixed drag and drop not calculating window bounds correctly, b=closes #12156, closes https://github.com/zen-browser/desktop/issues/11582, closes https://github.com/zen-browser/desktop/issues/12204, c=tabs 2026-02-02 14:57:24 +01:00
mr. m
32fffaabe7 fix: Dont allow essentials promo to be shown on unsynced windows, b=closes #12205, c=tabs 2026-02-02 12:41:42 +01:00
mr. m
bf96b512cb Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2026-02-02 01:10:55 +01:00
mr. m
32a42e797c feat: Fixed split view not working on windows when dropping, b=closes #12143, c=no-component 2026-02-02 01:10:48 +01:00
mr-cheffy
29b8555c66 docs: Update monthly issue metrics, b=(no bug), c={docs} 2026-02-01 03:13:23 +00:00
mr. m
ab7698b16f feat: Make sure to reset pinned changed url on unpin, b=no-bug, c=tabs 2026-01-31 20:03:13 +01:00
mr. m
cd0ef01fa1 Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2026-01-31 18:49:26 +01:00
mr. m
41d97ddd21 fix: Dont update the spaces menu for GTK, b=closes #12024, c=common 2026-01-31 18:34:55 +01:00
mr. m
a4386de00d fix: Fixed dragging tabs to different windows causing freeze, b=closes #12178, c=tabs 2026-01-31 18:29:37 +01:00
rain capsule
28a2e8697a fix: Update notification popup icon styles to account for showing state, p=#12033 2026-01-31 11:33:50 +01:00
TogiFerretFerret
2ae623b15c fix(split-view): correct backwards navigation in grid layout, p=#12160 2026-01-30 17:58:07 +01:00
TogiFerretFerret
8e7ce1c12b fix(ui): prevent closeTabByDblclick pref from blocking context menu rename, b=https://github.com/zen-browser/desktop/issues/12060, p=#12162 2026-01-30 17:50:11 +01:00
mr. m
b5efe62739 fix: Make sure drop indicator is under the last item when newtab button is below, b=no-bug, c=common 2026-01-29 11:05:43 +01:00
mr. m
e34ed3e882 feat: Fixed unpinning an essential tab directly from shortcuts, b=no-bug, c=folders, split-view, tabs, workspaces 2026-01-29 07:39:09 +01:00
mr. m
658e35ebde feat: Add more migration options, b=no-bug, c=no-component 2026-01-28 20:45:45 +01:00
mr. m
1176f5ac8b fix: Fixed auto focus not working on popup windows, b=closes #11377, c=common, workspaces 2026-01-28 12:12:52 +01:00
mr. m
4de01a9bc9 fix: Fixed drag-and-dropping tabs between windows not working with WS off, b=closes #12103, c=no-component 2026-01-28 10:31:19 +01:00
mr. m
35a9a9ea2a fix: Fixed low accesibility on text on sidenar, b=closes #12095, c=tests, workspaces 2026-01-27 23:53:25 +01:00
TogiFerretFerret
e78e2488ff fix(sync): prevent window shrinking by resetting scale/size in pseudo-image, p=#12082 2026-01-27 16:15:28 +01:00
mr. m
1c23ad92b3 Sync upstream Firefox to version 147.0.2, p=#12079 2026-01-27 15:03:38 +01:00
mr. m
32ba6ef81b fix: Fixed small QA issues, b=no-bug, c=common, compact-mode, split-view, tabs, tests 2026-01-27 14:35:27 +01:00
mr. m
a8559f84c1 Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2026-01-27 11:59:10 +01:00
mr. m
0e07f65bc0 feat: Add select-recently-used-on-close to the preferences page, b=no-bug, c=no-component 2026-01-27 11:59:04 +01:00
mr. m
4046dd01a1 chore: Sync upstream to Firefox 147.0.2, p=#12067 2026-01-27 09:00:57 +01:00
mr. m
e51592898e fix: Fixed restoring pinned tab to base url on startup not working, b=closes #12055, c=tabs 2026-01-26 18:42:54 +01:00
mr. m
9afbd1befd feat: Make sure to run a migration for deferred sessions as well, b=no-bug, c=tabs, workspaces 2026-01-26 17:24:12 +01:00
mr. m
ccc1e998da fix: Fixed 'Restore previous session' not working winth wsync disabled, b=closes #12034, c=common 2026-01-26 09:43:31 +01:00
mr. m
3a51b36a05 feat: Add debug log for last session state object, b=no-bug, c=no-component 2026-01-26 02:41:56 +01:00
mr. m
e05cb0e0dc feat: Make inspector shortcut use L key by default, b=no-bug, c=kbs 2026-01-26 02:20:20 +01:00
mr. m
a892721306 fix: Fixed dropping tabs into the same instance, b=closes #12032, c=no-component 2026-01-26 01:47:54 +01:00
mr. m
950f6dfb66 Revert "feat: Implement new wizzard watermarks, b=no-bug, c=configs"
This reverts commit 956841a76e.
2026-01-26 01:47:28 +01:00
mr. m
9b6937650d chore: Format project, b=no-bug, c=split-view 2026-01-25 20:02:16 +01:00
mr. m
2c63376782 fix: Fixed handling split data that may be undefined, b=no-bug, c=split-view 2026-01-25 19:58:18 +01:00
mr. m
f5356dbcb6 feat: Hide essentials visibility on the same thread, b=no-bug, c=no-component 2026-01-25 19:35:03 +01:00
mr. m
45ecacfb04 feat: Make sure to prioritize last session state before closed windows, b=no-bug, c=no-component 2026-01-25 18:23:07 +01:00
mr. m
4327684f9f feat: Make sure focus event only accepts the window object, b=no-bug, c=no-component 2026-01-25 18:10:26 +01:00
mr. m
8997a24996 fix: Fixed migration not working for previous states, b=bug #11994, c=no-component 2026-01-25 18:07:25 +01:00
mr. m
5a6a565b0f Merge branch 'dev' of https://github.com/zen-browser/desktop into dev 2026-01-25 17:44:08 +01:00
mr. m
d39fff2e4a fix: Fixed dimmed text color for linux, b=no-bug, c=glance, workspaces 2026-01-25 17:43:47 +01:00
Andrey Bochkarev
ab12e72cc5 fix: Prevent sidebar from flickering when moving a tab, p=#12016 2026-01-25 14:57:12 +01:00
mr. m
8a2e015048 fix: Fixed dragging split views into blank windows, b=no-bug, c=no-component 2026-01-25 12:26:26 +01:00
mr. m
83de087b0b feat: Dont bring unpinned tabs to new windows if window sync is disabled, b=no-bug, c=no-component 2026-01-25 12:22:53 +01:00
mr. m
5dea28a3cb feat: Fixed windows not initializing when window sync is disabled, b=closes #11999, p=#12015 2026-01-25 12:12:56 +01:00
mr. m
956841a76e feat: Implement new wizzard watermarks, b=no-bug, c=configs 2026-01-25 09:51:17 +01:00
mr. m
3f03ffb27b fix: Fixed Inconsistant capitalization in blank window locales, b=closes #12009, c=kbs 2026-01-25 00:05:49 +01:00
mr. m
5b685bc26d feat: Change default shortcut for unsynced windows, b=no-bug, c=windows, kbs 2026-01-24 15:34:46 +01:00
mr. m
6b255eabec feat: Fixed allowing folders to drop into normal tabs, b=no-bug, c=tabs 2026-01-24 08:58:36 +01:00
mr. m
1da0bed725 feat: Properly wait for session initialization event, b=no-bug, c=no-component 2026-01-23 23:19:43 +01:00
mr. m
a806bc7d0f fix: Fixed migration issue when clear history is enabled, b=closes #11993, c=flatpak, workspaces 2026-01-23 23:00:42 +01:00
240 changed files with 5258 additions and 1436 deletions

View File

@@ -368,7 +368,7 @@ jobs:
strategy:
matrix:
arch: [x86_64, aarch64]
needs: [linux]
needs: [linux, build-data]
steps:
- name: Checkout repository
uses: actions/checkout@v4
@@ -406,6 +406,8 @@ jobs:
sed -i -e 's/StartupWMClass=zen/StartupWMClass=zen-twilight/g' build/AppDir/zen.desktop
fi
sed -i -e 's/\$VERSION/${{ needs.build-data.outputs.version }}/g' build/AppDir/zen.desktop
APPDIR=build/AppDir
tar -xvf *.tar.* && rm -rf *.tar.*
mv zen/* $APPDIR/

View File

@@ -92,7 +92,6 @@ jobs:
- name: Fix Rust version
run: |
# Install a rust version compatible with LLVM 18
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain $(cat .rust-toolchain)
source $HOME/.cargo/env

View File

@@ -73,15 +73,13 @@ jobs:
npm run sync
fi
- name: Run formatter
if: steps.check-upstream-branch.outputs.branch_exists == 'false'
run: |
sudo apt install python3-autopep8
npm run pretty
- name: Install autopep8
run: sudo apt install python3-autopep8
- name: Check if any files changed
id: git-check
run: |
npm run pretty
if [ -n "$(git status --porcelain)" ]; then
echo "files_changed=true" >> $GITHUB_OUTPUT
else
@@ -111,6 +109,15 @@ jobs:
if: steps.git-check.outputs.files_changed == 'true'
run: python3 scripts/import_external_tests.py || true
- name: Import external patches
if: steps.git-check.outputs.files_changed == 'true'
run: python3 scripts/import_external_patches.py || true
- name: Run formatter
if: steps.check-upstream-branch.outputs.branch_exists == 'false'
run: |
npm run pretty
- name: Create pull request
uses: peter-evans/create-pull-request@v7
if: steps.git-check.outputs.files_changed == 'true'

View File

@@ -37,5 +37,6 @@ src/zen/common/ZenEmojis.mjs
src/zen/split-view/zen-decks.css
src/zen/workspaces/zen-workspaces.css
src/zen/common/styles/zen-toolbar.css
*.inc

View File

@@ -1 +1 @@
1.83
1.89

View File

@@ -34,8 +34,8 @@ Zen is a firefox-based browser with the aim of pushing your productivity to a ne
### Firefox Versions
- [`Release`](https://zen-browser.app/download) - Is currently built using Firefox version `147.0.1`! 🚀
- [`Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 147.0.1`!
- [`Release`](https://zen-browser.app/download) - Is currently built using Firefox version `147.0.4`! 🚀
- [`Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 148.0`!
### Contributing

View File

@@ -12,6 +12,7 @@ Terminal=false
X-MultipleArgs=false
Keywords=Internet;WWW;Browser;Web;Explorer;
Actions=new-window;new-private-window;profilemanager;
X-AppImage-Version=$VERSION
[Desktop Action new-window]
Name=Open a New Window

View File

@@ -1 +1 @@
783b222b1b93fb9e8c52eb57558ef7f07bca6e7e
b7d21837fa8fcae98dab2a4f016cc9fb3053903d

View File

@@ -20,12 +20,12 @@ finish-args:
- --socket=cups
- --persist=.zen
- --env=DICPATH=/usr/share/hunspell
- --filesystem=xdg-config/gtk-3.0:ro
- --filesystem=xdg-download:rw
- --filesystem=/run/.heim_org.h5l.kcm-socket
- --filesystem=xdg-run/speech-dispatcher:ro
- --device=all
- --talk-name=org.freedesktop.FileManager1
- --talk-name=org.freedesktop.Notifications
- --system-talk-name=org.freedesktop.NetworkManager
- --talk-name=org.a11y.Bus
- --talk-name=org.gtk.vfs.*
@@ -63,12 +63,6 @@ modules:
strip-components: 0
only-arches:
- x86_64
x-checker-data:
type: json
url: https://api.github.com/repos/zen-browser/desktop/releases/latest
version-query: .tag_name
url-query: .assets[] | select(.name=="zen.linux-x86_64.tar.xz") | .browser_download_url
is-main-source: true
- type: archive
url: https://github.com/zen-browser/desktop/releases/download/{version}/zen.linux-aarch64.tar.xz
@@ -76,12 +70,6 @@ modules:
strip-components: 0
only-arches:
- aarch64
x-checker-data:
type: json
url: https://api.github.com/repos/zen-browser/desktop/releases/latest
version-query: .tag_name
url-query: .assets[] | select(.name=="zen.linux-aarch64.tar.xz") | .browser_download_url
is-main-source: true
- type: archive
url: https://github.com/zen-browser/flatpak/releases/download/{version}/archive.tar

View File

@@ -148,7 +148,7 @@ function SignAndPackage($name) {
$env:WIN32_REDIST_DIR="$PWD\win-cross\vs2022\VC\Redist\MSVC\14.38.33135\x64\Microsoft.VC143.CRT"
}
$env:MAR="..\\build\\winsign\\mar.exe"
$env:MAR="..\\build\\windows\\mar.exe"
if ($name -eq "arm64") {
$env:SURFER_COMPAT="aarch64"
} else {

View File

@@ -9,9 +9,6 @@ ac_add_options --with-app-basename=Zen
# Localization (Must be an absolute path)
ac_add_options --with-l10n-base="${topsrcdir}/browser/locales"
# See https://github.com/zen-browser/desktop/issues/11917 for future plans.
# We should be removing this at some point and start supporting XDG dirs.
ac_add_options --with-user-appdir=".${binName}"
export MOZ_APP_BASENAME=Zen
export MOZ_BRANDING_DIRECTORY=${brandingDir}
export MOZ_OFFICIAL_BRANDING_DIRECTORY=${brandingDir}
@@ -85,6 +82,11 @@ if test "$ZEN_RELEASE"; then
export MOZ_PACKAGE_JSSHELL=1
ac_add_options --disable-crashreporter
# Experimental flag, enabled only on nightly for Firefox.
# Should bring in some nice performance improvements,
# but may cause stability issues.
ac_add_options --enable-replace-malloc
fi
ac_add_options --enable-unverified-updates

View File

@@ -30,17 +30,11 @@ if test "$ZEN_RELEASE"; then
fi
# Disable DMD and ELF hacks, enable linker lld
ac_add_options --disable-dmd
ac_add_options --enable-linker=lld
ac_add_options --disable-elf-hack
ac_add_options --disable-necko-wifi
# Stripping options for release builds
ac_add_options --enable-install-strip
ac_add_options --enable-strip
export STRIP_FLAGS="--strip-debug --strip-unneeded"
fi
# Common options
ac_add_options --enable-alsa
ac_add_options --enable-pulseaudio

View File

@@ -0,0 +1,262 @@
# Issue Metrics
| Metric | Average | Median | 90th percentile |
| --- | --- | --- | ---: |
| Time to first response | 14:19:40 | 2:07:00 | 1 day, 4:29:24 |
| Time to close | 23:19:13 | 6:44:05 | 2 days, 5:35:23 |
| Metric | Count |
| --- | ---: |
| Number of items that remain open | 103 |
| Number of items closed | 141 |
| Total number of items created | 244 |
| Title | URL | Time to first response | Time to close |
| --- | --- | --- | --- |
| Filling in the search, query does not work with Ecosia | https://github.com/zen-browser/desktop/issues/12186 | None | None |
| Workspaces are not synchronized between Zen on Windows11 and macOS. | https://github.com/zen-browser/desktop/issues/12184 | 0:13:05 | 0:13:05 |
| the 1st 2 workspaces aren't visible in the workspace bar at the bottom (SOLVED) | https://github.com/zen-browser/desktop/issues/12182 | None | 0:52:19 |
| Broken web player and descript as part of page | https://github.com/zen-browser/desktop/issues/12181 | None | None |
| Websites having wrong icons in history panel | https://github.com/zen-browser/desktop/issues/12179 | 4:54:50 | None |
| Dragging and Dropping Tabs between Windows causes weird issues with Tab Sync enabled | https://github.com/zen-browser/desktop/issues/12178 | None | 16:59:50 |
| Incorrect Text - Resetting an Essential Tab should be called "Reset Essential Tab" instead of "Reset Pinned Tab" | https://github.com/zen-browser/desktop/issues/12177 | None | None |
| Windows management is broken - they keep cloning each other. | https://github.com/zen-browser/desktop/issues/12176 | 1:26:12 | 11:12:54 |
| Application menu visual glitches on KDE Plasma 5.27.5 and Kwin | https://github.com/zen-browser/desktop/issues/12175 | None | None |
| Middle mouse button does not delete tabs inside folders | https://github.com/zen-browser/desktop/issues/12174 | None | None |
| Window Sync Extents to Unpinned and Non Essential Tabs (unexpected) | https://github.com/zen-browser/desktop/issues/12173 | 0:48:02 | None |
| Clearing all tabs in window closes window | https://github.com/zen-browser/desktop/issues/12172 | 0:52:12 | None |
| Disabling window sync prevents tabs from being re-named and dragging out tab to new window will use the blank default window instead the previous behaviour. | https://github.com/zen-browser/desktop/issues/12171 | None | None |
| Update deleted all my tabs | https://github.com/zen-browser/desktop/issues/12170 | 0:40:34 | 21:14:31 |
| Right-click > Move Tab does not always show your Workspaces | https://github.com/zen-browser/desktop/issues/12168 | 1 day, 4:29:24 | None |
| background play isnt working | https://github.com/zen-browser/desktop/issues/12167 | None | None |
| Windows 11 - Update to 1.18.3b loses all tabs and essentials | https://github.com/zen-browser/desktop/issues/12166 | 0:49:13 | 0:49:13 |
| Zen wants to set itself as default browser after each update even if it already is | https://github.com/zen-browser/desktop/issues/12164 | None | None |
| 1.18.3b AutoUpdate Lost all Tabs including Essentials | https://github.com/zen-browser/desktop/issues/12163 | 0:55:04 | 19:43:42 |
| Gaming mouse's back/forward button keeps moving Workspaces instead of page | https://github.com/zen-browser/desktop/issues/12161 | 0:27:35 | 0:46:07 |
| Dragging multiple tabs from one window to another flips their order | https://github.com/zen-browser/desktop/issues/12159 | None | None |
| The pop-up UI button options for saving or saving passwords are not functional | https://github.com/zen-browser/desktop/issues/12158 | None | None |
| I lost all my folder and essentials due to the uptdate | https://github.com/zen-browser/desktop/issues/12157 | 0:35:43 | 0:35:43 |
| Dragging tabs between windows still doesn't work right | https://github.com/zen-browser/desktop/issues/12156 | 1:46:33 | None |
| Discord Camera playback | https://github.com/zen-browser/desktop/issues/12155 | None | None |
| Custom url homepage not working | https://github.com/zen-browser/desktop/issues/12154 | 13:36:48 | None |
| Numerous "New Tabs" when restoring session | https://github.com/zen-browser/desktop/issues/12152 | 0:17:33 | None |
| Feature Request: Allow manual editing of pinned tab URLs | https://github.com/zen-browser/desktop/issues/12151 | 1:19:36 | 1:19:36 |
| "Find in page" bar has white background wth black theme | https://github.com/zen-browser/desktop/issues/12150 | None | 0:00:43 |
| Open a local index.html with zen | https://github.com/zen-browser/desktop/issues/12149 | 4:53:15 | 8:41:06 |
| No synchronization of tabs between computers | https://github.com/zen-browser/desktop/issues/12148 | 0:41:19 | 1:04:28 |
| Cursor stuck as `default` everywhere after updating to 1.18.3b | https://github.com/zen-browser/desktop/issues/12145 | None | 21:06:24 |
| An issue with custom keyboard shortcuts; Particular keys fail to work | https://github.com/zen-browser/desktop/issues/12144 | 13:30:14 | None |
| 1.18.3b broke the drag to split tabs function (with a recording to show this in TROUBLE SHOOTING mode) | https://github.com/zen-browser/desktop/issues/12143 | 0:23:19 | None |
| Loaded tabs are faded out in new windows | https://github.com/zen-browser/desktop/issues/12142 | 8:30:17 | None |
| Window Sync with multi monitors is a nightmare. | https://github.com/zen-browser/desktop/issues/12141 | 0:36:59 | 8:04:12 |
| Multiple Windows On Launch In Wayland | https://github.com/zen-browser/desktop/issues/12140 | 0:12:51 | None |
| Update Broken, Cont. | https://github.com/zen-browser/desktop/issues/12139 | 14:23:05 | None |
| Some Settings Are Not Persisting Between Restarts | https://github.com/zen-browser/desktop/issues/12138 | 2:27:50 | None |
| "What's New" page text error for 1.18b | https://github.com/zen-browser/desktop/issues/12137 | 5:46:25 | 17:40:01 |
| Grouping Tabs Together has become bugged on new update | https://github.com/zen-browser/desktop/issues/12136 | 2:38:32 | None |
| Supabase Dashboard is not loading | https://github.com/zen-browser/desktop/issues/12135 | 6:13:09 | 20:45:26 |
| Workspace bookmark | https://github.com/zen-browser/desktop/issues/12134 | None | None |
| Broken Firefox Sync: Bookmarks no longer syncing between Zen Desktop and Firefox Mobile after recent update | https://github.com/zen-browser/desktop/issues/12133 | 1:22:35 | None |
| 软件启动的时候会弹出两个窗口 | https://github.com/zen-browser/desktop/issues/12132 | 2:08:29 | 2:08:29 |
| Latest Update deleted all my Tabs | https://github.com/zen-browser/desktop/issues/12131 | 0:08:05 | 0:07:30 |
| Cannot drag tabs from window with 2 or more tabs into another window | https://github.com/zen-browser/desktop/issues/12130 | 0:06:58 | 0:06:58 |
| Window sync completely breaks my workflow | https://github.com/zen-browser/desktop/issues/12127 | 0:11:09 | 1:42:54 |
| Full screen video content cut off when browser window in full screen | https://github.com/zen-browser/desktop/issues/12126 | None | 0:39:59 |
| Passkeys do not work on GitHub | https://github.com/zen-browser/desktop/issues/12125 | None | None |
| Apple login does not work via apple.com's oauth API | https://github.com/zen-browser/desktop/issues/12124 | None | None |
| "Open previous windows and tabs" setting breaks when zen.window-sync.prefer-unsynced-windows is set to false | https://github.com/zen-browser/desktop/issues/12121 | 0:54:22 | 8:23:30 |
| Zen struggle rendering large DOM lists containing lots of child elements | https://github.com/zen-browser/desktop/issues/12119 | 2 days, 21:36:13 | None |
| Drag and drop tabs to different workspaces between two different zen windows causes the tabs to disappear after restart | https://github.com/zen-browser/desktop/issues/12116 | 0:04:16 | None |
| Windows Sync and Tabs | https://github.com/zen-browser/desktop/issues/12115 | 0:05:26 | 0:05:26 |
| Loss of open tabs after update 1.18.x | https://github.com/zen-browser/desktop/issues/12114 | 1:10:05 | 1:59:02 |
| Tab focus returns to parent tab instead of adjacent tab when closing multiple results | https://github.com/zen-browser/desktop/issues/12113 | 11:47:07 | 14:11:10 |
| New window does not auto focus url bar with zen.urlbar.replace-newtab set to false | https://github.com/zen-browser/desktop/issues/12112 | None | None |
| 1.18b completely breaks Simple Tab Groups | https://github.com/zen-browser/desktop/issues/12111 | 0:06:51 | 0:06:51 |
| Essentials icon keep disappearing | https://github.com/zen-browser/desktop/issues/12110 | 0:13:16 | 0:13:16 |
| Random Infinite Loading/Crashes when watching a YouTube video | https://github.com/zen-browser/desktop/issues/12109 | 1:23:12 | None |
| Zen icon deleted after an update | https://github.com/zen-browser/desktop/issues/12108 | 0:08:52 | 0:08:52 |
| Bug with folders with split tabs after update 1.18.2b (Mac) | https://github.com/zen-browser/desktop/issues/12107 | 0:17:10 | None |
| Weird bug when repoen zen the tabs keeps recover | https://github.com/zen-browser/desktop/issues/12106 | 0:33:42 | None |
| Notification can't be closed when tabs are on the right side (mailto notify) | https://github.com/zen-browser/desktop/issues/12104 | 2:40:15 | None |
| Cannot move tab from one window to another | https://github.com/zen-browser/desktop/issues/12103 | 0:12:36 | 0:13:32 |
| on Essential Tabs , when i recieve a message on whatsapp it gets hidden, i do get notification but it doesnt show | https://github.com/zen-browser/desktop/issues/12101 | 0:08:34 | 0:08:36 |
| Continue where you let off for bookmarks | https://github.com/zen-browser/desktop/issues/12100 | 1:16:25 | 3:48:13 |
| Essential tabs disappearing after excessive clicks | https://github.com/zen-browser/desktop/issues/12099 | 4:13:22 | 4:13:22 |
| Enhanced Tracking Protection reverts back to strict on launch | https://github.com/zen-browser/desktop/issues/12096 | 7:40:37 | 19:27:51 |
| Sidebar tab title color / contrast changed in v1.18 | https://github.com/zen-browser/desktop/issues/12095 | None | 0:13:40 |
| New window does not open correct space. | https://github.com/zen-browser/desktop/issues/12094 | 0:01:55 | None |
| Bug: Essentials tabs disappear after rapid activation | https://github.com/zen-browser/desktop/issues/12092 | 0:31:21 | 1:23:25 |
| Tabs being cloned to all windows | https://github.com/zen-browser/desktop/issues/12088 | 0:06:01 | 0:47:56 |
| Pinned extensions disappear when more than 1 is pinned | https://github.com/zen-browser/desktop/issues/12087 | 1 day, 14:00:23 | None |
| Bookmark icons not showing properly | https://github.com/zen-browser/desktop/issues/12084 | 0:03:11 | None |
| There is a problem with Zen when opening tabs: it is slow | https://github.com/zen-browser/desktop/issues/12083 | None | None |
| Jump to a blank page after closing all normal tabs | https://github.com/zen-browser/desktop/issues/12081 | None | 1 day, 21:13:35 |
| Dragging and Dropping tabs within the sidebar. Tab pops out as white box. | https://github.com/zen-browser/desktop/issues/12080 | 2:07:00 | None |
| Essential tabs dissapear from sidebar UI | https://github.com/zen-browser/desktop/issues/12078 | 0:01:44 | 0:01:44 |
| F6 doesn't float url bar | https://github.com/zen-browser/desktop/issues/12076 | 0:16:04 | 3:38:13 |
| Blank window. Completely unusable | https://github.com/zen-browser/desktop/issues/12075 | 0:05:13 | 1:07:49 |
| View Page Source opens in No Container Tab | https://github.com/zen-browser/desktop/issues/12074 | 0:04:07 | None |
| Zen starting out blank with corrupted tabs | https://github.com/zen-browser/desktop/issues/12073 | 0:05:16 | 2 days, 10:11:43 |
| Essentials becoming invisible / absent until browser restarted | https://github.com/zen-browser/desktop/issues/12072 | 0:06:59 | 0:06:59 |
| Proxmox UI Shell renders unreadable. Previously worked. | https://github.com/zen-browser/desktop/issues/12071 | None | None |
| Grid Split navigations is backwards | https://github.com/zen-browser/desktop/issues/12070 | 22:32:57 | 3 days, 7:21:01 |
| Bookmarks no longer synchronize | https://github.com/zen-browser/desktop/issues/12069 | None | None |
| Can't use MacOs specific video features (Portrait, Studio Light, Background) | https://github.com/zen-browser/desktop/issues/12068 | None | None |
| Turning off zen.window-sync.enabled to false leads to broken new window | https://github.com/zen-browser/desktop/issues/12066 | 0:37:44 | 1:57:03 |
| Can future versions please not clear out tabs and folder trees when updating/upgrade? | https://github.com/zen-browser/desktop/issues/12064 | None | 4:57:15 |
| "New Blank Window" uses wrong theme color | https://github.com/zen-browser/desktop/issues/12062 | 9:49:13 | 11:15:18 |
| [linux] Edit label/title for tab doesn't work | https://github.com/zen-browser/desktop/issues/12060 | 2:25:26 | 3 days, 18:16:00 |
| Missing option to disable synced windows | https://github.com/zen-browser/desktop/issues/12059 | None | 0:01:21 |
| Disable Window Sync option in settings? | https://github.com/zen-browser/desktop/issues/12058 | 0:12:41 | 0:12:41 |
| Tab titles not updating when window sync is disabled | https://github.com/zen-browser/desktop/issues/12057 | 0:05:48 | 0:10:29 |
| Essentials entry randomly disappeared from UI | https://github.com/zen-browser/desktop/issues/12056 | 0:12:56 | 0:12:56 |
| Pinned tabs not resseting on startup | https://github.com/zen-browser/desktop/issues/12055 | 2:00:07 | 2:30:05 |
| [Wayland] Zen browser shows white blank panel on startup | https://github.com/zen-browser/desktop/issues/12054 | 1:24:35 | 1 day, 12:37:36 |
| [Tab Sync] Tab in Glance mode opens as regular tab on other window. | https://github.com/zen-browser/desktop/issues/12051 | 1 day, 19:56:04 | None |
| workspace tabs desync across windows | https://github.com/zen-browser/desktop/issues/12050 | 0:11:59 | None |
| Essential tab stop working | https://github.com/zen-browser/desktop/issues/12045 | 0:46:10 | 0:46:10 |
| PWA apps render issue | https://github.com/zen-browser/desktop/issues/12044 | 1:32:16 | 3 days, 1:18:16 |
| MacOS - Wrong tab selected when going backwards | https://github.com/zen-browser/desktop/issues/12043 | 0:04:04 | None |
| Problem with important tabs | https://github.com/zen-browser/desktop/issues/12042 | 2 days, 4:15:21 | 2 days, 20:49:00 |
| Pinned and essential tabs randomly disappear | https://github.com/zen-browser/desktop/issues/12040 | 0:34:50 | 0:34:50 |
| Sidebar overflows in compact mode | https://github.com/zen-browser/desktop/issues/12039 | 1 day, 4:05:41 | None |
| Dragging tabs between worksapce is buggy [I think due to sync] | https://github.com/zen-browser/desktop/issues/12037 | 5 days, 11:35:22 | 5 days, 11:35:22 |
| Sidebar doesnt close automatically after creating a new tab in Compact Mode | https://github.com/zen-browser/desktop/issues/12036 | 2 days, 6:04:10 | None |
| The extension items in the context menu multiplying with every right click | https://github.com/zen-browser/desktop/issues/12035 | 3:50:26 | None |
| Disabling zen.window-sync.enabled breaks "Open previous windows and tabs" | https://github.com/zen-browser/desktop/issues/12034 | 4:38:30 | 6:11:16 |
| Tab cannot be grabbed and taken into a different Zen browser instance | https://github.com/zen-browser/desktop/issues/12032 | 0:11:57 | 1:21:44 |
| Window sync with zoom | https://github.com/zen-browser/desktop/issues/12031 | 3:33:29 | 1 day, 17:09:02 |
| New Window doesn't work with window sync disabled. | https://github.com/zen-browser/desktop/issues/12030 | None | 1:21:07 |
| Move to space not listed in context menu | https://github.com/zen-browser/desktop/issues/12029 | 1:28:17 | 1:28:17 |
| All my workspaces and tabs just gone after update, wtf ? :) | https://github.com/zen-browser/desktop/issues/12028 | 0:31:31 | 1:41:41 |
| Global menu show but unresponsive. | https://github.com/zen-browser/desktop/issues/12024 | 0:06:03 | 6 days, 1:49:53 |
| Debian 13 &#124; Passkey doesn't show QR code | https://github.com/zen-browser/desktop/issues/12022 | 10:08:54 | None |
| Performance: Swiping across spaces with multiple tabs open is laggy | https://github.com/zen-browser/desktop/issues/12020 | 0:09:27 | 0:09:27 |
| Move to Space | https://github.com/zen-browser/desktop/issues/12019 | 0:08:00 | 0:08:00 |
| [UI Error] Zen Browser Settings UI Error | https://github.com/zen-browser/desktop/issues/12014 | 0:41:54 | 6:44:05 |
| Full-Screen PIP Mode Retains Dimmed State Indefinitely Due to Hover and System Inactivity | https://github.com/zen-browser/desktop/issues/12013 | None | None |
| "Check for Updates" Not Working | https://github.com/zen-browser/desktop/issues/12012 | 1:54:04 | 1:54:09 |
| Website lolalytics.com not working properly after updating to 1.18.1b | https://github.com/zen-browser/desktop/issues/12011 | 10:35:46 | 11:32:35 |
| No "Open a new Blank Window" action when right-clicking zen on taskbar | https://github.com/zen-browser/desktop/issues/12010 | 9:50:45 | None |
| Inconsistant capitalization in application menu | https://github.com/zen-browser/desktop/issues/12009 | None | 0:15:37 |
| Disable window/tab sync by default | https://github.com/zen-browser/desktop/issues/12008 | 0:03:34 | 17:22:46 |
| Sync not working + pinned tabs do not resert url | https://github.com/zen-browser/desktop/issues/12006 | 0:15:54 | 7:59:09 |
| Some UI elements not renderring correctly | https://github.com/zen-browser/desktop/issues/12005 | 3:40:46 | 4:36:15 |
| installer prolbem | https://github.com/zen-browser/desktop/issues/12004 | 2:13:28 | 2:13:28 |
| Issues with Sidebar Dragging Exiting Full-Screen & Legacy Ctrl+Tab Behavior | https://github.com/zen-browser/desktop/issues/12003 | 4:33:38 | None |
| Cannot Rename “New Folder” in the Sidebar | https://github.com/zen-browser/desktop/issues/12002 | 0:58:42 | 1:48:21 |
| Custom font doesn't work | https://github.com/zen-browser/desktop/issues/12001 | 1 day, 8:53:16 | 1 day, 8:53:16 |
| Windows accent coloring issue with zen | https://github.com/zen-browser/desktop/issues/12000 | 1:11:28 | 1:11:28 |
| Disabling zen.window-sync.enabled breaks new zen instances | https://github.com/zen-browser/desktop/issues/11999 | 4:34:06 | 22:44:50 |
| Pinned tabs don't scale: hundreds of pins freeze browser | https://github.com/zen-browser/desktop/issues/11997 | 6:50:35 | 1 day, 13:33:03 |
| All tabs are gone (also pinned) when updating to 1.18b | https://github.com/zen-browser/desktop/issues/11994 | 4:42:08 | None |
| "blank window" at startup | https://github.com/zen-browser/desktop/issues/11993 | 0:02:32 | 0:52:40 |
| Crashing when playing WASMGC game | https://github.com/zen-browser/desktop/issues/11990 | 0:31:55 | None |
| Pinned Tabs disappearing/invisible | https://github.com/zen-browser/desktop/issues/11989 | 11:31:45 | 11:31:45 |
| Zen process opens but the window doesn't | https://github.com/zen-browser/desktop/issues/11985 | 0:22:24 | None |
| Zen has recently got really inconsistent performance (especially after the last few updates). | https://github.com/zen-browser/desktop/issues/11982 | 0:52:04 | None |
| Twitch.tv Video Streams Not Loading | https://github.com/zen-browser/desktop/issues/11980 | 0:19:27 | None |
| Page rendering is blank white | https://github.com/zen-browser/desktop/issues/11979 | 15:04:14 | 15:04:14 |
| Zen is unusable on Cosmic Desktop Environment (unable to remove a checkbox that spawns and hinders using the browser) | https://github.com/zen-browser/desktop/issues/11978 | 0:42:40 | 17:46:00 |
| Searching with # is not searching bookmarks by tag or title | https://github.com/zen-browser/desktop/issues/11976 | 1:54:07 | 11:45:13 |
| Conflict Between Browser Page Search Shortcut and Confluence Search | https://github.com/zen-browser/desktop/issues/11975 | None | None |
| Updater repeatedly reinstalls latest twilight build despite no version change. | https://github.com/zen-browser/desktop/issues/11974 | 0:19:47 | 6:53:06 |
| Randomly Control button stop functioning | https://github.com/zen-browser/desktop/issues/11972 | None | None |
| Low refresh rate on Zen Windows version after OS update | https://github.com/zen-browser/desktop/issues/11967 | 21:19:01 | None |
| Switching workspaces to a split view will cause the area surround the view to turn black for a second | https://github.com/zen-browser/desktop/issues/11965 | 17:19:30 | None |
| [Bug] Previous session permanently lost after closing and reopening Zen Browser | https://github.com/zen-browser/desktop/issues/11964 | 4:00:54 | 4:01:24 |
| Closing a normal zen window when an incognito zen browser is opened, removes all the tabs across all my workspaces. | https://github.com/zen-browser/desktop/issues/11963 | 2:10:13 | 2:10:13 |
| Only sidebar layout -- Always show bookmarks tool bar + window buttons | https://github.com/zen-browser/desktop/issues/11962 | 0:06:53 | 3:10:47 |
| Zen randomly crashes on macOS | https://github.com/zen-browser/desktop/issues/11958 | 3:36:36 | None |
| Essentials and pinned tabs don't load automatically on open | https://github.com/zen-browser/desktop/issues/11957 | 12:57:52 | 12:57:52 |
| Readme reports Firefox 147.0.1 for Release but latest release 1.17.15b (2025-12-20) is 146.0.1 | https://github.com/zen-browser/desktop/issues/11952 | 8:47:04 | 8:47:03 |
| Non-default container indicator not showing in workspace | https://github.com/zen-browser/desktop/issues/11951 | 0:13:01 | None |
| Zen not displaying websites on Intel HD graphics 2000 | https://github.com/zen-browser/desktop/issues/11950 | None | None |
| Private window tabs are mirrored in the main (non-private) window | https://github.com/zen-browser/desktop/issues/11949 | 2:34:54 | 4:47:55 |
| Media session metadata (title/artist/cover) does not update on site without page refresh | https://github.com/zen-browser/desktop/issues/11948 | 6:32:56 | 1 day, 6:51:54 |
| Nvidia overlay "Plugin-container is preventing the desktop capture" | https://github.com/zen-browser/desktop/issues/11947 | None | None |
| Login to self-hosted Bitwarden fails after initialization in multi-account setting | https://github.com/zen-browser/desktop/issues/11946 | 1 day, 14:57:08 | None |
| Accessing any URL under bitbucket.org returns 404 | https://github.com/zen-browser/desktop/issues/11944 | 2:26:35 | 1 day, 20:58:15 |
| Acrylic turns grey | https://github.com/zen-browser/desktop/issues/11937 | 0:01:44 | None |
| lang change | https://github.com/zen-browser/desktop/issues/11934 | 2:27:46 | 3:29:15 |
| MX Master 3 Forward/Back mouse buttons don't work if zen.workspaces.swipe-actions is false | https://github.com/zen-browser/desktop/issues/11923 | 1:53:09 | 1:53:09 |
| Tabs UI bug | https://github.com/zen-browser/desktop/issues/11922 | None | None |
| Positioning of titlebar window control buttons | https://github.com/zen-browser/desktop/issues/11918 | 11:28:41 | 11:28:41 |
| Zen won't follow XDG base directories | https://github.com/zen-browser/desktop/issues/11917 | 12:43:08 | None |
| Titlebar expands on hover even if Titlebar setting is Disabled from "Configure Toolbar" in Sidebar only mode of look and feel. | https://github.com/zen-browser/desktop/issues/11915 | None | None |
| Multiple window sessions result in same tabs open in all windows | https://github.com/zen-browser/desktop/issues/11914 | 1 day, 1:41:36 | 1 day, 1:41:36 |
| Misplaced Tab (Placed a tab above the new tab button but below the line that separates the pinned tabs) | https://github.com/zen-browser/desktop/issues/11911 | None | 4:09:21 |
| Sidebar width inconsistency | https://github.com/zen-browser/desktop/issues/11909 | None | None |
| Cannot expand / fullscreen twitter videos | https://github.com/zen-browser/desktop/issues/11908 | 2 days, 5:35:23 | 2 days, 5:35:23 |
| Menu shows unsecure connections as secure | https://github.com/zen-browser/desktop/issues/11905 | 2:21:24 | 3:35:25 |
| Top Toolbar appearing when using shortcut "Toggle Sidebar's Width" | https://github.com/zen-browser/desktop/issues/11903 | 5:08:25 | 5:08:25 |
| Only shows default icons for Google Messages for web | https://github.com/zen-browser/desktop/issues/11902 | None | 2:39:30 |
| The default section disappear from dot list at the below of the tab when swiching spaces | https://github.com/zen-browser/desktop/issues/11901 | 0:50:18 | None |
| Context menu partially hidden when right-clicking on a Bookmarks folder in the toolbar | https://github.com/zen-browser/desktop/issues/11898 | None | None |
| Refined Github(extension): Issues interface with notification header flickers / flashes | https://github.com/zen-browser/desktop/issues/11896 | None | None |
| Glance should work only for links | https://github.com/zen-browser/desktop/issues/11895 | None | 7:53:12 |
| Auto Unload Does Not And Has Never Unloaded a Single Tab Ever. | https://github.com/zen-browser/desktop/issues/11894 | None | 6:58:48 |
| Visual Bug: Line through sidebar and settings page | https://github.com/zen-browser/desktop/issues/11893 | None | 12:24:36 |
| 1password integration - not working | https://github.com/zen-browser/desktop/issues/11892 | 2:39:46 | 13:40:23 |
| Hardware acceleration worse on Zen vs others (CachyOS - NVIDIA - Wayland) | https://github.com/zen-browser/desktop/issues/11890 | 2:18:58 | 8:44:12 |
| Some tabs (inside a folder) are not drawn in the sidebar | https://github.com/zen-browser/desktop/issues/11888 | 18:13:05 | 18:13:05 |
| (macos) (twilight) pinning splitview tabs in folders causes addl tab group labels on restart/update | https://github.com/zen-browser/desktop/issues/11887 | None | 23:27:16 |
| How can I achieve window transparency on Windows (so that I can see through to the windows or desktop behind it)?/如何实现Windows下窗口透明化可以看到后面的窗口或桌面 | https://github.com/zen-browser/desktop/issues/11885 | 11:12:00 | 11:12:00 |
| Form validation checkbox message is white text on white background | https://github.com/zen-browser/desktop/issues/11884 | None | None |
| Fullscreen with F11 doesn't work as intended | https://github.com/zen-browser/desktop/issues/11883 | 6:30:42 | 6:30:46 |
| PiP window stays open empty and buttons dont work | https://github.com/zen-browser/desktop/issues/11881 | None | None |
| When switching browser layouts, extensions fixed to the toolbar may have display bugs | https://github.com/zen-browser/desktop/issues/11880 | None | 6:31:27 |
| Zen startup window has a transition from dark background (light background in light mode) + a flash before the mica kicks on windows 11. | https://github.com/zen-browser/desktop/issues/11876 | 1 day, 22:21:29 | None |
| Zen Hangs/Crashes - Have not been able to use for several months. | https://github.com/zen-browser/desktop/issues/11875 | 2 days, 0:58:56 | None |
| Settings modal is not in the right place! | https://github.com/zen-browser/desktop/issues/11873 | None | None |
| Macos: extention pop-ups open up at a different desktop in fullscreen | https://github.com/zen-browser/desktop/issues/11872 | 7:25:14 | 7:25:14 |
| Close Tab shortcut can close the window | https://github.com/zen-browser/desktop/issues/11871 | 2 days, 6:59:58 | 2 days, 6:59:58 |
| When on the login page, the extension icon in the address bar cannot be clicked | https://github.com/zen-browser/desktop/issues/11870 | 2 days, 8:04:14 | 19 days, 3:16:59 |
| Showing multiple empthy pages | https://github.com/zen-browser/desktop/issues/11869 | 4:22:38 | None |
| Control + click is not opening links in a new tab. | https://github.com/zen-browser/desktop/issues/11868 | 3 days, 21:19:59 | None |
| Folders and tabs of a workspace are not synced. | https://github.com/zen-browser/desktop/issues/11865 | 1:58:13 | 1:58:13 |
| No save button | https://github.com/zen-browser/desktop/issues/11864 | 0:15:11 | None |
| No Icon For Files | https://github.com/zen-browser/desktop/issues/11860 | 5:02:04 | 20:21:37 |
| Compatibility issue with aarch64 AppImage starting from v1.17b (GLIBCXX_3.4.26 not found) | https://github.com/zen-browser/desktop/issues/11859 | None | None |
| Adding New Bookmark in Compact Mode No Longer Pops Up Edit Panel | https://github.com/zen-browser/desktop/issues/11858 | 1 day, 18:54:21 | None |
| 什么时候能支持网页驱动 | https://github.com/zen-browser/desktop/issues/11857 | 12:28:29 | 12:28:29 |
| Workspace Switching Becomes Laggy with 4+ Workspaces and many pinned Tabs on Windows (NVIDIA GPU). | https://github.com/zen-browser/desktop/issues/11851 | 2:00:50 | None |
| Closing a recently opened tab returns to the top tab, not the previously focused tab | https://github.com/zen-browser/desktop/issues/11845 | 19:10:53 | 1 day, 17:02:53 |
| Wrong italian translation of "Workspace forward" in shortcuts settings | https://github.com/zen-browser/desktop/issues/11841 | 1:17:18 | None |
| Cannot close pinned tabs | https://github.com/zen-browser/desktop/issues/11838 | 0:21:08 | 0:23:33 |
| Copy URL shortcut does not copy URL before page has loaded | https://github.com/zen-browser/desktop/issues/11835 | None | None |
| Extensions not showing up in toolbar. | https://github.com/zen-browser/desktop/issues/11834 | 1:33:29 | 9:20:29 |
| Multiple duplicated Bookmarks | https://github.com/zen-browser/desktop/issues/11832 | None | None |
| [BUG] Closing and re-opening zen twighlight turns a bunch of tabs into 'New Tab's | https://github.com/zen-browser/desktop/issues/11831 | 15:57:31 | 7 days, 8:27:19 |
| Indent issue on active pinned tab in collapsed workspace | https://github.com/zen-browser/desktop/issues/11830 | 17:46:11 | 1 day, 6:07:21 |
| High Ram Usage | https://github.com/zen-browser/desktop/issues/11828 | None | 0:20:29 |
| Unable to install extentions in compact mode | https://github.com/zen-browser/desktop/issues/11827 | None | 1:11:29 |
| Extension icons display inconsitently when switching toolbar modes or resizing window | https://github.com/zen-browser/desktop/issues/11826 | 2:31:13 | None |
| MS Entra auth not working | https://github.com/zen-browser/desktop/issues/11825 | 3:14:28 | 20:29:41 |
| "Restore pinned tabs to their originally pinned URL on startup' option doesn't reset Pinned Tabs go back to Originally Pinned URL, i.e. doesn't reset them | https://github.com/zen-browser/desktop/issues/11823 | 2 days, 12:40:16 | None |
| Crashes when signing into aws console MFA passkey via lastpassword | https://github.com/zen-browser/desktop/issues/11820 | None | None |
| Using the dev console in glance causes weird ui | https://github.com/zen-browser/desktop/issues/11815 | 1:43:58 | None |
| The VS Code integrated extension “Live Server” does not automatically detect the Zen Browser, even when it is set as the default browser. | https://github.com/zen-browser/desktop/issues/11813 | 2:56:35 | 2 days, 12:21:43 |
| Ctrl+T does not open new tab if shortcuts are removed | https://github.com/zen-browser/desktop/issues/11811 | 0:40:23 | None |
| Sidebar title is overlapping with essential tabs after screen unlock | https://github.com/zen-browser/desktop/issues/11808 | None | 15:50:26 |
| button alignment does not change in pop-up window | https://github.com/zen-browser/desktop/issues/11805 | 0:10:14 | None |
| "Focus on <space>" action not available | https://github.com/zen-browser/desktop/issues/11804 | 0:03:34 | 1 day, 0:35:28 |
| Split View and Floating URL bugs when a Youtube video is in Full Screen and Ctrl + Shift + * is pressed. | https://github.com/zen-browser/desktop/issues/11803 | None | 7 days, 0:58:59 |
| Trackpad diagonal scroll unintentionally switches workspaces instead of scrolling tabs | https://github.com/zen-browser/desktop/issues/11802 | 2:20:42 | None |
| New tab opens when Alt+Tabbing or pressing Windows key while YouTube is playing | https://github.com/zen-browser/desktop/issues/11801 | 8:57:44 | None |
| Broken Installer (fixed) | https://github.com/zen-browser/desktop/issues/11800 | None | 1 day, 22:57:03 |
| subfolder collapse state issue when collapsing pinned area | https://github.com/zen-browser/desktop/issues/11799 | 11:27:53 | 1 day, 12:52:10 |
| Glance opens a new window for local file URLs (file://) | https://github.com/zen-browser/desktop/issues/11797 | None | None |
| acronis.com nginx a header or cookie larger than permitted | https://github.com/zen-browser/desktop/issues/11795 | None | None |
| Cannot listen to songs using the spotify integration on Musixmatch for lyric syncing in Zen | https://github.com/zen-browser/desktop/issues/11792 | 0:15:31 | 0:15:31 |
| Adding Split Tab Groups to a folder Makes the folder disappear | https://github.com/zen-browser/desktop/issues/11791 | 15 days, 4:38:37 | 15 days, 4:38:37 |
| Clear tabs button's separator is missing on Linux | https://github.com/zen-browser/desktop/issues/11789 | None | 3 days, 10:41:55 |
| [Twilight] Cannot add tab to bottom of folder | https://github.com/zen-browser/desktop/issues/11788 | 21:08:12 | 21:08:12 |
| Flathub version doesnt work on Debian 13 | https://github.com/zen-browser/desktop/issues/11787 | 25 days, 12:50:21 | None |
| Split View sidebar shows extra tab after restoring a closed tab (Ctrl+Shift+T) | https://github.com/zen-browser/desktop/issues/11785 | None | None |
| Cursor moved far right of window does not grab scrollbar when window is maximised | https://github.com/zen-browser/desktop/issues/11783 | 6:07:23 | 6:07:23 |
| HMR Not Working Correctly for Frontend Development | https://github.com/zen-browser/desktop/issues/11782 | 7:57:34 | 9:05:06 |
| Failing to obtain location | https://github.com/zen-browser/desktop/issues/11781 | 15:43:36 | 1 day, 17:23:10 |
_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:2026-01-01..2026-01-31`

View File

@@ -314,4 +314,4 @@ zen-devtools-toggle-storage-shortcut = Commuta l'emmagatzematge
zen-devtools-toggle-dom-shortcut = Commuta el DOM
zen-devtools-toggle-accessibility-shortcut = Commuta l'accessibilitat
zen-close-all-unpinned-tabs-shortcut = Tanca totes les pestanyes no fixades
zen-new-unsynced-window-shortcut = Nova finestra no sincronitzada
zen-new-unsynced-window-shortcut = Nova finestra en blanc

View File

@@ -19,4 +19,4 @@ zen-menubar-appearance-light =
zen-menubar-appearance-dark =
.label = Fosca
zen-menubar-new-unsynced-window =
.label = New Blank Window
.label = Nova finestra en blanc

View File

@@ -314,4 +314,4 @@ zen-devtools-toggle-storage-shortcut = Toglo Storio
zen-devtools-toggle-dom-shortcut = Toglo DOM
zen-devtools-toggle-accessibility-shortcut = Toglo Hygyrchedd
zen-close-all-unpinned-tabs-shortcut = Cau Pob Tab Heb ei Binio
zen-new-unsynced-window-shortcut = Ffenestr Newydd Heb ei Chydweddu
zen-new-unsynced-window-shortcut = Ffenestr Wag Newydd

View File

@@ -2,8 +2,8 @@
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
zen-panel-ui-current-profile-text = proffil cyfredol
unified-extensions-description = Mae ychwanegiadau'n cael ei defnyddio er mwyn ychwanegu fwy o weithrediadau i { -brand-short-name }.
zen-panel-ui-current-profile-text = y proffil cyfredol
unified-extensions-description = Mae estyniadau'n cael ei defnyddio er mwyn ychwanegu fwy o swyddogaeth i { -brand-short-name }.
tab-context-zen-reset-pinned-tab =
.label = Ailosod Tab wedi'i Binio
.accesskey = A
@@ -109,7 +109,7 @@ zen-sidebar-notification-updated-tooltip =
zen-sidebar-notification-restart-safe-mode-label = Rhywbeth wedi torri?
zen-sidebar-notification-restart-safe-mode-tooltip =
.title = Ailgychwyn yn y Modd Diogel
zen-window-sync-migration-dialog-title = Keep Your Windows in Sync
zen-window-sync-migration-dialog-message = Zen now syncs windows on the same device, so changes in one window are reflected across the others instantly.
zen-window-sync-migration-dialog-learn-more = Learn More
zen-window-sync-migration-dialog-accept = Got It
zen-window-sync-migration-dialog-title = Cadw Eich Ffenestr Wedi'u Cydweddu
zen-window-sync-migration-dialog-message = Mae Zen bellach yn cydweddu ffenestri ar yr un ddyfais, felly mae newidiadau mewn un ffenestr yn cael eu dangos ar y lleill yn syth.
zen-window-sync-migration-dialog-learn-more = Dysgu Rhagor
zen-window-sync-migration-dialog-accept = Iawn

View File

@@ -19,4 +19,4 @@ zen-menubar-appearance-light =
zen-menubar-appearance-dark =
.label = Tywyll
zen-menubar-new-unsynced-window =
.label = New Blank Window
.label = Ffenestr Wag Newydd

View File

@@ -53,12 +53,15 @@ category-zen-workspaces =
.tooltiptext = { pane-zen-tabs-title }
pane-settings-workspaces-title = Workspaces
zen-tabs-unloader-enabled =
.label = Enable Tab Unloader
zen-tabs-select-recently-used-on-close =
.label = When closing a tab, switch to the most recently used tab instead of the next tab
zen-tabs-close-on-back-with-no-history =
.label = Close tab and switch to its owner tab (or most recently used tab) when going back with no history
zen-settings-workspaces-sync-unpinned-tabs =
.label = Sync only pinned tabs in workspaces
zen-tabs-cycle-by-attribute =
.label = Ctrl+Tab cycles within Essential or Workspace tabs only
zen-tabs-cycle-ignore-pending-tabs =

View File

@@ -6,7 +6,11 @@ zen-panel-ui-current-profile-text = current profile
unified-extensions-description = Extensions are used to bring more extra functionality into { -brand-short-name }.
tab-context-zen-reset-pinned-tab =
.label = Reset Pinned Tab
.label =
{ $isEssential ->
[true] Reset Essential Tab
*[false] Reset Pinned Tab
}
.accesskey = R
tab-context-zen-add-essential =
.label = Add to Essentials
@@ -16,7 +20,11 @@ tab-context-zen-remove-essential =
.label = Remove from Essentials
.accesskey = R
tab-context-zen-replace-pinned-url-with-current =
.label = Replace Pinned URL with Current
.label =
{ $isEssential ->
[true] Replace Essential URL with Current
*[false] Replace Pinned URL with Current
}
.accesskey = C
tab-context-zen-edit-title =
.label = Change Label...
@@ -137,3 +145,7 @@ zen-window-sync-migration-dialog-title = Keep Your Windows in Sync
zen-window-sync-migration-dialog-message = Zen now syncs windows on the same device, so changes in one window are reflected across the others instantly.
zen-window-sync-migration-dialog-learn-more = Learn More
zen-window-sync-migration-dialog-accept = Got It
zen-appmenu-new-blank-window =
.label = New blank window

View File

@@ -0,0 +1,98 @@
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
zen-live-folder-options =
.label = Live Folder Options
zen-live-folder-last-fetched =
.label = Last fetch: { $time }
zen-live-folder-refresh =
.label = Refresh
zen-live-folder-github-option-author-self =
.label = Created by Me
zen-live-folder-github-option-assigned-self =
.label = Assigned to Me
zen-live-folder-github-option-review-requested =
.label = Review Requests
zen-live-folder-type-rss =
.label = RSS Feed
zen-live-folder-option-fetch-interval =
.label = Fetch Interval
zen-live-folder-fetch-interval-mins =
.label = { $mins ->
[one] 1 minute
*[other] { $mins } minutes
}
zen-live-folder-fetch-interval-hours =
.label = { $hours ->
[one] 1 hour
*[other] { $hours } hours
}
zen-live-folder-rss-option-time-range =
.label = Time Range
zen-live-folder-time-range-hours =
.label = { $hours ->
[one] Last hour
*[other] Last { $hours } hours
}
zen-live-folder-time-range-all-time =
.label = All time
zen-live-folder-time-range-days =
.label = { $days ->
[one] Last day
*[other] Last { $days } days
}
zen-live-folder-rss-option-item-limit =
.label = Item Limit
zen-live-folder-rss-option-feed-url =
.label = Feed URL
zen-live-folder-rss-prompt-feed-url = Please enter the feed URL
zen-live-folder-rss-option-item-limit-num =
.label = { $limit } items
zen-live-folder-failed-fetch =
.label = Failed to update
.tooltiptext = Failed to update. Try again.
zen-live-folder-github-no-auth =
.label = Not signed in to GitHub
.tooltiptext = Sign back in to GitHub.
zen-live-folder-github-no-filter =
.label = Filter is not set
.tooltiptext = No filter set, nothing will be fetched.
zen-live-folder-rss-invalid-url-title = Failed to create the Live Folder
zen-live-folder-rss-invalid-url-description = The feed URL is invalid. Check the address and try again
zen-live-folder-github-option-repo-filter =
.label = Repositories
zen-live-folder-github-option-repo =
.label = { $repo }
zen-live-folder-github-pull-requests =
.label = Pull Requests
zen-live-folder-github-issues =
.label = Issues
zen-live-folder-github-option-repo-list-note =
.label = This list is generated based on your currently active pull requests.

View File

@@ -22,5 +22,5 @@ zen-menubar-appearance-light =
zen-menubar-appearance-dark =
.label = Dark
zen-menubar-new-unsynced-window =
.label = New Blank Window
zen-menubar-new-blank-window =
.label = New Blank Window

View File

@@ -16,7 +16,4 @@ zen-split-link =
zen-split-view-modifier-header = Split View
zen-split-view-modifier-activate-reallocation =
.label = Activate reallocation
zen-split-view-modifier-enabled-toast = Split view rearrange is ON.
zen-split-view-modifier-enabled-toast-description = Drag and drop the view to rearrange. Press Esc to exit.
zen-split-view-modifier-disabled-toast = Split view rearrange is OFF.
.label = Activate reallocation

View File

@@ -42,4 +42,9 @@ tabbrowser-reset-pin-button =
[one] Reset and pin tab
*[other] Reset and pin { $tabCount } tabs
}
tab-reset-pin-label = Back to pinned url
zen-tab-sublabel =
{ $tabSubtitle ->
[zen-default-pinned] Back to pinned url
*[other] { $tabSubtitle }
}

View File

@@ -13,6 +13,9 @@ zen-panel-ui-workspaces-create =
zen-panel-ui-folder-create =
.label = Create Folder
zen-panel-ui-live-folder-create =
.label = Live Folder
zen-panel-ui-new-empty-split =
.label = New Split

View File

@@ -19,4 +19,4 @@ zen-menubar-appearance-light =
zen-menubar-appearance-dark =
.label = Sombre
zen-menubar-new-unsynced-window =
.label = New Blank Window
.label = Nouvelle fenêtre non synchronisée

View File

@@ -19,4 +19,4 @@ zen-menubar-appearance-light =
zen-menubar-appearance-dark =
.label = Dorcha
zen-menubar-new-unsynced-window =
.label = New Blank Window
.label = Fuinneog Nua Bán

View File

@@ -19,4 +19,4 @@ zen-menubar-appearance-light =
zen-menubar-appearance-dark =
.label = כהה
zen-menubar-new-unsynced-window =
.label = New Blank Window
.label = חלון ריק חדש

View File

@@ -19,4 +19,4 @@ zen-menubar-appearance-light =
zen-menubar-appearance-dark =
.label = Sötét
zen-menubar-new-unsynced-window =
.label = New Blank Window
.label = Új üres lap

View File

@@ -49,8 +49,8 @@ zen-tabs-close-on-back-with-no-history =
zen-tabs-cycle-by-attribute =
.label = Ctrl+Tab berputar hanya dalam tab Esensial atau Ruang Kerja
zen-tabs-cycle-ignore-pending-tabs =
.label = Ignore Pending tabs when cycling with Ctrl+Tab
zen-tabs-cycle-by-attribute-warning = Ctrl+Tab will cycle by recently used order, as it is enabled
.label = Lewati tab tak termuat saat beralih dengan Ctrl+Tab
zen-tabs-cycle-by-attribute-warning = Ctrl+Tab akan beralih berdasarkan urutan terakhir digunakan
zen-look-and-feel-compact-toolbar-themed =
.label = Gunakan latar belakang bertema untuk bilah atas dalam mode ringkas
zen-workspace-continue-where-left-off =
@@ -314,4 +314,4 @@ zen-devtools-toggle-storage-shortcut = Ubah Penyimpanan
zen-devtools-toggle-dom-shortcut = Ubah DOM
zen-devtools-toggle-accessibility-shortcut = Ubah Aksesibilitas
zen-close-all-unpinned-tabs-shortcut = Tutup Semua Tab yang Tidak Disematkan
zen-new-unsynced-window-shortcut = New Unsynced Window
zen-new-unsynced-window-shortcut = Jendela Kosong Baru

View File

@@ -60,8 +60,8 @@ zen-site-data-settings = Pengaturan
zen-generic-manage = Kelola
zen-generic-more = Selengkapnya
zen-generic-next = Lanjut
zen-essentials-promo-label = Add to Essentials
zen-essentials-promo-sublabel = Keep your favorite tabs just a click away
zen-essentials-promo-label = Tambahkan ke Essentials
zen-essentials-promo-sublabel = Akses tab favorit Anda hanya dengan sekali klik
# These labels will be used for the site data panel settings
zen-site-data-setting-allow = Diizinkan
zen-site-data-setting-block = Diblokir
@@ -109,7 +109,7 @@ zen-sidebar-notification-updated-tooltip =
zen-sidebar-notification-restart-safe-mode-label = Ada yang rusak?
zen-sidebar-notification-restart-safe-mode-tooltip =
.title = Mulai Ulang dalam Mode Aman
zen-window-sync-migration-dialog-title = Keep Your Windows in Sync
zen-window-sync-migration-dialog-message = Zen now syncs windows on the same device, so changes in one window are reflected across the others instantly.
zen-window-sync-migration-dialog-learn-more = Learn More
zen-window-sync-migration-dialog-accept = Got It
zen-window-sync-migration-dialog-title = Jaga Jendela Anda Tetap Sinkron
zen-window-sync-migration-dialog-message = Zen kini menyinkronkan jendela pada perangkat yang sama, sehingga perubahan di satu jendela akan langsung terlihat di jendela lainnya.
zen-window-sync-migration-dialog-learn-more = Pelajari Lebih Lanjut
zen-window-sync-migration-dialog-accept = Oke!

View File

@@ -4,19 +4,19 @@
zen-menubar-toggle-pinned-tabs =
.label =
{ $pinnedAreCollapsed ->
[true] Expand Pinned Tabs
*[false] Collapse Pinned Tabs
{ $pinnedAreCollapsed ->
[true] Perluas Tab yang Disematkan
*[false] Ciutkan Tab yang Disematkan
}
zen-menubar-appearance =
.label = Appearance
.label = Tampilan
zen-menubar-appearance-description =
.label = Websites will use:
.label = Situs web akan menggunakan:
zen-menubar-appearance-auto =
.label = Automatic
.label = Otomatis
zen-menubar-appearance-light =
.label = Light
.label = Terang
zen-menubar-appearance-dark =
.label = Dark
.label = Gelap
zen-menubar-new-unsynced-window =
.label = New Blank Window
.label = Jendela Kosong Baru

View File

@@ -4,13 +4,13 @@
zen-panel-ui-workspaces-text = Ruang Kerja Lainnya
zen-panel-ui-spaces-label =
.label = Spaces
.label = Ruang
zen-panel-ui-workspaces-create =
.label = Buat Ruang
zen-panel-ui-folder-create =
.label = Buat Folder
zen-panel-ui-new-empty-split =
.label = New Split
.label = Split Baru
zen-workspaces-panel-context-delete =
.label = Hapus Ruang
.accesskey = D
@@ -66,6 +66,6 @@ zen-workspaces-close-all-unpinned-tabs-title =
.label = Bersihkan
.tooltiptext = Tutup semua tab yang tidak disematkan
zen-panel-ui-workspaces-change-forward =
.label = Next Space
.label = Ruang Selanjutnya
zen-panel-ui-workspaces-change-back =
.label = Previous Space
.label = Ruang Sebelumnya

View File

@@ -19,4 +19,4 @@ zen-menubar-appearance-light =
zen-menubar-appearance-dark =
.label = Dökkt
zen-menubar-new-unsynced-window =
.label = New Blank Window
.label = Nýr auður gluggi

View File

@@ -19,4 +19,4 @@ zen-menubar-appearance-light =
zen-menubar-appearance-dark =
.label = 다크
zen-menubar-new-unsynced-window =
.label = New Blank Window
.label = 새 빈 창

View File

@@ -314,4 +314,4 @@ zen-devtools-toggle-storage-shortcut = Perjungti saugyklą
zen-devtools-toggle-dom-shortcut = Perjungti DOM
zen-devtools-toggle-accessibility-shortcut = Perjungti prieinamumą
zen-close-all-unpinned-tabs-shortcut = Užverti visas neprisegtas korteles
zen-new-unsynced-window-shortcut = Naujas nesinchronizuotas langas
zen-new-unsynced-window-shortcut = Naujas tuščias langas

View File

@@ -60,8 +60,8 @@ zen-site-data-settings = Nustatymai
zen-generic-manage = Tvarkyti
zen-generic-more = Daugiau
zen-generic-next = Sekantis
zen-essentials-promo-label = Add to Essentials
zen-essentials-promo-sublabel = Keep your favorite tabs just a click away
zen-essentials-promo-label = Įtraukti į būtiniausius
zen-essentials-promo-sublabel = Laikykite mėgstamas korteles vos nuo vienu paspaudimu
# These labels will be used for the site data panel settings
zen-site-data-setting-allow = Leidžiama
zen-site-data-setting-block = Užblokuota
@@ -109,7 +109,7 @@ zen-sidebar-notification-updated-tooltip =
zen-sidebar-notification-restart-safe-mode-label = Kažkas sugedo?
zen-sidebar-notification-restart-safe-mode-tooltip =
.title = Paleisti iš naujo saugioje režime
zen-window-sync-migration-dialog-title = Keep Your Windows in Sync
zen-window-sync-migration-dialog-message = Zen now syncs windows on the same device, so changes in one window are reflected across the others instantly.
zen-window-sync-migration-dialog-learn-more = Learn More
zen-window-sync-migration-dialog-accept = Got It
zen-window-sync-migration-dialog-title = Išlaikykite savo langus sinchronizuotus
zen-window-sync-migration-dialog-message = Zen“ dabar sinchronizuoja langus tame pačiame įrenginyje, todėl viename lange atlikti pakeitimai iš karto atsispindi ir kituose.
zen-window-sync-migration-dialog-learn-more = Sužinoti daugiau
zen-window-sync-migration-dialog-accept = Supratau

View File

@@ -19,4 +19,4 @@ zen-menubar-appearance-light =
zen-menubar-appearance-dark =
.label = Tamsų
zen-menubar-new-unsynced-window =
.label = New Blank Window
.label = Naujas tuščias langas

View File

@@ -19,4 +19,4 @@ zen-menubar-appearance-light =
zen-menubar-appearance-dark =
.label = Escuro
zen-menubar-new-unsynced-window =
.label = New Blank Window
.label = Nova janela em branco

View File

@@ -18,9 +18,9 @@ tab-context-zen-replace-pinned-url-with-current =
.label = Substituir o URL Fixado pelo URL Atual
.accesskey = C
tab-context-zen-edit-title =
.label = Change Label...
.label = Alterar etiqueta...
tab-context-zen-edit-icon =
.label = Change Icon...
.label = Alterar ícone...
zen-themes-corrupted = O seu ficheiro de modificações do { -brand-short-name } está corrompido. Elas foram redefinidas como iguais às do tema padrão.
zen-shortcuts-corrupted = O seu ficheiro de atalhos do { -brand-short-name } está corrompido. Eles foram redefinidos para os atalhos padrão.
# note: Do not translate the "<br/>" tags in the following string
@@ -109,7 +109,7 @@ zen-sidebar-notification-updated-tooltip =
zen-sidebar-notification-restart-safe-mode-label = Falhou alguma coisa?
zen-sidebar-notification-restart-safe-mode-tooltip =
.title = Reiniciar em Modo de Segurança
zen-window-sync-migration-dialog-title = Keep Your Windows in Sync
zen-window-sync-migration-dialog-message = Zen now syncs windows on the same device, so changes in one window are reflected across the others instantly.
zen-window-sync-migration-dialog-title = Mantenha As Suas Janelas Sincronizadas
zen-window-sync-migration-dialog-message = Agora, o Zen sincroniza as janelas no dispositivo, pelo que alterações numa janela são refletidas instantaneamente nas outras.
zen-window-sync-migration-dialog-learn-more = Learn More
zen-window-sync-migration-dialog-accept = Got It
zen-window-sync-migration-dialog-accept = Entendido

View File

@@ -19,4 +19,4 @@ zen-menubar-appearance-light =
zen-menubar-appearance-dark =
.label = Escuro
zen-menubar-new-unsynced-window =
.label = New Blank Window
.label = Nova janela sem sincronização

View File

@@ -314,4 +314,4 @@ zen-devtools-toggle-storage-shortcut = Переключить хранилище
zen-devtools-toggle-dom-shortcut = Переключить DOM
zen-devtools-toggle-accessibility-shortcut = Включить/выключить специальные возможности
zen-close-all-unpinned-tabs-shortcut = Закрыть все не закреплённые вкладки
zen-new-unsynced-window-shortcut = Новое несинхронизированное окно
zen-new-unsynced-window-shortcut = Новое пустое окно

View File

@@ -314,4 +314,4 @@ zen-devtools-toggle-storage-shortcut = Växla lagring
zen-devtools-toggle-dom-shortcut = Växla DOM
zen-devtools-toggle-accessibility-shortcut = Växla tillgänglighetsinställningar
zen-close-all-unpinned-tabs-shortcut = Stäng alla flikar som inte är fästa
zen-new-unsynced-window-shortcut = Nytt osynkroniserat fönster
zen-new-unsynced-window-shortcut = Nytt tomt fönster

View File

@@ -19,4 +19,4 @@ zen-menubar-appearance-light =
zen-menubar-appearance-dark =
.label = Mörkt
zen-menubar-new-unsynced-window =
.label = New Blank Window
.label = Nytt tomt fönster

View File

@@ -314,4 +314,4 @@ zen-devtools-toggle-storage-shortcut = Depolamayı Aç/Kapat
zen-devtools-toggle-dom-shortcut = DOM'u Aç/Kapat
zen-devtools-toggle-accessibility-shortcut = Erişilebilirliği Aç/Kapat
zen-close-all-unpinned-tabs-shortcut = Sabitlenmemiş Tüm Sekmeleri Kapat
zen-new-unsynced-window-shortcut = Senkronize Edilmemiş Yeni Pencere
zen-new-unsynced-window-shortcut = Yeni Boş Pencere

View File

@@ -19,4 +19,4 @@ zen-menubar-appearance-light =
zen-menubar-appearance-dark =
.label = Koyu
zen-menubar-new-unsynced-window =
.label = New Blank Window
.label = Yeni Boş Pencere

View File

@@ -314,4 +314,4 @@ zen-devtools-toggle-storage-shortcut = 開啟儲存空間檢測器
zen-devtools-toggle-dom-shortcut = 開啟 DOM
zen-devtools-toggle-accessibility-shortcut = 開啟輔助功能
zen-close-all-unpinned-tabs-shortcut = 關閉所有未釘選的分頁
zen-new-unsynced-window-shortcut = 開新未同步視窗
zen-new-unsynced-window-shortcut = 開新初始視窗

View File

@@ -19,4 +19,4 @@ zen-menubar-appearance-light =
zen-menubar-appearance-dark =
.label = 暗色
zen-menubar-new-unsynced-window =
.label = 新初始視窗
.label = 新初始視窗

View File

@@ -49,7 +49,7 @@ zen-panel-ui-gradient-click-to-add = 點擊新增顏色
zen-workspace-creation-name =
.placeholder = 工作區名稱
zen-move-tab-to-workspace-button =
.label = 移動至…
.label = 移動至…
.tooltiptext = 將此視窗所有頁面移至單一工作區
zen-workspaces-panel-context-reorder =
.label = 排序工作區

6
package-lock.json generated
View File

@@ -5610,9 +5610,9 @@
}
},
"node_modules/lodash": {
"version": "4.17.21",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
"version": "4.17.23",
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz",
"integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==",
"dev": true,
"license": "MIT"
},

View File

@@ -63,6 +63,10 @@
value: false
locked: true
- name: browser.search.serpEventTelemetryCategorization.enabled
value: false
locked: true
- name: browser.newtabpage.activity-stream.telemetry
value: false
locked: true

View File

@@ -6,7 +6,7 @@
value: true
- name: zen.folders.search.hover-delay
value: 700 # ms
value: 500 # ms
- name: zen.folders.max-subfolders
value: 5

View File

@@ -4,7 +4,9 @@
# GTK-specific preferences
- name: widget.gtk.rounded-bottom-corners.enabled
value: true
# Disabled for https://github.com/zen-browser/desktop/issues/6302,
# also see https://bugzilla.mozilla.org/show_bug.cgi?id=1979083
value: false
condition: "defined(MOZ_WIDGET_GTK)"
- name: zen.widget.linux.transparency

View File

@@ -6,7 +6,7 @@
value: true
- name: zen.session-store.log
value: "@IS_TWILIGHT@"
value: true
- name: zen.session-store.restore-unsynced-windows
value: true

View File

@@ -54,3 +54,6 @@
- name: zen.view.draggable-sidebar
value: true
- name: zen.view.overflow-webext-toolbar
value: "@IS_TWILIGHT@"

View File

@@ -13,3 +13,6 @@
- name: zen.window-sync.open-link-in-new-unsynced-window
value: true
- name: zen.window-sync.sync-only-pinned-tabs
value: false

View File

@@ -32,6 +32,9 @@
- name: zen.urlbar.show-pip-button
value: false
- name: zen.urlbar.open-on-startup
value: true
# Mark: Zen suggestions controls
- name: zen.urlbar.suggestions.quick-actions

View File

@@ -1,41 +0,0 @@
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
import os
import sys
import requests
BASE_URI = "https://phabricator.services.mozilla.com"
OUTPUT_DIR = os.path.join(os.getcwd(), "src", "firefox-patches")
def download_phab_patch(phab_id, output_file):
"""Download a Phabricator patch by its ID and save it to output_file."""
patch_url = f"{BASE_URI}/{phab_id}?download=true"
try:
print(f"Downloading patch from {patch_url}")
response = requests.get(patch_url)
response.raise_for_status() # Raise an error for bad responses
with open(output_file, 'wb') as f:
f.write(response.content)
print(f"Patch saved to {output_file}")
except requests.RequestException as e:
print(f"Error downloading patch: {e}")
sys.exit(1)
def main():
if len(sys.argv) < 2:
print("Usage: python download_phab_patch.py <PHABRICATOR_ID> [output_file]", file=sys.stderr)
sys.exit(1)
phab_id = sys.argv[1]
output_file = sys.argv[2] if len(sys.argv) > 2 else f"phab_{phab_id}"
output_file = os.path.join(OUTPUT_DIR, output_file + ".patch")
download_phab_patch(phab_id, output_file)
if __name__ == "__main__":
main()

View File

@@ -18,10 +18,18 @@ FILE_PREFIX = """
# This file is autogenerated by scripts/import_external_tests.py
# Do not edit manually.
"""
BROWSER_MANIFEST_LIST_PREFIX = """
BROWSER_CHROME_MANIFESTS += [
"""
XPCSHELL_MANIFESTS_LIST_PREFIX = """
XPCSHELL_TESTS_MANIFESTS += [
"""
FILE_SUFFIX = "]"
VALID_MANIFEST_FILES = ["browser.toml", "xpcshell.toml"]
def get_tests_manifest():
@@ -38,12 +46,17 @@ def validate_tests_path(path, files, ignore_list):
for ignore in ignore_list:
if ignore not in files:
die_with_error(f"Ignore file '{ignore}' not found in tests folder '{path}'")
if "browser.toml" not in files or "browser.js" in ignore_list:
die_with_error(f"'browser.toml' not found in tests folder '{path}'")
if not any(manifest_file in files for manifest_file in VALID_MANIFEST_FILES):
die_with_error(f"None of the valid manifest files {VALID_MANIFEST_FILES} found in tests folder '{path}'")
def disable_and_replace_manifest(manifest, output_path):
toml_file = os.path.join(output_path, "browser.toml")
toml_file = None
for manifest_file in VALID_MANIFEST_FILES:
candidate = os.path.join(output_path, manifest_file)
if os.path.exists(candidate):
toml_file = candidate
break
disabled_tests = manifest.get("disable", [])
with open(toml_file, "r") as f:
data = f.read()
@@ -90,8 +103,17 @@ def write_moz_build_file(manifest):
print(f"Writing moz.build file to '{moz_build_path}'")
with open(moz_build_path, "w") as f:
f.write(FILE_PREFIX)
f.write(BROWSER_MANIFEST_LIST_PREFIX)
for test_suite in manifest.keys():
f.write(f'\t"{test_suite}/browser.toml",\n')
# add for browser.toml first
if not manifest[test_suite].get("xpcshell", False):
f.write(f'\t"{test_suite}/browser.toml",\n')
f.write(FILE_SUFFIX)
f.write(XPCSHELL_MANIFESTS_LIST_PREFIX)
for test_suite in manifest.keys():
# add for xpcshell.toml
if manifest[test_suite].get("xpcshell", False):
f.write(f'\t"{test_suite}/xpcshell.toml",\n')
f.write(FILE_SUFFIX)

View File

@@ -11,6 +11,7 @@ npm run import
IGNORE_FILES=(
"shared.nsh"
"ignorePrefs.json"
"moz.configure"
)
# Recursively find all .patch files in the current directory and its subdirectories

View File

@@ -56,7 +56,7 @@ def main():
os.chdir(engine_dir)
def run_mach_with_paths(test_paths):
command = ['./mach', 'mochitest'] + other_args + test_paths
command = ['./mach', 'test'] + other_args + test_paths
# Replace the current process with the mach command
os.execvp(command[0], command)

View File

@@ -0,0 +1,99 @@
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
import os
import sys
import json
import requests
from json_with_comments import JSONWithCommentsDecoder
BASE_URI = "https://phabricator.services.mozilla.com"
OUTPUT_DIR = os.path.join(os.getcwd(), "src", "external-patches")
def die(message):
print(f"Error: {message}")
sys.exit(1)
def download_phab_patch(phab_id, output_file):
"""Download a Phabricator patch by its ID and save it to output_file."""
patch_url = f"{BASE_URI}/{phab_id}?download=true"
try:
print(f"Downloading patch from {patch_url}")
response = requests.get(patch_url)
response.raise_for_status() # Raise an error for bad responses
with open(output_file, 'wb') as f:
f.write(response.content)
print(f"Patch saved to {output_file}")
except requests.RequestException as e:
die(f"Failed to download patch {phab_id}: {e}")
def download_patch_from_url(url, output_file):
"""Download a patch from a given URL and save it to output_file."""
try:
print(f"Downloading patch from {url}")
response = requests.get(url)
response.raise_for_status() # Raise an error for bad responses
with open(output_file, 'wb') as f:
f.write(response.content)
print(f"Patch saved to {output_file}")
except requests.RequestException as e:
die(f"Failed to download patch from {url}: {e}")
def main():
with open(os.path.join(OUTPUT_DIR, "manifest.json"), 'r') as f:
manifest = json.load(f, cls=JSONWithCommentsDecoder)
expected_files = set()
for patch in manifest:
if patch.get("type") == "phabricator":
phab_id = patch.get("id")
name = patch.get("name")
if not phab_id or not name:
die(f"Patch entry missing 'id' or 'name': {patch}")
name = name.replace(" ", "_").lower()
output_file = os.path.join(OUTPUT_DIR, "firefox", f"{name}.patch")
print(f"Processing Phabricator patch: {phab_id} -> {output_file}")
download_phab_patch(phab_id, output_file)
expected_files.add(output_file)
elif patch.get("type") == "local":
print(f"Local patch: {patch.get('path')}")
expected_files.add(os.path.join(OUTPUT_DIR, patch.get("path")))
elif patch.get("type") == "patch":
url = patch.get("url")
dest = patch.get("dest")
if not url or not dest:
die(f"Patch entry missing 'url' or 'dest': {patch}")
filename = url.split("/")[-1]
output_file = os.path.join(OUTPUT_DIR, dest, filename)
download_patch_from_url(url, output_file)
replaces = patch.get("replaces", {})
for replace in replaces.keys():
value = replaces[replace]
with open(output_file, 'r') as f:
content = f.read()
if replace not in content:
die(f"Replace string '{replace}' not found in {output_file}")
with open(output_file, 'w') as f:
f.write(content.replace(replace, value))
expected_files.add(output_file)
else:
die(f"Unknown patch type: {patch.get('type')}")
# Check for unexpected files in the output directory
# and remove them if they are not in the expected_files set.
for root, dirs, files in os.walk(OUTPUT_DIR):
for file in files:
if file.endswith(".patch"):
file_path = os.path.join(root, file)
if file_path not in expected_files:
print(f"Removing unexpected patch file: {file_path}")
os.remove(file_path)
if __name__ == "__main__":
main()

View File

@@ -1,5 +1,5 @@
diff --git a/Cargo.lock b/Cargo.lock
index 723445447f491058784992e66245e0e0f8e61e19..02816c1df3e20d96ce68f16970b8a6e38080533e 100644
index abc04e6a8e1e68fa71c6de0375f8e953e6369d8b..7bdfb41e255fc12065de064162e9bf9e15d7ff12 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -4214,8 +4214,6 @@ dependencies = [

View File

@@ -1,13 +1,13 @@
diff --git a/Cargo.toml b/Cargo.toml
index 35e725043bce0b39fea550e8fb2b0ae1ff752e43..abac2042d537fcc1ce26e0e3acbf98fc2975b793 100644
index ab9eda43302a6281e59a2738170e77bb0f0b1b90..3389f1c744b56e3a6a4eb3f05b0601bed4538fa1 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -237,6 +237,8 @@ moz_asserts = { path = "mozglue/static/rust/moz_asserts" }
@@ -240,6 +240,8 @@ moz_asserts = { path = "mozglue/static/rust/moz_asserts" }
# Workaround for https://github.com/rust-lang/cargo/issues/11232
rure = { path = "third_party/rust/rure" }
+mime_guess = { path = "third_party/rust/mime_guess" }
+
# Patch `unicode-width` 0.1.* to 0.2.
unicode-width = { path = "build/rust/unicode-width" }
# To-be-published changes.
unicode-bidi = { git = "https://github.com/servo/unicode-bidi", rev = "ca612daf1c08c53abe07327cb3e6ef6e0a760f0c" }
nss-gk-api = { git = "https://github.com/beurdouche/nss-gk-api", rev = "e48a946811ffd64abc78de3ee284957d8d1c0d63" }

View File

@@ -1,8 +1,8 @@
diff --git a/browser/base/content/browser-init.js b/browser/base/content/browser-init.js
index 288a79e5fb4da24cffcb30fb4b8adc9604b15d26..bf9bd3e666dfb6298dbeec0546cae223a7bc68f0 100644
index 0186e3a6508fc8e40f93619d8b3e5a0c003cbd4a..1f4fa115e591cfbe3e23d4ce880be66277a50a26 100644
--- a/browser/base/content/browser-init.js
+++ b/browser/base/content/browser-init.js
@@ -200,6 +200,7 @@ var gBrowserInit = {
@@ -243,6 +243,7 @@ var gBrowserInit = {
},
onLoad() {
@@ -10,7 +10,7 @@ index 288a79e5fb4da24cffcb30fb4b8adc9604b15d26..bf9bd3e666dfb6298dbeec0546cae223
gBrowser.addEventListener("DOMUpdateBlockedPopups", e =>
PopupAndRedirectBlockerObserver.handleEvent(e)
);
@@ -375,6 +376,7 @@ var gBrowserInit = {
@@ -433,6 +434,7 @@ var gBrowserInit = {
this._handleURIToLoad();

View File

@@ -1,5 +1,5 @@
diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
index 16cf3e201358d24c9216f9b06b0ba3b89684d32a..2cfa507bbdc96b8a293b18595d0beae031fe6119 100644
index e2e0526a0ddd617291f1f6c17bcfb807954b481f..c3d2afff6eaa788309d1c1a7fa40f9b8b4f0fffe 100644
--- a/browser/base/content/browser.js
+++ b/browser/base/content/browser.js
@@ -33,6 +33,7 @@ ChromeUtils.defineESModuleGetters(this, {
@@ -10,7 +10,7 @@ index 16cf3e201358d24c9216f9b06b0ba3b89684d32a..2cfa507bbdc96b8a293b18595d0beae0
DevToolsSocketStatus:
"resource://devtools/shared/security/DevToolsSocketStatus.sys.mjs",
DownloadUtils: "resource://gre/modules/DownloadUtils.sys.mjs",
@@ -819,7 +820,12 @@ function UpdateBackForwardCommands(aWebNavigation) {
@@ -814,7 +815,12 @@ function UpdateBackForwardCommands(aWebNavigation) {
var backDisabled = backCommand.hasAttribute("disabled");
var forwardDisabled = forwardCommand.hasAttribute("disabled");
@@ -24,7 +24,7 @@ index 16cf3e201358d24c9216f9b06b0ba3b89684d32a..2cfa507bbdc96b8a293b18595d0beae0
if (backDisabled) {
backCommand.removeAttribute("disabled");
} else {
@@ -2305,6 +2311,8 @@ var XULBrowserWindow = {
@@ -2301,6 +2307,8 @@ var XULBrowserWindow = {
AboutReaderParent.updateReaderButton(gBrowser.selectedBrowser);
TranslationsParent.onLocationChange(gBrowser.selectedBrowser);
@@ -33,7 +33,7 @@ index 16cf3e201358d24c9216f9b06b0ba3b89684d32a..2cfa507bbdc96b8a293b18595d0beae0
PictureInPicture.updateUrlbarToggle(gBrowser.selectedBrowser);
if (!gMultiProcessBrowser) {
@@ -3818,7 +3826,7 @@ function warnAboutClosingWindow() {
@@ -3821,7 +3829,7 @@ function warnAboutClosingWindow() {
if (!isPBWindow && !toolbar.visible) {
return gBrowser.warnAboutClosingTabs(
@@ -42,7 +42,7 @@ index 16cf3e201358d24c9216f9b06b0ba3b89684d32a..2cfa507bbdc96b8a293b18595d0beae0
gBrowser.closingTabsEnum.ALL
);
}
@@ -3858,7 +3866,7 @@ function warnAboutClosingWindow() {
@@ -3861,7 +3869,7 @@ function warnAboutClosingWindow() {
return (
isPBWindow ||
gBrowser.warnAboutClosingTabs(
@@ -51,7 +51,7 @@ index 16cf3e201358d24c9216f9b06b0ba3b89684d32a..2cfa507bbdc96b8a293b18595d0beae0
gBrowser.closingTabsEnum.ALL
)
);
@@ -3883,7 +3891,7 @@ function warnAboutClosingWindow() {
@@ -3886,7 +3894,7 @@ function warnAboutClosingWindow() {
AppConstants.platform != "macosx" ||
isPBWindow ||
gBrowser.warnAboutClosingTabs(
@@ -60,7 +60,7 @@ index 16cf3e201358d24c9216f9b06b0ba3b89684d32a..2cfa507bbdc96b8a293b18595d0beae0
gBrowser.closingTabsEnum.ALL
)
);
@@ -4806,6 +4814,9 @@ var ConfirmationHint = {
@@ -4809,6 +4817,9 @@ var ConfirmationHint = {
MozXULElement.insertFTLIfNeeded("toolkit/branding/brandings.ftl");
MozXULElement.insertFTLIfNeeded("browser/confirmationHints.ftl");
document.l10n.setAttributes(this._message, messageId, options.l10nArgs);

View File

@@ -1,8 +1,8 @@
diff --git a/browser/base/content/browser-sets.inc b/browser/base/content/browser-sets.inc
index 139f7c2617f5e4843e0072435818c859def2f6bb..6ac1467b4117e2d76102d6977f13268827b4588f 100644
index df768aaa77a6986260da5052ed14c8403d48de6b..a30e3a2784a6215c959d23802b5c2c966f89ca10 100644
--- a/browser/base/content/browser-sets.inc
+++ b/browser/base/content/browser-sets.inc
@@ -413,3 +413,4 @@
@@ -414,3 +414,4 @@
internal="true"/>
#endif
</keyset>

View File

@@ -1,8 +1,8 @@
diff --git a/browser/base/content/browser-sets.js b/browser/base/content/browser-sets.js
index 94a05a510204c027e482fda33deaf3dc0d7471c9..79d37a7c7f29739d3ad2d9f6a3b3b8d638836b10 100644
index 50845ebd925955bf9646fc499b9828eccbf266ef..5482a24576ebcd4382409cae01a4c6bcbd88a96c 100644
--- a/browser/base/content/browser-sets.js
+++ b/browser/base/content/browser-sets.js
@@ -266,7 +266,7 @@ document.addEventListener(
@@ -270,7 +270,7 @@ document.addEventListener(
}
});
@@ -11,3 +11,12 @@ index 94a05a510204c027e482fda33deaf3dc0d7471c9..79d37a7c7f29739d3ad2d9f6a3b3b8d6
const SIDEBAR_REVAMP_PREF = "sidebar.revamp";
const SIDEBAR_REVAMP_ENABLED = Services.prefs.getBoolPref(
SIDEBAR_REVAMP_PREF,
@@ -308,6 +308,8 @@ document.addEventListener(
panel: SidebarController.currentID,
opened: SidebarController._state.launcherExpanded,
});
+ } else {
+ SidebarController.toggle();
}
break;
case "key_gotoHistory":

View File

@@ -1,8 +1,8 @@
diff --git a/browser/base/content/browser-siteIdentity.js b/browser/base/content/browser-siteIdentity.js
index 8369e546866aa313e62f808acb8d51afa8da4f9b..7a4b20dd5922425cebfac542893a52cd68a26449 100644
index 6d2052e060896bb5e91ba84c15bf14c969340935..6ceef1806e2d88cd7e2ebc867d633e9148f3b298 100644
--- a/browser/base/content/browser-siteIdentity.js
+++ b/browser/base/content/browser-siteIdentity.js
@@ -451,11 +451,6 @@ var gIdentityHandler = {
@@ -464,11 +464,6 @@ var gIdentityHandler = {
// avoid a pretty ugly transition. Also hide it even
// if the update resulted in no site data, to keep the
// illusion that clicking the button had an effect.
@@ -14,7 +14,7 @@ index 8369e546866aa313e62f808acb8d51afa8da4f9b..7a4b20dd5922425cebfac542893a52cd
let baseDomain = SiteDataManager.getBaseDomainFromHost(this._uri.host);
if (SiteDataManager.promptSiteDataRemoval(window, [baseDomain])) {
@@ -832,7 +827,7 @@ var gIdentityHandler = {
@@ -847,7 +842,7 @@ var gIdentityHandler = {
// This is a secure internal Firefox page.
this._identityBox.className = "chromeUI";
let brandBundle = document.getElementById("bundle_brand");
@@ -23,7 +23,7 @@ index 8369e546866aa313e62f808acb8d51afa8da4f9b..7a4b20dd5922425cebfac542893a52cd
} else if (this._pageExtensionPolicy) {
// This is a WebExtension page.
this._identityBox.className = "extensionPage";
@@ -1161,6 +1156,12 @@ var gIdentityHandler = {
@@ -1190,6 +1185,12 @@ var gIdentityHandler = {
}
}

View File

@@ -1,5 +1,5 @@
diff --git a/browser/base/content/browser.xhtml b/browser/base/content/browser.xhtml
index ac82dcd286b5502d1ba38ed740813db08941eb7b..c26b3f0468ee6acd7716d4e8a24ad8cc84fce186 100644
index 832d98f911e0bd0e231421332a521bfefea72ef8..a9955256c81b252fe0527ae5857c9283e2518274 100644
--- a/browser/base/content/browser.xhtml
+++ b/browser/base/content/browser.xhtml
@@ -19,6 +19,7 @@
@@ -10,7 +10,7 @@ index ac82dcd286b5502d1ba38ed740813db08941eb7b..c26b3f0468ee6acd7716d4e8a24ad8cc
persist="screenX screenY width height sizemode"
data-l10n-sync="true">
<head>
@@ -99,8 +100,10 @@
@@ -100,8 +101,10 @@
<title data-l10n-id="browser-main-window-default-title"></title>
@@ -21,7 +21,7 @@ index ac82dcd286b5502d1ba38ed740813db08941eb7b..c26b3f0468ee6acd7716d4e8a24ad8cc
</head>
<html:body xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
# All sets except for popupsets (commands, keys, and stringbundles)
@@ -133,9 +136,11 @@
@@ -134,9 +137,11 @@
</vbox>
</html:template>

View File

@@ -1,8 +1,8 @@
diff --git a/browser/base/content/main-popupset.inc.xhtml b/browser/base/content/main-popupset.inc.xhtml
index 79b604c5965ba03762acbf085c9288c73001ec24..d75d5481e5de93c592850e39d4b0b4fd07e12678 100644
index 0d73eb17b340001312a885ea10f5d6ad871f14d2..475824a0f9a4bbc15dc9bc7f1d2a09a51e58bc65 100644
--- a/browser/base/content/main-popupset.inc.xhtml
+++ b/browser/base/content/main-popupset.inc.xhtml
@@ -226,6 +226,10 @@
@@ -234,6 +234,10 @@
hidden="true"
tabspecific="true"
aria-labelledby="editBookmarkPanelTitle">
@@ -13,7 +13,7 @@ index 79b604c5965ba03762acbf085c9288c73001ec24..d75d5481e5de93c592850e39d4b0b4fd
<box class="panel-header">
<html:h1>
<html:span id="editBookmarkPanelTitle"/>
@@ -251,6 +255,7 @@
@@ -259,6 +263,7 @@
class="footer-button"/>
</html:moz-button-group>
</vbox>
@@ -21,7 +21,7 @@ index 79b604c5965ba03762acbf085c9288c73001ec24..d75d5481e5de93c592850e39d4b0b4fd
</panel>
</html:template>
@@ -656,6 +661,8 @@
@@ -678,6 +683,8 @@
#include popup-notifications.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 68c24f730d56f548cf1e286198a04f8363529378..71418c93ce7216d71412f2fa67295322bb73abad 100644
index 4d4223c508560136aba220adb18528aac913a188..7e7432f7adb761a598d3e3e5ca4c6385a3bfe223 100644
--- a/browser/base/content/navigator-toolbox.inc.xhtml
+++ b/browser/base/content/navigator-toolbox.inc.xhtml
@@ -2,7 +2,7 @@
@@ -11,27 +11,28 @@ index 68c24f730d56f548cf1e286198a04f8363529378..71418c93ce7216d71412f2fa67295322
<script src="chrome://browser/content/navigator-toolbox.js" />
<!-- Menu -->
@@ -18,9 +18,8 @@
@@ -18,9 +18,9 @@
#include browser-menubar.inc
</toolbaritem>
<spacer flex="1" skipintoolbarset="true" style="order: 1000;"/>
-#include titlebar-items.inc.xhtml
</toolbar>
-
+<hbox id="titlebar">
<toolbar id="TabsToolbar"
class="browser-toolbar browser-titlebar"
fullscreentoolbar="true"
@@ -62,6 +61,8 @@
@@ -62,6 +62,9 @@
<html:sidebar-pins-promo id="drag-to-pin-promo-card"></html:sidebar-pins-promo>
<arrowscrollbox id="pinned-tabs-container" orient="horizontal" clicktoscroll=""></arrowscrollbox>
<splitter orient="vertical" id="vertical-pinned-tabs-splitter" resizebefore="sibling" resizeafter="none" hidden="true"/>
+<html:div id="zen-overflow-extensions-list" skipintoolbarset="true"></html:div>
+<html:div id="zen-essentials" skipintoolbarset="true"></html:div>
+<html:div id="zen-tabs-wrapper">
<hbox class="tab-drop-indicator" hidden="true"/>
<arrowscrollbox id="tabbrowser-arrowscrollbox" orient="horizontal" flex="1" clicktoscroll="" scrolledtostart="" scrolledtoend="">
<tab is="tabbrowser-tab" class="tabbrowser-tab" selected="true" visuallyselected="" fadein=""/>
@@ -81,6 +82,7 @@
@@ -81,6 +84,7 @@
tooltip="dynamic-shortcut-tooltip"
data-l10n-id="tabs-toolbar-new-tab"/>
<html:span id="tabbrowser-tab-a11y-desc" hidden="true"/>
@@ -39,8 +40,8 @@ index 68c24f730d56f548cf1e286198a04f8363529378..71418c93ce7216d71412f2fa67295322
</tabs>
<toolbarbutton id="new-tab-button"
@@ -106,9 +108,10 @@
#include private-browsing-indicator.inc.xhtml
@@ -114,9 +118,10 @@
<toolbarbutton class="content-analysis-indicator toolbarbutton-1 content-analysis-indicator-icon"/>
-#include titlebar-items.inc.xhtml

View File

@@ -1,5 +1,5 @@
diff --git a/browser/base/content/nsContextMenu.sys.mjs b/browser/base/content/nsContextMenu.sys.mjs
index d9fbd3a9a78c993c89efa75be9e2ffc975158aba..e64382b32580c2d113774e76e3587002ce0aebad 100644
index 90c8d48fa992ca5ac125fa2998741db79264de4a..a598431671e42b9ede23b0595790564202408a8e 100644
--- a/browser/base/content/nsContextMenu.sys.mjs
+++ b/browser/base/content/nsContextMenu.sys.mjs
@@ -371,6 +371,9 @@ export class nsContextMenu {

View File

@@ -51,3 +51,4 @@
<script type="module" src="chrome://browser/content/zen-components/ZenFolders.mjs"></script>
<script type="module" src="chrome://browser/content/zen-components/ZenDownloadAnimation.mjs"></script>
<script type="module" src="chrome://browser/content/zen-components/ZenEmojiPicker.mjs"></script>
<script type="module" src="chrome://browser/content/zen-components/ZenLiveFoldersUI.mjs"></script>

View File

@@ -18,3 +18,4 @@
#include ../../../zen/images/jar.inc.mn
#include ../../../zen/vendor/jar.inc.mn
#include ../../../zen/fonts/jar.inc.mn
#include ../../../zen/live-folders/jar.inc.mn

View File

@@ -63,4 +63,6 @@
<command id="cmd_zenCloseUnpinnedTabs" />
<command id="cmd_zenNewNavigatorUnsynced" />
<command id="cmd_zenNewLiveFolder" />
</commandset>

View File

@@ -9,4 +9,5 @@
<link rel="localization" href="browser/zen-menubar.ftl"/>
<link rel="localization" href="browser/zen-vertical-tabs.ftl"/>
<link rel="localization" href="browser/zen-folders.ftl"/>
<link rel="localization" href="browser/zen-live-folders.ftl"/>
</linkset>

View File

@@ -2,7 +2,7 @@
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
<panel id="zen-folder-tabs-popup" type="arrow" orient="vertical">
<panel id="zen-folder-tabs-popup" type="arrow" orient="vertical" side="left">
<hbox class="tabs-list-header" flex="1">
<image class="zen-folder-tabs-list-search-icon" src="chrome://global/skin/icons/search-glass.svg"/>
<html:input id="zen-folder-tabs-list-search"

View File

@@ -3,6 +3,23 @@
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
<menupopup id="zenCreateNewPopup">
<menu data-l10n-id="zen-panel-ui-live-folder-create" id="zen-panel-ui-live-folder-create">
<menupopup>
<menuitem
data-l10n-id="zen-live-folder-github-pull-requests"
command="cmd_zenNewLiveFolder"
image="chrome://browser/content/zen-images/favicons/github.svg" />
<menuitem
data-l10n-id="zen-live-folder-github-issues"
command="cmd_zenNewLiveFolder"
image="chrome://browser/content/zen-images/favicons/github.svg" />
<menuitem
data-l10n-id="zen-live-folder-type-rss"
command="cmd_zenNewLiveFolder"
image="chrome://browser/skin/zen-icons/selectable/logo-rss.svg"/>
</menupopup>
</menu>
<menuseparator/>
<menuitem data-l10n-id="zen-panel-ui-workspaces-create" command="cmd_zenOpenWorkspaceCreation" image="chrome://browser/skin/zen-icons/duplicate-tab.svg" />
<menuitem data-l10n-id="zen-panel-ui-folder-create" command="cmd_zenOpenFolderCreation" image="chrome://browser/skin/zen-icons/folder.svg" />
<menuseparator/>
@@ -35,6 +52,12 @@
</menupopup>
<menupopup id="zenFolderActions">
<menu id="context_zenLiveFolderOptions"
data-l10n-id="zen-live-folder-options"
hidden="true">
<menupopup />
</menu>
<menuseparator id="live-folder-separator" hidden="true"/>
<menuitem id="context_zenFolderRename" data-l10n-id="zen-folders-panel-rename-folder"/>
<menuitem id="context_zenFolderChangeIcon" data-l10n-id="tab-context-zen-edit-icon"/>
<menuseparator />

View File

@@ -0,0 +1,41 @@
diff --git a/browser/components/BrowserContentHandler.sys.mjs b/browser/components/BrowserContentHandler.sys.mjs
index 2152327b42c884456785ef065422e3ca6cc8c50b..932150495d23c0a63987abf14b3dc8a12eb42d6c 100644
--- a/browser/components/BrowserContentHandler.sys.mjs
+++ b/browser/components/BrowserContentHandler.sys.mjs
@@ -603,6 +603,28 @@ nsBrowserContentHandler.prototype = {
}
}
+ try {
+ let blankWindowParam = cmdLine.handleFlagWithParam("blank-window", false);
+ if (blankWindowParam !== null) {
+ let { uri, principal } = resolveURIInternal(cmdLine, blankWindowParam);
+ if (shouldLoadURI(uri)) {
+ let win = openBrowserWindow(cmdLine, principal, uri.spec);
+ win._zenStartupSyncFlag = 'unsynced';
+ cmdLine.preventDefault = true;
+ }
+ }
+ } catch (e) {
+ if (e.result != Cr.NS_ERROR_INVALID_ARG) {
+ throw e;
+ }
+ if (cmdLine.handleFlag("blank-window", false)) {
+ let win = openBrowserWindow(cmdLine, null, null);
+ win._zenStartupSyncFlag = 'unsynced';
+ cmdLine.preventDefault = true;
+ }
+ }
+
+
var searchParam = cmdLine.handleFlagWithParam("search", false);
if (searchParam) {
doSearch(searchParam, cmdLine);
@@ -672,6 +694,7 @@ nsBrowserContentHandler.prototype = {
" --new-window <url> Open <url> in a new window.\n" +
" --new-tab <url> Open <url> in a new tab.\n" +
" --private-window [<url>] Open <url> in a new private window.\n";
+ info += " --blank-window [<url>] Open the new blank window.\n";
if (AppConstants.platform == "win") {
info += " --preferences Open Options dialog.\n";
} else {

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/BrowserGlue.sys.mjs b/browser/components/BrowserGlue.sys.mjs
index 8acc1e5a97f769dc76d30ca0534f28b0a4511ab5..bd54169f976d3abe7d122b0efc0fa0d0626179eb 100644
index 33a0f6b7e5cfe087388483fefa55b927e3e3f4a3..65135c6904b5e9523f77689dfc572aefe11b0961 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 8acc1e5a97f769dc76d30ca0534f28b0a4511ab5..bd54169f976d3abe7d122b0efc0fa0d0
AboutHomeStartupCache: "resource:///modules/AboutHomeStartupCache.sys.mjs",
AWToolbarButton: "resource:///modules/aboutwelcome/AWToolbarUtils.sys.mjs",
ASRouter: "resource:///modules/asrouter/ASRouter.sys.mjs",
@@ -1452,7 +1453,7 @@ BrowserGlue.prototype = {
@@ -1455,7 +1456,7 @@ BrowserGlue.prototype = {
windowcount++;
let tabbrowser = win.gBrowser;
if (tabbrowser) {
@@ -19,7 +19,7 @@ index 8acc1e5a97f769dc76d30ca0534f28b0a4511ab5..bd54169f976d3abe7d122b0efc0fa0d0
}
}
@@ -1617,6 +1618,8 @@ BrowserGlue.prototype = {
@@ -1620,6 +1621,8 @@ BrowserGlue.prototype = {
} else if (profileDataVersion < APP_DATA_VERSION) {
lazy.ProfileDataUpgrader.upgrade(profileDataVersion, APP_DATA_VERSION);
}

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/controlcenter/content/identityPanel.inc.xhtml b/browser/components/controlcenter/content/identityPanel.inc.xhtml
index 8e23aad8ca0bb686a669b11e1d78b7906f5f38d0..cf4873cc6165b5f77091c056d7e275e0f3d36769 100644
index d7f214f471f70de3805e0f5b3b2d77f49a06c4f1..555b55089368e1782cf0266415fb3040b269d3a5 100644
--- a/browser/components/controlcenter/content/identityPanel.inc.xhtml
+++ b/browser/components/controlcenter/content/identityPanel.inc.xhtml
@@ -28,7 +28,7 @@

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/customizableui/CustomizableUI.sys.mjs b/browser/components/customizableui/CustomizableUI.sys.mjs
index 9a98f56d83ee38e0f1aa41467b4ddf215c3d90f7..39e947ce083ce3b293337f5dbb40cd0b46db12e2 100644
index 9a98f56d83ee38e0f1aa41467b4ddf215c3d90f7..c50781a1e8fd1a71baf497ba64d85292fa1347f4 100644
--- a/browser/components/customizableui/CustomizableUI.sys.mjs
+++ b/browser/components/customizableui/CustomizableUI.sys.mjs
@@ -14,6 +14,7 @@ ChromeUtils.defineESModuleGetters(lazy, {
@@ -153,7 +153,17 @@ index 9a98f56d83ee38e0f1aa41467b4ddf215c3d90f7..39e947ce083ce3b293337f5dbb40cd0b
/**
* Add a widget to an area.
* If the area to which you try to add is not known to CustomizableUI,
@@ -7858,7 +7858,7 @@ class OverflowableToolbar {
@@ -7798,7 +7798,9 @@ class OverflowableToolbar {
);
if (webExtList && CustomizableUI.isWebExtensionWidget(child.id)) {
+ if (webExtList.id !== "zen-overflow-extensions-list") {
child.setAttribute("cui-anchorid", webExtButtonID);
+ }
webExtList.insertBefore(child, webExtList.firstElementChild);
} else {
child.setAttribute("cui-anchorid", this.#defaultListButton.id);
@@ -7858,7 +7860,7 @@ class OverflowableToolbar {
) {
continue;
}
@@ -162,7 +172,7 @@ index 9a98f56d83ee38e0f1aa41467b4ddf215c3d90f7..39e947ce083ce3b293337f5dbb40cd0b
if (child != aExceptChild) {
sum += getInlineSize(child);
}
@@ -7882,11 +7882,11 @@ class OverflowableToolbar {
@@ -7882,11 +7884,11 @@ class OverflowableToolbar {
parseFloat(style.paddingLeft) -
parseFloat(style.paddingRight) -
toolbarChildrenWidth;
@@ -176,7 +186,7 @@ index 9a98f56d83ee38e0f1aa41467b4ddf215c3d90f7..39e947ce083ce3b293337f5dbb40cd0b
});
lazy.log.debug(
@@ -7901,7 +7901,14 @@ class OverflowableToolbar {
@@ -7901,7 +7903,14 @@ class OverflowableToolbar {
Math.max(targetWidth, targetChildrenWidth)
);
totalAvailWidth = Math.ceil(totalAvailWidth);
@@ -192,7 +202,7 @@ index 9a98f56d83ee38e0f1aa41467b4ddf215c3d90f7..39e947ce083ce3b293337f5dbb40cd0b
return { isOverflowing, targetContentWidth, totalAvailWidth };
}
@@ -7962,7 +7969,11 @@ class OverflowableToolbar {
@@ -7962,7 +7971,11 @@ class OverflowableToolbar {
return;
}
}
@@ -205,7 +215,7 @@ index 9a98f56d83ee38e0f1aa41467b4ddf215c3d90f7..39e947ce083ce3b293337f5dbb40cd0b
lazy.log.debug(
`Need ${minSize} but width is ${totalAvailWidth} so bailing`
);
@@ -7995,7 +8006,7 @@ class OverflowableToolbar {
@@ -7995,7 +8008,7 @@ class OverflowableToolbar {
}
}
if (!inserted) {
@@ -214,7 +224,27 @@ index 9a98f56d83ee38e0f1aa41467b4ddf215c3d90f7..39e947ce083ce3b293337f5dbb40cd0b
}
child.removeAttribute("cui-anchorid");
child.removeAttribute("overflowedItem");
@@ -8340,7 +8351,7 @@ class OverflowableToolbar {
@@ -8121,6 +8134,9 @@ class OverflowableToolbar {
* if no such list exists.
*/
get #webExtList() {
+ if (this.#toolbar.getAttribute("addon-webext-overflowtarget") !== this.#webExtListRef?.id) {
+ this.#webExtListRef = null;
+ }
if (!this.#webExtListRef) {
let targetID = this.#toolbar.getAttribute("addon-webext-overflowtarget");
if (!targetID) {
@@ -8132,6 +8148,9 @@ class OverflowableToolbar {
let win = this.#toolbar.ownerGlobal;
let { panel } = win.gUnifiedExtensions;
this.#webExtListRef = panel.querySelector(`#${targetID}`);
+ if (!this.#webExtListRef) {
+ this.#webExtListRef = win.document.getElementById(targetID);
+ }
}
return this.#webExtListRef;
}
@@ -8340,7 +8359,7 @@ class OverflowableToolbar {
break;
}
case "mousedown": {

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/customizableui/content/panelUI.js b/browser/components/customizableui/content/panelUI.js
index d016811caa6c1ecc947fd705f6e1b27e3b5a12a5..89f2a9ec9ebd80e744ed0118e1b3c164151cf2b8 100644
index 1c696a11d831ea25b4b01689e9b23bda8a754900..fed5576c05aeffd87022565580ce085cb81fe70c 100644
--- a/browser/components/customizableui/content/panelUI.js
+++ b/browser/components/customizableui/content/panelUI.js
@@ -619,10 +619,12 @@ const PanelUI = {
@@ -627,10 +627,12 @@ const PanelUI = {
if (hasKids && !this.navbar.hasAttribute("nonemptyoverflow")) {
this.navbar.setAttribute("nonemptyoverflow", "true");
this.overflowPanel.setAttribute("hasfixeditems", "true");
@@ -15,7 +15,7 @@ index d016811caa6c1ecc947fd705f6e1b27e3b5a12a5..89f2a9ec9ebd80e744ed0118e1b3c164
}
},
@@ -970,7 +972,7 @@ const PanelUI = {
@@ -978,7 +980,7 @@ const PanelUI = {
el.removeAttribute("data-lazy-l10n-id");
});

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/extensions/parent/ext-tabs.js b/browser/components/extensions/parent/ext-tabs.js
index bff93996b42aa1f88f1bfcbd813c3af4a5806f13..1252727b4811248e138cf7a38f8d1fd422576d28 100644
index 7e32fc3f3c325b7317533acf5142bb912556fdbe..04bbe6bece881a05d2eadf81411bd4df2b745017 100644
--- a/browser/components/extensions/parent/ext-tabs.js
+++ b/browser/components/extensions/parent/ext-tabs.js
@@ -501,6 +501,7 @@ this.tabs = class extends ExtensionAPIPersistent {

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/preferences/jar.mn b/browser/components/preferences/jar.mn
index 5e53352fdbd25d2aed40d0117c3ad7072b9acf8c..0f400864ba7cc850d212ddeeefb71a06376e845f 100644
index f06aaedc681cac4dc26d8e168d47991098477424..db2e81338793f99d9f034555abb1f6ef28bb1ae9 100644
--- a/browser/components/preferences/jar.mn
+++ b/browser/components/preferences/jar.mn
@@ -42,3 +42,5 @@ browser.jar:
@@ -46,3 +46,5 @@ browser.jar:
content/browser/preferences/widgets/sync-device-name.mjs (widgets/sync-device-name/sync-device-name.mjs)
content/browser/preferences/widgets/sync-engines-list.mjs (widgets/sync-engine-list/sync-engines-list.mjs)
content/browser/preferences/widgets/sync-engines-list.css (widgets/sync-engine-list/sync-engines-list.css)

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/preferences/main.inc.xhtml b/browser/components/preferences/main.inc.xhtml
index d218a04e0ab44e6a55e368566c97df95e939565b..59f038e59fe1a8554a8b112c5ac33e700b71c79c 100644
index 171021979f4783251db7f74d52a922d4bd244f08..cdc91ac91905956a82dfa3ed229146622d1d3d80 100644
--- a/browser/components/preferences/main.inc.xhtml
+++ b/browser/components/preferences/main.inc.xhtml
@@ -48,7 +48,8 @@
@@ -49,7 +49,8 @@
<!-- Browser layout -->
<groupbox data-category="paneGeneral"
data-subcategory="layout"
@@ -12,7 +12,7 @@ index d218a04e0ab44e6a55e368566c97df95e939565b..59f038e59fe1a8554a8b112c5ac33e70
<label><html:h2 data-l10n-id="browser-layout-header"/></label>
<radiogroup id="browserLayoutRadioGroup" preference="sidebar.verticalTabs">
<radio id="browserLayoutHorizontalTabs" data-l10n-id="browser-layout-horizontal-tabs" value="false"/>
@@ -253,6 +254,7 @@
@@ -210,6 +211,7 @@
languages-customize-add.label,
" />
</hbox>

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/preferences/main.js b/browser/components/preferences/main.js
index 6f99cbf973d414ffd4036d17740abe963629db37..520dcce0adb06c5ebfee8c76f72f7d7b40e106da 100644
index 3720de145e6aa3fa2fb13f8480155d9472edaa8b..f04808d58b29611f4058d9fc52ab8bc20a34825a 100644
--- a/browser/components/preferences/main.js
+++ b/browser/components/preferences/main.js
@@ -1729,6 +1729,11 @@ SettingGroupManager.registerGroups({
@@ -2190,6 +2190,11 @@ SettingGroupManager.registerGroups({
id: "browserRestoreSession",
l10nId: "startup-restore-windows-and-tabs",
},
@@ -14,7 +14,7 @@ index 6f99cbf973d414ffd4036d17740abe963629db37..520dcce0adb06c5ebfee8c76f72f7d7b
{
id: "windowsLaunchOnLogin",
l10nId: "windows-launch-on-login",
@@ -3133,7 +3138,7 @@ function getBundleForLocales(newLocales) {
@@ -4606,7 +4611,7 @@ function getBundleForLocales(newLocales) {
])
);
return new Localization(

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/preferences/preferences.js b/browser/components/preferences/preferences.js
index 7d6835b8636f771943b8081b7d56f579812026c2..97227eec4baeffd39b23ed6194ce7fa108c3b862 100644
index 7a279d4655523156ff259c9f6bcb2a0def9d1749..de71cec7693d1fe3bf34017ab76027b83631830a 100644
--- a/browser/components/preferences/preferences.js
+++ b/browser/components/preferences/preferences.js
@@ -124,6 +124,7 @@ ChromeUtils.defineLazyGetter(this, "gSubDialog", function () {
@@ -121,6 +121,7 @@ ChromeUtils.defineLazyGetter(this, "gSubDialog", function () {
styleSheets: [
"chrome://browser/skin/preferences/dialog.css",
"chrome://browser/skin/preferences/preferences.css",
@@ -10,7 +10,7 @@ index 7d6835b8636f771943b8081b7d56f579812026c2..97227eec4baeffd39b23ed6194ce7fa1
],
resizeCallback: async ({ title, frame }) => {
// Search within main document and highlight matched keyword.
@@ -344,6 +345,10 @@ function init_all() {
@@ -350,6 +351,10 @@ function init_all() {
register_module("paneSearch", gSearchPane);
register_module("panePrivacy", gPrivacyPane);
register_module("paneContainers", gContainersPane);

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/preferences/preferences.xhtml b/browser/components/preferences/preferences.xhtml
index a1aec823d6266d69ff02aa8523d2da999a0871b9..559f2ea12e53dd19f24e7953db4388456b97f02c 100644
index 0dd43c76f947e593a9be5edae936f1af17f9b627..df026b3e164da92536adef72ee0388386cb9708b 100644
--- a/browser/components/preferences/preferences.xhtml
+++ b/browser/components/preferences/preferences.xhtml
@@ -46,6 +46,8 @@
@@ -42,6 +42,8 @@
<link rel="stylesheet" href="chrome://browser/content/preferences/widgets/setting-pane.css" />
<link rel="stylesheet" href="chrome://browser/content/preferences/widgets/setting-control.css" />
@@ -11,7 +11,7 @@ index a1aec823d6266d69ff02aa8523d2da999a0871b9..559f2ea12e53dd19f24e7953db438845
<link rel="localization" href="branding/brand.ftl"/>
<link rel="localization" href="browser/browser.ftl"/>
<!-- Used by fontbuilder.js -->
@@ -115,6 +117,11 @@
@@ -111,6 +113,11 @@
<hbox flex="1">
<vbox class="navigation">
@@ -23,7 +23,7 @@ index a1aec823d6266d69ff02aa8523d2da999a0871b9..559f2ea12e53dd19f24e7953db438845
<!-- category list -->
<richlistbox id="categories" data-l10n-id="category-list" data-l10n-attrs="aria-label">
<richlistitem id="category-general"
@@ -127,6 +134,50 @@
@@ -123,6 +130,50 @@
<label class="category-name" flex="1" data-l10n-id="pane-general-title"></label>
</richlistitem>
@@ -74,7 +74,7 @@ index a1aec823d6266d69ff02aa8523d2da999a0871b9..559f2ea12e53dd19f24e7953db438845
<richlistitem id="category-home"
class="category"
value="paneHome"
@@ -242,11 +293,6 @@
@@ -248,11 +299,6 @@
<html:a href="about:policies" target="_blank" data-l10n-id="managed-notice"/>
</hbox>
</hbox>
@@ -86,7 +86,7 @@ index a1aec823d6266d69ff02aa8523d2da999a0871b9..559f2ea12e53dd19f24e7953db438845
</hbox>
</hbox>
<vbox id="mainPrefPane">
@@ -260,6 +306,10 @@
@@ -265,6 +311,10 @@
#include sync.inc.xhtml
#include experimental.inc.xhtml
#include moreFromMozilla.inc.xhtml

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/preferences/sync.inc.xhtml b/browser/components/preferences/sync.inc.xhtml
index 4ecdbdb129577165ed0df619577327f7610e138f..761a4d4f26a21ba555b7af180e8a6030615db500 100644
index 86053cbf35ef1b004185ee54e9d7b9f2e2b8d550..a8fe2db034ffe99e01fd0f92d629151df7f708a8 100644
--- a/browser/components/preferences/sync.inc.xhtml
+++ b/browser/components/preferences/sync.inc.xhtml
@@ -223,6 +223,10 @@

View File

@@ -736,6 +736,7 @@ var gZenWorkspacesSettings = {
Services.prefs.addObserver("zen.glance.enabled", tabsUnloaderPrefListener); // We can use the same listener for both prefs
Services.prefs.addObserver("zen.workspaces.separate-essentials", tabsUnloaderPrefListener);
Services.prefs.addObserver("zen.glance.activation-method", tabsUnloaderPrefListener);
Services.prefs.addObserver("zen.window-sync.sync-only-pinned-tabs", tabsUnloaderPrefListener);
Services.prefs.addObserver(
"zen.tabs.ctrl-tab.ignore-essential-tabs",
toggleZenCycleByAttrWarning
@@ -745,6 +746,10 @@ var gZenWorkspacesSettings = {
Services.prefs.removeObserver("zen.glance.enabled", tabsUnloaderPrefListener);
Services.prefs.removeObserver("zen.glance.activation-method", tabsUnloaderPrefListener);
Services.prefs.removeObserver("zen.workspaces.separate-essentials", tabsUnloaderPrefListener);
Services.prefs.removeObserver(
"zen.window-sync.sync-only-pinned-tabs",
tabsUnloaderPrefListener
);
Services.prefs.removeObserver(
"zen.tabs.ctrl-tab.ignore-essential-tabs",
toggleZenCycleByAttrWarning
@@ -813,6 +818,13 @@ const zenMissingKeyboardShortcutL10n = {
key_accessibility: "zen-devtools-toggle-accessibility-shortcut",
};
var zenIgnoreKeyboardShortcutIDs = [
"key_enterFullScreen_old",
"key_enterFullScreen_compat",
"key_exitFullScreen_old",
"key_exitFullScreen_compat",
];
var zenIgnoreKeyboardShortcutL10n = [
"zen-full-zoom-reduce-shortcut-alt-b",
"zen-full-zoom-reduce-shortcut-alt-a",
@@ -883,7 +895,11 @@ var gZenCKSSettings = {
const labelValue = zenMissingKeyboardShortcutL10n[keyID] ?? l10nID;
if (zenIgnoreKeyboardShortcutL10n.includes(labelValue) || shortcut.shouldBeEmpty) {
if (
zenIgnoreKeyboardShortcutIDs.includes(keyID) ||
zenIgnoreKeyboardShortcutL10n.includes(labelValue) ||
shortcut.shouldBeEmpty
) {
continue;
}
@@ -1193,6 +1209,16 @@ Preferences.addAll([
type: "bool",
default: false,
},
{
id: "zen.tabs.select-recently-used-on-close",
type: "bool",
default: true,
},
{
id: "zen.window-sync.sync-only-pinned-tabs",
type: "bool",
default: false,
},
]);
Preferences.addSetting({

View File

@@ -20,6 +20,9 @@
<label><html:h2 data-l10n-id="zen-settings-workspaces-header"/></label>
<description class="description-deemphasized" data-l10n-id="zen-settings-workspaces-description" />
<checkbox id="zenWorkspacesSyncUnpinnedTabs"
data-l10n-id="zen-settings-workspaces-sync-unpinned-tabs"
preference="zen.window-sync.sync-only-pinned-tabs"/>
<checkbox id="zenWorkspacesHideDefaultContainer"
data-l10n-id="zen-settings-workspaces-hide-default-container-indicator"
preference="zen.workspaces.hide-default-container-indicator"/>
@@ -37,15 +40,10 @@
class="description-deemphasized"
data-l10n-id="zen-tabs-cycle-by-attribute-warning"
hidden="true"/>
<checkbox data-l10n-id="zen-tabs-select-recently-used-on-close"
preference="zen.tabs.select-recently-used-on-close"/>
</groupbox>
<hbox id="zenTabsUnloadCategory"
class="subcategory"
hidden="true"
data-category="paneZenTabManagement">
<html:h1 data-l10n-id="pane-zen-tabs-unloader-title"/>
</hbox>
<hbox id="zenPinnedTabsManagerCategory"
class="subcategory"
hidden="true"

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/screenshots/overlay/overlay.css b/browser/components/screenshots/overlay/overlay.css
index 43a5d2109ad107ce1c79eef7cb8635bc1fa813f7..c1e5648d0e71826119bda1bc18c5d16886bab8fd 100644
index 94d87522bfaaf59b9138ec5ca960be0a0ea31339..ab3fa41cefdfc1d93edeb8a2d626bd9b1e07344b 100644
--- a/browser/components/screenshots/overlay/overlay.css
+++ b/browser/components/screenshots/overlay/overlay.css
@@ -196,6 +196,9 @@
@@ -200,6 +200,9 @@
pointer-events: none;
position: absolute;
z-index: var(--screenshots-high-layer);
@@ -12,11 +12,11 @@ index 43a5d2109ad107ce1c79eef7cb8635bc1fa813f7..c1e5648d0e71826119bda1bc18c5d168
}
#top-background {
@@ -214,7 +217,7 @@
@@ -218,7 +221,7 @@
}
.bghighlight {
- background-color: rgba(0, 0, 0, 0.7);
- background-color: var(--background-color-overlay);
+ background-color: rgba(0, 0, 0, 0.5);
position: absolute;
overflow: clip;

View File

@@ -1,13 +1,12 @@
diff --git a/browser/components/search/SearchUIUtils.sys.mjs b/browser/components/search/SearchUIUtils.sys.mjs
index 65daa1402a52e252360386e60471f726c1387bb3..be8f588316a8a4d7f33a324bf11f9e1f19def32d 100644
index 22680c91da251adc21bb46debc73b3dbf6cdf08c..80d465e698c9900a6495d3f17ca2e66a25ff4021 100644
--- a/browser/components/search/SearchUIUtils.sys.mjs
+++ b/browser/components/search/SearchUIUtils.sys.mjs
@@ -444,7 +444,7 @@ export var SearchUIUtils = {
triggeringSearchEngine: engine.name,
@@ -445,6 +445,7 @@ export var SearchUIUtils = {
},
});
-
+ window.gZenGlanceManager?.onSearchSelectCommand(where);
return { engine, url: submission.uri };
},
+ window.gZenGlanceManager?.onSearchSelectCommand(where);
lazy.BrowserSearchTelemetry.recordSearch(
window.gBrowser.selectedBrowser,
engine,

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/sessionstore/SessionStartup.sys.mjs b/browser/components/sessionstore/SessionStartup.sys.mjs
index 86600ffb5178599ab23270a964064ca657a3283f..e7014e5bce547d37ec92377a95bad5be4d52152e 100644
index 86600ffb5178599ab23270a964064ca657a3283f..70d7b5c7d69d3700475d663b595052264c67d351 100644
--- a/browser/components/sessionstore/SessionStartup.sys.mjs
+++ b/browser/components/sessionstore/SessionStartup.sys.mjs
@@ -40,6 +40,7 @@ ChromeUtils.defineESModuleGetters(lazy, {
@@ -28,7 +28,16 @@ index 86600ffb5178599ab23270a964064ca657a3283f..e7014e5bce547d37ec92377a95bad5be
if (this._initialState == null) {
// No valid session found.
this._sessionType = this.NO_SESSION;
@@ -336,12 +339,7 @@ export var SessionStartup = {
@@ -276,6 +279,8 @@ export var SessionStartup = {
`Previous shutdown ok? ${this._previousSessionCrashed}, reason: ${previousSessionCrashedReason}`
);
+ lazy.ZenSessionStore.onCrashCheckpoints(this._initialState);
+
Services.obs.addObserver(this, "sessionstore-windows-restored", true);
if (this.sessionType == this.NO_SESSION) {
@@ -336,12 +341,7 @@ export var SessionStartup = {
isAutomaticRestoreEnabled() {
if (this._resumeSessionEnabled === null) {
this._resumeSessionEnabled =
@@ -42,3 +51,13 @@ index 86600ffb5178599ab23270a964064ca657a3283f..e7014e5bce547d37ec92377a95bad5be
}
return this._resumeSessionEnabled;
@@ -354,8 +354,7 @@ export var SessionStartup = {
*/
willRestore() {
return (
- this.sessionType == this.RECOVER_SESSION ||
- this.sessionType == this.RESUME_SESSION
+ true
);
},

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/sessionstore/SessionStore.sys.mjs b/browser/components/sessionstore/SessionStore.sys.mjs
index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96faedf6f0b 100644
index f066bc7a9cca1788080d088141030c225a733931..accb078ebbc23f9a823ae6c277f1e1bf06644d92 100644
--- a/browser/components/sessionstore/SessionStore.sys.mjs
+++ b/browser/components/sessionstore/SessionStore.sys.mjs
@@ -127,6 +127,9 @@ const TAB_EVENTS = [
@@ -12,7 +12,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
];
const XUL_NS = "http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul";
@@ -196,6 +199,8 @@ ChromeUtils.defineESModuleGetters(lazy, {
@@ -198,6 +201,8 @@ ChromeUtils.defineESModuleGetters(lazy, {
TabStateCache: "resource:///modules/sessionstore/TabStateCache.sys.mjs",
TabStateFlusher: "resource:///modules/sessionstore/TabStateFlusher.sys.mjs",
setTimeout: "resource://gre/modules/Timer.sys.mjs",
@@ -21,7 +21,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
});
ChromeUtils.defineLazyGetter(lazy, "blankURI", () => {
@@ -1261,10 +1266,7 @@ var SessionStoreInternal = {
@@ -1263,10 +1268,7 @@ var SessionStoreInternal = {
*/
get willAutoRestore() {
return (
@@ -33,7 +33,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
);
},
@@ -1934,6 +1936,9 @@ var SessionStoreInternal = {
@@ -1940,6 +1942,9 @@ var SessionStoreInternal = {
case "TabPinned":
case "TabUnpinned":
case "SwapDocShells":
@@ -43,7 +43,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
this.saveStateDelayed(win);
break;
case "TabGroupCreate":
@@ -2044,6 +2049,10 @@ var SessionStoreInternal = {
@@ -2050,6 +2055,10 @@ var SessionStoreInternal = {
this._windows[aWindow.__SSi].isTaskbarTab = true;
}
@@ -51,10 +51,10 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
+ this._windows[aWindow.__SSi].isZenUnsynced = true;
+ }
+
let tabbrowser = aWindow.gBrowser;
// add tab change listeners to all already existing tabs
@@ -2076,7 +2085,7 @@ var SessionStoreInternal = {
if (lazy.AIWindow.isAIWindowActiveAndEnabled(aWindow)) {
this._windows[aWindow.__SSi].isAIWindow = true;
}
@@ -2086,7 +2095,7 @@ var SessionStoreInternal = {
let isTaskbarTab = this._windows[aWindow.__SSi].isTaskbarTab;
// A regular window is not a private window, taskbar tab window, or popup window
let isRegularWindow =
@@ -63,7 +63,16 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
// perform additional initialization when the first window is loading
if (lazy.RunState.isStopped) {
@@ -2131,6 +2140,7 @@ var SessionStoreInternal = {
@@ -2098,7 +2107,7 @@ var SessionStoreInternal = {
// to disk to NOW() to enforce a full interval before the next write.
lazy.SessionSaver.updateLastSaveTime();
- if (isPrivateWindow || isTaskbarTab) {
+ if (isPrivateWindow || isTaskbarTab || aWindow.document.documentElement.hasAttribute("zen-unsynced-window")) {
this._log.debug(
"initializeWindow, the window is private or a web app. Saving SessionStartup.state for possibly restoring later"
);
@@ -2141,6 +2150,7 @@ var SessionStoreInternal = {
null,
"sessionstore-one-or-no-tab-restored"
);
@@ -71,7 +80,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
this._deferredAllWindowsRestored.resolve();
}
// this window was opened by _openWindowWithState
@@ -2175,7 +2185,6 @@ var SessionStoreInternal = {
@@ -2190,7 +2200,6 @@ var SessionStoreInternal = {
if (closedWindowState) {
let newWindowState;
if (
@@ -79,7 +88,15 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
!lazy.SessionStartup.willRestore()
) {
// We want to split the window up into pinned tabs and unpinned tabs.
@@ -2239,6 +2248,15 @@ var SessionStoreInternal = {
@@ -2226,6 +2235,7 @@ var SessionStoreInternal = {
}
if (newWindowState) {
+ lazy.ZenSessionStore.onRestoringClosedWindow(newWindowState);
// Ensure that the window state isn't hidden
this._restoreCount = 1;
let state = { windows: [newWindowState] };
@@ -2254,6 +2264,15 @@ var SessionStoreInternal = {
});
this._shouldRestoreLastSession = false;
}
@@ -95,7 +112,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
if (this._restoreLastWindow && aWindow.toolbar.visible) {
// always reset (if not a popup window)
@@ -2383,7 +2401,7 @@ var SessionStoreInternal = {
@@ -2404,7 +2423,7 @@ var SessionStoreInternal = {
var tabbrowser = aWindow.gBrowser;
@@ -104,7 +121,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
TAB_EVENTS.forEach(function (aEvent) {
tabbrowser.tabContainer.removeEventListener(aEvent, this, true);
@@ -2434,7 +2452,7 @@ var SessionStoreInternal = {
@@ -2455,7 +2474,7 @@ var SessionStoreInternal = {
let isLastRegularWindow =
Object.values(this._windows).filter(
@@ -113,7 +130,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
).length == 1;
this._log.debug(
`onClose, closing window isLastRegularWindow? ${isLastRegularWindow}`
@@ -2491,8 +2509,8 @@ var SessionStoreInternal = {
@@ -2512,8 +2531,8 @@ var SessionStoreInternal = {
// 2) Flush the window.
// 3) When the flush is complete, revisit our decision to store the window
// in _closedWindows, and add/remove as necessary.
@@ -124,7 +141,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
}
completionPromise = lazy.TabStateFlusher.flushWindow(aWindow).then(() => {
@@ -2512,8 +2530,9 @@ var SessionStoreInternal = {
@@ -2533,8 +2552,9 @@ var SessionStoreInternal = {
// Save non-private windows if they have at
// least one saveable tab or are the last window.
@@ -136,7 +153,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
if (!isLastWindow && winData.closedId > -1) {
this._addClosedAction(
@@ -2589,7 +2608,7 @@ var SessionStoreInternal = {
@@ -2610,7 +2630,7 @@ var SessionStoreInternal = {
* to call this method again asynchronously (for example, after
* a window flush).
*/
@@ -145,7 +162,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
// Make sure SessionStore is still running, and make sure that we
// haven't chosen to forget this window.
if (
@@ -2606,6 +2625,7 @@ var SessionStoreInternal = {
@@ -2627,6 +2647,7 @@ var SessionStoreInternal = {
// _closedWindows from a previous call to this function.
let winIndex = this._closedWindows.indexOf(winData);
let alreadyStored = winIndex != -1;
@@ -153,7 +170,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
// If sidebar command is truthy, i.e. sidebar is open, store sidebar settings
let shouldStore = hasSaveableTabs || isLastWindow;
@@ -3408,7 +3428,7 @@ var SessionStoreInternal = {
@@ -3429,7 +3450,7 @@ var SessionStoreInternal = {
if (!isPrivateWindow && tabState.isPrivate) {
return;
}
@@ -162,7 +179,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
return;
}
@@ -4129,6 +4149,12 @@ var SessionStoreInternal = {
@@ -4150,6 +4171,12 @@ var SessionStoreInternal = {
Math.min(tabState.index, tabState.entries.length)
);
tabState.pinned = false;
@@ -175,7 +192,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
if (inBackground === false) {
aWindow.gBrowser.selectedTab = newTab;
@@ -4565,6 +4591,8 @@ var SessionStoreInternal = {
@@ -4586,6 +4613,8 @@ var SessionStoreInternal = {
// Append the tab if we're opening into a different window,
tabIndex: aSource == aTargetWindow ? pos : Infinity,
pinned: state.pinned,
@@ -184,7 +201,19 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
userContextId: state.userContextId,
skipLoad: true,
preferredRemoteType,
@@ -5414,7 +5442,7 @@ var SessionStoreInternal = {
@@ -5087,9 +5116,10 @@ var SessionStoreInternal = {
if (activePageData.title && activePageData.title != activePageData.url) {
win.gBrowser.setInitialTabTitle(tab, activePageData.title, {
isContentTitle: true,
+ _zenChangeLabelFlag: true,
});
} else {
- win.gBrowser.setInitialTabTitle(tab, activePageData.url);
+ win.gBrowser.setInitialTabTitle(tab, activePageData.url, { _zenChangeLabelFlag: true });
}
}
@@ -5446,7 +5476,7 @@ var SessionStoreInternal = {
for (let i = tabbrowser.pinnedTabCount; i < tabbrowser.tabs.length; i++) {
let tab = tabbrowser.tabs[i];
@@ -193,7 +222,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
removableTabs.push(tab);
}
}
@@ -5525,7 +5553,7 @@ var SessionStoreInternal = {
@@ -5559,7 +5589,7 @@ var SessionStoreInternal = {
// collect the data for all windows
for (ix in this._windows) {
@@ -202,7 +231,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
// window data is still in _statesToRestore
continue;
}
@@ -5668,11 +5696,12 @@ var SessionStoreInternal = {
@@ -5702,11 +5732,12 @@ var SessionStoreInternal = {
}
let tabbrowser = aWindow.gBrowser;
@@ -216,7 +245,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
// update the internal state data for this window
for (let tab of tabs) {
if (tab == aWindow.FirefoxViewHandler.tab) {
@@ -5683,6 +5712,9 @@ var SessionStoreInternal = {
@@ -5717,6 +5748,9 @@ var SessionStoreInternal = {
tabsData.push(tabData);
}
@@ -226,7 +255,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
// update tab group state for this window
winData.groups = [];
for (let tabGroup of aWindow.gBrowser.tabGroups) {
@@ -5695,7 +5727,7 @@ var SessionStoreInternal = {
@@ -5729,7 +5763,7 @@ var SessionStoreInternal = {
// 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) {
@@ -235,7 +264,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
winData.title = tabbrowser.tabs[0].label;
}
winData.selected = selectedIndex;
@@ -5810,8 +5842,8 @@ var SessionStoreInternal = {
@@ -5844,8 +5878,8 @@ var SessionStoreInternal = {
// selectTab represents.
let selectTab = 0;
if (overwriteTabs) {
@@ -246,7 +275,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
selectTab = Math.min(selectTab, winData.tabs.length);
}
@@ -5833,6 +5865,7 @@ var SessionStoreInternal = {
@@ -5867,6 +5901,7 @@ var SessionStoreInternal = {
if (overwriteTabs) {
for (let i = tabbrowser.browsers.length - 1; i >= 0; i--) {
if (!tabbrowser.tabs[i].selected) {
@@ -254,7 +283,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
tabbrowser.removeTab(tabbrowser.tabs[i]);
}
}
@@ -5866,6 +5899,12 @@ var SessionStoreInternal = {
@@ -5900,6 +5935,12 @@ var SessionStoreInternal = {
savedTabGroup => !openTabGroupIdsInWindow.has(savedTabGroup.id)
);
}
@@ -267,7 +296,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
// Move the originally open tabs to the end.
if (initialTabs) {
@@ -6419,6 +6458,25 @@ var SessionStoreInternal = {
@@ -6453,6 +6494,25 @@ var SessionStoreInternal = {
// Most of tabData has been restored, now continue with restoring
// attributes that may trigger external events.
@@ -293,7 +322,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
if (tabData.pinned) {
tabbrowser.pinTab(tab);
@@ -6567,6 +6625,9 @@ var SessionStoreInternal = {
@@ -6601,6 +6661,9 @@ var SessionStoreInternal = {
aWindow.gURLBar.readOnly = false;
}
}
@@ -303,7 +332,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
let promiseParts = Promise.withResolvers();
aWindow.setTimeout(() => {
@@ -7343,7 +7404,7 @@ var SessionStoreInternal = {
@@ -7389,7 +7452,7 @@ var SessionStoreInternal = {
let groupsToSave = new Map();
for (let tIndex = 0; tIndex < window.tabs.length; ) {
@@ -312,7 +341,7 @@ index 2a055f0c5f34f0a2667f659185120c07d38f4e41..2f63071f78782dbc30bde25b3bcaa96f
// Adjust window.selected
if (tIndex + 1 < window.selected) {
window.selected -= 1;
@@ -7358,7 +7419,7 @@ var SessionStoreInternal = {
@@ -7404,7 +7467,7 @@ var SessionStoreInternal = {
);
// We don't want to increment tIndex here.
continue;

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/sessionstore/TabState.sys.mjs b/browser/components/sessionstore/TabState.sys.mjs
index 82721356d191055bec0d4b0ca49e481221988801..68437e6f9fa54fc75ca9e24d738e8afcd0ea22f8 100644
index 82721356d191055bec0d4b0ca49e481221988801..e01904a6ea73e068c236adecbac6a97adedb2bd3 100644
--- a/browser/components/sessionstore/TabState.sys.mjs
+++ b/browser/components/sessionstore/TabState.sys.mjs
@@ -85,7 +85,24 @@ class _TabState {
@@ -85,7 +85,25 @@ class _TabState {
tabData.groupId = tab.group.id;
}
@@ -19,6 +19,7 @@ index 82721356d191055bec0d4b0ca49e481221988801..68437e6f9fa54fc75ca9e24d738e8afc
+ tabData.zenIsGlance = tab.hasAttribute("zen-glance-tab");
+ tabData._zenPinnedInitialState = tab._zenPinnedInitialState;
+ tabData._zenIsActiveTab = tab._zenContentsVisible;
+ tabData.zenLiveFolderItemId = tab.getAttribute("zen-live-folder-item-id");
+
tabData.searchMode = tab.ownerGlobal.gURLBar.getSearchMode(browser, true);
+ if (tabData.searchMode?.source === tab.ownerGlobal.UrlbarUtils.RESULT_SOURCE.ZEN_ACTIONS) {

View File

@@ -1,8 +1,8 @@
diff --git a/browser/components/sidebar/browser-sidebar.js b/browser/components/sidebar/browser-sidebar.js
index bd6db85732e6e99ca51ce9c4c1a7d469199cf8cb..6c7859c1014baf4e343714ef797cf558d065e189 100644
index 86a74b2abfe9b49d71ce61fefc636b865bef83a9..7c18fcf15d127d79febb03ca15f0193dd6263604 100644
--- a/browser/components/sidebar/browser-sidebar.js
+++ b/browser/components/sidebar/browser-sidebar.js
@@ -793,7 +793,7 @@ var SidebarController = {
@@ -799,7 +799,7 @@ var SidebarController = {
setPosition() {
// First reset all ordinals to match DOM ordering.
let contentArea = document.getElementById("tabbrowser-tabbox");

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/tabbrowser/TabUnloader.sys.mjs b/browser/components/tabbrowser/TabUnloader.sys.mjs
index aefccef39f0b81176a5710a794e8a5e2650d6507..e073c65790df6d55e827a4f4596199f4f1a99a57 100644
index aefccef39f0b81176a5710a794e8a5e2650d6507..53c838b3bc322cadee4ef9b411d02fc0af8c35e5 100644
--- a/browser/components/tabbrowser/TabUnloader.sys.mjs
+++ b/browser/components/tabbrowser/TabUnloader.sys.mjs
@@ -52,7 +52,7 @@ let CRITERIA_WEIGHT = 1;
@@ -11,3 +11,12 @@ index aefccef39f0b81176a5710a794e8a5e2650d6507..e073c65790df6d55e827a4f4596199f4
return weight;
}
@@ -106,7 +106,7 @@ let DefaultTabUnloaderMethods = {
*iterateTabs() {
for (let win of Services.wm.getEnumerator("navigator:browser")) {
- for (let tab of win.gBrowser.tabs) {
+ for (let tab of win.gZenWorkspaces.allStoredTabs) {
yield { tab, gBrowser: win.gBrowser };
}
}

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