mirror of
https://github.com/zen-browser/desktop.git
synced 2025-10-02 07:58:40 +00:00
Compare commits
21 Commits
window-syn
...
feat/permi
Author | SHA1 | Date | |
---|---|---|---|
![]() |
ebcd77d9ce | ||
![]() |
8d00b54e03 | ||
![]() |
a1a2ae0a67 | ||
![]() |
fc68cc5ab3 | ||
![]() |
1ebe5286f9 | ||
![]() |
2abba4d266 | ||
![]() |
32944f1548 | ||
![]() |
a7f853e0f0 | ||
![]() |
e59c73ae53 | ||
![]() |
d9bc654fc7 | ||
![]() |
bc5e4eb48f | ||
![]() |
028b7d35db | ||
![]() |
a091751e09 | ||
![]() |
cc8dfc693b | ||
![]() |
9a1c466368 | ||
![]() |
88f26d8829 | ||
![]() |
b0d0a79fc5 | ||
![]() |
3146ec1c3b | ||
![]() |
19fbed782d | ||
![]() |
b1d6e0eb21 | ||
![]() |
47181da49e |
8
.github/workflows/build.yml
vendored
8
.github/workflows/build.yml
vendored
@@ -266,9 +266,11 @@ jobs:
|
||||
|
||||
- name: Compress
|
||||
run: |
|
||||
cd engine
|
||||
tar --use-compress-program=zstd -hcf ../zen.source.tar.zst *
|
||||
cd ..
|
||||
tar \
|
||||
--exclude='./.git' \
|
||||
--use-compress-program=zstd \
|
||||
-hcf zen.source.tar.zst \
|
||||
-C engine .
|
||||
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
|
280
docs/issue-metrics/2025_2025-09-01..2025-09-30.md
Normal file
280
docs/issue-metrics/2025_2025-09-01..2025-09-30.md
Normal file
@@ -0,0 +1,280 @@
|
||||
# Issue Metrics
|
||||
|
||||
| Metric | Average | Median | 90th percentile |
|
||||
| --- | --- | --- | ---: |
|
||||
| Time to first response | 17:16:35 | 3:11:05 | 1 day, 7:58:23 |
|
||||
| Time to close | 1 day, 8:59:53 | 8:32:05 | 3 days, 14:43:34 |
|
||||
|
||||
| Metric | Count |
|
||||
| --- | ---: |
|
||||
| Number of items that remain open | 123 |
|
||||
| Number of items closed | 139 |
|
||||
| Total number of items created | 262 |
|
||||
|
||||
| Title | URL | Time to first response | Time to close |
|
||||
| --- | --- | --- | --- |
|
||||
| Auto PIP not working upon tab switch | https://github.com/zen-browser/desktop/issues/10645 | None | None |
|
||||
| URL bar Opening on the left side of the browser when clicked on new tab | https://github.com/zen-browser/desktop/issues/10642 | None | None |
|
||||
| Browser opens on wrong monitor on macOS | https://github.com/zen-browser/desktop/issues/10639 | None | None |
|
||||
| All tabs are lost after each update | https://github.com/zen-browser/desktop/issues/10638 | 2:25:57 | None |
|
||||
| Sidebar expands independently | https://github.com/zen-browser/desktop/issues/10637 | 2:21:31 | None |
|
||||
| Onboarding broken (tiny window) on flatpak version | https://github.com/zen-browser/desktop/issues/10635 | None | None |
|
||||
| Bitwarden extension not synching (self hosted) | https://github.com/zen-browser/desktop/issues/10634 | None | None |
|
||||
| Zen completely freezes when clicking on "New Tab" | https://github.com/zen-browser/desktop/issues/10632 | None | None |
|
||||
| Zen Browser URL Bar: Search Engine Highlight Rectangle Looks Broken in Input Mode | https://github.com/zen-browser/desktop/issues/10630 | 9:01:57 | 9:01:57 |
|
||||
| Url bar doesn't fully appear | https://github.com/zen-browser/desktop/issues/10629 | 1:51:21 | 9:11:03 |
|
||||
| 1Password Autofill/Universal Autofill feature fails silently | https://github.com/zen-browser/desktop/issues/10627 | None | None |
|
||||
| Moxfield Bug | https://github.com/zen-browser/desktop/issues/10626 | 16:58:48 | 16:58:48 |
|
||||
| Tabs are not restored on Startup | https://github.com/zen-browser/desktop/issues/10625 | 0:03:14 | None |
|
||||
| Zen uses `$HOME/.mozilla/native-messaging-hosts/` instead of `$HOME/.zen/native-messaging-hosts/` | https://github.com/zen-browser/desktop/issues/10622 | None | None |
|
||||
| No video with supported format and MIME type found | https://github.com/zen-browser/desktop/issues/10620 | 4:38:39 | 4:38:39 |
|
||||
| Youtube window size | https://github.com/zen-browser/desktop/issues/10619 | None | None |
|
||||
| Webpage UI elements glitching and not fully rendering | https://github.com/zen-browser/desktop/issues/10615 | None | None |
|
||||
| bookmarks toolbar failed to collapse automatically in single toolbar mode + compact mode | https://github.com/zen-browser/desktop/issues/10612 | None | 8:56:43 |
|
||||
| Closing "New Tab" in the "List all tabs" toolbar widget causes zen to not exit cleanly | https://github.com/zen-browser/desktop/issues/10610 | 1:45:50 | 12:56:07 |
|
||||
| Opening link in new tab switches focus to new tab instead of staying on current tab | https://github.com/zen-browser/desktop/issues/10609 | 2:14:04 | 13:39:31 |
|
||||
| Webpage flickering/glitching during normal browsing | https://github.com/zen-browser/desktop/issues/10605 | None | None |
|
||||
| Essentials Get jumbled when reopening the browser | https://github.com/zen-browser/desktop/issues/10602 | 0:19:34 | 0:45:36 |
|
||||
| Entering ecom in URL bar shows compact mode as first suggestion. | https://github.com/zen-browser/desktop/issues/10601 | 6:27:16 | 6:27:16 |
|
||||
| Loads of empty windows opening on startup and mysterious tray icon | https://github.com/zen-browser/desktop/issues/10598 | None | None |
|
||||
| URLbar becomes invisible after bookmarking a tab. | https://github.com/zen-browser/desktop/issues/10597 | None | None |
|
||||
| Workspace icons too small with narrow sidebar | https://github.com/zen-browser/desktop/issues/10596 | None | 8:06:55 |
|
||||
| Top toolbar has no background in compact mode after changing space until the URL bar is hovered | https://github.com/zen-browser/desktop/issues/10595 | None | 1:45:30 |
|
||||
| Video controls going under the screen when in fullscreen using Zen in fullscreen mode | https://github.com/zen-browser/desktop/issues/10594 | None | None |
|
||||
| Multiple instances of Zen for each tab | https://github.com/zen-browser/desktop/issues/10593 | 4:55:51 | 4:55:51 |
|
||||
| Tabs Disappear | https://github.com/zen-browser/desktop/issues/10592 | None | 6:02:25 |
|
||||
| Cannot upgrade from `1.15.5b` to `1.16.1b` | https://github.com/zen-browser/desktop/issues/10590 | None | None |
|
||||
| New windows come up with ~200 copies of the same link in the pinned tab of some workspaces | https://github.com/zen-browser/desktop/issues/10589 | None | 15:51:30 |
|
||||
| on_TabGroupsCollapse is hiding currently open tabs | https://github.com/zen-browser/desktop/issues/10587 | 18:18:04 | 18:18:04 |
|
||||
| websites don't properly go fullscreen in split view on Wayland and windows | https://github.com/zen-browser/desktop/issues/10586 | None | 21:23:38 |
|
||||
| Active tabs and URLs not prioritized in URL bar over extensions | https://github.com/zen-browser/desktop/issues/10582 | 8:32:05 | 8:32:05 |
|
||||
| Always floating URL bar does not float on new tab with replace-newtab disabled | https://github.com/zen-browser/desktop/issues/10581 | None | None |
|
||||
| URL bar not respecting browser.urlbar.maxRichResults setting | https://github.com/zen-browser/desktop/issues/10580 | 0:11:00 | None |
|
||||
| "Zoom" Icon is missing in the Application Menu | https://github.com/zen-browser/desktop/issues/10578 | 1 day, 2:23:42 | None |
|
||||
| Search/New Tab Popup Misplaced in Compact Mode (Hidden Vertical Tab Bar) | https://github.com/zen-browser/desktop/issues/10576 | 0:50:41 | 1:38:50 |
|
||||
| Essentials Tab | https://github.com/zen-browser/desktop/issues/10575 | 2:40:40 | 5:34:25 |
|
||||
| Udemy - problem with movies | https://github.com/zen-browser/desktop/issues/10571 | 1:11:04 | 1:11:04 |
|
||||
| Fully lost all data | https://github.com/zen-browser/desktop/issues/10568 | 9:29:58 | 10:31:54 |
|
||||
| Flatpak fails to launch on Fedora 42 (clone() failure EPERM) | https://github.com/zen-browser/desktop/issues/10567 | 1:22:23 | 3:40:35 |
|
||||
| The top bar in compact mode is not controlled by the theme, it appears white | https://github.com/zen-browser/desktop/issues/10566 | 1:47:24 | 1:47:24 |
|
||||
| Pinned extension render bug: pinned extensions are floating on the web page | https://github.com/zen-browser/desktop/issues/10565 | None | None |
|
||||
| Home link not appearing | https://github.com/zen-browser/desktop/issues/10563 | 0:42:18 | 2:59:02 |
|
||||
| Connection to "incoming.telemetry.mozilla.org" on startup. | https://github.com/zen-browser/desktop/issues/10560 | 3:29:10 | 21:14:29 |
|
||||
| Command bar actions not work if they are not translated to selected language | https://github.com/zen-browser/desktop/issues/10559 | None | 4:06:26 |
|
||||
| the address bar does not respect the color theme when compact mode is enabled | https://github.com/zen-browser/desktop/issues/10557 | 0:14:27 | 0:14:27 |
|
||||
| Browser crashing on media playback as of 1.16.1b on Nvidia Wayland (VA-API) | https://github.com/zen-browser/desktop/issues/10555 | 0:14:09 | None |
|
||||
| Split View preview effect still remains after using the Escape key | https://github.com/zen-browser/desktop/issues/10554 | 3:49:15 | 1 day, 0:27:29 |
|
||||
| Spotify is not working | https://github.com/zen-browser/desktop/issues/10553 | 1:42:55 | 1:42:55 |
|
||||
| Command bar features doesn't work with other langage than english | https://github.com/zen-browser/desktop/issues/10551 | None | 0:01:48 |
|
||||
| Nested CSS transform breaks backdrop blur | https://github.com/zen-browser/desktop/issues/10550 | 0:55:22 | 1:22:05 |
|
||||
| (MINOR) URL bar: custom search engine name has uneven background fill than its icon | https://github.com/zen-browser/desktop/issues/10546 | None | None |
|
||||
| Special unicode characters (Chinese, Korean, Japanese, etc.) are not showing | https://github.com/zen-browser/desktop/issues/10545 | 3:45:25 | None |
|
||||
| Computer hard freezes when zen is open with performance intensive tasks going in the background | https://github.com/zen-browser/desktop/issues/10544 | None | None |
|
||||
| 软件开启使用一会后,右上角关闭按钮失效 | https://github.com/zen-browser/desktop/issues/10543 | 5:28:33 | 5:28:33 |
|
||||
| Bookmark menu shows up in wrong place, and its entries' context menu has weird layout problem | https://github.com/zen-browser/desktop/issues/10542 | None | None |
|
||||
| Find bar changes into plain white bar when "X" is clicked | https://github.com/zen-browser/desktop/issues/10541 | 8:22:04 | 10:27:21 |
|
||||
| browser.tabs.closeWindowWithLastTab doesn't work anymore on v1.16.1b | https://github.com/zen-browser/desktop/issues/10540 | 10:59:55 | None |
|
||||
| Some UI Elements are Missing On Some Sites | https://github.com/zen-browser/desktop/issues/10538 | 2:19:13 | 3 days, 22:36:11 |
|
||||
| Browser Freeze on Passkey Call&CallBack Failure | https://github.com/zen-browser/desktop/issues/10533 | None | None |
|
||||
| Wrong sidebar color in compact mode | https://github.com/zen-browser/desktop/issues/10532 | 0:48:09 | 1 day, 17:09:58 |
|
||||
| Playing Audio icon inconsistent on tabs not focused on linux | https://github.com/zen-browser/desktop/issues/10531 | None | 21:06:12 |
|
||||
| Missing "Edit Theme" button in the right click menu | https://github.com/zen-browser/desktop/issues/10530 | 0:56:54 | 1 day, 17:21:25 |
|
||||
| Stars are shown all over all websites | https://github.com/zen-browser/desktop/issues/10529 | 18:59:14 | None |
|
||||
| v1.16b not available on flathub | https://github.com/zen-browser/desktop/issues/10528 | 3:10:02 | 5:21:21 |
|
||||
| Firefox-Zen browser name inconsistency in error page | https://github.com/zen-browser/desktop/issues/10527 | None | None |
|
||||
| Highlight mini window doesn't close automatically | https://github.com/zen-browser/desktop/issues/10526 | None | None |
|
||||
| Zen Browser maximized window overlaps with Windows taskbar area | https://github.com/zen-browser/desktop/issues/10525 | None | 0:37:13 |
|
||||
| Spotify Skipping 7 Songs | https://github.com/zen-browser/desktop/issues/10524 | 2:57:34 | 2:57:34 |
|
||||
| McAfee notifactions from Zen Browser | https://github.com/zen-browser/desktop/issues/10522 | None | 0:24:17 |
|
||||
| Zen Browser crashes occasionally when I download a file | https://github.com/zen-browser/desktop/issues/10520 | 13:03:32 | None |
|
||||
| (SERIOUS BUG DONT IGNORE) Split tab bug report | https://github.com/zen-browser/desktop/issues/10519 | None | 0:01:36 |
|
||||
| tab spliting issue | https://github.com/zen-browser/desktop/issues/10517 | None | 0:51:11 |
|
||||
| Rounded window borders cause choppy scrolling. | https://github.com/zen-browser/desktop/issues/10516 | None | None |
|
||||
| Closing the last tab cannot automatically create a new tab | https://github.com/zen-browser/desktop/issues/10515 | 14:08:09 | 14:08:09 |
|
||||
| Pinned tabs always load from cache. | https://github.com/zen-browser/desktop/issues/10514 | 1:49:05 | None |
|
||||
| Command Bar works only in english language | https://github.com/zen-browser/desktop/issues/10509 | 0:10:10 | 0:10:10 |
|
||||
| Pop up windows don't close properly | https://github.com/zen-browser/desktop/issues/10506 | None | None |
|
||||
| When accessing Alibaba Cloud DataWorks using the Zen browser, it will report Path Not Found: /page/errorbrowser, or Not Online? | https://github.com/zen-browser/desktop/issues/10503 | 10:29:49 | 10:30:28 |
|
||||
| Floating url bar not appering where it is suposed to | https://github.com/zen-browser/desktop/issues/10502 | 3:09:03 | 11:51:16 |
|
||||
| Split tabs are not aligned with other tabs | https://github.com/zen-browser/desktop/issues/10501 | 0:15:04 | 2 days, 14:12:29 |
|
||||
| Microsoft Entra Platform SSO on MacOS | https://github.com/zen-browser/desktop/issues/10498 | 2 days, 12:29:33 | None |
|
||||
| Dragging a split panel to the sidebar opens search for panel id | https://github.com/zen-browser/desktop/issues/10495 | 0:42:53 | None |
|
||||
| After closing all tabs, cmd / ctrl + W does not close the window | https://github.com/zen-browser/desktop/issues/10493 | 1:22:58 | 1:22:58 |
|
||||
| Youtube lags when adblocker is installed. [Seemingly fixed] | https://github.com/zen-browser/desktop/issues/10492 | 4:34:01 | 4:34:01 |
|
||||
| URL Bar mispositioning | https://github.com/zen-browser/desktop/issues/10490 | 0:35:10 | 2:15:20 |
|
||||
| Fullscreen F11 | https://github.com/zen-browser/desktop/issues/10489 | 21:42:02 | 3 days, 20:34:06 |
|
||||
| Combined tabs are not shown properly in the navigation menu | https://github.com/zen-browser/desktop/issues/10488 | 0:41:09 | None |
|
||||
| Translucent color codes do not appear translucent in toolbar themes | https://github.com/zen-browser/desktop/issues/10487 | 6:19:55 | None |
|
||||
| Discord always requires me to log in after closing Zen | https://github.com/zen-browser/desktop/issues/10482 | 7 days, 13:26:09 | None |
|
||||
| 1.16b crashes a lot on Windows 11 | https://github.com/zen-browser/desktop/issues/10481 | 0:19:54 | None |
|
||||
| There is bug on perplexity.ai | https://github.com/zen-browser/desktop/issues/10480 | 2:16:15 | 1 day, 10:27:53 |
|
||||
| Theme bug when Zen not focused. | https://github.com/zen-browser/desktop/issues/10479 | 2:39:03 | None |
|
||||
| Hiding top bar in collapsed bar mode is white | https://github.com/zen-browser/desktop/issues/10478 | 12:23:32 | 7 days, 4:09:44 |
|
||||
| URL preview in split screen always appears on focused window | https://github.com/zen-browser/desktop/issues/10477 | 1:20:54 | None |
|
||||
| After the update, all loose tabs disappeared!!! | https://github.com/zen-browser/desktop/issues/10476 | None | None |
|
||||
| Compact Mode Url position | https://github.com/zen-browser/desktop/issues/10475 | 2:15:11 | 4:17:47 |
|
||||
| Zen captures all touchpad input and no other applications receive it, even if they're in the foreground (including desktop) | https://github.com/zen-browser/desktop/issues/10474 | None | None |
|
||||
| Toolbar 'Edit Theme' features broken | https://github.com/zen-browser/desktop/issues/10473 | None | 12:09:50 |
|
||||
| Camera / Microphone Permissions | https://github.com/zen-browser/desktop/issues/10471 | 0:09:35 | None |
|
||||
| Cannot drag sidebar tabs | https://github.com/zen-browser/desktop/issues/10466 | 7 days, 19:48:26 | None |
|
||||
| tool bar not responsive | https://github.com/zen-browser/desktop/issues/10465 | None | None |
|
||||
| Zen adaptive history doesn't work (auto-suggestions don't change ranks) | https://github.com/zen-browser/desktop/issues/10464 | 6:38:12 | None |
|
||||
| Udemy Videos not playing(some DRM issue) | https://github.com/zen-browser/desktop/issues/10462 | 0:26:28 | 0:26:28 |
|
||||
| Clicking a link to open to a new tab from a page in a folder opens outside of the folder instead of staying inside it | https://github.com/zen-browser/desktop/issues/10461 | 1:22:00 | 1:36:41 |
|
||||
| bookmark tool bar on full screen mode | https://github.com/zen-browser/desktop/issues/10460 | 7:11:57 | None |
|
||||
| Compact mode: hide tab not work | https://github.com/zen-browser/desktop/issues/10459 | 7:21:59 | 7:26:31 |
|
||||
| Error Building on mac, suggested fix as well | https://github.com/zen-browser/desktop/issues/10458 | None | None |
|
||||
| Clicking on a duplicated tab of an essential tab causes switching to the last workspace | https://github.com/zen-browser/desktop/issues/10457 | 2 days, 11:37:42 | None |
|
||||
| Very long opening times | https://github.com/zen-browser/desktop/issues/10456 | 1 day, 12:13:47 | None |
|
||||
| Browser window doesn't close when closing last tab | https://github.com/zen-browser/desktop/issues/10455 | None | 22:08:46 |
|
||||
| Passkeys not supported | https://github.com/zen-browser/desktop/issues/10454 | 2:29:55 | 2 days, 8:28:48 |
|
||||
| Focus Bitwader | https://github.com/zen-browser/desktop/issues/10447 | 1 day, 6:48:09 | 1 day, 6:48:09 |
|
||||
| Unable to change workspace name | https://github.com/zen-browser/desktop/issues/10446 | None | None |
|
||||
| Udemy video's don't play in Zen. | https://github.com/zen-browser/desktop/issues/10443 | 0:52:31 | 1 day, 21:47:45 |
|
||||
| SoundCloud audio stops when joining Discord voice in browser | https://github.com/zen-browser/desktop/issues/10441 | None | None |
|
||||
| Calling browser.search.search (from webextensions API) opens glance window instead of new tab. | https://github.com/zen-browser/desktop/issues/10439 | 1:36:27 | None |
|
||||
| Side bar expands when you remove pinned extension. | https://github.com/zen-browser/desktop/issues/10438 | 1 day, 2:34:08 | None |
|
||||
| Compact mode X Bookmarks on Zen startup / Closing all pages | https://github.com/zen-browser/desktop/issues/10436 | 0:10:16 | None |
|
||||
| Zen using more resources while using adblocking dns then ublock. | https://github.com/zen-browser/desktop/issues/10435 | 4:22:57 | 2 days, 3:07:53 |
|
||||
| WebRender crashes and switches to Software rendering | https://github.com/zen-browser/desktop/issues/10432 | 5:25:30 | None |
|
||||
| When there are 2 rows of essentials, essentials can only be moved up, not down | https://github.com/zen-browser/desktop/issues/10428 | 1:54:32 | 8 days, 4:33:00 |
|
||||
| moz-extension page doesnt load for distill web monitor | https://github.com/zen-browser/desktop/issues/10427 | None | None |
|
||||
| Sidebar incorrectly overlapping with address bar | https://github.com/zen-browser/desktop/issues/10426 | None | None |
|
||||
| Unexpected window pops when aborting bitwarden validation | https://github.com/zen-browser/desktop/issues/10419 | 0:47:28 | 1:04:53 |
|
||||
| Redundant `margin-left` on `#sidebar-box` when zen tabs are on the right | https://github.com/zen-browser/desktop/issues/10415 | None | 5:41:18 |
|
||||
| Toolbar cannot be automatically hidden in the compact mode | https://github.com/zen-browser/desktop/issues/10414 | 6:26:39 | None |
|
||||
| Closing and then reopening the last tab that's part of a split screen (3+ split screen tabs) breaks the split screen | https://github.com/zen-browser/desktop/issues/10413 | None | 14:22:44 |
|
||||
| Opening links from external apps creates a new window but doesn’t redirect to the target URL | https://github.com/zen-browser/desktop/issues/10409 | None | None |
|
||||
| No Youtube Live Chat | https://github.com/zen-browser/desktop/issues/10408 | 0:14:57 | None |
|
||||
| Pinned tab is not focused when closing child tab; focus snaps to last pin instead of owner | https://github.com/zen-browser/desktop/issues/10407 | 1:28:19 | 1:28:19 |
|
||||
| Huge CPU usage and RAM comsumption when idle | https://github.com/zen-browser/desktop/issues/10406 | 3:24:27 | None |
|
||||
| Browsing history reset itself unexpectedly | https://github.com/zen-browser/desktop/issues/10403 | None | None |
|
||||
| Opening new background tab(Middle mouse click) from within folder opens new tab outside folder | https://github.com/zen-browser/desktop/issues/10399 | 4:44:58 | 7:04:02 |
|
||||
| Icons for webpages in the Essentials tab don't load on startup. | https://github.com/zen-browser/desktop/issues/10398 | None | 0:03:42 |
|
||||
| Can't sign in to any Google services, says cookies are disabled | https://github.com/zen-browser/desktop/issues/10397 | 1:28:00 | 1 day, 6:18:57 |
|
||||
| Zen crashes on Fedora Linux | https://github.com/zen-browser/desktop/issues/10395 | 0:53:47 | 1 day, 7:05:12 |
|
||||
| Audio bugs on Google Meet | https://github.com/zen-browser/desktop/issues/10394 | 15:13:01 | None |
|
||||
| Pinned split screen tabs still not preserved when opening a new window (issue #8583 remains unresolved) | https://github.com/zen-browser/desktop/issues/10388 | None | None |
|
||||
| A cursor appears when I click on the screen | https://github.com/zen-browser/desktop/issues/10387 | 1:39:24 | 4:27:59 |
|
||||
| Custom set images that you upload yourself for Firefox Home new tab wallpapers have been broken for a while. | https://github.com/zen-browser/desktop/issues/10384 | 15:32:44 | 3 days, 14:22:59 |
|
||||
| Scrolling lag when looking at preview (glance) of a webpage when using mouse input | https://github.com/zen-browser/desktop/issues/10382 | None | 3:43:58 |
|
||||
| Apple's accout verification Not Working | https://github.com/zen-browser/desktop/issues/10381 | None | 1 day, 22:20:39 |
|
||||
| Find bar doesn't go away | https://github.com/zen-browser/desktop/issues/10380 | 4:16:03 | 4:16:08 |
|
||||
| Cookies, data, history, and all tabs close and are deleted on every browser restart, despite turning off the settings to do so. | https://github.com/zen-browser/desktop/issues/10377 | None | None |
|
||||
| Windows Navigation Icons not Showing Up on Zen | https://github.com/zen-browser/desktop/issues/10374 | None | None |
|
||||
| 无法打开部分网站,显示安全问题或超时 | https://github.com/zen-browser/desktop/issues/10372 | 0:12:19 | 0:12:19 |
|
||||
| Merci App extension not working - Login not working | https://github.com/zen-browser/desktop/issues/10370 | 3:56:26 | 6:10:52 |
|
||||
| Compact mode tabs overlay stays fixed on top of bookmarks bar | https://github.com/zen-browser/desktop/issues/10369 | None | 4:13:01 |
|
||||
| Browsing history reset itself unexpectedly | https://github.com/zen-browser/desktop/issues/10367 | 9:50:29 | 2 days, 10:39:26 |
|
||||
| Choppy animation while hovering on top bar area in single toolbar compact mode with google doc file open | https://github.com/zen-browser/desktop/issues/10366 | 0:45:17 | None |
|
||||
| Logged me out of everything after Restart | https://github.com/zen-browser/desktop/issues/10365 | 0:06:34 | None |
|
||||
| Discord fails at uploading and playing media | https://github.com/zen-browser/desktop/issues/10364 | 1:35:04 | 17:56:18 |
|
||||
| Pinned tabs inconsisntely dissapear and reappear in the sidebar | https://github.com/zen-browser/desktop/issues/10363 | 2:23:29 | None |
|
||||
| 1Password no longer allowing touch ID on latest release | https://github.com/zen-browser/desktop/issues/10362 | 2:03:43 | 21:35:42 |
|
||||
| [Linux: Flatpak] Can't open certain local-network URLs | https://github.com/zen-browser/desktop/issues/10360 | 4 days, 15:35:37 | None |
|
||||
| Discord WebApp Issue with Audio | https://github.com/zen-browser/desktop/issues/10358 | None | 5:03:34 |
|
||||
| Apple Security Blocked | https://github.com/zen-browser/desktop/issues/10354 | None | None |
|
||||
| Always Blank Screen - although It's working and loading Pages | https://github.com/zen-browser/desktop/issues/10353 | 0:21:31 | 8 days, 17:02:49 |
|
||||
| Tabs are lost then a workspace deletion is synced | https://github.com/zen-browser/desktop/issues/10345 | None | None |
|
||||
| Fix | https://github.com/zen-browser/desktop/issues/10344 | 8:18:05 | 1 day, 9:23:10 |
|
||||
| 1px white border on the top of the window which wasnt there before | https://github.com/zen-browser/desktop/issues/10342 | 2 days, 0:57:48 | None |
|
||||
| zen browser isn't closing correctly | https://github.com/zen-browser/desktop/issues/10337 | 8:28:03 | 17:42:22 |
|
||||
| Fix Multiple Tabs/Containers in Split View in Sidebar | https://github.com/zen-browser/desktop/issues/10335 | None | None |
|
||||
| Fresh install: "Essentials" are grayed out for some sites | https://github.com/zen-browser/desktop/issues/10333 | 0:17:20 | 2:38:34 |
|
||||
| Unticking 'Open Previous Tabs on Startup' messes with pinened folders | https://github.com/zen-browser/desktop/issues/10331 | None | None |
|
||||
| Can't open Connection secure (certificate) 'page' anymore | https://github.com/zen-browser/desktop/issues/10330 | 1:25:14 | 4:54:22 |
|
||||
| Some favicons of pins / essentials disappear when restarting without `Open previous windows and tabs` | https://github.com/zen-browser/desktop/issues/10329 | 3:12:08 | None |
|
||||
| X Spaces breaks when Mic is requested | https://github.com/zen-browser/desktop/issues/10328 | 12 days, 16:06:32 | None |
|
||||
| Tabs on Right , have Weird White Container that come out of nowhere | https://github.com/zen-browser/desktop/issues/10327 | None | 0:50:40 |
|
||||
| Multiacccount containers + Mozilla sync deletes all custom containers | https://github.com/zen-browser/desktop/issues/10324 | None | None |
|
||||
| Cannot open Links from Thunderbird emails in Zen browser | https://github.com/zen-browser/desktop/issues/10323 | 2 days, 7:50:34 | None |
|
||||
| As long as the Baidu search engine exists in the search engine, the Baidu search engine in the quick search interface is at the top, regardless of whether it is checked or not. | https://github.com/zen-browser/desktop/issues/10322 | 1 day, 0:23:30 | None |
|
||||
| Your tab just crashed | https://github.com/zen-browser/desktop/issues/10321 | None | None |
|
||||
| Can not import bookmarks from FF | https://github.com/zen-browser/desktop/issues/10320 | None | None |
|
||||
| Separate accounts across workspaces; should workspaces have different cookies and site data? | https://github.com/zen-browser/desktop/issues/10319 | 0:20:35 | None |
|
||||
| folder names are a different font size | https://github.com/zen-browser/desktop/issues/10318 | 2:06:09 | 3 days, 16:05:52 |
|
||||
| zen.view.experimental-no-window-controls stopped working | https://github.com/zen-browser/desktop/issues/10317 | 7:18:21 | 13:06:50 |
|
||||
| Images get corrupted when uploading on Zen Browser (Flatpak + AUR, Linux + Wayland + NVIDIA) | https://github.com/zen-browser/desktop/issues/10316 | None | 4:13:56 |
|
||||
| Popout Tab extensions not working | https://github.com/zen-browser/desktop/issues/10315 | None | None |
|
||||
| Zen Browser freezing after waking from suspend | https://github.com/zen-browser/desktop/issues/10314 | 1 day, 7:54:39 | None |
|
||||
| compact mode not working | https://github.com/zen-browser/desktop/issues/10313 | 3:21:50 | 12:27:20 |
|
||||
| libnotify not used in Flatpak | https://github.com/zen-browser/desktop/issues/10310 | 19:30:48 | 19:30:48 |
|
||||
| Essentials Tab order reset everytime I restart Zen Browser | https://github.com/zen-browser/desktop/issues/10309 | 1:24:30 | None |
|
||||
| [ux]first keydown on fill bar is plain focus, enforce type wwhat to typeout what. on chatgpt.com | https://github.com/zen-browser/desktop/issues/10308 | 4:52:52 | 4:52:52 |
|
||||
| Copying URL using shortcut when in reader mode does not work as expected | https://github.com/zen-browser/desktop/issues/10303 | 0:04:42 | None |
|
||||
| Reopening Closed Tabs (Ctrl+Shift+T) Duplicates Essentials/Pinned, Causing Loss on Next Session If The Dupes Were Closed | https://github.com/zen-browser/desktop/issues/10302 | 4 days, 23:41:33 | None |
|
||||
| Tabs within Folders in Workspaces switch back to the default workspace | https://github.com/zen-browser/desktop/issues/10299 | None | None |
|
||||
| Can't clear the cookies and site data due to a UI bug | https://github.com/zen-browser/desktop/issues/10298 | 6:00:32 | 6:00:32 |
|
||||
| Cannot move pinned tab to the top of normal tabs | https://github.com/zen-browser/desktop/issues/10295 | None | None |
|
||||
| Mouse cursor position can have an undesirable effect on the tab switcher | https://github.com/zen-browser/desktop/issues/10292 | 2:12:31 | 2:29:10 |
|
||||
| Essential tabs and Pinned tabs (including the ones inside a folder) do not load on startup | https://github.com/zen-browser/desktop/issues/10291 | 2:47:15 | None |
|
||||
| Browser doesn't launch after update | https://github.com/zen-browser/desktop/issues/10290 | 4:30:50 | None |
|
||||
| Double-click on sidebar no longer opens a new tab after recent Zen update | https://github.com/zen-browser/desktop/issues/10289 | 12:03:10 | 12:03:10 |
|
||||
| ArchLinux AUR: Quellen für ‚zen-browser-bin-1.15.4b-1‘ konnten nicht heruntergeladen werden | https://github.com/zen-browser/desktop/issues/10288 | 2:39:09 | 2:39:09 |
|
||||
| Ctrl+Shift+T after reopening Zen mixes tabs from multiple workspaces | https://github.com/zen-browser/desktop/issues/10286 | None | 4 days, 6:16:17 |
|
||||
| Keyboard Input Delay While Typing on Monaco Editors | https://github.com/zen-browser/desktop/issues/10285 | 1 day, 6:25:04 | None |
|
||||
| the top close maximize minimize are shwoing up and not going according to the theme and its just very bugged | https://github.com/zen-browser/desktop/issues/10284 | 5:13:41 | 6:27:09 |
|
||||
| New Tab opens in new window. | https://github.com/zen-browser/desktop/issues/10283 | 0:29:33 | None |
|
||||
| Can only open in safe mode. 1.15.5b | https://github.com/zen-browser/desktop/issues/10282 | 2:10:07 | 3:33:03 |
|
||||
| Copy to Cliboard button in the url bar not working | https://github.com/zen-browser/desktop/issues/10281 | 2 days, 6:09:05 | 20 days, 2:34:28 |
|
||||
| After the 1.15.4b update, the automatic hiding of the top and tab is not working | https://github.com/zen-browser/desktop/issues/10280 | 4:35:52 | 16:55:08 |
|
||||
| Cannot move window when holding down left mouse button on sidebar | https://github.com/zen-browser/desktop/issues/10278 | 3 days, 19:54:46 | 3 days, 21:15:09 |
|
||||
| Sidebar always visible in compact mode after right-clicking container icon when opening a new tab | https://github.com/zen-browser/desktop/issues/10276 | 1:53:46 | None |
|
||||
| zen cannot play youtube livestreams | https://github.com/zen-browser/desktop/issues/10274 | 5:07:19 | None |
|
||||
| Compact sidebar pops up when opening menus in menubar | https://github.com/zen-browser/desktop/issues/10273 | None | None |
|
||||
| Newest Update — weird Bookmarks behavior | https://github.com/zen-browser/desktop/issues/10272 | None | 0:34:25 |
|
||||
| Double-clicking no longer opens a new tab. | https://github.com/zen-browser/desktop/issues/10270 | 1:23:48 | 2:13:30 |
|
||||
| Theme is inconsistent with and without focus | https://github.com/zen-browser/desktop/issues/10268 | None | None |
|
||||
| Tabs inside folder goes invisible when closing folder | https://github.com/zen-browser/desktop/issues/10267 | 10:34:08 | 11:05:06 |
|
||||
| Essentials/Pinned tabs are removed with middle click | https://github.com/zen-browser/desktop/issues/10266 | 2:33:21 | 11:29:40 |
|
||||
| Creating split window by dragging pinned Essentials icon removes the Essential icon | https://github.com/zen-browser/desktop/issues/10264 | None | None |
|
||||
| Macos: extention pop-ups open up at a different desktop in fullscreen | https://github.com/zen-browser/desktop/issues/10260 | None | None |
|
||||
| Split tabs can't be moved to new workspace | https://github.com/zen-browser/desktop/issues/10256 | None | 11:32:53 |
|
||||
| Google account not shared between spaces — must re-add to sign in to Figma | https://github.com/zen-browser/desktop/issues/10255 | 8:43:21 | None |
|
||||
| Split tabs context menu does not show when selecting already split tabs | https://github.com/zen-browser/desktop/issues/10254 | 1 day, 8:31:56 | None |
|
||||
| Netflix Error F7121-1331 | https://github.com/zen-browser/desktop/issues/10251 | 2:31:38 | 0:02:34 |
|
||||
| Gradient themes get cut off if using vertical taskbar on W10 | https://github.com/zen-browser/desktop/issues/10250 | 20 days, 21:52:53 | None |
|
||||
| White/Transparent search bar and bookmarks | https://github.com/zen-browser/desktop/issues/10247 | 11:15:56 | 1 day, 14:35:40 |
|
||||
| Pin tabs duplication | https://github.com/zen-browser/desktop/issues/10246 | 13:43:00 | 13:43:00 |
|
||||
| Zen window transparency only works when window is maximized | https://github.com/zen-browser/desktop/issues/10243 | None | None |
|
||||
| Cursor rapid flickering on random places within the browser window when graphic tablet is used | https://github.com/zen-browser/desktop/issues/10242 | 21:55:18 | 21:57:24 |
|
||||
| MIssing last second(s) in certain audios | https://github.com/zen-browser/desktop/issues/10240 | None | None |
|
||||
| Issue with Transparency Effect in background in Zen Browser | https://github.com/zen-browser/desktop/issues/10239 | 3:36:39 | 18 days, 3:00:45 |
|
||||
| Zen icon does not load even apon restart. | https://github.com/zen-browser/desktop/issues/10238 | 1 day, 7:03:03 | 1 day, 7:03:03 |
|
||||
| Discord login page does not load | https://github.com/zen-browser/desktop/issues/10234 | None | None |
|
||||
| Native window title doesn't show Page title(document.title) when tab is pinned and renamed, shows only profile name and app name | https://github.com/zen-browser/desktop/issues/10232 | None | None |
|
||||
| Enabling "Always use private browsing mode" results in totally black UI | https://github.com/zen-browser/desktop/issues/10231 | None | None |
|
||||
| After newest Update there is now a ugly white Border around the Hidden Compact Sidebar | https://github.com/zen-browser/desktop/issues/10230 | 1 day, 13:55:29 | 2 days, 20:51:00 |
|
||||
| File manager not opening in Arch linux | https://github.com/zen-browser/desktop/issues/10226 | 0:12:51 | None |
|
||||
| Default color back to orange | https://github.com/zen-browser/desktop/issues/10225 | 0:07:41 | 3:10:01 |
|
||||
| NAVEGADOR CONSUMINDO 12 GIGAS? CARALHOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO | https://github.com/zen-browser/desktop/issues/10224 | None | 0:24:57 |
|
||||
| gemini style bug | https://github.com/zen-browser/desktop/issues/10222 | 1:32:02 | 1:04:01 |
|
||||
| Zen Browser opens on the last used virtual desktop instead of the current one | https://github.com/zen-browser/desktop/issues/10221 | 2:07:09 | None |
|
||||
| Tabs having weird behaviour when moving them form one window to the other | https://github.com/zen-browser/desktop/issues/10220 | None | None |
|
||||
| Web pages in the workspace cannot be synced | https://github.com/zen-browser/desktop/issues/10219 | 5 days, 0:56:10 | 5 days, 6:23:07 |
|
||||
| Swipe workspaces gesture freezes on "Mute Tab" icon hover | https://github.com/zen-browser/desktop/issues/10217 | None | None |
|
||||
| Sub-folders of Tabs, Dump Tabs when moved in a Folder List | https://github.com/zen-browser/desktop/issues/10216 | 2 days, 13:52:56 | 4 days, 22:25:16 |
|
||||
| Labels rendering bug | https://github.com/zen-browser/desktop/issues/10215 | 11:10:14 | 3 days, 22:48:16 |
|
||||
| Browser doesn't allow completion of TOTP number on Paypal site | https://github.com/zen-browser/desktop/issues/10214 | None | None |
|
||||
| Unable to use Option+Cmd+ArrowLeft or Option+Cmd+ArrowRight to change spaces. | https://github.com/zen-browser/desktop/issues/10211 | 14:39:09 | 15:34:26 |
|
||||
| The Workspace Icon can't be hided anymore | https://github.com/zen-browser/desktop/issues/10209 | 1:41:32 | 1:41:32 |
|
||||
| Tabs move into Folders | https://github.com/zen-browser/desktop/issues/10208 | 0:24:03 | 7:25:32 |
|
||||
| Native select low contrast theme | https://github.com/zen-browser/desktop/issues/10207 | None | None |
|
||||
| Trackpad zooming on PDF no longer working | https://github.com/zen-browser/desktop/issues/10205 | None | None |
|
||||
| Can’t add tab to Essentials | https://github.com/zen-browser/desktop/issues/10204 | 1:15:16 | 8:15:36 |
|
||||
| Zen browser can't go through system proxies on Linux | https://github.com/zen-browser/desktop/issues/10203 | None | None |
|
||||
| The Browser's adressbar is not visible because it blends into the current viewed page. | https://github.com/zen-browser/desktop/issues/10202 | 0:13:50 | 2 days, 23:44:36 |
|
||||
| Wrong favicon instead of cached icons bug is back | https://github.com/zen-browser/desktop/issues/10199 | 1 day, 6:59:45 | 2 days, 21:44:37 |
|
||||
| iCloud not working | https://github.com/zen-browser/desktop/issues/10192 | 6:18:44 | 11:56:51 |
|
||||
| Truncated folder name in the search inside folders feature | https://github.com/zen-browser/desktop/issues/10189 | 2:31:02 | None |
|
||||
| Missing translations in the search inside folders feature | https://github.com/zen-browser/desktop/issues/10188 | 2:16:01 | 2:16:01 |
|
||||
| New "floadting" tab bar window covers bookmark bar | https://github.com/zen-browser/desktop/issues/10186 | 6:07:17 | 16:21:43 |
|
||||
| Revert 1.15.3b!!!! | https://github.com/zen-browser/desktop/issues/10185 | 1:12:24 | 1:03:18 |
|
||||
| "New Tab Below" menu item when right clicking on a tab no longer shows after upgrading from 1.14.11b | https://github.com/zen-browser/desktop/issues/10184 | None | 2:40:19 |
|
||||
| Multiple bugs with new folder Feature | https://github.com/zen-browser/desktop/issues/10182 | 1:37:43 | None |
|
||||
| New window bug - unpinned tabs disappear, folders expand | https://github.com/zen-browser/desktop/issues/10180 | 2:22:55 | 2:22:55 |
|
||||
| Essentials not syncing across all spaces in same container | https://github.com/zen-browser/desktop/issues/10179 | 3:37:37 | 24 days, 5:11:42 |
|
||||
| Macos Universal download installer | https://github.com/zen-browser/desktop/issues/10175 | 7:10:27 | 7:10:27 |
|
||||
|
||||
_This report was generated with the [Issue Metrics Action](https://github.com/github/issue-metrics)_
|
||||
Search query used to find these items: `repo:zen-browser/desktop is:issue created:2025-09-01..2025-09-30`
|
@@ -48,4 +48,4 @@ zen-icons-picker-emoji =
|
||||
.label = Emojis
|
||||
zen-icons-picker-svg =
|
||||
.label = Icones
|
||||
urlbar-search-mode-zen_actions = Actions
|
||||
urlbar-search-mode-zen_actions = Accions
|
||||
|
@@ -64,3 +64,6 @@ zen-icons-picker-svg =
|
||||
.label = Icons
|
||||
|
||||
urlbar-search-mode-zen_actions = Actions
|
||||
zen-site-data-settings = Settings
|
||||
|
||||
zen-generic-manage = Manage
|
||||
|
@@ -4,7 +4,7 @@ tab-context-zen-reset-pinned-tab =
|
||||
.label = Réinitialiser l’onglet épinglé
|
||||
.accesskey = R
|
||||
tab-context-zen-add-essential =
|
||||
.label = Ajouter aux Essentials ({ $num } / 12 emplacements remplis)
|
||||
.label = Ajouter aux Essentials ({ $num }/12 emplacements occupés)
|
||||
.accesskey = E
|
||||
tab-context-zen-remove-essential =
|
||||
.label = Retirer des Essentials
|
||||
|
@@ -48,4 +48,4 @@ zen-icons-picker-emoji =
|
||||
.label = Emoji
|
||||
zen-icons-picker-svg =
|
||||
.label = Ikon
|
||||
urlbar-search-mode-zen_actions = Actions
|
||||
urlbar-search-mode-zen_actions = Aksi
|
||||
|
@@ -48,4 +48,4 @@ zen-icons-picker-emoji =
|
||||
.label = 이모티콘
|
||||
zen-icons-picker-svg =
|
||||
.label = 아이콘
|
||||
urlbar-search-mode-zen_actions = Actions
|
||||
urlbar-search-mode-zen_actions = 액션
|
||||
|
@@ -48,4 +48,4 @@ zen-icons-picker-emoji =
|
||||
.label = Емоджі
|
||||
zen-icons-picker-svg =
|
||||
.label = Значки
|
||||
urlbar-search-mode-zen_actions = Actions
|
||||
urlbar-search-mode-zen_actions = Дії
|
||||
|
@@ -27,7 +27,7 @@ zen-glance-trigger-shift-click =
|
||||
zen-glance-trigger-meta-click =
|
||||
.label = Meta (Command) + 左鍵
|
||||
zen-glance-trigger-mantain-click =
|
||||
.label = 長按(即將上線!)
|
||||
.label = 長按(即將推出!)
|
||||
zen-look-and-feel-compact-view-header = 在緊湊模式下顯示
|
||||
zen-look-and-feel-compact-view-description = 只顯示你需要用的工具欄!
|
||||
zen-look-and-feel-compact-view-enabled =
|
||||
@@ -92,12 +92,12 @@ zen-vertical-tabs-expand-tabs-header = 如何擴展分頁
|
||||
zen-vertical-tabs-expand-tabs-description = 選擇要如何擴展側邊欄中的分頁
|
||||
zen-theme-marketplace-header = Zen 模組
|
||||
zen-theme-disable-all-enabled =
|
||||
.title = 啟用所有主題
|
||||
.title = 啟用所有模組
|
||||
zen-theme-disable-all-disabled =
|
||||
.title = 停用所有主題
|
||||
zen-theme-marketplace-description = 從商店尋找並安裝主題。
|
||||
.title = 停用所有模組
|
||||
zen-theme-marketplace-description = 從商店尋找並安裝模組。
|
||||
zen-theme-marketplace-remove-button =
|
||||
.label = 移除主題
|
||||
.label = 移除模組
|
||||
zen-theme-marketplace-check-for-updates-button =
|
||||
.label = 檢查更新
|
||||
zen-theme-marketplace-import-button =
|
||||
@@ -114,15 +114,15 @@ zen-theme-marketplace-toggle-enabled-button =
|
||||
.title = 關閉佈景主題
|
||||
zen-theme-marketplace-toggle-disabled-button =
|
||||
.title = 啟用佈景主題
|
||||
zen-theme-marketplace-remove-confirmation = 您確定要移除此模組?
|
||||
zen-theme-marketplace-remove-confirmation = 您確定要移除此模組?
|
||||
zen-theme-marketplace-close-modal = 關閉
|
||||
zen-theme-marketplace-theme-header-title =
|
||||
.title = CSS 選擇器:{ $name }
|
||||
zen-theme-marketplace-dropdown-default-label =
|
||||
.label = 無
|
||||
zen-theme-marketplace-input-default-placeholder =
|
||||
.placeholder = 請輸入
|
||||
pane-zen-marketplace-title = Zen 模式
|
||||
.placeholder = 請輸入...
|
||||
pane-zen-marketplace-title = Zen 模組
|
||||
zen-themes-auto-update =
|
||||
.label = 啟動時自動更新已安裝模組
|
||||
zen-settings-workspaces-force-container-tabs-to-workspace =
|
||||
@@ -150,12 +150,12 @@ pane-zen-CKS-title = 快捷鍵
|
||||
category-zen-CKS =
|
||||
.tooltiptext = { pane-zen-CKS-title }
|
||||
pane-settings-CKS-title = { -brand-short-name } 快捷鍵
|
||||
zen-settings-CKS-header = 自定義你的快捷鍵
|
||||
zen-settings-CKS-description = 依據你的愛好來更改預設的快捷鍵以近一步改善你的瀏覽體驗
|
||||
zen-settings-CKS-header = 自定義您的快捷鍵
|
||||
zen-settings-CKS-description = 依據您的愛好來更改預設的快捷鍵以近一步改善你的瀏覽體驗
|
||||
zen-settings-CKS-disable-firefox =
|
||||
.label = 停用 { -brand-short-name } 的預設快捷鍵
|
||||
zen-settings-CKS-duplicate-shortcut =
|
||||
.label = 重複的快捷鍵
|
||||
.label = 複製快捷鍵
|
||||
zen-settings-CKS-reset-shortcuts =
|
||||
.label = 重設為預設值
|
||||
zenCKSOption-group-other = 其它
|
||||
@@ -173,13 +173,13 @@ zenCKSOption-group-devTools = 開發人員工具
|
||||
zen-key-quick-restart = 快速重啟
|
||||
zen-window-new-shortcut = 開新視窗
|
||||
zen-tab-new-shortcut = 開新分頁
|
||||
zen-key-redo = 重做
|
||||
zen-key-redo = 取消復原
|
||||
zen-restore-last-closed-tab-shortcut = 復原上次關閉的分頁
|
||||
zen-location-open-shortcut = 選取網址列
|
||||
zen-location-open-shortcut-alt = 選取網址列(備用)
|
||||
zen-key-undo-close-window = 還原已關閉視窗
|
||||
zen-text-action-undo-shortcut = 復原
|
||||
zen-text-action-redo-shortcut = 取消「復原」
|
||||
zen-text-action-redo-shortcut = 取消復原
|
||||
zen-text-action-cut-shortcut = 剪下
|
||||
zen-text-action-copy-shortcut = 複製
|
||||
zen-text-action-copy-url-shortcut = 複製目前網址
|
||||
@@ -219,9 +219,9 @@ zen-history-show-all-shortcut = 顯示所有歷史
|
||||
zen-key-enter-full-screen = 進入全畫面模式
|
||||
zen-key-exit-full-screen = 離開全畫面模式
|
||||
zen-ai-chatbot-sidebar-shortcut = 開啟 AI 聊天側邊欄
|
||||
zen-key-inspector-mac = 開啟檢測器(Mac)
|
||||
zen-key-inspector-mac = 開啟檢測器 (Mac)
|
||||
zen-toggle-sidebar-shortcut = 開啟 Firefox 側邊欄
|
||||
zen-toggle-pin-tab-shortcut = Toggle Pin Tab
|
||||
zen-toggle-pin-tab-shortcut = 切換釘選分頁
|
||||
zen-reader-mode-toggle-shortcut-other = 切換閱讀模式
|
||||
zen-picture-in-picture-toggle-shortcut = 切換子母畫面
|
||||
zen-nav-reload-shortcut-2 = 重新整理
|
||||
|
@@ -1,21 +1,21 @@
|
||||
zen-folders-search-placeholder =
|
||||
.placeholder = Search { $folder-name }...
|
||||
.placeholder = 搜尋 { $folder-name }...
|
||||
zen-folders-panel-rename-folder =
|
||||
.label = Rename Folder
|
||||
.label = 重新命名分頁夾
|
||||
zen-folders-panel-unpack-folder =
|
||||
.label = Unpack Folder
|
||||
.label = 解散分頁夾
|
||||
zen-folders-new-subfolder =
|
||||
.label = New Subfolder
|
||||
.label = 新增子分頁夾
|
||||
zen-folders-panel-delete-folder =
|
||||
.label = Delete Folder
|
||||
.label = 刪除分頁夾
|
||||
zen-folders-panel-convert-folder-to-space =
|
||||
.label = Convert folder to Space
|
||||
.label = 將分頁夾轉換為工作區
|
||||
zen-folders-panel-change-folder-space =
|
||||
.label = Change Space...
|
||||
.label = 變更工作區...
|
||||
zen-folders-panel-change-icon-folder =
|
||||
.label = Change Icon
|
||||
.label = 變更圖示
|
||||
zen-folders-unload-all-tooltip =
|
||||
.tooltiptext = Unload active in this folder
|
||||
.tooltiptext = 卸載此分頁夾中所有分頁
|
||||
zen-folders-unload-folder =
|
||||
.label = Unload All Tabs
|
||||
zen-folders-search-no-results = 沒有找到搜尋的分頁 🤔
|
||||
.label = 卸載所有分頁
|
||||
zen-folders-search-no-results = 找不到符合搜尋的分頁 🤔
|
||||
|
@@ -1,5 +1,5 @@
|
||||
zen-panel-ui-current-profile-text = 當前設定檔
|
||||
unified-extensions-description = 擴充功能用於為 { -brand-short-name } 帶來更多功能。
|
||||
unified-extensions-description = 擴充功能可為 { -brand-short-name } 帶來更多額外功能。
|
||||
tab-context-zen-reset-pinned-tab =
|
||||
.label = 重置釘選的分頁
|
||||
.accesskey = R
|
||||
@@ -12,25 +12,25 @@ tab-context-zen-remove-essential =
|
||||
tab-context-zen-replace-pinned-url-with-current =
|
||||
.label = 將釘選的網址換成目前的網址
|
||||
.accesskey = C
|
||||
zen-themes-corrupted = 你的 { -brand-short-name } 模組文件已損壞,它們已重置為預設佈景主題。
|
||||
zen-themes-corrupted = 你的 { -brand-short-name } 模組文件已損壞,它們已重設為預設主題。
|
||||
zen-shortcuts-corrupted = 你的 { -brand-short-name } 快捷文件已損壞。它們已被重設為預設值。
|
||||
# note: Do not translate the "<br/>" tags in the following string
|
||||
zen-new-urlbar-notification = 新的 URL 欄已啟用,你不再需要新增新分頁。<br/><br/>馬上打開新分頁來看看新的 URL 欄!
|
||||
zen-disable = 禁用
|
||||
zen-disable = 停用
|
||||
pictureinpicture-minimize-btn =
|
||||
.aria-label = Minimize
|
||||
.tooltip = Minimize
|
||||
.aria-label = 最小化
|
||||
.tooltip = 最小化
|
||||
zen-panel-ui-gradient-generator-custom-color = 自訂顏色
|
||||
zen-panel-ui-gradient-generator-saved-message = 漸層儲存成功!
|
||||
zen-panel-ui-gradient-generator-saved-message = 已成功儲存漸層!
|
||||
zen-copy-current-url-confirmation = 網址已複製到剪貼簿。
|
||||
zen-general-cancel-label =
|
||||
.label = 取消
|
||||
zen-general-confirm =
|
||||
.label = 確認
|
||||
zen-pinned-tab-replaced = 釘選分頁網址已替換為當前當前網址。
|
||||
zen-tabs-renamed = 分頁重新命名成功!
|
||||
zen-background-tab-opened-toast = New background tab opened!
|
||||
zen-workspace-renamed-toast = Workspace has been successfully renamed!
|
||||
zen-tabs-renamed = 已成功重新命名分頁!
|
||||
zen-background-tab-opened-toast = 已在背景開啟新分頁!
|
||||
zen-workspace-renamed-toast = 已成功重新命名工作區!
|
||||
zen-library-sidebar-workspaces =
|
||||
.label = 工作區
|
||||
zen-library-sidebar-mods =
|
||||
@@ -45,5 +45,5 @@ zen-singletoolbar-urlbar-placeholder-with-name =
|
||||
zen-icons-picker-emoji =
|
||||
.label = 表情符號
|
||||
zen-icons-picker-svg =
|
||||
.label = Icons
|
||||
urlbar-search-mode-zen_actions = Actions
|
||||
.label = 圖示
|
||||
urlbar-search-mode-zen_actions = 操作
|
||||
|
@@ -10,7 +10,7 @@ zen-split-link =
|
||||
.accesskey = S
|
||||
zen-split-view-modifier-header = 分割畫面
|
||||
zen-split-view-modifier-activate-reallocation =
|
||||
.label = 啟用重新分配
|
||||
zen-split-view-modifier-enabled-toast = 分割畫面重新排列已開啟。
|
||||
zen-split-view-modifier-enabled-toast-description = 拖曳畫面以重新排列。按 Esc 鍵退出
|
||||
zen-split-view-modifier-disabled-toast = 分割畫面重新排列已關閉
|
||||
.label = 啟用重新排列
|
||||
zen-split-view-modifier-enabled-toast = 已開啟分割畫面重新排列功能。
|
||||
zen-split-view-modifier-enabled-toast-description = 拖曳畫面以重新排列。按 Esc 鍵退出。
|
||||
zen-split-view-modifier-disabled-toast = 已關閉分割畫面重新排列功能。
|
||||
|
@@ -15,12 +15,12 @@ zen-toolbar-context-compact-mode-hide-both =
|
||||
.label = 兩者皆隱藏
|
||||
.accesskey = H
|
||||
zen-toolbar-context-new-folder =
|
||||
.label = New Folder
|
||||
.label = 新增分頁夾
|
||||
.accesskey = N
|
||||
sidebar-zen-expand =
|
||||
.label = 展開側邊欄
|
||||
sidebar-zen-create-new =
|
||||
.label = Create New...
|
||||
.label = 新增...
|
||||
tabbrowser-unload-tab-button =
|
||||
.tooltiptext =
|
||||
{ $tabCount ->
|
||||
|
@@ -2,26 +2,26 @@
|
||||
# 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-welcome-title-line1 = Welcome to
|
||||
zen-welcome-title-line2 = a calmer internet
|
||||
zen-welcome-import-title = A Fresh Start, Same Bookmarks
|
||||
zen-welcome-import-description-1 = Your bookmarks, history, and passwords are like a trail of breadcrumbs through the internet—don’t leave them behind!
|
||||
zen-welcome-title-line1 = 歡迎使用
|
||||
zen-welcome-title-line2 = 更寧靜的網路體驗
|
||||
zen-welcome-import-title = 全新開始,書籤依舊
|
||||
zen-welcome-import-description-1 = 您的書籤、歷史記錄和密碼,是您網路足跡的珍貴紀錄——別把它們遺忘了!
|
||||
zen-welcome-import-description-2 = 輕鬆匯入其他瀏覽器的資料,無縫接續瀏覽體驗。
|
||||
zen-welcome-import-button = Import now
|
||||
zen-welcome-set-default-browser = Set { -brand-short-name } as your default browser
|
||||
zen-welcome-dont-set-default-browser = DON’T set { -brand-short-name } as your default browser
|
||||
zen-welcome-initial-essentials-title = Your Key Tabs, Always Within Reach
|
||||
zen-welcome-initial-essentials-description-1 = Keep your most important tabs easily accessible and always at hand, no matter how many you open.
|
||||
zen-welcome-initial-essentials-description-2 = Essential tabs are always visible, no matter what workspace you are in.
|
||||
zen-welcome-workspace-colors-title = Your Workspaces, Your Colors
|
||||
zen-welcome-workspace-colors-description = Personalize your browser by giving each workspace its own unique color identity.
|
||||
zen-welcome-import-button = 立即匯入
|
||||
zen-welcome-set-default-browser = 將 { -brand-short-name } 設為您的預設瀏覽器
|
||||
zen-welcome-dont-set-default-browser = 不要將 { -brand-short-name } 設為您的預設瀏覽器
|
||||
zen-welcome-initial-essentials-title = 重要分頁,隨手可及
|
||||
zen-welcome-initial-essentials-description-1 = 無論開啟多少分頁,最重要的分頁將永遠顯示,讓您輕鬆存取。
|
||||
zen-welcome-initial-essentials-description-2 = 無論您在哪個工作區,Essential 分頁會永遠顯示。
|
||||
zen-welcome-workspace-colors-title = 您的工作區,您的色彩
|
||||
zen-welcome-workspace-colors-description = 為每個工作區賦予獨特的色彩,打造個人化瀏覽器。
|
||||
zen-welcome-start-browsing-title =
|
||||
All set?<br/>
|
||||
Let’s get rolling!
|
||||
zen-welcome-start-browsing-description-1 = You’re all set up and ready to go. Click the button below to start browsing with { -brand-short-name }.
|
||||
zen-welcome-start-browsing = Dive in!
|
||||
zen-welcome-default-search-title = Your Default Search Engine
|
||||
zen-welcome-default-search-description = Choose your default search engine. You can always change it later!
|
||||
zen-welcome-skip-button = Skip
|
||||
zen-welcome-next-action = Next
|
||||
zen-welcome-finished = Your Zen has been set up correctly!
|
||||
準備好了嗎?<br/>
|
||||
馬上開始體驗吧!
|
||||
zen-welcome-start-browsing-description-1 = 您已完成所有設定並準備就緒。點擊下方按鈕,開始使用 { -brand-short-name } 瀏覽網路吧。
|
||||
zen-welcome-start-browsing = 立即開始!
|
||||
zen-welcome-default-search-title = 您的預設搜尋引擎
|
||||
zen-welcome-default-search-description = 選擇您的預設搜尋引擎,您可以隨時更改它!
|
||||
zen-welcome-skip-button = 跳過
|
||||
zen-welcome-next-action = 下一步
|
||||
zen-welcome-finished = 您的 Zen 瀏覽器已成功設定!
|
||||
|
@@ -1,8 +1,8 @@
|
||||
zen-panel-ui-workspaces-text = 工作區
|
||||
zen-panel-ui-workspaces-create =
|
||||
.label = 創建工作區
|
||||
.label = 建立工作區
|
||||
zen-panel-ui-folder-create =
|
||||
.label = Create Folder
|
||||
.label = 建立分頁夾
|
||||
zen-panel-ui-new-empty-split =
|
||||
.label = New Split
|
||||
zen-workspaces-panel-context-delete =
|
||||
@@ -13,7 +13,7 @@ zen-workspaces-panel-change-name =
|
||||
zen-workspaces-panel-change-icon =
|
||||
.label = 變更圖示
|
||||
zen-workspaces-panel-context-default-profile =
|
||||
.label = Set Profile
|
||||
.label = 設定設定檔
|
||||
zen-workspaces-how-to-reorder-title = 如何排序工作區
|
||||
zen-workspaces-how-to-reorder-desc = 拖曳側邊欄底部工作區圖示以重新排序
|
||||
zen-workspaces-change-theme =
|
||||
@@ -25,7 +25,7 @@ zen-workspaces-panel-context-edit =
|
||||
.label = 編輯工作區
|
||||
.accesskey = E
|
||||
context-zen-change-workspace-tab =
|
||||
.label = 將分頁(含多個)移至工作區
|
||||
.label = 將分頁移至工作區
|
||||
.accesskey = C
|
||||
zen-bookmark-edit-panel-workspace-selector =
|
||||
.value = 選擇工作區
|
||||
@@ -45,9 +45,9 @@ zen-workspace-creation-name =
|
||||
.placeholder = 工作區名稱
|
||||
zen-workspaces-panel-context-reorder =
|
||||
.label = 排序工作區
|
||||
zen-workspace-creation-profile = Profile
|
||||
.tooltiptext = Profiles are used to separate cookies and site data between spaces.
|
||||
zen-workspace-creation-header = 創建工作區
|
||||
zen-workspace-creation-label = Spaces are used to organize your tabs and sessions.
|
||||
zen-workspace-creation-profile = 設定檔
|
||||
.tooltiptext = 設定檔用於隔離不同工作區的 Cookie 和網站資料。
|
||||
zen-workspace-creation-header = 建立工作區
|
||||
zen-workspace-creation-label = 工作區用於組織您的分頁與工作階段。
|
||||
zen-workspaces-delete-workspace-title = 刪除工作區?
|
||||
zen-workspaces-delete-workspace-body = 你確定要刪除 { $name } 嗎?該動作無法物復原。
|
||||
zen-workspaces-delete-workspace-body = 您確定要刪除 { $name } 嗎?此操錯無法復原。
|
||||
|
@@ -3,8 +3,7 @@
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
- name: browser.startup.page
|
||||
value: 0
|
||||
locked: true
|
||||
value: 3
|
||||
|
||||
- name: browser.sessionstore.restore_pinned_tabs_on_demand
|
||||
value: true
|
||||
|
@@ -53,9 +53,6 @@
|
||||
- name: browser.formfill.enable
|
||||
value: false
|
||||
|
||||
- name: network.IDN_show_punycode
|
||||
value: true
|
||||
|
||||
- name: browser.urlbar.suggest.topsites
|
||||
value: true
|
||||
locked: true
|
||||
|
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/base/content/browser-addons.js b/browser/base/content/browser-addons.js
|
||||
index d7542a38a0242dd9c9c6390171d59992d75a0c19..d20e5a9fa42c88c7ba28fac1ef13dd693f1f1135 100644
|
||||
index d7542a38a0242dd9c9c6390171d59992d75a0c19..e3bda9bc28aeca7258fcd91fa1a4719b4950e28b 100644
|
||||
--- a/browser/base/content/browser-addons.js
|
||||
+++ b/browser/base/content/browser-addons.js
|
||||
@@ -1064,7 +1064,7 @@ var gXPInstallObserver = {
|
||||
@@ -20,7 +20,20 @@ index d7542a38a0242dd9c9c6390171d59992d75a0c19..d20e5a9fa42c88c7ba28fac1ef13dd69
|
||||
},
|
||||
};
|
||||
|
||||
@@ -2608,7 +2608,7 @@ var gUnifiedExtensions = {
|
||||
@@ -2509,11 +2509,7 @@ var gUnifiedExtensions = {
|
||||
// Lazy load the unified-extensions-panel panel the first time we need to
|
||||
// display it.
|
||||
if (!this._panel) {
|
||||
- let template = document.getElementById(
|
||||
- "unified-extensions-panel-template"
|
||||
- );
|
||||
- template.replaceWith(template.content);
|
||||
- this._panel = document.getElementById("unified-extensions-panel");
|
||||
+ this._panel = document.getElementById("zen-unified-site-data-panel");
|
||||
let customizationArea = this._panel.querySelector(
|
||||
"#unified-extensions-area"
|
||||
);
|
||||
@@ -2608,7 +2604,7 @@ var gUnifiedExtensions = {
|
||||
this.recordButtonTelemetry(reason || "extensions_panel_showing");
|
||||
this.ensureButtonShownBeforeAttachingPanel(panel);
|
||||
PanelMultiView.openPopup(panel, this._button, {
|
||||
@@ -29,7 +42,7 @@ index d7542a38a0242dd9c9c6390171d59992d75a0c19..d20e5a9fa42c88c7ba28fac1ef13dd69
|
||||
triggerEvent: aEvent,
|
||||
});
|
||||
}
|
||||
@@ -2795,18 +2795,20 @@ var gUnifiedExtensions = {
|
||||
@@ -2795,18 +2791,20 @@ var gUnifiedExtensions = {
|
||||
this._maybeMoveWidgetNodeBack(widgetId);
|
||||
}
|
||||
|
||||
|
@@ -58,4 +58,3 @@
|
||||
<script type="text/javascript" src="chrome://browser/content/zen-components/ZenDownloadAnimation.mjs"></script>
|
||||
<script type="text/javascript" src="chrome://browser/content/zen-components/ZenEmojiPicker.mjs"></script>
|
||||
<script type="text/javascript" src="chrome://browser/content/zen-components/ZenWorkspaceCreation.mjs"></script>
|
||||
<script type="text/javascript" src="chrome://browser/content/zen-components/ZenWindowSyncing.mjs"></script>
|
||||
|
@@ -42,7 +42,6 @@
|
||||
content/browser/zen-components/ZenWorkspaceIcons.mjs (../../zen/workspaces/ZenWorkspaceIcons.mjs)
|
||||
content/browser/zen-components/ZenWorkspace.mjs (../../zen/workspaces/ZenWorkspace.mjs)
|
||||
content/browser/zen-components/ZenWorkspaces.mjs (../../zen/workspaces/ZenWorkspaces.mjs)
|
||||
content/browser/zen-components/ZenWindowSyncing.mjs (../../zen/workspaces/ZenWindowSyncing.mjs)
|
||||
content/browser/zen-components/ZenWorkspaceCreation.mjs (../../zen/workspaces/ZenWorkspaceCreation.mjs)
|
||||
content/browser/zen-components/ZenWorkspacesStorage.mjs (../../zen/workspaces/ZenWorkspacesStorage.mjs)
|
||||
content/browser/zen-components/ZenWorkspacesSync.mjs (../../zen/workspaces/ZenWorkspacesSync.mjs)
|
||||
|
64
src/browser/base/content/zen-panels/site-data.inc
Normal file
64
src/browser/base/content/zen-panels/site-data.inc
Normal file
@@ -0,0 +1,64 @@
|
||||
# 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/.
|
||||
|
||||
<panel id="zen-unified-site-data-panel"
|
||||
role="group"
|
||||
type="arrow"
|
||||
noautofocus="true"
|
||||
position="bottomright topright">
|
||||
<panelmultiview mainViewId="unified-extensions-view">
|
||||
# We'll keep the view with this name/id in order to prevent
|
||||
# any sort of future issues we may have if firefox decides
|
||||
# to change the functionality of this view
|
||||
<panelview id="unified-extensions-view"
|
||||
class="cui-widget-panelview"
|
||||
mainview-with-header="true">
|
||||
<vbox class="zen-site-data-section">
|
||||
<hbox class="zen-site-data-section-header">
|
||||
<label data-l10n-id="unified-extensions-header-title" flex="1" />
|
||||
<label data-l10n-id="zen-generic-manage" />
|
||||
</hbox>
|
||||
<hbox class="panel-subview-body" context="unified-extensions-context-menu" id="zen-site-data-addons">
|
||||
<html:div id="unified-extensions-messages-container">
|
||||
<!-- messages will be inserted here -->
|
||||
</html:div>
|
||||
|
||||
<vbox id="overflowed-extensions-list">
|
||||
<!-- overflowed extension buttons from the nav-bar will go here -->
|
||||
</vbox>
|
||||
|
||||
<vbox id="unified-extensions-area">
|
||||
<!-- default area for extension browser action buttons -->
|
||||
</vbox>
|
||||
|
||||
<vbox class="unified-extensions-list">
|
||||
<!-- active visible extensions go here -->
|
||||
</vbox>
|
||||
|
||||
<vbox id="zen-site-data-new-addon-button-container">
|
||||
<toolbarbutton id="zen-site-data-new-addon-button"
|
||||
class="subviewbutton toolbarbutton-1" />
|
||||
</vbox>
|
||||
</hbox>
|
||||
|
||||
# Keep this button on the DOM even though we hide it for ever,
|
||||
# again, to keep firefox happy if they decide to change functionality
|
||||
# for this specific button / id
|
||||
<toolbarbutton id="unified-extensions-manage-extensions"
|
||||
class="subviewbutton panel-subview-footer-button unified-extensions-manage-extensions"
|
||||
data-l10n-id="unified-extensions-manage-extensions"
|
||||
hidden="true" />
|
||||
</vbox>
|
||||
<vbox class="zen-site-data-section">
|
||||
<hbox class="zen-site-data-section-header">
|
||||
<label data-l10n-id="zen-site-data-settings" flex="1" />
|
||||
<label data-l10n-id="zen-generic-manage" />
|
||||
</hbox>
|
||||
<vstack id="zen-site-data-settings-list">
|
||||
<!-- settings will be inserted here -->
|
||||
</vstack>
|
||||
</vbox>
|
||||
</panelview>
|
||||
</panelmultiview>
|
||||
</panel>
|
@@ -5,5 +5,6 @@
|
||||
#include zen-panels/gradient-generator.inc
|
||||
#include zen-panels/emojis-picker.inc
|
||||
#include zen-panels/folders-search.inc
|
||||
#include zen-panels/site-data.inc
|
||||
|
||||
#include zen-panels/popups.inc
|
||||
|
13
src/browser/components/tabbrowser/TabsList-sys-mjs.patch
Normal file
13
src/browser/components/tabbrowser/TabsList-sys-mjs.patch
Normal file
@@ -0,0 +1,13 @@
|
||||
diff --git a/browser/components/tabbrowser/TabsList.sys.mjs b/browser/components/tabbrowser/TabsList.sys.mjs
|
||||
index 97990af166b63cae4b0343c77da5084850890504..b58d20eb3db82867030292625d45277afce1bbea 100644
|
||||
--- a/browser/components/tabbrowser/TabsList.sys.mjs
|
||||
+++ b/browser/components/tabbrowser/TabsList.sys.mjs
|
||||
@@ -87,7 +87,7 @@ class TabsListBase {
|
||||
/** @type {function(MozTabbrowserTab):boolean} */
|
||||
this.filterFn = onlyHiddenTabs
|
||||
? tab => filterFn(tab) && tab.hidden
|
||||
- : filterFn;
|
||||
+ : tab => !tab.hasAttribute("zen-empty-tab") && filterFn(tab);
|
||||
/** @type {Element} */
|
||||
this.containerNode = containerNode;
|
||||
/** @type {Element|null} */
|
@@ -1,12 +1,12 @@
|
||||
diff --git a/browser/components/urlbar/UrlbarController.sys.mjs b/browser/components/urlbar/UrlbarController.sys.mjs
|
||||
index 36e3ab4a5a153230bb488b66dda7e3e7c763ca23..81f2944b939ac0963c129f86aab0b55817349401 100644
|
||||
index 36e3ab4a5a153230bb488b66dda7e3e7c763ca23..cc4ea61914a316451fa54b01a5c8c6a305e4038a 100644
|
||||
--- a/browser/components/urlbar/UrlbarController.sys.mjs
|
||||
+++ b/browser/components/urlbar/UrlbarController.sys.mjs
|
||||
@@ -434,6 +434,8 @@ export class UrlbarController {
|
||||
});
|
||||
}
|
||||
event.preventDefault();
|
||||
+ } else {
|
||||
+ } else if (!this.input.value && !(event.ctrlKey || event.altKey || event.shiftKey)) {
|
||||
+ this.browserWindow.gZenUIManager.enableCommandsMode(event);
|
||||
}
|
||||
break;
|
||||
|
@@ -0,0 +1,12 @@
|
||||
diff --git a/browser/components/urlbar/UrlbarProvidersManager.sys.mjs b/browser/components/urlbar/UrlbarProvidersManager.sys.mjs
|
||||
index 555273f6ea1efd77aa3062b9910bbfe28568775d..5c4a46c926913ab592f5e12908b8817410abe6b6 100644
|
||||
--- a/browser/components/urlbar/UrlbarProvidersManager.sys.mjs
|
||||
+++ b/browser/components/urlbar/UrlbarProvidersManager.sys.mjs
|
||||
@@ -716,6 +716,7 @@ export class Query {
|
||||
if (
|
||||
result.heuristic &&
|
||||
this.context.searchMode &&
|
||||
+ !(this.context.searchMode.source === lazy.UrlbarUtils.RESULT_SOURCE.ZEN_ACTIONS && result.payload?.zenAction) &&
|
||||
(!this.context.trimmedSearchString ||
|
||||
(!this.context.searchMode.engineName && !result.autofill))
|
||||
) {
|
@@ -74,7 +74,8 @@
|
||||
}
|
||||
|
||||
#appMenu-zoom-controls,
|
||||
#PanelUI-zen-gradient-generator-color-add {
|
||||
#PanelUI-zen-gradient-generator-color-add,
|
||||
#zen-site-data-new-addon-button {
|
||||
list-style-image: url('plus.svg') !important;
|
||||
}
|
||||
|
||||
@@ -466,8 +467,14 @@
|
||||
}
|
||||
|
||||
/* permissions */
|
||||
#permissions-granted-icon {
|
||||
list-style-image: url('permissions.svg') !important;
|
||||
#identity-permission-box,
|
||||
#identity-icon-box {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
#zen-site-data-icon {
|
||||
list-style-image: url('permissions.svg');
|
||||
-moz-context-properties: fill, fill-opacity;
|
||||
}
|
||||
|
||||
.geo-icon {
|
||||
|
@@ -1,6 +1,11 @@
|
||||
// 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/.
|
||||
|
||||
ChromeUtils.defineESModuleGetters(this, {
|
||||
nsZenSiteDataPanel: 'resource:///modules/ZenSiteDataPanel.sys.mjs',
|
||||
});
|
||||
|
||||
var gZenUIManager = {
|
||||
_popupTrackingElements: [],
|
||||
_hoverPausedForExpand: false,
|
||||
@@ -14,19 +19,6 @@ var gZenUIManager = {
|
||||
init() {
|
||||
document.addEventListener('popupshowing', this.onPopupShowing.bind(this));
|
||||
document.addEventListener('popuphidden', this.onPopupHidden.bind(this));
|
||||
XPCOMUtils.defineLazyPreferenceGetter(
|
||||
this,
|
||||
'contentElementSeparation',
|
||||
'zen.theme.content-element-separation',
|
||||
0
|
||||
);
|
||||
XPCOMUtils.defineLazyPreferenceGetter(this, 'urlbarWaitToClear', 'zen.urlbar.wait-to-clear', 0);
|
||||
XPCOMUtils.defineLazyPreferenceGetter(
|
||||
this,
|
||||
'urlbarShowDomainOnly',
|
||||
'zen.urlbar.show-domain-only-in-sidebar',
|
||||
true
|
||||
);
|
||||
|
||||
document.addEventListener('mousedown', this.handleMouseDown.bind(this), true);
|
||||
|
||||
@@ -44,6 +36,8 @@ var gZenUIManager = {
|
||||
return document.getElementById('zen-toast-container');
|
||||
});
|
||||
|
||||
window.gZenSiteDataPanel = new nsZenSiteDataPanel(window);
|
||||
|
||||
gURLBar._zenTrimURL = this.urlbarTrim.bind(this);
|
||||
|
||||
new ResizeObserver(
|
||||
@@ -215,8 +209,10 @@ var gZenUIManager = {
|
||||
!el.contains(showEvent.explicitOriginalTarget) ||
|
||||
(showEvent.explicitOriginalTarget instanceof Element &&
|
||||
showEvent.explicitOriginalTarget?.closest('panel')) ||
|
||||
// See bug #7590: Ignore menupopup elements opening
|
||||
showEvent.explicitOriginalTarget.tagName === 'menupopup'
|
||||
// See bug #7590: Ignore menupopup elements opening.
|
||||
// Also see #10612 for the exclusion of the zen-appcontent-navbar-wrapper
|
||||
(showEvent.explicitOriginalTarget.tagName === 'menupopup' &&
|
||||
el.id !== 'zen-appcontent-navbar-wrapper')
|
||||
) {
|
||||
continue;
|
||||
}
|
||||
@@ -260,7 +256,7 @@ var gZenUIManager = {
|
||||
gURLBar.removeAttribute('animate-searchmode');
|
||||
delete this._animatingSearchModeTimeout;
|
||||
});
|
||||
}, 700);
|
||||
}, 1000);
|
||||
}
|
||||
}
|
||||
},
|
||||
@@ -594,6 +590,26 @@ var gZenUIManager = {
|
||||
},
|
||||
};
|
||||
|
||||
XPCOMUtils.defineLazyPreferenceGetter(
|
||||
gZenUIManager,
|
||||
'contentElementSeparation',
|
||||
'zen.theme.content-element-separation',
|
||||
0
|
||||
);
|
||||
|
||||
XPCOMUtils.defineLazyPreferenceGetter(
|
||||
gZenUIManager,
|
||||
'urlbarWaitToClear',
|
||||
'zen.urlbar.wait-to-clear',
|
||||
0
|
||||
);
|
||||
XPCOMUtils.defineLazyPreferenceGetter(
|
||||
gZenUIManager,
|
||||
'urlbarShowDomainOnly',
|
||||
'zen.urlbar.show-domain-only-in-sidebar',
|
||||
true
|
||||
);
|
||||
|
||||
var gZenVerticalTabsManager = {
|
||||
init() {
|
||||
this._multiWindowFeature = new nsZenMultiWindowFeature();
|
||||
|
@@ -103,10 +103,15 @@
|
||||
/* Mark: URL Bar */
|
||||
@keyframes zen-urlbar-searchmode {
|
||||
0% {
|
||||
box-shadow: 0 0 20px color-mix(in srgb, var(--zen-primary-color), var(--toolbox-textcolor) 20%);
|
||||
box-shadow: 0 0 20px
|
||||
color-mix(
|
||||
in srgb,
|
||||
color-mix(in srgb, var(--zen-primary-color), var(--toolbox-textcolor) 20%),
|
||||
light-dark(rgba(0, 0, 0, 0.3), transparent) 50%
|
||||
);
|
||||
}
|
||||
|
||||
100% {
|
||||
box-shadow: 0 0 300px color-mix(in srgb, var(--zen-primary-color), transparent 100%);
|
||||
box-shadow: 0 0 250px color-mix(in srgb, var(--zen-primary-color), transparent 100%);
|
||||
}
|
||||
}
|
||||
|
@@ -172,8 +172,8 @@
|
||||
|
||||
& .urlbar-background {
|
||||
--zen-urlbar-background-base: light-dark(
|
||||
white,
|
||||
color-mix(in srgb, hsl(0, 0%, 1%), var(--zen-colors-primary) 25%)
|
||||
#fbfbfb,
|
||||
color-mix(in srgb, hsl(0, 0%, 1%), var(--zen-colors-primary) 30%)
|
||||
);
|
||||
@media -moz-pref('zen.theme.acrylic-elements') {
|
||||
--zen-urlbar-background-transparent: color-mix(
|
||||
@@ -186,7 +186,7 @@
|
||||
--zen-urlbar-background-transparent,
|
||||
var(--zen-urlbar-background-base)
|
||||
) !important;
|
||||
box-shadow: 0px 0px 90px -10px light-dark(rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.75)) !important;
|
||||
box-shadow: 0px 30px 140px -15px light-dark(rgba(0, 0, 0, 0.8), rgba(0, 0, 0, 0.6)) !important;
|
||||
backdrop-filter: none !important;
|
||||
outline: 0.5px solid light-dark(rgba(0, 0, 0, 0.2), rgba(255, 255, 255, 0.2)) !important;
|
||||
outline-offset: var(--zen-urlbar-outline-offset) !important;
|
||||
@@ -208,7 +208,7 @@
|
||||
height: 100%;
|
||||
border-radius: inherit;
|
||||
pointer-events: none;
|
||||
animation: zen-urlbar-searchmode ease-out 0.7s forwards;
|
||||
animation: zen-urlbar-searchmode ease-out 1s forwards;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -224,17 +224,7 @@
|
||||
display: none;
|
||||
}
|
||||
|
||||
#identity-box:not([pageproxystate='invalid']):not(.notSecure) #identity-icon-box:not([open]) {
|
||||
margin-inline-start: calc(-8px - 2 * var(--urlbar-icon-padding));
|
||||
transform: translateX(100%);
|
||||
opacity: 0;
|
||||
|
||||
:root:not([supress-primary-adjustment]) & {
|
||||
transition: all 0.1s ease;
|
||||
}
|
||||
}
|
||||
|
||||
#identity-permission-box > *:not(#permissions-granted-icon) {
|
||||
#identity-permission-box > *:not(#zen-site-data-icon) {
|
||||
visibility: collapse;
|
||||
}
|
||||
|
||||
@@ -242,25 +232,11 @@
|
||||
display: none;
|
||||
}
|
||||
|
||||
#urlbar[open]
|
||||
:is(#tracking-protection-icon-container, .urlbar-page-action, .identity-box-button):not(
|
||||
[hidden]
|
||||
):not(#identity-permission-box),
|
||||
#urlbar:hover #identity-icon-box {
|
||||
opacity: 1 !important;
|
||||
margin-inline-start: 0 !important;
|
||||
transform: none !important;
|
||||
display: flex;
|
||||
#urlbar:not(:hover) & {
|
||||
transition: none;
|
||||
}
|
||||
}
|
||||
|
||||
#urlbar:not([open]) #userContext-icons {
|
||||
margin-inline: 0;
|
||||
}
|
||||
|
||||
#urlbar:not([open]) {
|
||||
#urlbar:not([breakout-extend='true']) {
|
||||
#identity-box:not([pageproxystate='invalid']) {
|
||||
order: 2;
|
||||
}
|
||||
@@ -678,4 +654,5 @@
|
||||
|
||||
#urlbar-search-mode-indicator-title {
|
||||
font-weight: 600;
|
||||
padding: 0px;
|
||||
}
|
||||
|
@@ -241,12 +241,6 @@ panel {
|
||||
margin-inline: 0;
|
||||
}
|
||||
|
||||
#identity-popup-mainView > toolbarseparator:first-child,
|
||||
#unified-extensions-view > toolbarseparator:first-child {
|
||||
display: none;
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
menupopup,
|
||||
panel {
|
||||
box-shadow: none;
|
||||
|
@@ -43,7 +43,8 @@ body > #confetti {
|
||||
}
|
||||
|
||||
/* Firefox View */
|
||||
#firefox-view-button {
|
||||
#firefox-view-button,
|
||||
#wrapper-firefox-view-button {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
@@ -260,3 +261,98 @@ body > #confetti {
|
||||
#customization-container {
|
||||
--toolbar-bgcolor: var(--zen-dialog-background);
|
||||
}
|
||||
|
||||
/* Site Data popup */
|
||||
|
||||
#zen-unified-site-data-panel {
|
||||
--panel-padding: 0px;
|
||||
--panel-width: 250px;
|
||||
--menu-panel-width-wide: calc(var(--panel-width) - var(--panel-padding) * 2);
|
||||
--uei-icon-size: 14px;
|
||||
--arrowpanel-menuitem-border-radius: 10px;
|
||||
}
|
||||
|
||||
#unified-extensions-messages-container {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#zen-site-data-addons {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 6px;
|
||||
overflow: visible;
|
||||
|
||||
.unified-extensions-item-name,
|
||||
.unified-extensions-item-message,
|
||||
.unified-extensions-item-message-hover,
|
||||
.unified-extensions-item-message-hover-menu-button,
|
||||
.unified-extensions-item-menu-button {
|
||||
display: none;
|
||||
}
|
||||
|
||||
#overflowed-extensions-list,
|
||||
#unified-extensions-area,
|
||||
.unified-extensions-list,
|
||||
#zen-site-data-new-addon-button-container {
|
||||
display: contents;
|
||||
|
||||
&:empty {
|
||||
display: none;
|
||||
}
|
||||
|
||||
& > * {
|
||||
background-color: color-mix(in srgb, currentcolor 6%, transparent);
|
||||
width: 42px;
|
||||
height: 28px;
|
||||
margin: 0;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
border-radius: 6px;
|
||||
transition:
|
||||
background-color 0.1s ease-in-out,
|
||||
transform 0.12s ease-in-out;
|
||||
|
||||
& .toolbarbutton-badge-stack {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
transform: scale(1.05);
|
||||
}
|
||||
|
||||
&:active:hover {
|
||||
transform: scale(0.95);
|
||||
background-color: color-mix(in srgb, currentcolor 10%, transparent);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.zen-site-data-section {
|
||||
gap: 6px;
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
.zen-site-data-section-header {
|
||||
font-weight: 500;
|
||||
font-size: small;
|
||||
|
||||
& label {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
& > label:nth-child(2) {
|
||||
font-weight: 400;
|
||||
font-size: smaller;
|
||||
transition: opacity 0.15s ease-in-out;
|
||||
opacity: 0;
|
||||
|
||||
.zen-site-data-section:hover & {
|
||||
opacity: 0.8;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#zen-site-data-new-addon-button .toolbarbutton-text {
|
||||
display: none;
|
||||
}
|
||||
|
@@ -322,6 +322,9 @@
|
||||
}
|
||||
|
||||
& #zen-appcontent-navbar-wrapper {
|
||||
& .zen-toolbar-background {
|
||||
display: flex;
|
||||
}
|
||||
--zen-compact-toolbar-offset: 5px;
|
||||
position: absolute;
|
||||
top: calc(-1 * var(--zen-toolbar-height) + 1px);
|
||||
@@ -360,9 +363,6 @@
|
||||
) {
|
||||
& #zen-appcontent-navbar-container {
|
||||
visibility: visible !important;
|
||||
& .zen-toolbar-background {
|
||||
display: flex;
|
||||
}
|
||||
}
|
||||
border-top-width: 0px;
|
||||
|
||||
|
@@ -1,27 +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/.
|
||||
|
||||
const FILE_NAME = 'zen-sessions.jsonlz4';
|
||||
|
||||
export class nsZenSessionFile {
|
||||
#path;
|
||||
|
||||
#windows;
|
||||
|
||||
constructor() {
|
||||
this.#path = PathUtils.join(profileDir, FILE_NAME);
|
||||
}
|
||||
|
||||
async read() {
|
||||
try {
|
||||
return await IOUtils.readJSON(this.#path, { compress: true });
|
||||
} catch (e) {
|
||||
return {};
|
||||
}
|
||||
}
|
||||
|
||||
async write(data) {
|
||||
await IOUtils.writeJSON(this.#path, data, { compress: true });
|
||||
}
|
||||
}
|
@@ -1,50 +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 {
|
||||
cancelIdleCallback,
|
||||
clearTimeout,
|
||||
requestIdleCallback,
|
||||
setTimeout,
|
||||
} from 'resource://gre/modules/Timer.sys.mjs';
|
||||
|
||||
const lazy = {};
|
||||
|
||||
ChromeUtils.defineESModuleGetters(lazy, {
|
||||
ZenSessionFile: 'resource://gre/modules/ZenSessionFile.sys.mjs',
|
||||
PrivateBrowsingUtils: 'resource://gre/modules/PrivateBrowsingUtils.sys.mjs',
|
||||
RunState: 'resource:///modules/sessionstore/RunState.sys.mjs',
|
||||
});
|
||||
|
||||
class nsZenSessionManager {
|
||||
#file;
|
||||
|
||||
constructor() {
|
||||
this.#file = null;
|
||||
}
|
||||
|
||||
get file() {
|
||||
if (!this.#file) {
|
||||
this.#file = lazy.ZenSessionFile;
|
||||
}
|
||||
return this.#file;
|
||||
}
|
||||
|
||||
/**
|
||||
* Saves the current session state. Collects data and writes to disk.
|
||||
*
|
||||
* @param forceUpdateAllWindows (optional)
|
||||
* Forces us to recollect data for all windows and will bypass and
|
||||
* update the corresponding caches.
|
||||
*/
|
||||
saveState(forceUpdateAllWindows = false) {
|
||||
if (lazy.PrivateBrowsingUtils.permanentPrivateBrowsing) {
|
||||
// Don't save (or even collect) anything in permanent private
|
||||
// browsing mode
|
||||
return Promise.resolve();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
export const ZenSessionStore = new nsZenSessionManager();
|
@@ -1,35 +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/.
|
||||
|
||||
export class ZenSessionWindow {
|
||||
#id;
|
||||
#selectedWorkspace;
|
||||
#selectedTab;
|
||||
|
||||
constructor(id) {
|
||||
this.#id = id;
|
||||
this.#selectedWorkspace = null;
|
||||
this.#selectedTab = null;
|
||||
}
|
||||
|
||||
get id() {
|
||||
return this.#id;
|
||||
}
|
||||
|
||||
get selectedWorkspace() {
|
||||
return this.#selectedWorkspace;
|
||||
}
|
||||
|
||||
set selectedWorkspace(workspace) {
|
||||
this.#selectedWorkspace = workspace;
|
||||
}
|
||||
|
||||
get selectedTab() {
|
||||
return this.#selectedTab;
|
||||
}
|
||||
|
||||
set selectedTab(tab) {
|
||||
this.#selectedTab = tab;
|
||||
}
|
||||
}
|
@@ -97,7 +97,6 @@
|
||||
}
|
||||
|
||||
onTabIconChanged(tab, url = null) {
|
||||
tab.dispatchEvent(new CustomEvent('ZenTabIconChanged', { bubbles: true, detail: { tab } }));
|
||||
const iconUrl = url ?? tab.iconImage.src;
|
||||
if (!iconUrl && tab.hasAttribute('zen-pin-id')) {
|
||||
try {
|
||||
@@ -1512,7 +1511,6 @@
|
||||
}
|
||||
|
||||
async onTabLabelChanged(tab) {
|
||||
tab.dispatchEvent(new CustomEvent('ZenTabLabelChanged', { detail: { tab } }));
|
||||
if (!this._pinsCache) {
|
||||
return;
|
||||
}
|
||||
|
223
src/zen/urlbar/ZenSiteDataPanel.sys.mjs
Normal file
223
src/zen/urlbar/ZenSiteDataPanel.sys.mjs
Normal file
@@ -0,0 +1,223 @@
|
||||
/* 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/. */
|
||||
|
||||
export class nsZenSiteDataPanel {
|
||||
constructor(window) {
|
||||
this.window = window;
|
||||
this.document = window.document;
|
||||
|
||||
this.panel = this.document.getElementById('zen-unified-site-data-panel');
|
||||
this.#init();
|
||||
}
|
||||
|
||||
#init() {
|
||||
// Add a new button to the urlbar popup
|
||||
const button = this.window.MozXULElement.parseXULToFragment(`
|
||||
<box id="zen-site-data-icon" role="button" align="center" class="identity-box-button">
|
||||
<image id="zen-site-data-icon"/>
|
||||
</box>
|
||||
`);
|
||||
this.anchor = button.querySelector('#zen-site-data-icon');
|
||||
this.document.getElementById('identity-icon-box').after(button);
|
||||
|
||||
// Remove the old permissions dialog
|
||||
this.document.getElementById('unified-extensions-panel-template').remove();
|
||||
|
||||
this.#initEventListeners();
|
||||
}
|
||||
|
||||
#initEventListeners() {
|
||||
this.anchor.addEventListener('click', this);
|
||||
this.document
|
||||
.getElementById('zen-site-data-new-addon-button')
|
||||
.addEventListener('command', this);
|
||||
}
|
||||
|
||||
show(event) {
|
||||
this.#preparePanel();
|
||||
|
||||
this.window.PanelMultiView.openPopup(this.panel, this.anchor, {
|
||||
triggerEvent: event,
|
||||
});
|
||||
}
|
||||
|
||||
#preparePanel() {
|
||||
this.#setSitePermissions();
|
||||
}
|
||||
|
||||
#setSitePermissions() {
|
||||
const { gBrowser, SitePermissions } = this.window;
|
||||
const list = this.document.getElementById('zen-site-data-settings-list');
|
||||
const section = list.closest('.zen-site-data-section');
|
||||
|
||||
// show permission icons
|
||||
let permissions = SitePermissions.getAllPermissionDetailsForBrowser(gBrowser.selectedBrowser);
|
||||
|
||||
// Don't display origin-keyed 3rdPartyStorage permissions that are covered by
|
||||
// site-keyed 3rdPartyFrameStorage permissions.
|
||||
let thirdPartyStorageSites = new Set(
|
||||
permissions
|
||||
.map(function (permission) {
|
||||
let [id, key] = permission.id.split(SitePermissions.PERM_KEY_DELIMITER);
|
||||
if (id == '3rdPartyFrameStorage') {
|
||||
return key;
|
||||
}
|
||||
return null;
|
||||
})
|
||||
.filter(function (key) {
|
||||
return key != null;
|
||||
})
|
||||
);
|
||||
permissions = permissions.filter(function (permission) {
|
||||
let [id, key] = permission.id.split(SitePermissions.PERM_KEY_DELIMITER);
|
||||
if (id != '3rdPartyStorage') {
|
||||
return true;
|
||||
}
|
||||
try {
|
||||
let origin = Services.io.newURI(key);
|
||||
let site = Services.eTLD.getSite(origin);
|
||||
return !thirdPartyStorageSites.has(site);
|
||||
} catch {
|
||||
return false;
|
||||
}
|
||||
});
|
||||
|
||||
this._sharingState = gBrowser.selectedTab._sharingState;
|
||||
|
||||
if (this._sharingState?.geo) {
|
||||
let geoPermission = permissions.find((perm) => perm.id === 'geo');
|
||||
if (geoPermission) {
|
||||
geoPermission.sharingState = true;
|
||||
} else {
|
||||
permissions.push({
|
||||
id: 'geo',
|
||||
state: SitePermissions.ALLOW,
|
||||
scope: SitePermissions.SCOPE_REQUEST,
|
||||
sharingState: true,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
if (this._sharingState?.xr) {
|
||||
let xrPermission = permissions.find((perm) => perm.id === 'xr');
|
||||
if (xrPermission) {
|
||||
xrPermission.sharingState = true;
|
||||
} else {
|
||||
permissions.push({
|
||||
id: 'xr',
|
||||
state: SitePermissions.ALLOW,
|
||||
scope: SitePermissions.SCOPE_REQUEST,
|
||||
sharingState: true,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
if (this._sharingState?.webRTC) {
|
||||
let webrtcState = this._sharingState.webRTC;
|
||||
// If WebRTC device or screen are in use, we need to find
|
||||
// the associated ALLOW permission item to set the sharingState field.
|
||||
for (let id of ['camera', 'microphone', 'screen']) {
|
||||
if (webrtcState[id]) {
|
||||
let found = false;
|
||||
for (let permission of permissions) {
|
||||
let [permId] = permission.id.split(SitePermissions.PERM_KEY_DELIMITER);
|
||||
if (permId != id || permission.state != SitePermissions.ALLOW) {
|
||||
continue;
|
||||
}
|
||||
found = true;
|
||||
permission.sharingState = webrtcState[id];
|
||||
}
|
||||
if (!found) {
|
||||
// If the ALLOW permission item we were looking for doesn't exist,
|
||||
// the user has temporarily allowed sharing and we need to add
|
||||
// an item in the permissions array to reflect this.
|
||||
permissions.push({
|
||||
id,
|
||||
state: SitePermissions.ALLOW,
|
||||
scope: SitePermissions.SCOPE_REQUEST,
|
||||
sharingState: webrtcState[id],
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
list.innerHTML = '';
|
||||
let totalBlockedPopups = gBrowser.selectedBrowser.popupBlocker.getBlockedPopupCount();
|
||||
for (let permission of permissions) {
|
||||
let [id, key] = permission.id.split(SitePermissions.PERM_KEY_DELIMITER);
|
||||
|
||||
if (id == 'storage-access') {
|
||||
// Ignore storage access permissions here, they are made visible inside
|
||||
// the Content Blocking UI.
|
||||
continue;
|
||||
}
|
||||
|
||||
let item = this.#createPermissionItem(id, key, permission);
|
||||
if (item) {
|
||||
list.appendChild(item);
|
||||
}
|
||||
}
|
||||
|
||||
section.hidden = list.childElementCount == 0;
|
||||
}
|
||||
|
||||
#createPermissionItem(id, key, permission) {
|
||||
const { SitePermissions } = this.window;
|
||||
|
||||
// Create a permission item for the site data panel.
|
||||
let container = document.createXULElement('hbox');
|
||||
const idNoSuffix = permission.id;
|
||||
container.classList.add(
|
||||
'permission-popup-permission-item',
|
||||
`permission-popup-permission-item-${idNoSuffix}`
|
||||
);
|
||||
container.setAttribute('align', 'center');
|
||||
container.setAttribute('role', 'group');
|
||||
|
||||
let img = document.createXULElement('image');
|
||||
img.classList.add('permission-popup-permission-icon', idNoSuffix + '-icon');
|
||||
if (
|
||||
permission.state == SitePermissions.BLOCK ||
|
||||
permission.state == SitePermissions.AUTOPLAY_BLOCKED_ALL
|
||||
) {
|
||||
img.classList.add('blocked-permission-icon');
|
||||
}
|
||||
|
||||
let nameLabel = document.createXULElement('label');
|
||||
nameLabel.setAttribute('flex', '1');
|
||||
nameLabel.setAttribute('class', 'permission-popup-permission-label');
|
||||
let label = SitePermissions.getPermissionLabel(permission.id);
|
||||
if (label === null) {
|
||||
return null;
|
||||
}
|
||||
nameLabel.textContent = label;
|
||||
|
||||
container.appendChild(img);
|
||||
container.appendChild(nameLabel);
|
||||
return container;
|
||||
}
|
||||
|
||||
#onCommandEvent(event) {
|
||||
const id = event.target.id;
|
||||
switch (id) {
|
||||
case 'zen-site-data-new-addon-button':
|
||||
const { BrowserAddonUI } = this.window;
|
||||
BrowserAddonUI.openAddonsMgr('addons://list/extension');
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
handleEvent(event) {
|
||||
const type = event.type;
|
||||
switch (type) {
|
||||
case 'click':
|
||||
this.show(event);
|
||||
break;
|
||||
case 'command':
|
||||
this.#onCommandEvent(event);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
@@ -15,7 +15,7 @@ const DYNAMIC_TYPE_NAME = 'zen-actions';
|
||||
const MAX_RECENT_ACTIONS = 5;
|
||||
|
||||
const MINIMUM_QUERY_SCORE = 92;
|
||||
const MINIMUM_PREFIXED_QUERY_SCORE = 50;
|
||||
const MINIMUM_PREFIXED_QUERY_SCORE = 30;
|
||||
|
||||
ChromeUtils.defineESModuleGetters(lazy, {
|
||||
UrlbarResult: 'resource:///modules/UrlbarResult.sys.mjs',
|
||||
@@ -242,15 +242,15 @@ export class ZenUrlbarProviderGlobalActions extends UrlbarProvider {
|
||||
}
|
||||
|
||||
const ownerGlobal = lazy.BrowserWindowTracker.getTopWindow();
|
||||
const finalResults = [];
|
||||
let finalResults = [];
|
||||
for (const action of actionsResults) {
|
||||
const [payload, payloadHighlights] = lazy.UrlbarResult.payloadAndSimpleHighlights([], {
|
||||
suggestion: action.label,
|
||||
title: action.label,
|
||||
query: queryContext.searchString,
|
||||
zenCommand: action.command,
|
||||
dynamicType: DYNAMIC_TYPE_NAME,
|
||||
zenAction: true,
|
||||
query: isPrefixed ? action.label.trimStart() : queryContext.searchString,
|
||||
icon: action.icon,
|
||||
shortcutContent: ownerGlobal.gZenKeyboardShortcutsManager.getShortcutDisplayFromCommand(
|
||||
action.command
|
||||
@@ -265,7 +265,7 @@ export class ZenUrlbarProviderGlobalActions extends UrlbarProvider {
|
||||
payload,
|
||||
payloadHighlights
|
||||
);
|
||||
if (zenUrlbarResultsLearner.shouldPrioritize(action.commandId)) {
|
||||
if (zenUrlbarResultsLearner.shouldPrioritize(action.commandId) && !isPrefixed) {
|
||||
result.heuristic = true;
|
||||
} else {
|
||||
result.suggestedIndex = zenUrlbarResultsLearner.getDeprioritizeIndex(action.commandId);
|
||||
@@ -278,8 +278,14 @@ export class ZenUrlbarProviderGlobalActions extends UrlbarProvider {
|
||||
}
|
||||
finalResults.push(result);
|
||||
}
|
||||
let i = 0;
|
||||
zenUrlbarResultsLearner.sortCommandsByPriority(finalResults).forEach((result) => {
|
||||
if (isPrefixed && i === 0 && query.length > 1) {
|
||||
result.heuristic = true;
|
||||
delete result.suggestedIndex;
|
||||
}
|
||||
addCallback(this, result);
|
||||
i++;
|
||||
});
|
||||
}
|
||||
|
||||
|
@@ -37,16 +37,16 @@ const globalActionsTemplate = [
|
||||
command: (window) => window.openPreferences(),
|
||||
icon: 'chrome://browser/skin/zen-icons/settings.svg',
|
||||
},
|
||||
{
|
||||
label: 'Open New Window',
|
||||
command: 'cmd_newNavigator',
|
||||
icon: 'chrome://browser/skin/zen-icons/window.svg',
|
||||
},
|
||||
{
|
||||
label: 'Open Private Window',
|
||||
command: 'Tools:PrivateBrowsing',
|
||||
icon: 'chrome://browser/skin/zen-icons/private-window.svg',
|
||||
},
|
||||
{
|
||||
label: 'Open New Window',
|
||||
command: 'cmd_newNavigator',
|
||||
icon: 'chrome://browser/skin/zen-icons/window.svg',
|
||||
},
|
||||
{
|
||||
label: 'Pin Tab',
|
||||
command: 'cmd_zenTogglePinTab',
|
||||
|
@@ -7,7 +7,7 @@ import { XPCOMUtils } from 'resource://gre/modules/XPCOMUtils.sys.mjs';
|
||||
const lazy = {};
|
||||
|
||||
const DEFAULT_DB_DATA = '{}';
|
||||
const DEPRIORITIZE_MAX = -4;
|
||||
const DEPRIORITIZE_MAX = -5;
|
||||
const PRIORITIZE_MAX = 5;
|
||||
|
||||
function addDataToLazy(data) {
|
||||
|
@@ -3,6 +3,7 @@
|
||||
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
||||
|
||||
EXTRA_JS_MODULES += [
|
||||
"ZenSiteDataPanel.sys.mjs",
|
||||
"ZenUBActionsProvider.sys.mjs",
|
||||
"ZenUBGlobalActions.sys.mjs",
|
||||
"ZenUBProvider.sys.mjs",
|
||||
|
@@ -1,308 +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/.
|
||||
{
|
||||
class nsZenWorkspaceWindowSync extends nsZenMultiWindowFeature {
|
||||
#ignoreNextEvents = false;
|
||||
#waitForPromise = null;
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
if (!window.closed) {
|
||||
this.init();
|
||||
}
|
||||
}
|
||||
|
||||
async init() {
|
||||
await gZenWorkspaces.promiseInitialized;
|
||||
this.#makeSureAllTabsHaveIds();
|
||||
this.#setUpEventListeners();
|
||||
}
|
||||
|
||||
#makeSureAllTabsHaveIds() {
|
||||
const allTabs = gZenWorkspaces.allStoredTabs;
|
||||
for (const tab of allTabs) {
|
||||
if (!tab.hasAttribute('zen-sync-id') && !tab.hasAttribute('zen-empty-tab')) {
|
||||
const tabId = gZenUIManager.generateUuidv4();
|
||||
tab.setAttribute('zen-sync-id', tabId);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#setUpEventListeners() {
|
||||
const kEvents = [
|
||||
'TabClose',
|
||||
'TabOpen',
|
||||
'TabMove',
|
||||
|
||||
'TabPinned',
|
||||
'TabUnpinned',
|
||||
|
||||
'TabAddedToEssentials',
|
||||
'TabRemovedFromEssentials',
|
||||
|
||||
'TabHide',
|
||||
'TabShow',
|
||||
|
||||
'ZenTabIconChanged',
|
||||
'ZenTabLabelChanged',
|
||||
|
||||
'TabGroupCreate',
|
||||
'TabGroupRemoved',
|
||||
'TabGrouped',
|
||||
'TabUngrouped',
|
||||
'TabGroupMoved',
|
||||
];
|
||||
const eventListener = this.#handleEvent.bind(this);
|
||||
for (const event of kEvents) {
|
||||
window.addEventListener(event, eventListener);
|
||||
}
|
||||
|
||||
window.addEventListener('unload', () => {
|
||||
for (const event of kEvents) {
|
||||
window.removeEventListener(event, eventListener);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
#handleEvent(event) {
|
||||
this.#propagateToOtherWindows(event);
|
||||
}
|
||||
|
||||
async #propagateToOtherWindows(event) {
|
||||
if (this.#ignoreNextEvents) {
|
||||
return;
|
||||
}
|
||||
if (this.#waitForPromise) {
|
||||
await this.#waitForPromise;
|
||||
}
|
||||
this.#waitForPromise = new Promise((resolve) => {
|
||||
this.foreachWindowAsActive(async (browser) => {
|
||||
if (browser.gZenWorkspaceWindowSync && !this.windowIsActive(browser)) {
|
||||
await browser.gZenWorkspaceWindowSync.onExternalTabEvent(event);
|
||||
}
|
||||
}).then(() => {
|
||||
resolve();
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
async onExternalTabEvent(event) {
|
||||
this.#ignoreNextEvents = true;
|
||||
switch (event.type) {
|
||||
case 'TabClose':
|
||||
this.#onTabClose(event);
|
||||
break;
|
||||
case 'TabOpen':
|
||||
await this.#onTabOpen(event);
|
||||
break;
|
||||
case 'TabPinned':
|
||||
this.#onTabPinned(event);
|
||||
break;
|
||||
case 'TabUnpinned':
|
||||
this.#onTabUnpinned(event);
|
||||
break;
|
||||
case 'TabAddedToEssentials':
|
||||
this.#onTabAddedToEssentials(event);
|
||||
break;
|
||||
case 'TabRemovedFromEssentials':
|
||||
this.#onTabRemovedFromEssentials(event);
|
||||
break;
|
||||
case 'TabHide':
|
||||
this.#onTabHide(event);
|
||||
break;
|
||||
case 'TabShow':
|
||||
this.#onTabShow(event);
|
||||
break;
|
||||
case 'TabMove':
|
||||
case 'TabGroupMoved':
|
||||
this.#onTabMove(event);
|
||||
break;
|
||||
case 'ZenTabIconChanged':
|
||||
this.#onTabIconChanged(event);
|
||||
break;
|
||||
case 'ZenTabLabelChanged':
|
||||
this.#onTabLabelChanged(event);
|
||||
break;
|
||||
case 'TabGroupCreate':
|
||||
this.#onTabGroupCreate(event);
|
||||
break;
|
||||
case 'TabGroupRemoved':
|
||||
case 'TabGrouped':
|
||||
case 'TabUngrouped':
|
||||
// Tab grouping changes are automatically synced by Firefox
|
||||
break;
|
||||
default:
|
||||
console.warn(`Unhandled event type: ${event.type}`);
|
||||
break;
|
||||
}
|
||||
this.#ignoreNextEvents = false;
|
||||
}
|
||||
|
||||
#getTabId(tab) {
|
||||
return tab.getAttribute('zen-sync-id');
|
||||
}
|
||||
|
||||
#getTabWithId(tabId) {
|
||||
for (const tab of gZenWorkspaces.allStoredTabs) {
|
||||
if (this.#getTabId(tab) === tabId) {
|
||||
return tab;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
#onTabClose(event) {
|
||||
const targetTab = event.target;
|
||||
const tabId = this.#getTabId(targetTab);
|
||||
const tabToClose = this.#getTabWithId(tabId);
|
||||
if (tabToClose) {
|
||||
gBrowser.removeTab(tabToClose);
|
||||
}
|
||||
}
|
||||
|
||||
#onTabPinned(event) {
|
||||
const targetTab = event.target;
|
||||
if (targetTab.hasAttribute('zen-essential')) {
|
||||
return this.#onTabAddedToEssentials(event);
|
||||
}
|
||||
const tabId = this.#getTabId(targetTab);
|
||||
const elementIndex = targetTab.elementIndex;
|
||||
const tabToPin = this.#getTabWithId(tabId);
|
||||
if (tabToPin) {
|
||||
gBrowser.pinTab(tabToPin);
|
||||
gBrowser.moveTabTo(tabToPin, { elementIndex, forceUngrouped: !!targetTab.group });
|
||||
}
|
||||
}
|
||||
|
||||
#onTabUnpinned(event) {
|
||||
const targetTab = event.target;
|
||||
const tabId = this.#getTabId(targetTab);
|
||||
const tabToUnpin = this.#getTabWithId(tabId);
|
||||
if (tabToUnpin) {
|
||||
gBrowser.unpinTab(tabToUnpin);
|
||||
}
|
||||
}
|
||||
|
||||
#onTabIconChanged(event) {
|
||||
this.#updateTabIconAndLabel(event);
|
||||
}
|
||||
|
||||
#onTabLabelChanged(event) {
|
||||
this.#updateTabIconAndLabel(event);
|
||||
}
|
||||
|
||||
#updateTabIconAndLabel(event) {
|
||||
const targetTab = event.target;
|
||||
const tabId = this.#getTabId(targetTab);
|
||||
const tabToChange = this.#getTabWithId(tabId);
|
||||
if (tabToChange && tabToChange.hasAttribute('pending')) {
|
||||
gBrowser.setIcon(tabToChange, gBrowser.getIcon(targetTab));
|
||||
gBrowser._setTabLabel(tabToChange, targetTab.label);
|
||||
}
|
||||
}
|
||||
|
||||
#onTabAddedToEssentials(event) {
|
||||
const targetTab = event.target;
|
||||
const tabId = this.#getTabId(targetTab);
|
||||
const tabToAdd = this.#getTabWithId(tabId);
|
||||
if (tabToAdd) {
|
||||
gZenPinnedTabManager.addToEssentials(tabToAdd);
|
||||
}
|
||||
}
|
||||
|
||||
#onTabRemovedFromEssentials(event) {
|
||||
const targetTab = event.target;
|
||||
const tabId = this.#getTabId(targetTab);
|
||||
const tabToRemove = this.#getTabWithId(tabId);
|
||||
if (tabToRemove) {
|
||||
gZenPinnedTabManager.removeFromEssentials(tabToRemove);
|
||||
}
|
||||
}
|
||||
|
||||
#onTabHide(event) {
|
||||
const targetTab = event.target;
|
||||
const tabId = this.#getTabId(targetTab);
|
||||
const tabToHide = this.#getTabWithId(tabId);
|
||||
if (tabToHide) {
|
||||
gBrowser.hideTab(tabToHide);
|
||||
}
|
||||
}
|
||||
|
||||
#onTabShow(event) {
|
||||
const targetTab = event.target;
|
||||
const tabId = this.#getTabId(targetTab);
|
||||
const tabToShow = this.#getTabWithId(tabId);
|
||||
if (tabToShow) {
|
||||
gBrowser.showTab(tabToShow);
|
||||
}
|
||||
}
|
||||
|
||||
#onTabMove(event) {
|
||||
const targetTab = event.target;
|
||||
const tabId = this.#getTabId(targetTab);
|
||||
const tabToMove = this.#getTabWithId(tabId);
|
||||
const workspaceId = targetTab.getAttribute('zen-workspace-id');
|
||||
const isEssential = targetTab.hasAttribute('zen-essential');
|
||||
if (tabToMove) {
|
||||
let tabSibling = targetTab.previousElementSibling;
|
||||
let isFirst = false;
|
||||
if (!tabSibling?.hasAttribute('zen-sync-id')) {
|
||||
isFirst = true;
|
||||
}
|
||||
gBrowser.zenHandleTabMove(tabToMove, () => {
|
||||
if (isFirst) {
|
||||
let container;
|
||||
if (isEssential) {
|
||||
container = gZenWorkspaces.getEssentialsSection(tabToMove);
|
||||
} else {
|
||||
const workspaceElement = gZenWorkspaces.workspaceElement(workspaceId);
|
||||
container = tabToMove.pinned
|
||||
? workspaceElement.pinnedTabsContainer
|
||||
: workspaceElement.tabsContainer;
|
||||
}
|
||||
container.insertBefore(tabToMove, container.firstChild);
|
||||
} else {
|
||||
let relativeTab = gZenWorkspaces.allStoredTabs.find((tab) => {
|
||||
return this.#getTabId(tab) === this.#getTabId(tabSibling);
|
||||
});
|
||||
if (relativeTab) {
|
||||
relativeTab.after(tabToMove);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
async #onTabOpen(event) {
|
||||
const targetTab = event.target;
|
||||
const isPinned = targetTab.pinned;
|
||||
const isEssential = isPinned && targetTab.hasAttribute('zen-essential');
|
||||
if (!this.#getTabId(targetTab) && !targetTab.hasAttribute('zen-empty-tab')) {
|
||||
const tabId = gZenUIManager.generateUuidv4();
|
||||
targetTab.setAttribute('zen-sync-id', tabId);
|
||||
}
|
||||
const duplicatedTab = gBrowser.addTrustedTab(targetTab.linkedBrowser.currentURI.spec, {
|
||||
createLazyBrowser: true,
|
||||
essential: isEssential,
|
||||
pinned: isPinned,
|
||||
});
|
||||
if (!isEssential) {
|
||||
gZenWorkspaces.moveTabToWorkspace(
|
||||
duplicatedTab,
|
||||
targetTab.getAttribute('zen-workspace-id')
|
||||
);
|
||||
}
|
||||
duplicatedTab.setAttribute('zen-pin-id', targetTab.getAttribute('zen-pin-id'));
|
||||
duplicatedTab.setAttribute('zen-sync-id', targetTab.getAttribute('zen-sync-id'));
|
||||
}
|
||||
|
||||
#onTabGroupCreate(event) {
|
||||
const targetGroup = event.target;
|
||||
const isSplitView = targetGroup.classList.contains('zen-split-view');
|
||||
const isFolder = targetGroup.isZenFolder;
|
||||
}
|
||||
}
|
||||
|
||||
window.gZenWorkspaceWindowSync = new nsZenWorkspaceWindowSync();
|
||||
}
|
@@ -3002,6 +3002,7 @@ var gZenWorkspaces = new (class extends nsZenMultiWindowFeature {
|
||||
|
||||
onWindowResize(event = undefined) {
|
||||
if (!(!event || event.target === window)) return;
|
||||
gZenUIManager.updateTabsToolbar();
|
||||
// Check if workspace icons overflow the parent container
|
||||
const parent = this.workspaceIcons;
|
||||
if (!parent || this._processingResize) {
|
||||
|
@@ -47,7 +47,7 @@
|
||||
line-height: 0;
|
||||
|
||||
&:is(img) {
|
||||
padding: 6px;
|
||||
width: 14px;
|
||||
}
|
||||
|
||||
&[no-icon='true'] {
|
||||
|
Reference in New Issue
Block a user