forked from ZenBrowserMirrors/zen-desktop
Compare commits
7 commits
dev
...
synced-wor
Author | SHA1 | Date | |
---|---|---|---|
|
0d0967c823 | ||
|
7fe7e898af | ||
|
d5cfdfbb43 | ||
|
40d24ffa61 | ||
|
494c8fe599 | ||
|
e7c3631a71 | ||
|
c87cd9fd04 |
559 changed files with 6122 additions and 42014 deletions
2
.gitattributes
vendored
2
.gitattributes
vendored
|
@ -1,4 +1,2 @@
|
||||||
*.patch linguist-language=C++
|
*.patch linguist-language=C++
|
||||||
*.d.ts linguist-language=TypeScript
|
*.d.ts linguist-language=TypeScript
|
||||||
|
|
||||||
src/zen/tests/*.js linguist-language=Test
|
|
||||||
|
|
16
.github/workflows/build.yml
vendored
16
.github/workflows/build.yml
vendored
|
@ -475,18 +475,7 @@ jobs:
|
||||||
if: ${{ inputs.create_release || inputs.update_branch == 'twilight' }}
|
if: ${{ inputs.create_release || inputs.update_branch == 'twilight' }}
|
||||||
permissions: write-all
|
permissions: write-all
|
||||||
name: Release
|
name: Release
|
||||||
needs:
|
needs: [build-data, linux, windows-step-3, check-release, mac-uni, appimage, source, lint, stop-self-hosted]
|
||||||
[
|
|
||||||
build-data,
|
|
||||||
linux,
|
|
||||||
windows-step-3,
|
|
||||||
check-release,
|
|
||||||
mac-uni,
|
|
||||||
appimage,
|
|
||||||
source,
|
|
||||||
lint,
|
|
||||||
stop-self-hosted,
|
|
||||||
]
|
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
environment:
|
environment:
|
||||||
name: ${{ inputs.update_branch == 'release' && 'Deploy-Release' || 'Deploy-Twilight' }}
|
name: ${{ inputs.update_branch == 'release' && 'Deploy-Release' || 'Deploy-Twilight' }}
|
||||||
|
@ -501,6 +490,9 @@ jobs:
|
||||||
- name: Download artifact
|
- name: Download artifact
|
||||||
uses: actions/download-artifact@v4
|
uses: actions/download-artifact@v4
|
||||||
|
|
||||||
|
- name: List
|
||||||
|
run: find .
|
||||||
|
|
||||||
- name: Checkout updates repository
|
- name: Checkout updates repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
with:
|
with:
|
||||||
|
|
|
@ -5,9 +5,6 @@ on:
|
||||||
- cron: '59 4 * * 2'
|
- cron: '59 4 * * 2'
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
check_candidates:
|
check_candidates:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
3
.github/workflows/code-linter.yml
vendored
3
.github/workflows/code-linter.yml
vendored
|
@ -10,9 +10,6 @@ on:
|
||||||
branches:
|
branches:
|
||||||
- dev
|
- dev
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
lint:
|
lint:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
|
|
5
.github/workflows/issue-metrics.yml
vendored
5
.github/workflows/issue-metrics.yml
vendored
|
@ -1,7 +1,4 @@
|
||||||
name: Monthly issue metrics
|
name: Monthly issue metrics
|
||||||
permissions:
|
|
||||||
contents: write
|
|
||||||
issues: read
|
|
||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
schedule:
|
schedule:
|
||||||
|
@ -62,6 +59,6 @@ jobs:
|
||||||
- name: Commit changes
|
- name: Commit changes
|
||||||
uses: stefanzweifel/git-auto-commit-action@v5
|
uses: stefanzweifel/git-auto-commit-action@v5
|
||||||
with:
|
with:
|
||||||
commit_message: 'docs: Update monthly issue metrics, b=(no bug), c={docs}'
|
commit_message: 'Update monthly issue metrics'
|
||||||
commit_user_name: Zen Browser Robot
|
commit_user_name: Zen Browser Robot
|
||||||
commit_user_email: zen-browser-auto@users.noreply.github.com
|
commit_user_email: zen-browser-auto@users.noreply.github.com
|
||||||
|
|
2
.github/workflows/macos-release-build.yml
vendored
2
.github/workflows/macos-release-build.yml
vendored
|
@ -1,6 +1,4 @@
|
||||||
name: macOS Release Build
|
name: macOS Release Build
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_call:
|
workflow_call:
|
||||||
|
|
2
.github/workflows/pr-test.yml
vendored
2
.github/workflows/pr-test.yml
vendored
|
@ -1,6 +1,4 @@
|
||||||
name: Pull request test
|
name: Pull request test
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
on:
|
on:
|
||||||
pull_request:
|
pull_request:
|
||||||
|
|
3
.github/workflows/windows-profile-build.yml
vendored
3
.github/workflows/windows-profile-build.yml
vendored
|
@ -1,8 +1,5 @@
|
||||||
name: Windows PGO Builds
|
name: Windows PGO Builds
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_call:
|
workflow_call:
|
||||||
inputs:
|
inputs:
|
||||||
|
|
3
.github/workflows/windows-release-build.yml
vendored
3
.github/workflows/windows-release-build.yml
vendored
|
@ -1,8 +1,5 @@
|
||||||
name: Windows Release Build
|
name: Windows Release Build
|
||||||
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_call:
|
workflow_call:
|
||||||
inputs:
|
inputs:
|
||||||
|
|
|
@ -9,8 +9,6 @@ engine/
|
||||||
|
|
||||||
**/*.svg
|
**/*.svg
|
||||||
|
|
||||||
**/*.inc.css
|
|
||||||
|
|
||||||
surfer.json
|
surfer.json
|
||||||
|
|
||||||
src/browser/app/profile/*.js
|
src/browser/app/profile/*.js
|
||||||
|
@ -28,6 +26,4 @@ src/zen/tabs/zen-tabs.css
|
||||||
src/zen/compact-mode/zen-compact-mode.css
|
src/zen/compact-mode/zen-compact-mode.css
|
||||||
src/zen/common/ZenEmojies.mjs
|
src/zen/common/ZenEmojies.mjs
|
||||||
|
|
||||||
src/zen/workspaces/zen-workspaces.css
|
|
||||||
|
|
||||||
*.inc
|
*.inc
|
||||||
|
|
|
@ -7,6 +7,6 @@
|
||||||
"useTabs": false,
|
"useTabs": false,
|
||||||
"jsxSingleQuote": false,
|
"jsxSingleQuote": false,
|
||||||
"semi": true,
|
"semi": true,
|
||||||
"printWidth": 100,
|
"printWidth": 128,
|
||||||
"plugins": ["prettier-plugin-sh"]
|
"plugins": ["prettier-plugin-sh"]
|
||||||
}
|
}
|
||||||
|
|
31
.vscode/settings.json
vendored
Normal file
31
.vscode/settings.json
vendored
Normal file
|
@ -0,0 +1,31 @@
|
||||||
|
{
|
||||||
|
"files.associations": {
|
||||||
|
"*.inc": "cpp",
|
||||||
|
"typeindex": "cpp",
|
||||||
|
"typeinfo": "cpp",
|
||||||
|
"functional": "cpp",
|
||||||
|
"array": "cpp",
|
||||||
|
"*.tcc": "cpp",
|
||||||
|
"memory": "cpp",
|
||||||
|
"future": "cpp",
|
||||||
|
"istream": "cpp",
|
||||||
|
"tuple": "cpp",
|
||||||
|
"utility": "cpp",
|
||||||
|
"variant": "cpp",
|
||||||
|
"compare": "cpp",
|
||||||
|
"thread": "cpp",
|
||||||
|
"string": "cpp",
|
||||||
|
"string_view": "cpp",
|
||||||
|
"span": "cpp",
|
||||||
|
"vector": "cpp",
|
||||||
|
"charconv": "cpp",
|
||||||
|
"chrono": "cpp",
|
||||||
|
"optional": "cpp",
|
||||||
|
"format": "cpp",
|
||||||
|
"ratio": "cpp",
|
||||||
|
"system_error": "cpp",
|
||||||
|
"regex": "cpp",
|
||||||
|
"type_traits": "cpp"
|
||||||
|
},
|
||||||
|
"git.ignoreLimitWarning": true
|
||||||
|
}
|
|
@ -1 +0,0 @@
|
||||||
https://zen-browser.app/funding.json
|
|
|
@ -1,4 +1,3 @@
|
||||||
<!-- TODO: Get a job -->
|
|
||||||
<img src="./docs/assets/zen-dark.svg" width="100px" align="left">
|
<img src="./docs/assets/zen-dark.svg" width="100px" align="left">
|
||||||
|
|
||||||
### `Zen Browser`
|
### `Zen Browser`
|
||||||
|
@ -29,9 +28,9 @@
|
||||||
|
|
||||||
## 🖥️ Compatibility
|
## 🖥️ Compatibility
|
||||||
|
|
||||||
Zen is currently built using Firefox version `139.0`! 🚀
|
Zen is currently built using Firefox version `138.0`! 🚀
|
||||||
|
|
||||||
- [`Zen Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 139.0`!
|
- [`Zen Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 138.0`!
|
||||||
- Check out the latest [release notes](https://zen-browser.app/release-notes)!
|
- Check out the latest [release notes](https://zen-browser.app/release-notes)!
|
||||||
- Part of our mission is to keep Zen up-to-date with the latest version of Firefox, so you can enjoy the latest features and security updates!
|
- Part of our mission is to keep Zen up-to-date with the latest version of Firefox, so you can enjoy the latest features and security updates!
|
||||||
|
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
# Security Policy
|
|
||||||
|
|
||||||
## Reporting a Vulnerability
|
|
||||||
|
|
||||||
Please report security vulnerabilities [here](https://github.com/zen-browser/desktop/security/advisories/new)
|
|
|
@ -1 +1 @@
|
||||||
da30619f3ea895b356ded705b8dff9e4f271198f
|
8113a66aeeec42dca9739c7b742a3408cb5b7cf7
|
|
@ -30,8 +30,8 @@ Start-Job -Name "DownloadGitl10n" -ScriptBlock {
|
||||||
Start-Job -Name "SurferInit" -ScriptBlock {
|
Start-Job -Name "SurferInit" -ScriptBlock {
|
||||||
param($PWD)
|
param($PWD)
|
||||||
cd $PWD
|
cd $PWD
|
||||||
|
surfer -- ci --brand release
|
||||||
npm run import -- --verbose
|
npm run import -- --verbose
|
||||||
npm run surfer -- ci --brand release
|
|
||||||
} -Verbose -ArgumentList $PWD -Debug
|
} -Verbose -ArgumentList $PWD -Debug
|
||||||
|
|
||||||
echo "Downloading artifacts info"
|
echo "Downloading artifacts info"
|
||||||
|
|
|
@ -1,587 +0,0 @@
|
||||||
# Issue Metrics
|
|
||||||
|
|
||||||
| Metric | Average | Median | 90th percentile |
|
|
||||||
| --- | --- | --- | ---: |
|
|
||||||
| Time to first response | 1 day, 10:58:31 | 4:19:41 | 4 days, 7:38:02 |
|
|
||||||
| Time to close | 2 days, 13:49:59 | 11:11:45 | 9 days, 19:10:27 |
|
|
||||||
|
|
||||||
| Metric | Count |
|
|
||||||
| --- | ---: |
|
|
||||||
| Number of items that remain open | 236 |
|
|
||||||
| Number of items closed | 333 |
|
|
||||||
| Total number of items created | 569 |
|
|
||||||
|
|
||||||
| Title | URL | Time to first response | Time to close |
|
|
||||||
| --- | --- | --- | --- |
|
|
||||||
| Cloudflare Turnstile can't be passed on Zen | https://github.com/zen-browser/desktop/issues/7948 | None | None |
|
|
||||||
| [Gecko engine] - Zen doesn't load a site (Doom loading) | https://github.com/zen-browser/desktop/issues/7946 | 0:09:25 | 0:09:25 |
|
|
||||||
| Unable to open URL bar when sidebar is unfocused | https://github.com/zen-browser/desktop/issues/7944 | 1:22:42 | None |
|
|
||||||
| Remove AutoPlay Icon | https://github.com/zen-browser/desktop/issues/7943 | None | None |
|
|
||||||
| "Prevent tab unload" doesn't save it's state on browser restart | https://github.com/zen-browser/desktop/issues/7942 | None | None |
|
|
||||||
| Unable to emoji picker when creating/editing workspace | https://github.com/zen-browser/desktop/issues/7940 | None | None |
|
|
||||||
| Tabs crash when loading any video stream. | https://github.com/zen-browser/desktop/issues/7939 | None | None |
|
|
||||||
| Resizing the window on MacOS triggers websites shortcuts | https://github.com/zen-browser/desktop/issues/7937 | None | None |
|
|
||||||
| MDN Search add-on does not work anymore | https://github.com/zen-browser/desktop/issues/7936 | 6:23:47 | None |
|
|
||||||
| Browser extensions often fail to work, randomly breaking in different workspaces. | https://github.com/zen-browser/desktop/issues/7934 | None | None |
|
|
||||||
| The Settings Page does not resize based on browser view size. | https://github.com/zen-browser/desktop/issues/7933 | None | None |
|
|
||||||
| Often Zen fills ram and makes computer unresponsive | https://github.com/zen-browser/desktop/issues/7931 | None | None |
|
|
||||||
| weird newtab behaviour in certain sites | https://github.com/zen-browser/desktop/issues/7930 | None | None |
|
|
||||||
| YouTube fails to load any content that is not specifically a video stream | https://github.com/zen-browser/desktop/issues/7929 | 11:28:37 | 18:24:51 |
|
|
||||||
| Empty url bar looses focus | https://github.com/zen-browser/desktop/issues/7926 | 0:33:26 | 3:02:07 |
|
|
||||||
| The toolbar is still unable to adapt with the rest of the theme | https://github.com/zen-browser/desktop/issues/7925 | None | None |
|
|
||||||
| Closing the frozen browser, deletes all tabs | https://github.com/zen-browser/desktop/issues/7923 | 0:45:02 | 0:45:02 |
|
|
||||||
| split tab shortcut is already taken by OS shortcut on macOS | https://github.com/zen-browser/desktop/issues/7922 | 15:41:24 | 15:41:24 |
|
|
||||||
| Zen not properly restoring previously opened tabs in the previous session (Only pinned tabs restored; potential container or Sidebery issue?) | https://github.com/zen-browser/desktop/issues/7920 | 3:01:11 | None |
|
|
||||||
| Help entrypoints in Help menu and About Zen go to Firefox docs | https://github.com/zen-browser/desktop/issues/7919 | None | None |
|
|
||||||
| "Split horizontal" shortcut conflicts with macOS default | https://github.com/zen-browser/desktop/issues/7918 | None | None |
|
|
||||||
| Zen not remembering where the tabs opened in the previous sessions. | https://github.com/zen-browser/desktop/issues/7916 | 15:46:31 | None |
|
|
||||||
| Incorrect behavior when pressing ctrl+enter in URL bar after typing a string | https://github.com/zen-browser/desktop/issues/7915 | 14:56:31 | 14:56:31 |
|
|
||||||
| Additional Zen icons added to Dock when links are opened | https://github.com/zen-browser/desktop/issues/7914 | None | None |
|
|
||||||
| New Tab Startup Opening | https://github.com/zen-browser/desktop/issues/7912 | 2:27:10 | 2:27:10 |
|
|
||||||
| Cannot scroll webpages using Wacom Pen tablet | https://github.com/zen-browser/desktop/issues/7911 | None | 1 day, 1:16:05 |
|
|
||||||
| When using Tabs on the Right, the Glance controls are on the wrong side | https://github.com/zen-browser/desktop/issues/7910 | None | None |
|
|
||||||
| Displaying the Wrong Information | https://github.com/zen-browser/desktop/issues/7909 | 19:28:41 | 19:28:41 |
|
|
||||||
| Compact mode doesn't hide sidebar | https://github.com/zen-browser/desktop/issues/7908 | 5:31:34 | None |
|
|
||||||
| Black content on extensions window | https://github.com/zen-browser/desktop/issues/7907 | 0:09:00 | 4:16:12 |
|
|
||||||
| Slash character (/) in URL field opens search bar and making it impossible to write https:// | https://github.com/zen-browser/desktop/issues/7906 | 1 day, 0:32:34 | None |
|
|
||||||
| After I delete everything in the address bar, I lose focus and have to click it again to type. Is there a way to fix this? | https://github.com/zen-browser/desktop/issues/7905 | None | 0:01:26 |
|
|
||||||
| Tabs not restored on startup under specific conditions | https://github.com/zen-browser/desktop/issues/7902 | 6:24:57 | 12:52:38 |
|
|
||||||
| Duplicating a renamed Pinned Tab causes the duplicated tab to be named "New Tab" instead of the website name | https://github.com/zen-browser/desktop/issues/7900 | None | 5:09:46 |
|
|
||||||
| When the theme is set to System theme - Auto and the System theme is Dark, the highlighted search suggestion is the wrong color | https://github.com/zen-browser/desktop/issues/7899 | None | None |
|
|
||||||
| Inconsistent/Incorrect behavior when using ctrl+enter from new tab addressbar | https://github.com/zen-browser/desktop/issues/7898 | 1 day, 16:47:43 | 3 days, 2:50:21 |
|
|
||||||
| [Twilight 1.11.5] Sizing issue with essentials in multi toolbar mode | https://github.com/zen-browser/desktop/issues/7897 | 1:40:18 | 5:03:44 |
|
|
||||||
| AWS Console Session/Credential Error "Missing credentials in config, if using AWS_CONFIG_FILE, set AWS_SDK_LOAD_CONFIG=1" | https://github.com/zen-browser/desktop/issues/7896 | None | None |
|
|
||||||
| Dark Mode not persistent | https://github.com/zen-browser/desktop/issues/7894 | None | None |
|
|
||||||
| pinned tabs closed via firefox on android open after restart | https://github.com/zen-browser/desktop/issues/7892 | None | None |
|
|
||||||
| Idle inhibit not released after fullscreen video finishes playing on Wayland | https://github.com/zen-browser/desktop/issues/7891 | None | 0:19:07 |
|
|
||||||
| Not every window in compact mode on startup if multiple window is open. | https://github.com/zen-browser/desktop/issues/7890 | None | 4:40:46 |
|
|
||||||
| ctrl+tab goes through essentials and pinned tabs | https://github.com/zen-browser/desktop/issues/7889 | 11:45:57 | 11:46:05 |
|
|
||||||
| Extensions only show a blank popup in full-screen | https://github.com/zen-browser/desktop/issues/7888 | None | 0:01:28 |
|
|
||||||
| Command+Option+[arrow key] switches tabs on Mac but not on Windows | https://github.com/zen-browser/desktop/issues/7886 | 15:40:50 | 15:40:50 |
|
|
||||||
| Dark mode (despite changing to light) | https://github.com/zen-browser/desktop/issues/7885 | 1 day, 20:57:57 | 1 day, 20:57:57 |
|
|
||||||
| Spotify seems broken on Zen browser | https://github.com/zen-browser/desktop/issues/7878 | 0:10:25 | 0:25:06 |
|
|
||||||
| ALT not being recognize when using the key | https://github.com/zen-browser/desktop/issues/7877 | 4 days, 2:54:12 | None |
|
|
||||||
| Tooltips and popups flickering on Zen / OS X | https://github.com/zen-browser/desktop/issues/7876 | 0:06:03 | 1:33:13 |
|
|
||||||
| Intermittent pink frame in YT videos | https://github.com/zen-browser/desktop/issues/7874 | 0:21:12 | None |
|
|
||||||
| Extensions view is blank when opened in taskbar | https://github.com/zen-browser/desktop/issues/7873 | 0:46:08 | 0:46:08 |
|
|
||||||
| SSL certificate error on trusted custom root CA: SEC_ERROR_UNKNOWN_ISSUER | https://github.com/zen-browser/desktop/issues/7872 | 10:27:53 | 10:27:53 |
|
|
||||||
| [BUG?] High RAM consumption | https://github.com/zen-browser/desktop/issues/7871 | None | 12:00:20 |
|
|
||||||
| Compact sidebar appearch when switching tabs with the shortcuts | https://github.com/zen-browser/desktop/issues/7870 | 3:10:22 | 14:26:17 |
|
|
||||||
| Horizontal Scrollbar Appears in Full-Screen Mode on YouTube | https://github.com/zen-browser/desktop/issues/7867 | 1 day, 1:53:22 | None |
|
|
||||||
| Tabs crashing after click Links in Thunderbird Mail | https://github.com/zen-browser/desktop/issues/7866 | 1 day, 0:14:36 | 2 days, 2:58:17 |
|
|
||||||
| Ctrl+Tab Cycling through tabs crashes if pressed without recent tabs | https://github.com/zen-browser/desktop/issues/7865 | None | 3:20:55 |
|
|
||||||
| Browser freezes when using Glance with webpages open in another workspace | https://github.com/zen-browser/desktop/issues/7864 | 1:54:48 | 3 days, 22:16:17 |
|
|
||||||
| youtube video flickers on nvidia gpu | https://github.com/zen-browser/desktop/issues/7860 | 0:58:00 | 1 day, 3:33:06 |
|
|
||||||
| Feedback on Tab and Sidebar Behavior | https://github.com/zen-browser/desktop/issues/7859 | 0:07:25 | 0:07:25 |
|
|
||||||
| YouTube Music Media Controller Pause Button has no Effect | https://github.com/zen-browser/desktop/issues/7858 | None | 0:04:51 |
|
|
||||||
| Text jitter in popup window on macOS | https://github.com/zen-browser/desktop/issues/7856 | 7:16:06 | None |
|
|
||||||
| Setting theme in Firefox also applies to Zen | https://github.com/zen-browser/desktop/issues/7855 | 7:45:30 | None |
|
|
||||||
| Clearing cookies fails when using the single toolbar layout | https://github.com/zen-browser/desktop/issues/7851 | None | None |
|
|
||||||
| Pinned Tabs: "open in new tab" from glance window places the tab into pinned tabs automatically | https://github.com/zen-browser/desktop/issues/7850 | None | 4:17:16 |
|
|
||||||
| Bug with enlarged extension icon after expanding and minimazing right sidebar. | https://github.com/zen-browser/desktop/issues/7848 | 0:09:31 | 0:13:57 |
|
|
||||||
| Running firefox in incognito mode makes Zen lose saved tabs (Windows) | https://github.com/zen-browser/desktop/issues/7847 | 1:51:53 | None |
|
|
||||||
| Picture-in-picture "Back to tab" button restores pin in the incorrect workspace | https://github.com/zen-browser/desktop/issues/7845 | 6:23:29 | 1 day, 7:14:12 |
|
|
||||||
| weird link opening behavior | https://github.com/zen-browser/desktop/issues/7844 | 6:08:34 | 6:18:12 |
|
|
||||||
| Linux-zen can not access directory page directly | https://github.com/zen-browser/desktop/issues/7841 | 11:54:43 | 11:54:43 |
|
|
||||||
| Moving a split screen tab across workspaces is broken | https://github.com/zen-browser/desktop/issues/7840 | 6:28:28 | 2 days, 10:33:34 |
|
|
||||||
| The web panel is gone? | https://github.com/zen-browser/desktop/issues/7839 | 0:02:32 | 0:02:32 |
|
|
||||||
| Tabs on right has an empty margin | https://github.com/zen-browser/desktop/issues/7838 | 4:55:32 | None |
|
|
||||||
| Twitch.tv - Zen Browser | https://github.com/zen-browser/desktop/issues/7837 | 1:55:02 | 1:55:02 |
|
|
||||||
| Zen Mod "Better Tab indicators v1.0.0" not function | https://github.com/zen-browser/desktop/issues/7833 | 0:41:23 | 0:45:22 |
|
|
||||||
| Pinned tabs remember scrolling position when unloaded and reset | https://github.com/zen-browser/desktop/issues/7830 | 0:30:46 | 6:04:50 |
|
|
||||||
| SponsorBlock Breaks the custom volume slider and theme. | https://github.com/zen-browser/desktop/issues/7829 | 5:24:28 | 5:24:29 |
|
|
||||||
| Problem with video uploads on Xiaohongshu's Creator Platform through Zen | https://github.com/zen-browser/desktop/issues/7828 | 3 days, 1:04:18 | 3 days, 2:55:43 |
|
|
||||||
| Cant click/open essentials | https://github.com/zen-browser/desktop/issues/7826 | 1 day, 15:20:15 | 1 day, 15:20:15 |
|
|
||||||
| [Twilight 1.11.5t] Tabs break and browser flickers after unloading pinned tabs | https://github.com/zen-browser/desktop/issues/7825 | 3 days, 3:19:07 | 3 days, 6:38:13 |
|
|
||||||
| [Twilight 1.11.5t] Close window button doesn't work. | https://github.com/zen-browser/desktop/issues/7824 | 2:28:27 | 1 day, 15:45:18 |
|
|
||||||
| iCloud Passwords broken with latest macOS | https://github.com/zen-browser/desktop/issues/7823 | None | None |
|
|
||||||
| Tab scrollbar dragging is broken again | https://github.com/zen-browser/desktop/issues/7821 | 1 day, 21:12:24 | None |
|
|
||||||
| "Unload tab" doesn't work when tabs are in Split Mode | https://github.com/zen-browser/desktop/issues/7819 | 22:02:39 | 22:02:39 |
|
|
||||||
| Compact mode single toolbar repeatedly goes from hidden to visible while using Raycast focus | https://github.com/zen-browser/desktop/issues/7818 | 0:22:13 | 1:20:26 |
|
|
||||||
| Performance benchmarks link in README.md is broken | https://github.com/zen-browser/desktop/issues/7817 | None | 0:07:57 |
|
|
||||||
| Google Meet Widget's Microphone and Camera Controls Have no Effects | https://github.com/zen-browser/desktop/issues/7815 | None | 0:02:32 |
|
|
||||||
| Every startup does not display the homepage | https://github.com/zen-browser/desktop/issues/7814 | 0:11:47 | 0:11:47 |
|
|
||||||
| Unable to click links from Thunderbird and other apps to jump to zen browser | https://github.com/zen-browser/desktop/issues/7813 | 0:26:55 | 0:27:32 |
|
|
||||||
| Suspicious New Tab in every startup | https://github.com/zen-browser/desktop/issues/7812 | 1:14:48 | 1:14:48 |
|
|
||||||
| Using private window always prompts the user to solve a Google CAPTCHA for "unusual traffic" | https://github.com/zen-browser/desktop/issues/7811 | 4:08:25 | 4:08:25 |
|
|
||||||
| No keyboard shortcut assigned, yet still error 'conflict with another shortcut' | https://github.com/zen-browser/desktop/issues/7810 | 7:33:18 | None |
|
|
||||||
| Show Bookmarks Toolbar shortcut not wroking in Single Toolbar Layout | https://github.com/zen-browser/desktop/issues/7809 | 0:48:50 | 10:04:21 |
|
|
||||||
| Cannot inject scripts into same-origin iframes | https://github.com/zen-browser/desktop/issues/7808 | 10:11:50 | 10:11:50 |
|
|
||||||
| Change Tab(s) to Workspace not working with split tabs | https://github.com/zen-browser/desktop/issues/7806 | 13:20:30 | 4 days, 9:18:08 |
|
|
||||||
| Reset and pin tab button doesn't work for local folder path | https://github.com/zen-browser/desktop/issues/7805 | None | None |
|
|
||||||
| Middle-click to open new tab unintentionally pastes clipboard contents into address bar | https://github.com/zen-browser/desktop/issues/7804 | 8:36:38 | None |
|
|
||||||
| Chinese Language in URL Bar Causes Zen to Soft-Freeze | https://github.com/zen-browser/desktop/issues/7803 | 6 days, 13:54:47 | None |
|
|
||||||
| "New Tab" button at bottom of tab list doesn't do... anything? | https://github.com/zen-browser/desktop/issues/7802 | None | 0:01:24 |
|
|
||||||
| Default Workspace not showing `Essentials` Tabs. | https://github.com/zen-browser/desktop/issues/7800 | 1:30:16 | 13:48:39 |
|
|
||||||
| Muting a tab from the media controller does not change the state of the "Mute Tab" button to "Unmute Tab" | https://github.com/zen-browser/desktop/issues/7798 | None | 3 days, 16:05:34 |
|
|
||||||
| "Expand Sidebar" button shifts slightly and when sidebar is toggled | https://github.com/zen-browser/desktop/issues/7797 | 10:56:40 | None |
|
|
||||||
| Zen doesn't remember selected tab between sessions | https://github.com/zen-browser/desktop/issues/7795 | 3:15:56 | 3 days, 3:12:31 |
|
|
||||||
| The app name in GNOME notifications is "Mozilla zen" | https://github.com/zen-browser/desktop/issues/7794 | 1:09:59 | 1:35:44 |
|
|
||||||
| ctrl+space shortcut white space | https://github.com/zen-browser/desktop/issues/7793 | None | None |
|
|
||||||
| Compact Mode Expand-on-Hover Single Toolbar Does Not Have Same Padding as Browser Viewport | https://github.com/zen-browser/desktop/issues/7792 | None | 0:00:18 |
|
|
||||||
| Zen Bar closing when changing language | https://github.com/zen-browser/desktop/issues/7791 | 2 days, 9:32:56 | None |
|
|
||||||
| Compact mode open/close animation bugged | https://github.com/zen-browser/desktop/issues/7789 | 0:07:52 | 3:17:28 |
|
|
||||||
| Bookmarks unaccessible when no tabs are open in compact mode | https://github.com/zen-browser/desktop/issues/7788 | None | 0:13:38 |
|
|
||||||
| Zen forgets named Tabs after reopening | https://github.com/zen-browser/desktop/issues/7787 | 1:26:39 | None |
|
|
||||||
| After adding the Bing search engine, searching in the address bar, the search prompt cannot be displayed | https://github.com/zen-browser/desktop/issues/7786 | 1:28:38 | 1 day, 1:15:18 |
|
|
||||||
| Watt Toolkit's Network routing service fails to accelerate zen browser access to github | https://github.com/zen-browser/desktop/issues/7785 | 4:45:53 | 4:45:53 |
|
|
||||||
| Terrible performance on Power Saving mode | https://github.com/zen-browser/desktop/issues/7784 | 1:03:17 | None |
|
|
||||||
| duplicate of 504 | https://github.com/zen-browser/desktop/issues/7781 | None | 2:30:56 |
|
|
||||||
| hitting `Ctrl+T` in Fullscreen mode opens new tab menu only when fullscreen mode is exited | https://github.com/zen-browser/desktop/issues/7779 | None | 9:22:25 |
|
|
||||||
| Button that works on Firefox does not work on Zen | https://github.com/zen-browser/desktop/issues/7778 | 0:45:05 | None |
|
|
||||||
| No homepage or totally blank homepage problem! | https://github.com/zen-browser/desktop/issues/7773 | 7:35:50 | 7:35:50 |
|
|
||||||
| Firefox multi-account container and browsing history | https://github.com/zen-browser/desktop/issues/7768 | 20:19:15 | None |
|
|
||||||
| The Extensions Not Work | https://github.com/zen-browser/desktop/issues/7766 | None | 0:26:32 |
|
|
||||||
| Bitwarden blank window after sign-in | https://github.com/zen-browser/desktop/issues/7763 | 10:45:22 | 7 days, 5:07:50 |
|
|
||||||
| The Facebook page turns pale white after open link. | https://github.com/zen-browser/desktop/issues/7760 | 7:32:21 | 6 days, 9:26:33 |
|
|
||||||
| Linux arm64 builds does neither have drm enable option nor detect widevine CDM in plugins | https://github.com/zen-browser/desktop/issues/7759 | 20:47:30 | 2 days, 13:42:10 |
|
|
||||||
| Spliting Essentials or Pinned Tabs is off | https://github.com/zen-browser/desktop/issues/7758 | 7:05:27 | 7:05:27 |
|
|
||||||
| Zen browser does not support higher refresh rates on macOS | https://github.com/zen-browser/desktop/issues/7757 | 16:41:57 | 2 days, 10:42:28 |
|
|
||||||
| Address bar loses focus when changing language in GNOME | https://github.com/zen-browser/desktop/issues/7756 | None | 1:48:13 |
|
|
||||||
| Customize Toolbar tab becomes transparent | https://github.com/zen-browser/desktop/issues/7755 | None | None |
|
|
||||||
| Auto-PIP was enabled by default and cant find how to turn it off | https://github.com/zen-browser/desktop/issues/7754 | 0:19:14 | 0:19:14 |
|
|
||||||
| Higher CPU Usage and Choppy Video Playback in Glance | https://github.com/zen-browser/desktop/issues/7753 | None | 0:04:19 |
|
|
||||||
| Auto-PIP does not work if the PIP button is disabled | https://github.com/zen-browser/desktop/issues/7752 | None | 0:11:15 |
|
|
||||||
| F1 TV bug | https://github.com/zen-browser/desktop/issues/7751 | 0:26:19 | 0:26:19 |
|
|
||||||
| Zen crashes after sometime while screensharing on discord web | https://github.com/zen-browser/desktop/issues/7750 | 17:39:57 | None |
|
|
||||||
| Picture-in-Picture auto-starts when changing tabs or workspaces | https://github.com/zen-browser/desktop/issues/7749 | 0:13:43 | 0:26:03 |
|
|
||||||
| Toolbar disappears | https://github.com/zen-browser/desktop/issues/7746 | 0:51:00 | None |
|
|
||||||
| [GNOME] changing keyboard layout while on the search bar makes the search bar disappear | https://github.com/zen-browser/desktop/issues/7744 | None | 0:12:23 |
|
|
||||||
| AI Chatbot selecting text shortcut open AI website in new tab instead of sidebar. | https://github.com/zen-browser/desktop/issues/7742 | 0:39:10 | None |
|
|
||||||
| switching workspaces focuses on the URL bar | https://github.com/zen-browser/desktop/issues/7741 | 0:49:53 | 1:10:53 |
|
|
||||||
| split tabs issue | https://github.com/zen-browser/desktop/issues/7736 | 1:40:14 | None |
|
|
||||||
| PIP video covers new tab | https://github.com/zen-browser/desktop/issues/7735 | 0:03:58 | 1:36:34 |
|
|
||||||
| After an update, Zen is installed twice. As visible in "Installed Apps" in Windows. | https://github.com/zen-browser/desktop/issues/7734 | None | None |
|
|
||||||
| CMD+T | floating URL bar does not show | https://github.com/zen-browser/desktop/issues/7733 | 1:14:20 | 0:59:06 |
|
|
||||||
| The rounded corner theme affects the mouse's access to the scroll bar | https://github.com/zen-browser/desktop/issues/7732 | 3 days, 9:30:14 | 3 days, 10:14:34 |
|
|
||||||
| Menubar Text Turns Black in Dark Mode When Switching Apps via Stage Manager | https://github.com/zen-browser/desktop/issues/7731 | None | None |
|
|
||||||
| Epic Games Store - no audio in videos | https://github.com/zen-browser/desktop/issues/7730 | 2:21:02 | 4:06:29 |
|
|
||||||
| Wrong aspect ratio when opening on sway wm | https://github.com/zen-browser/desktop/issues/7729 | 12:23:25 | None |
|
|
||||||
| Moving cursor from addon popup to website keeps tab sidebar showing in compact mode | https://github.com/zen-browser/desktop/issues/7728 | None | None |
|
|
||||||
| URL bar not focused upon opening zen (with replace-newtab: false) | https://github.com/zen-browser/desktop/issues/7727 | None | 0:22:28 |
|
|
||||||
| Pop up video(PIP) window that won't go away (Facebook) | https://github.com/zen-browser/desktop/issues/7726 | 11:06:08 | 1 day, 12:17:11 |
|
|
||||||
| Zen does not use system theme setting | https://github.com/zen-browser/desktop/issues/7725 | 1:16:41 | 1:30:14 |
|
|
||||||
| Zen doesnt Display Proxmox WebUi correctly.... | https://github.com/zen-browser/desktop/issues/7724 | 12:19:36 | None |
|
|
||||||
| css attribute "breakout="true"" not persistant | https://github.com/zen-browser/desktop/issues/7722 | 0:08:57 | 0:08:57 |
|
|
||||||
| Media control incorrectly shows a duration for onging live stream on youtube | https://github.com/zen-browser/desktop/issues/7721 | None | None |
|
|
||||||
| Cannot copy selected text when right-clicking on the address bar in Linux Mint | https://github.com/zen-browser/desktop/issues/7719 | None | 0:58:16 |
|
|
||||||
| Zen freezes - nothing responds | https://github.com/zen-browser/desktop/issues/7718 | 2:01:46 | 2:41:50 |
|
|
||||||
| sidebar not hiding on blankpage | https://github.com/zen-browser/desktop/issues/7717 | 2:53:33 | 2:53:33 |
|
|
||||||
| Zen seems to crash randomly when switching tabs | https://github.com/zen-browser/desktop/issues/7716 | 1 day, 14:07:42 | 10 days, 18:03:06 |
|
|
||||||
| Invalid page background in dark themes | https://github.com/zen-browser/desktop/issues/7715 | 5:05:23 | 5:05:23 |
|
|
||||||
| Hardware Acceleration - Browser almost unusable without it | https://github.com/zen-browser/desktop/issues/7714 | 5:32:14 | 5:48:30 |
|
|
||||||
| Magic Mouse swipe does not change workspaces on macOS | https://github.com/zen-browser/desktop/issues/7713 | 5 days, 3:11:30 | None |
|
|
||||||
| Where is zen sidebar | https://github.com/zen-browser/desktop/issues/7712 | 1:06:23 | 5:59:31 |
|
|
||||||
| URL bar flashes when exiting fullscreen mode | https://github.com/zen-browser/desktop/issues/7711 | 1:31:07 | None |
|
|
||||||
| Inconsistent behaviour of reset button when tab is loading | https://github.com/zen-browser/desktop/issues/7710 | None | None |
|
|
||||||
| user.js | https://github.com/zen-browser/desktop/issues/7709 | 0:08:13 | 0:08:13 |
|
|
||||||
| Changing Zoom keybindings is not taking effect on windows | https://github.com/zen-browser/desktop/issues/7708 | None | None |
|
|
||||||
| Google Maps not showing route (the blue line) | https://github.com/zen-browser/desktop/issues/7707 | 3:34:36 | 2 days, 5:27:24 |
|
|
||||||
| Basic Authorization doesn't works on some websites | https://github.com/zen-browser/desktop/issues/7706 | 1:59:13 | 1:59:13 |
|
|
||||||
| Sometimes there are vertical black bars on the left/right size of picture in picture mini player | https://github.com/zen-browser/desktop/issues/7705 | None | None |
|
|
||||||
| Blank Extension Popup when activated using the keyboard shortcut | https://github.com/zen-browser/desktop/issues/7703 | None | 10:14:29 |
|
|
||||||
| Can no longer cycle through tabs in Macos using cmd+opt+right for seemingly no reason | https://github.com/zen-browser/desktop/issues/7702 | 1 day, 8:49:40 | 1 day, 8:49:40 |
|
|
||||||
| about:protections advertises "Zen for Android and iOS," links to Firefox | https://github.com/zen-browser/desktop/issues/7701 | None | None |
|
|
||||||
| In the new window, voice input is not working. This prevents me from writing in the browsers. | https://github.com/zen-browser/desktop/issues/7698 | None | None |
|
|
||||||
| picture in picture disappears | https://github.com/zen-browser/desktop/issues/7697 | 1 day, 13:00:12 | None |
|
|
||||||
| Tab Switching Unresponsive in Split View Mode | https://github.com/zen-browser/desktop/issues/7696 | 2:24:28 | None |
|
|
||||||
| content-element-separation=0 doesn't show browser windows controls | https://github.com/zen-browser/desktop/issues/7694 | None | 0:03:33 |
|
|
||||||
| last used tabs not in focus in startup | https://github.com/zen-browser/desktop/issues/7693 | 0:58:59 | 1:06:21 |
|
|
||||||
| Unexpected Behavior When Opening New Tab (CTRL + T) During YouTube Fullscreen Video | https://github.com/zen-browser/desktop/issues/7692 | 2:48:18 | 23:21:28 |
|
|
||||||
| Zen does not appear in Start Menu | https://github.com/zen-browser/desktop/issues/7691 | 0:17:52 | 1:41:13 |
|
|
||||||
| Unable to perform new update | https://github.com/zen-browser/desktop/issues/7689 | None | 1:46:21 |
|
|
||||||
| Bitwarden does not ask to save new passwords | https://github.com/zen-browser/desktop/issues/7687 | None | None |
|
|
||||||
| YouTube eventually gets very slow and sluggish to use | https://github.com/zen-browser/desktop/issues/7685 | 10 days, 7:27:25 | None |
|
|
||||||
| Small inconsistencies with zen.urlbar.replace-newtab disabled | https://github.com/zen-browser/desktop/issues/7684 | 0:39:19 | 1 day, 6:02:08 |
|
|
||||||
| Clicking New Tab multiple times briefly flickers the browser back to the previous tab. | https://github.com/zen-browser/desktop/issues/7683 | None | None |
|
|
||||||
| Compact mode not active for 2/3 windows on startup, switching to single toolbar and back again breaks layout | https://github.com/zen-browser/desktop/issues/7682 | 1 day, 2:24:51 | None |
|
|
||||||
| Zen did not auto update to 1.11.3b when I thought it did | https://github.com/zen-browser/desktop/issues/7681 | 1:36:45 | 1:36:45 |
|
|
||||||
| Text colors arent correctly visible while `zen.theme.gradient.show-custom-colors` is enabled | https://github.com/zen-browser/desktop/issues/7680 | 6:46:05 | 6:46:05 |
|
|
||||||
| Zen shows warning icon next to "This is a secure Zen page" | https://github.com/zen-browser/desktop/issues/7679 | 2:12:33 | None |
|
|
||||||
| Tabs alignment is off when the tab-bar is collapsed and there are enough tabs that they can be scrolled | https://github.com/zen-browser/desktop/issues/7678 | None | None |
|
|
||||||
| Zen using a lot of memory | https://github.com/zen-browser/desktop/issues/7673 | 0:08:16 | 9:36:13 |
|
|
||||||
| Cannot play DRM content (Specifcally crunchyroll.com) on Linux since 1.11.3b | https://github.com/zen-browser/desktop/issues/7671 | 1:10:45 | 10 days, 6:30:28 |
|
|
||||||
| zen seemingly tiling into 4 windows on hyprland | https://github.com/zen-browser/desktop/issues/7670 | None | None |
|
|
||||||
| Tabs are not opening on startup when closing using X button | https://github.com/zen-browser/desktop/issues/7669 | 2:08:51 | 1 day, 10:29:12 |
|
|
||||||
| When I hit ctrl+t for new tab, start writing url, change my mind and cancel it, then invoke it again, the typed text is still there | https://github.com/zen-browser/desktop/issues/7667 | 0:53:10 | 7:59:08 |
|
|
||||||
| URL Bar not showing on fullscreen mode and glitchin when exiting it | https://github.com/zen-browser/desktop/issues/7665 | 0:21:09 | None |
|
|
||||||
| Flatpak reverted to an older version today. | https://github.com/zen-browser/desktop/issues/7664 | 8:07:44 | 17:35:17 |
|
|
||||||
| Hyprland blur not working at the start | https://github.com/zen-browser/desktop/issues/7663 | 9:54:03 | None |
|
|
||||||
| Switch Profile Button Gone | https://github.com/zen-browser/desktop/issues/7662 | 10:56:49 | 1 day, 1:39:17 |
|
|
||||||
| Issue with Zen browser after unexpected PC crash. | https://github.com/zen-browser/desktop/issues/7661 | 7:06:45 | None |
|
|
||||||
| Zen tries to automatically download a PDF on sites that use iframe elements to embed a PDF | https://github.com/zen-browser/desktop/issues/7660 | 0:23:40 | 1:47:54 |
|
|
||||||
| [Twilight 1.11.3t] Essential/Pinned tabs reload when already loading. | https://github.com/zen-browser/desktop/issues/7659 | 15:23:47 | 1 day, 4:59:18 |
|
|
||||||
| Nvidia RTX video super resolution doesn't work in Zen | https://github.com/zen-browser/desktop/issues/7658 | 12:30:11 | 21:59:00 |
|
|
||||||
| "zen.view.grey-out-inactive-windows" is bugged on Windows | https://github.com/zen-browser/desktop/issues/7657 | 22:45:09 | None |
|
|
||||||
| Twitch not supported | https://github.com/zen-browser/desktop/issues/7656 | 1:28:28 | None |
|
|
||||||
| Tab unloading fails on tabs using the Glance view | https://github.com/zen-browser/desktop/issues/7655 | 0:57:35 | None |
|
|
||||||
| Renamed Tabs do not show up in URL Bar | https://github.com/zen-browser/desktop/issues/7654 | 0:17:42 | None |
|
|
||||||
| When a tab is not loaded, searching it via % clones it instead of switching to it | https://github.com/zen-browser/desktop/issues/7653 | 0:37:13 | None |
|
|
||||||
| If you clear the contents of the address bar, the focus of the address bar will be released. | https://github.com/zen-browser/desktop/issues/7651 | 1:48:28 | 11 days, 5:19:00 |
|
|
||||||
| New tab search, stay on right click. | https://github.com/zen-browser/desktop/issues/7650 | None | 0:22:00 |
|
|
||||||
| Context Menu Colors Incorrectly Follow Application Theme | https://github.com/zen-browser/desktop/issues/7649 | 11 days, 5:49:13 | 12 days, 1:15:41 |
|
|
||||||
| Screen Sharing Bug on Mac | https://github.com/zen-browser/desktop/issues/7648 | None | 0:01:19 |
|
|
||||||
| Scrolling on the tabs on a touch screen does nothing | https://github.com/zen-browser/desktop/issues/7647 | None | 0:00:58 |
|
|
||||||
| Scrollbar in tabs doesn't appear in collapsed toolbar layout | https://github.com/zen-browser/desktop/issues/7646 | 0:13:13 | 0:19:22 |
|
|
||||||
| Overflow menu icon missing in single sidebar view mode | https://github.com/zen-browser/desktop/issues/7644 | 0:01:07 | 0:01:07 |
|
|
||||||
| Zen browser doesnt show minimize button on linux | https://github.com/zen-browser/desktop/issues/7643 | 2:28:48 | 2:28:48 |
|
|
||||||
| Claude “App Integration” panel disappears instantly after click | https://github.com/zen-browser/desktop/issues/7642 | 1:32:22 | 1:32:22 |
|
|
||||||
| Unable to revert "On macos, you can now cycle through tabs with cmd+opt+UP or cmd+opt+DOWN" | https://github.com/zen-browser/desktop/issues/7640 | 3:46:56 | 3:46:55 |
|
|
||||||
| Missing .dll files after installation | https://github.com/zen-browser/desktop/issues/7638 | None | 0:14:40 |
|
|
||||||
| Webpage content overflow window region after initing Zen | https://github.com/zen-browser/desktop/issues/7637 | None | 0:04:41 |
|
|
||||||
| Mouse history back and history forward buttons change workspaces when not inside tab container | https://github.com/zen-browser/desktop/issues/7636 | 6 days, 12:45:14 | None |
|
|
||||||
| Spotify Skips and Only Plays 10 seconds of audio | https://github.com/zen-browser/desktop/issues/7635 | 2:06:02 | 2:06:02 |
|
|
||||||
| Add-ons GUIs are not loaded correctly | https://github.com/zen-browser/desktop/issues/7633 | 13:04:07 | None |
|
|
||||||
| Zen window gaining focus makes the hidden sidebar glitch | https://github.com/zen-browser/desktop/issues/7632 | 6:31:37 | 21:43:01 |
|
|
||||||
| Dragging a tab to essentials makes it disappear | https://github.com/zen-browser/desktop/issues/7631 | 0:15:33 | 23:19:25 |
|
|
||||||
| VC Runtime Errors in Installer | https://github.com/zen-browser/desktop/issues/7630 | 3:31:22 | 8:34:38 |
|
|
||||||
| Perform a component refactoring | https://github.com/zen-browser/desktop/issues/7628 | None | 0:23:06 |
|
|
||||||
| zen mods and Tag records | https://github.com/zen-browser/desktop/issues/7623 | None | None |
|
|
||||||
| Losing all tabs when closing the main window with the private one open | https://github.com/zen-browser/desktop/issues/7622 | 2:04:11 | 2:04:11 |
|
|
||||||
| Can't re-arrange essential Icons | https://github.com/zen-browser/desktop/issues/7617 | 0:09:59 | 5:01:31 |
|
|
||||||
| Sidebar breifly appears when exiting fullscreen video | https://github.com/zen-browser/desktop/issues/7615 | 0:57:48 | 2 days, 11:44:49 |
|
|
||||||
| Resetting the fixed tab is invalid, it is not possible to click the tab icon to reset the tab | https://github.com/zen-browser/desktop/issues/7614 | 7:47:12 | 21:41:31 |
|
|
||||||
| Ctrl+Tab Cycling preview is at desktop size instead of window size | https://github.com/zen-browser/desktop/issues/7612 | None | None |
|
|
||||||
| Synced containers disrupted in synced workspaces | https://github.com/zen-browser/desktop/issues/7611 | 3 days, 8:25:51 | None |
|
|
||||||
| [a11y] Yellow-on-white warning when rebinding keys | https://github.com/zen-browser/desktop/issues/7609 | 1:38:15 | None |
|
|
||||||
| missing workspace emojis | https://github.com/zen-browser/desktop/issues/7608 | None | None |
|
|
||||||
| Two workspace managers , I can't delete the lowest workspace manager, it takes up half the browser screen ,no option to change wokspace manager to "menu" type in settings anymore. | https://github.com/zen-browser/desktop/issues/7607 | 3:17:15 | None |
|
|
||||||
| Issues with Detaching Tabs from Parent Window | https://github.com/zen-browser/desktop/issues/7606 | 0:04:52 | None |
|
|
||||||
| New Window doesn't focus URL bar on compact mode | https://github.com/zen-browser/desktop/issues/7605 | 0:05:43 | 1 day, 18:08:01 |
|
|
||||||
| Unable to copy clean link | https://github.com/zen-browser/desktop/issues/7604 | 0:26:36 | 5:16:04 |
|
|
||||||
| Closing the last tab doesn't close the window | https://github.com/zen-browser/desktop/issues/7603 | None | 0:21:59 |
|
|
||||||
| split screen not working on draging the tabs | https://github.com/zen-browser/desktop/issues/7601 | 0:46:35 | None |
|
|
||||||
| Closing a pinned tab won't open it to the reset URL when opening it again | https://github.com/zen-browser/desktop/issues/7600 | 9:10:40 | 19:51:32 |
|
|
||||||
| Cannot Screenshare with Zen (Teams, Meet, Jitsi, and alike) | https://github.com/zen-browser/desktop/issues/7597 | 0:35:35 | None |
|
|
||||||
| Microsoft teams fails to initialize | https://github.com/zen-browser/desktop/issues/7596 | 3:00:35 | 2 days, 6:17:50 |
|
|
||||||
| Microsoft Word Online prevents Zen from opening split view | https://github.com/zen-browser/desktop/issues/7595 | 12 days, 5:47:57 | None |
|
|
||||||
| splitView.change-on-hover not working | https://github.com/zen-browser/desktop/issues/7594 | 7:21:42 | 7:21:42 |
|
|
||||||
| Transparent background on toolbar customization page on Linux (Fedora 42, GNOME 48) | https://github.com/zen-browser/desktop/issues/7593 | None | None |
|
|
||||||
| Compact mode state not being consistant to all workspaces | https://github.com/zen-browser/desktop/issues/7591 | 11:38:56 | None |
|
|
||||||
| Zen window gaining focus makes the hidden sidebar glitch | https://github.com/zen-browser/desktop/issues/7590 | 3:49:52 | None |
|
|
||||||
| youtube theater option not available | https://github.com/zen-browser/desktop/issues/7589 | None | 0:03:22 |
|
|
||||||
| Address Bar shifts slightly when selecting part of the URL, changing the selection | https://github.com/zen-browser/desktop/issues/7586 | 10:21:52 | None |
|
|
||||||
| "Profiles" Persists in Menu After Disabling `browser.profiles.enabled` | https://github.com/zen-browser/desktop/issues/7584 | 0:33:05 | 2:55:19 |
|
|
||||||
| Window Tab Managment breaks when using "Switch to Tab" with multiple windows | https://github.com/zen-browser/desktop/issues/7583 | 1 day, 19:13:20 | None |
|
|
||||||
| If You Open a Second Zen Browser Instance You Lose Your Split Tabs If You Close The Main Window First | https://github.com/zen-browser/desktop/issues/7582 | 10:22:23 | None |
|
|
||||||
| Dragging Tabs Quickly Causes Split Position to Lock Left Even When Hovering Right | https://github.com/zen-browser/desktop/issues/7581 | None | None |
|
|
||||||
| URL box in bookmark editing window is small | https://github.com/zen-browser/desktop/issues/7580 | 21:15:14 | None |
|
|
||||||
| Tabs crashed | https://github.com/zen-browser/desktop/issues/7577 | None | None |
|
|
||||||
| bug: modifying app-id with `--name` doesn't work anymore | https://github.com/zen-browser/desktop/issues/7576 | 9:00:29 | None |
|
|
||||||
| iCloud Password Firefox extension is not working! | https://github.com/zen-browser/desktop/issues/7575 | 0:34:42 | 0:34:42 |
|
|
||||||
| With firefox sidebar opened on left, glance view control botton floats over the sidebar | https://github.com/zen-browser/desktop/issues/7574 | 1 day, 2:06:38 | None |
|
|
||||||
| Flatpak version of Zen browser tries to upgrade to v1.7b instead of v1.11.2b | https://github.com/zen-browser/desktop/issues/7571 | 0:23:15 | 1:50:02 |
|
|
||||||
| no firefox labs button & feature highlight , Ai chatbot & picture in Picture on tab switch etc. | https://github.com/zen-browser/desktop/issues/7568 | None | 3:17:25 |
|
|
||||||
| 1.11.2b : no firefox labs button & feature highlight , Ai chatbot & picture in Picture on tab switch etc. | https://github.com/zen-browser/desktop/issues/7567 | None | 0:02:13 |
|
|
||||||
| Vieus IDP.HEUR.28 detected by Norton when trying to install Zen browser | https://github.com/zen-browser/desktop/issues/7565 | None | 0:55:15 |
|
|
||||||
| Alert box cutoff half way | https://github.com/zen-browser/desktop/issues/7564 | 5:12:02 | 13 days, 8:10:41 |
|
|
||||||
| Retaining pinned split essential tabs and changing layout for split essential tabs | https://github.com/zen-browser/desktop/issues/7563 | None | None |
|
|
||||||
| Horizontal splitting vertical split and closing split leaves page buggy | https://github.com/zen-browser/desktop/issues/7562 | None | None |
|
|
||||||
| Closing the tab shortcut doesn't close the window. | https://github.com/zen-browser/desktop/issues/7561 | 9:21:08 | 9:21:08 |
|
|
||||||
| Zen minimizes after closing download options | https://github.com/zen-browser/desktop/issues/7559 | 8:22:23 | 17:23:11 |
|
|
||||||
| URL Bar disappearing when no text is there even when behaviour is always floating. | https://github.com/zen-browser/desktop/issues/7558 | 8:30:20 | 11:46:40 |
|
|
||||||
| Updating Zen hides all my tabs in the tab list | https://github.com/zen-browser/desktop/issues/7557 | 0:12:37 | 0:15:56 |
|
|
||||||
| Zen is being updated by another instance | https://github.com/zen-browser/desktop/issues/7556 | 1:06:46 | None |
|
|
||||||
| URL bar in sidebar transitions faster than the sidebar itself when enabling compact mode without floating mode | https://github.com/zen-browser/desktop/issues/7554 | 2:25:13 | None |
|
|
||||||
| Can't display local files properly | https://github.com/zen-browser/desktop/issues/7553 | 2:48:35 | 2:48:35 |
|
|
||||||
| Drag & Drop Essentials To Split Incompatible With Mod "Bottom Essentials" | https://github.com/zen-browser/desktop/issues/7552 | None | 0:04:48 |
|
|
||||||
| Zen browser does not save a web page | https://github.com/zen-browser/desktop/issues/7551 | 2:45:42 | 5:12:17 |
|
|
||||||
| Workspace Bug | https://github.com/zen-browser/desktop/issues/7549 | 0:31:53 | 1 day, 5:23:29 |
|
|
||||||
| no sidebar in compact mode | https://github.com/zen-browser/desktop/issues/7548 | 6:22:41 | 17:25:22 |
|
|
||||||
| Deleted workspaces remain accessible and breaks the browser | https://github.com/zen-browser/desktop/issues/7547 | 2 days, 0:29:41 | None |
|
|
||||||
| Ukrainian language not available in "Translate Selection" menu despite being downloaded | https://github.com/zen-browser/desktop/issues/7546 | None | None |
|
|
||||||
| about:editprofile does not work | https://github.com/zen-browser/desktop/issues/7545 | 1:10:38 | 8:57:39 |
|
|
||||||
| Sidebar overflow on restart | https://github.com/zen-browser/desktop/issues/7544 | None | 2 days, 13:49:54 |
|
|
||||||
| Unable to resize the pane if it's on the right side | https://github.com/zen-browser/desktop/issues/7543 | 0:20:18 | 2 days, 8:54:19 |
|
|
||||||
| changing Workspace position doesn't work | https://github.com/zen-browser/desktop/issues/7542 | 1:54:30 | 4 days, 23:51:53 |
|
|
||||||
| Web Developer Toolbar in the Network tab does not show the response of streamed XHR calls | https://github.com/zen-browser/desktop/issues/7541 | 0:34:03 | 1:46:10 |
|
|
||||||
| Inconsistent Tab Unload When Disabled (Context Menu Item Missing) | https://github.com/zen-browser/desktop/issues/7539 | 0:31:50 | None |
|
|
||||||
| Button to switch between profiles has disappeared from the toolbar since 1.8.1b | https://github.com/zen-browser/desktop/issues/7538 | 1:38:27 | 5:12:38 |
|
|
||||||
| Icon on macOS: slightly alter the black background | https://github.com/zen-browser/desktop/issues/7537 | None | None |
|
|
||||||
| Delayed loading of secondary components on YouTube pages while main video loads immediately | https://github.com/zen-browser/desktop/issues/7536 | 2:21:49 | 5:27:13 |
|
|
||||||
| Closing an essential tab removes it from essentials | https://github.com/zen-browser/desktop/issues/7534 | 1:29:28 | 3:16:13 |
|
|
||||||
| What is "menu bar" | https://github.com/zen-browser/desktop/issues/7531 | 21:31:23 | 21:31:28 |
|
|
||||||
| unwanted corners rendering during fullscreen videos | https://github.com/zen-browser/desktop/issues/7530 | None | 0:21:41 |
|
|
||||||
| splitting tab with pip freezes browser | https://github.com/zen-browser/desktop/issues/7529 | None | 3 days, 2:31:32 |
|
|
||||||
| Toggle Floating Sidebar keyboard shortcut not working | https://github.com/zen-browser/desktop/issues/7528 | 22:40:20 | None |
|
|
||||||
| Windows 11 taskbar previewing all tabs instead of window instance and preview icon not shown | https://github.com/zen-browser/desktop/issues/7527 | 1:23:13 | 1:23:13 |
|
|
||||||
| Cant CTRL+T to open a new tab, while in fullscreen (e.g. YouTube Fullscreen) | https://github.com/zen-browser/desktop/issues/7526 | 2:21:27 | 13:13:36 |
|
|
||||||
| Cant scroll tab list on touch screen. | https://github.com/zen-browser/desktop/issues/7524 | None | None |
|
|
||||||
| Glance gets stuck in half-open state | https://github.com/zen-browser/desktop/issues/7522 | 14 days, 18:10:24 | 14 days, 18:10:24 |
|
|
||||||
| Restarting zen causes sidebar to not appear when hovered (compact mode, hide both) | https://github.com/zen-browser/desktop/issues/7521 | 6:01:35 | 9:15:43 |
|
|
||||||
| Facebook page goes all blue if I open one ot its links in Glance | https://github.com/zen-browser/desktop/issues/7520 | None | None |
|
|
||||||
| Sidebar action previews are glitchy when you hover (Extensions, Back button, Forward button, Tabs and etc) | https://github.com/zen-browser/desktop/issues/7518 | 0:49:25 | 10:15:00 |
|
|
||||||
| Youtube videos not loading if i update zen-browser: (1.10.3b-1 => 1.11.1b-1) | https://github.com/zen-browser/desktop/issues/7517 | None | 10:37:45 |
|
|
||||||
| If the download file is in Chinese, the file name encoding is incorrect | https://github.com/zen-browser/desktop/issues/7515 | 1:06:02 | None |
|
|
||||||
| Extensions are not getting pinned. | https://github.com/zen-browser/desktop/issues/7514 | 1 day, 14:33:37 | 16 days, 5:13:01 |
|
|
||||||
| The tab on the right displays an exception | https://github.com/zen-browser/desktop/issues/7513 | None | None |
|
|
||||||
| Sidebar tab UI breaks when dragging tab to pinned area during Glance preview | https://github.com/zen-browser/desktop/issues/7511 | 1:30:49 | None |
|
|
||||||
| The sidetab is bugged | https://github.com/zen-browser/desktop/issues/7510 | 7:06:42 | None |
|
|
||||||
| The pop-up window has two lines | https://github.com/zen-browser/desktop/issues/7509 | 1 day, 10:21:56 | 1 day, 10:21:56 |
|
|
||||||
| Delay in updating changes during web development on Windows 11 | https://github.com/zen-browser/desktop/issues/7508 | 11 days, 1:09:00 | None |
|
|
||||||
| Closing tabs is too slow when many tabs are open | https://github.com/zen-browser/desktop/issues/7507 | None | 6 days, 10:18:17 |
|
|
||||||
| Zen browser does not have rounded corners on the bottom | https://github.com/zen-browser/desktop/issues/7506 | 1 day, 11:22:11 | 1 day, 11:22:11 |
|
|
||||||
| Many keyboard shortctut stopped working | https://github.com/zen-browser/desktop/issues/7504 | None | 1 day, 13:16:17 |
|
|
||||||
| Keyboard Shortcuts Conflict with Polish Programmer Layout on Windows | https://github.com/zen-browser/desktop/issues/7502 | None | 1 day, 16:06:30 |
|
|
||||||
| "wheel" event does not fire for horizontal scrolling on web pages | https://github.com/zen-browser/desktop/issues/7499 | 0:23:12 | 1 day, 6:35:06 |
|
|
||||||
| handoffToAwesomebar set to false no longer works. | https://github.com/zen-browser/desktop/issues/7494 | 7:04:46 | 7:04:46 |
|
|
||||||
| Zen Sidebar got really big and I cannot use the browser | https://github.com/zen-browser/desktop/issues/7493 | 0:50:22 | 8:53:04 |
|
|
||||||
| Closing Glance from Essentials or Pinned tabs exits tab to blank screen | https://github.com/zen-browser/desktop/issues/7492 | 1 day, 13:50:43 | 1 day, 13:50:43 |
|
|
||||||
| logs off from every account on restart on MAC x64 | https://github.com/zen-browser/desktop/issues/7491 | 12 days, 4:18:12 | 12 days, 13:46:23 |
|
|
||||||
| Tab Preview not working | https://github.com/zen-browser/desktop/issues/7490 | 3:07:01 | 7:09:23 |
|
|
||||||
| [Twilight 1.11.2] Sidebar wont open in compact mode upon startup | https://github.com/zen-browser/desktop/issues/7489 | 12:38:26 | 21:42:47 |
|
|
||||||
| Zen specific Shortcut Keys not working | https://github.com/zen-browser/desktop/issues/7488 | 3 days, 1:42:36 | 6 days, 12:29:56 |
|
|
||||||
| Tabs not opening in startup | https://github.com/zen-browser/desktop/issues/7485 | 3:07:38 | 7 days, 2:44:07 |
|
|
||||||
| Incognito mode doent work | https://github.com/zen-browser/desktop/issues/7483 | None | 1 day, 23:03:21 |
|
|
||||||
| reddit comments can't be seen | https://github.com/zen-browser/desktop/issues/7482 | 3:00:09 | None |
|
|
||||||
| Multi-Containers add-on fails display setting sub-pages | https://github.com/zen-browser/desktop/issues/7481 | None | None |
|
|
||||||
| Essentials MAJOR layout shift when entering or exiting Compact Mode | https://github.com/zen-browser/desktop/issues/7480 | 8:02:54 | 2 days, 9:04:45 |
|
|
||||||
| Gnome Extensions addon not working | https://github.com/zen-browser/desktop/issues/7479 | 1 day, 0:41:57 | None |
|
|
||||||
| The Web Panel is missing (alt+p) | https://github.com/zen-browser/desktop/issues/7478 | 0:04:11 | 1:02:59 |
|
|
||||||
| Workspace icon not visible, unable to create new workspaces | https://github.com/zen-browser/desktop/issues/7476 | 9:46:52 | 9:46:53 |
|
|
||||||
| Sidebar option "Move sidebar to the right"/"Move sidebar to the left" stopped working. | https://github.com/zen-browser/desktop/issues/7474 | 0:39:39 | 0:39:39 |
|
|
||||||
| Unable to reorder essentials - dragging puts them at the end | https://github.com/zen-browser/desktop/issues/7473 | 5 days, 19:40:17 | None |
|
|
||||||
| Profile damaged after a power outage | https://github.com/zen-browser/desktop/issues/7472 | 2:36:37 | 2:36:37 |
|
|
||||||
| Refresh button going out of the single toolbar view (Tab) | https://github.com/zen-browser/desktop/issues/7469 | 1 day, 10:13:58 | None |
|
|
||||||
| Can't open Google page, but Edge can | https://github.com/zen-browser/desktop/issues/7468 | 3:34:47 | 7:01:59 |
|
|
||||||
| Tabs close when opening a private window | https://github.com/zen-browser/desktop/issues/7467 | 1:49:32 | 19:09:09 |
|
|
||||||
| Sidebar does not really hide properly and it still visible without tab bars | https://github.com/zen-browser/desktop/issues/7466 | 0:06:06 | 1:28:35 |
|
|
||||||
| In continuous loop of crashes after update | https://github.com/zen-browser/desktop/issues/7465 | 12:02:49 | None |
|
|
||||||
| Unable to produce videos from Disney and Netflix pages | https://github.com/zen-browser/desktop/issues/7463 | 0:40:20 | 12:38:43 |
|
|
||||||
| "Find in Settings" box can't type anything into | https://github.com/zen-browser/desktop/issues/7460 | None | 12:49:08 |
|
|
||||||
| Browser breaks shortly after 'Close other tabs' | https://github.com/zen-browser/desktop/issues/7459 | None | 17:27:47 |
|
|
||||||
| Split View fails when the history tab is open | https://github.com/zen-browser/desktop/issues/7458 | 8:04:46 | 16:12:37 |
|
|
||||||
| "The application has failed to start because its side-by-side configuration is incorrect." | https://github.com/zen-browser/desktop/issues/7457 | 0:54:42 | 4:45:02 |
|
|
||||||
| opacity of #urlbar element is sometimes overwritten | https://github.com/zen-browser/desktop/issues/7454 | None | 2:25:01 |
|
|
||||||
| Enable Restore pinned tabs to their originally pinned URL on startup setting does not work | https://github.com/zen-browser/desktop/issues/7453 | 2:00:44 | 9 days, 18:38:49 |
|
|
||||||
| misclick caused by tab context menu | https://github.com/zen-browser/desktop/issues/7452 | 0:56:17 | 0:56:17 |
|
|
||||||
| Cookie named SESS disappears after restart | https://github.com/zen-browser/desktop/issues/7451 | 3 days, 21:47:30 | None |
|
|
||||||
| Impossible to click "Add mailto handler" popup — only visible on hover and disappears immediately | https://github.com/zen-browser/desktop/issues/7450 | 6 days, 5:39:09 | None |
|
|
||||||
| pinned extensions appear visually bugged when activating 'toggle sidebars width' shortcut from single toolbar mode. | https://github.com/zen-browser/desktop/issues/7448 | 0:30:31 | 0:30:31 |
|
|
||||||
| URL only appears after typing even when set to Always Floating | https://github.com/zen-browser/desktop/issues/7446 | 0:47:21 | 2 days, 5:09:45 |
|
|
||||||
| Drag and drop files not working on Linux | https://github.com/zen-browser/desktop/issues/7445 | 1:14:52 | 10:51:52 |
|
|
||||||
| Tooltips flickering when there is a tab with a video(even if the video is paused) | https://github.com/zen-browser/desktop/issues/7444 | 0:05:12 | 0:08:28 |
|
|
||||||
| Zen URL Bar floats on New Tab with 'Floating Only When Typing' option | https://github.com/zen-browser/desktop/issues/7441 | 4:37:47 | None |
|
|
||||||
| Essentials Tab – Confusing Right-Click Options (Close Tab & Remove from Essentails function exactly the same) | https://github.com/zen-browser/desktop/issues/7440 | 0:15:16 | 0:47:28 |
|
|
||||||
| Cannot close customize toolbar tab | https://github.com/zen-browser/desktop/issues/7438 | 9:45:55 | None |
|
|
||||||
| Miniplayer strange behaviour when redirecting to the music tab on another workspace | https://github.com/zen-browser/desktop/issues/7436 | None | None |
|
|
||||||
| Pinned Tab URL update toast being overlayed by container name | https://github.com/zen-browser/desktop/issues/7435 | None | None |
|
|
||||||
| "Open link in New Tab" does not follow the "Move the new tab button to the top" Setting | https://github.com/zen-browser/desktop/issues/7432 | 23:59:16 | None |
|
|
||||||
| Print Menu/Screen does not Adjust to Split Tabs | https://github.com/zen-browser/desktop/issues/7431 | 10 days, 16:43:02 | None |
|
|
||||||
| Mouse-over highlight colors in dropdown menus are virtually impossible to read. | https://github.com/zen-browser/desktop/issues/7430 | None | None |
|
|
||||||
| Sidebar padding takes space in full screen | https://github.com/zen-browser/desktop/issues/7429 | 2:42:13 | None |
|
|
||||||
| Passkey doesn't work on Windows Machine | https://github.com/zen-browser/desktop/issues/7428 | 3:55:01 | 4 days, 14:45:14 |
|
|
||||||
| Split button in search bar no longer present | https://github.com/zen-browser/desktop/issues/7427 | 4:46:19 | 1 day, 2:35:50 |
|
|
||||||
| Opening new window breaks essentials section | https://github.com/zen-browser/desktop/issues/7426 | 1 day, 20:57:12 | 2 days, 17:13:45 |
|
|
||||||
| Fixed split tabs don't preserve width after closing the browser | https://github.com/zen-browser/desktop/issues/7425 | 14 days, 19:41:02 | 18 days, 21:07:37 |
|
|
||||||
| Tab Hover Text Flickering | https://github.com/zen-browser/desktop/issues/7424 | 0:44:39 | 21:20:07 |
|
|
||||||
| Customise toolbar: Transparent background | https://github.com/zen-browser/desktop/issues/7423 | 2 days, 0:20:25 | None |
|
|
||||||
| The split-view view mode switch button is gone | https://github.com/zen-browser/desktop/issues/7422 | 0:24:53 | 1:15:04 |
|
|
||||||
| Close button bug on windows | https://github.com/zen-browser/desktop/issues/7421 | 3:16:32 | 6:04:38 |
|
|
||||||
| Button to manage split view no longer exists after recent update | https://github.com/zen-browser/desktop/issues/7420 | 0:07:59 | 1:47:42 |
|
|
||||||
| Right Click on tab spawns dropdown menu under mouse cursor leading to instantly chosing menu item. | https://github.com/zen-browser/desktop/issues/7419 | None | None |
|
|
||||||
| File Handler Dialog not opening in Archlinux (Hyprland) | https://github.com/zen-browser/desktop/issues/7418 | 14 days, 20:46:21 | None |
|
|
||||||
| New Tab UI Issue When Fullscreen | https://github.com/zen-browser/desktop/issues/7416 | 3:16:51 | 1 day, 10:25:21 |
|
|
||||||
| Re-arranging essentials tabs doesn't work as expected | https://github.com/zen-browser/desktop/issues/7415 | 8 days, 14:53:44 | None |
|
|
||||||
| Moderate hardening causes new tab functionality to break | https://github.com/zen-browser/desktop/issues/7414 | 1:28:39 | 1:45:02 |
|
|
||||||
| Mute icon of tab are clipped in compact mode | https://github.com/zen-browser/desktop/issues/7413 | 13:32:26 | 5 days, 9:41:24 |
|
|
||||||
| Terrible video playback performance, stuttering, freezing | https://github.com/zen-browser/desktop/issues/7412 | 7:19:05 | 9 days, 0:12:29 |
|
|
||||||
| Firefox notes doesn't open on the right even though that setting is toggled | https://github.com/zen-browser/desktop/issues/7411 | 2:24:04 | 11:55:33 |
|
|
||||||
| Popping sound when skipping/exiting YouTube videos | https://github.com/zen-browser/desktop/issues/7410 | None | None |
|
|
||||||
| 1.8b new Color Picker always clears custom colors after switching workspaces | https://github.com/zen-browser/desktop/issues/7409 | 2 days, 5:06:41 | 2 days, 11:01:52 |
|
|
||||||
| [Regression 1.8b+] Tab session extensions cannot record across workspaces anymore | https://github.com/zen-browser/desktop/issues/7408 | None | 5 days, 11:39:13 |
|
|
||||||
| While watching product videos on Temu.com, most of the time it does not open. | https://github.com/zen-browser/desktop/issues/7406 | 0:35:26 | None |
|
|
||||||
| search shortcut issues | https://github.com/zen-browser/desktop/issues/7405 | 0:59:18 | 2 days, 21:18:57 |
|
|
||||||
| Moving sidebar to right dosen't work | https://github.com/zen-browser/desktop/issues/7404 | 0:40:33 | 0:40:35 |
|
|
||||||
| Change tab to workspace doesn't work | https://github.com/zen-browser/desktop/issues/7403 | 0:54:36 | 5:40:26 |
|
|
||||||
| Closing the right hand side of a split tab shows the next tab, rather than the left side of the split. | https://github.com/zen-browser/desktop/issues/7402 | None | None |
|
|
||||||
| Search engines in search box selector gone | https://github.com/zen-browser/desktop/issues/7401 | 0:26:12 | 1:42:08 |
|
|
||||||
| Update Container while switching tab to another workspace | https://github.com/zen-browser/desktop/issues/7399 | 1:37:45 | 3:02:04 |
|
|
||||||
| Tooltips flickering | https://github.com/zen-browser/desktop/issues/7395 | 1 day, 8:58:26 | 1 day, 17:13:03 |
|
|
||||||
| Unable to render page when closing last tab with Ctrl+F4 | https://github.com/zen-browser/desktop/issues/7392 | None | None |
|
|
||||||
| Zen does not respect `gtk-application-prefer-dark-theme` | https://github.com/zen-browser/desktop/issues/7391 | 21:15:24 | 9 days, 9:00:51 |
|
|
||||||
| alt is not being recognize | https://github.com/zen-browser/desktop/issues/7390 | None | None |
|
|
||||||
| Zen HSTS Security Issue on genuine Websites | https://github.com/zen-browser/desktop/issues/7389 | None | None |
|
|
||||||
| Tiktok gives error while using | https://github.com/zen-browser/desktop/issues/7388 | 0:40:53 | 9 days, 11:10:46 |
|
|
||||||
| With v1.11b upgrade Firefox v137 but Not group tabs | https://github.com/zen-browser/desktop/issues/7387 | 0:47:12 | 0:51:31 |
|
|
||||||
| Alt + Clicking a link to open it in glance mode does not work in http pages | https://github.com/zen-browser/desktop/issues/7386 | 5 days, 9:24:16 | 5 days, 9:24:16 |
|
|
||||||
| URL click selects entire url instead of placing cursor at the clicked position | https://github.com/zen-browser/desktop/issues/7385 | 6 days, 1:13:15 | None |
|
|
||||||
| Close Window Keyboard Shortcut does nothing (due to conflict with Toggle DOM shortcut) | https://github.com/zen-browser/desktop/issues/7384 | 16 days, 14:22:58 | None |
|
|
||||||
| Bookmark/side bar aligns left when set to right | https://github.com/zen-browser/desktop/issues/7382 | 0:12:08 | 5 days, 0:06:03 |
|
|
||||||
| Opening the Web Inspector destroys Zen's layout in an unrecoverable manner with letterboxing | https://github.com/zen-browser/desktop/issues/7380 | 2 days, 10:03:45 | None |
|
|
||||||
| Extension Popout not Working on Multiple Toolbar View | https://github.com/zen-browser/desktop/issues/7379 | None | None |
|
|
||||||
| Extension background remains while extension window closes when moving main window | https://github.com/zen-browser/desktop/issues/7378 | 10:05:14 | 9 days, 2:14:11 |
|
|
||||||
| Firefox Labs Missing in 1.11.1b | https://github.com/zen-browser/desktop/issues/7377 | 1 day, 7:24:11 | None |
|
|
||||||
| Crashing of zen, reopening as a new browser every time | https://github.com/zen-browser/desktop/issues/7376 | 4:07:26 | 16 days, 7:00:23 |
|
|
||||||
| COMPLETE COLLAPSED TOOLBAR DISAPPERED | https://github.com/zen-browser/desktop/issues/7375 | 0:02:50 | 3:15:12 |
|
|
||||||
| Sidebar Scroll undraggable by mouse | https://github.com/zen-browser/desktop/issues/7374 | None | 9 days, 12:16:46 |
|
|
||||||
| Unload Tab Doesn't Release Resources | https://github.com/zen-browser/desktop/issues/7373 | 7:19:58 | 10 days, 9:05:02 |
|
|
||||||
| Tabs sent to another device go to the default workspace | https://github.com/zen-browser/desktop/issues/7371 | None | None |
|
|
||||||
| Color gradient window glitching when windowing browser | https://github.com/zen-browser/desktop/issues/7370 | None | 8:53:18 |
|
|
||||||
| (Gradient) Custom colors multiplying their instance in 1.11.1 | https://github.com/zen-browser/desktop/issues/7369 | 0:37:52 | 3 days, 12:39:46 |
|
|
||||||
| Opening in new tab from a Glance window opens under unloaded tabs instead of the current tab | https://github.com/zen-browser/desktop/issues/7368 | None | None |
|
|
||||||
| Extremely annoying update popups | https://github.com/zen-browser/desktop/issues/7367 | None | None |
|
|
||||||
| Unload Tabs Showing in Tab Cycling | https://github.com/zen-browser/desktop/issues/7365 | None | 9 days, 19:18:22 |
|
|
||||||
| Restoring previous session puts Zen into broken state | https://github.com/zen-browser/desktop/issues/7364 | 17 days, 21:23:34 | None |
|
|
||||||
| Unable to use split view with essentials | https://github.com/zen-browser/desktop/issues/7363 | 8:30:43 | 11:11:45 |
|
|
||||||
| Blurry text on ultrawide resolutions | https://github.com/zen-browser/desktop/issues/7362 | 0:06:03 | 23 days, 11:20:05 |
|
|
||||||
| Floating URL bar disappears on right click | https://github.com/zen-browser/desktop/issues/7361 | None | 7 days, 3:53:43 |
|
|
||||||
| Extension thinks it is always running in a private window | https://github.com/zen-browser/desktop/issues/7358 | None | None |
|
|
||||||
| All tabs keep crashing | https://github.com/zen-browser/desktop/issues/7356 | 1:29:18 | None |
|
|
||||||
| Error building Zen browser from AUR repositories | https://github.com/zen-browser/desktop/issues/7354 | 0:39:39 | 4:20:43 |
|
|
||||||
| Reproducable softlock on moving workspace | https://github.com/zen-browser/desktop/issues/7353 | 20:45:28 | None |
|
|
||||||
| Notifications appear as dialogue boxes | https://github.com/zen-browser/desktop/issues/7352 | 2:49:03 | None |
|
|
||||||
| Quiting browser closes all tabs when pressing the red close button (top left mac) | https://github.com/zen-browser/desktop/issues/7351 | 2:01:54 | 17:06:35 |
|
|
||||||
| YouTube player sometimes incorrectly opens in fullscreen mode | https://github.com/zen-browser/desktop/issues/7350 | None | None |
|
|
||||||
| Youtube video playback hangs when switching audio device | https://github.com/zen-browser/desktop/issues/7349 | 2:28:29 | None |
|
|
||||||
| AppImage GearLever updates broken since v1.11 | https://github.com/zen-browser/desktop/issues/7348 | None | None |
|
|
||||||
| On launch and changing workspace, will open first tab in tab list | https://github.com/zen-browser/desktop/issues/7347 | 22:54:43 | None |
|
|
||||||
| Subtitle in the Picture-In-Picture mode does not work properly | https://github.com/zen-browser/desktop/issues/7346 | None | 0:11:37 |
|
|
||||||
| Opening Findbar shifts main browser windows content up for a split second | https://github.com/zen-browser/desktop/issues/7345 | None | None |
|
|
||||||
| Bookmarks not showing in full-screen mode. | https://github.com/zen-browser/desktop/issues/7344 | 2 days, 21:14:21 | None |
|
|
||||||
| Cannot change sidebar location | https://github.com/zen-browser/desktop/issues/7342 | None | 0:02:42 |
|
|
||||||
| Workspace switch keyboard shortcut not working | https://github.com/zen-browser/desktop/issues/7341 | 7:44:33 | 10 days, 22:57:22 |
|
|
||||||
| The split tabs from glance aren't restored after browser restarted | https://github.com/zen-browser/desktop/issues/7340 | None | None |
|
|
||||||
| In split view, top bar onHover response is inconsistent | https://github.com/zen-browser/desktop/issues/7339 | 1:20:40 | 21 days, 0:00:20 |
|
|
||||||
| "Learn more" hyperlink leads to broken releases URL | https://github.com/zen-browser/desktop/issues/7338 | None | None |
|
|
||||||
| Flickering unusable menus if `widget.wayland.fractional-scale.enabled` is enabled | https://github.com/zen-browser/desktop/issues/7337 | None | None |
|
|
||||||
| Web Panel is missing and sidebar cant move to right side | https://github.com/zen-browser/desktop/issues/7335 | 0:32:24 | 1 day, 5:28:09 |
|
|
||||||
| Got IDBDatabase.transaction error when I tried to import Yomitan's dictionary | https://github.com/zen-browser/desktop/issues/7334 | 9:27:22 | 9:27:22 |
|
|
||||||
| Vsync is broken (Linux) | https://github.com/zen-browser/desktop/issues/7333 | 1:43:20 | 2:45:25 |
|
|
||||||
| Sidebar layout takes space when switching to fullscreen in compact mode | https://github.com/zen-browser/desktop/issues/7332 | 15:21:13 | 6 days, 1:37:58 |
|
|
||||||
| Input type `number` accept string | https://github.com/zen-browser/desktop/issues/7330 | 4 days, 5:56:33 | 4 days, 5:56:33 |
|
|
||||||
| Blur is no longer working on Linux | https://github.com/zen-browser/desktop/issues/7329 | 12:53:00 | 18:37:20 |
|
|
||||||
| Black text in right click menu | https://github.com/zen-browser/desktop/issues/7328 | 4 days, 9:19:32 | None |
|
|
||||||
| Window does not close with last tab, even with `browser.tabs.closeWindowWithLastTab` set to true | https://github.com/zen-browser/desktop/issues/7327 | 2 days, 23:22:12 | None |
|
|
||||||
| zen minimal exit buttons become square on new update | https://github.com/zen-browser/desktop/issues/7325 | 6:01:23 | None |
|
|
||||||
| Grey flash under mica context menus when clicked | https://github.com/zen-browser/desktop/issues/7324 | 4 days, 11:00:40 | 4 days, 11:00:40 |
|
|
||||||
| Zen Browser Releases replaced | https://github.com/zen-browser/desktop/issues/7322 | 0:13:52 | 0:13:54 |
|
|
||||||
| Tab Restore failed on Automatic Update | https://github.com/zen-browser/desktop/issues/7321 | 0:20:15 | None |
|
|
||||||
| Can't move sidebar to the right? | https://github.com/zen-browser/desktop/issues/7320 | 0:15:28 | 1 day, 9:22:24 |
|
|
||||||
| Glance Broken on Pinned Tabs | https://github.com/zen-browser/desktop/issues/7318 | 2:30:41 | 23:13:21 |
|
|
||||||
| Sidebar width becomes thinner in compact upon startup (doesn't retain predetermined width) | https://github.com/zen-browser/desktop/issues/7316 | 0:04:57 | 6 days, 2:27:44 |
|
|
||||||
| Greyed out part of URL sometimes turns back to white incosistently | https://github.com/zen-browser/desktop/issues/7315 | None | None |
|
|
||||||
| Dynamic theme mode not working | https://github.com/zen-browser/desktop/issues/7313 | 1 day, 2:42:51 | 2 days, 15:43:17 |
|
|
||||||
| Reading mode button is missing in single sidebar mode | https://github.com/zen-browser/desktop/issues/7312 | None | None |
|
|
||||||
| The sidebar is a little smaller, than its set size on startup in compact mode. | https://github.com/zen-browser/desktop/issues/7311 | 0:17:43 | 0:22:32 |
|
|
||||||
| Online TV doesn't show picture, there's only sound | https://github.com/zen-browser/desktop/issues/7309 | None | None |
|
|
||||||
| Glance window expand button doesn't work | https://github.com/zen-browser/desktop/issues/7308 | 2:01:15 | 2:01:15 |
|
|
||||||
| Resizing windows is broken when "privacy.resistfingerprinting" enabled and set to 1920x1080 | https://github.com/zen-browser/desktop/issues/7307 | 4 days, 0:12:26 | None |
|
|
||||||
| Going to the next or previous workspace using keyboard shortcuts is not working when the current tab has figma open | https://github.com/zen-browser/desktop/issues/7306 | None | None |
|
|
||||||
| Profile badge no longer shows up on taskbar icon | https://github.com/zen-browser/desktop/issues/7305 | None | 21 days, 20:20:01 |
|
|
||||||
| Unable to change how the new tab works | https://github.com/zen-browser/desktop/issues/7304 | 14:37:11 | 5 days, 22:16:36 |
|
|
||||||
| Bookmarks won't open when current container tab is not the default container of the workspace | https://github.com/zen-browser/desktop/issues/7303 | None | None |
|
|
||||||
| Extension view not rendered in single toolbar view | https://github.com/zen-browser/desktop/issues/7301 | 1:02:07 | None |
|
|
||||||
| scroll icon not working | https://github.com/zen-browser/desktop/issues/7299 | None | 1 day, 5:21:02 |
|
|
||||||
| see through background or grey. | https://github.com/zen-browser/desktop/issues/7298 | None | None |
|
|
||||||
| Glance split view button opens full page | https://github.com/zen-browser/desktop/issues/7297 | 8:01:18 | 14:37:04 |
|
|
||||||
| No split view icon in urlbar | https://github.com/zen-browser/desktop/issues/7296 | 2:35:01 | 12:19:25 |
|
|
||||||
| Workspaces temporarily inherit essential tabs from the source workspace a container tab was switched from | https://github.com/zen-browser/desktop/issues/7295 | 7 days, 16:30:59 | 11 days, 23:18:33 |
|
|
||||||
| UI misalignments in sidebar | https://github.com/zen-browser/desktop/issues/7294 | None | 1 day, 12:20:56 |
|
|
||||||
| Single Toolbar icons shuffle position on restart | https://github.com/zen-browser/desktop/issues/7293 | None | None |
|
|
||||||
| Fix for #7078 has broken zen workspaces (upon restart) | https://github.com/zen-browser/desktop/issues/7289 | 0:19:19 | 2 days, 0:09:09 |
|
|
||||||
| Anthropic's Claude freezes only on Zen browser | https://github.com/zen-browser/desktop/issues/7287 | 0:53:16 | 1:25:34 |
|
|
||||||
| Unable to change tabs in the certificate manager. | https://github.com/zen-browser/desktop/issues/7286 | 0:29:07 | 5:25:58 |
|
|
||||||
| Cyrillic display problem | https://github.com/zen-browser/desktop/issues/7285 | None | None |
|
|
||||||
| Panel goes off the screen when adding new extension | https://github.com/zen-browser/desktop/issues/7281 | None | 1 day, 2:35:00 |
|
|
||||||
| XDG Base Directory support, and/or data directory environment variable | https://github.com/zen-browser/desktop/issues/7280 | 2 days, 10:45:19 | None |
|
|
||||||
| Short width and fixed Side Bar | https://github.com/zen-browser/desktop/issues/7279 | 1:29:03 | 1 day, 2:14:11 |
|
|
||||||
| Switch to tab not working if tab is unloaded | https://github.com/zen-browser/desktop/issues/7278 | 1 day, 11:01:11 | None |
|
|
||||||
| Incorrect Cedilla Input Rendering | https://github.com/zen-browser/desktop/issues/7276 | None | None |
|
|
||||||
| Key bindings without modifier still apply when typing in to input fields | https://github.com/zen-browser/desktop/issues/7275 | None | None |
|
|
||||||
| MX Master 3 Forward/Back Mouse Buttons Don't Work For Switching Workspaces While Logi Options+ is Installed | https://github.com/zen-browser/desktop/issues/7274 | 12:18:06 | 13 days, 10:49:45 |
|
|
||||||
| Tab preview on hover doesn't work | https://github.com/zen-browser/desktop/issues/7273 | None | 0:03:37 |
|
|
||||||
| Change Tab(s) To Workspace broken in 1.11b | https://github.com/zen-browser/desktop/issues/7272 | 10:07:25 | 11:07:25 |
|
|
||||||
| Bookmarks don't open in new tab when using new tab | https://github.com/zen-browser/desktop/issues/7271 | 1:24:44 | None |
|
|
||||||
| Portable Installation Mode will no longer exist and will not be updated? | https://github.com/zen-browser/desktop/issues/7270 | 16:31:52 | 11 days, 17:33:57 |
|
|
||||||
| Split glance tab button opens in new tab when opened from Essentials tab | https://github.com/zen-browser/desktop/issues/7269 | 11 days, 17:48:17 | 11 days, 17:48:17 |
|
|
||||||
| Open animation for menus start from the wrong side | https://github.com/zen-browser/desktop/issues/7267 | 11 days, 18:21:58 | 11 days, 18:21:58 |
|
|
||||||
| There is no workspaces in fresh Zen install.. | https://github.com/zen-browser/desktop/issues/7266 | 0:16:38 | 14:56:31 |
|
|
||||||
| Extension Settings not displaying when no tab is selected | https://github.com/zen-browser/desktop/issues/7265 | 6 days, 14:56:37 | None |
|
|
||||||
| Modal window for a "New Tab" dissapears when switching language using Win + Space on Linux Mint | https://github.com/zen-browser/desktop/issues/7264 | 11 days, 19:09:08 | 11 days, 19:09:08 |
|
|
||||||
| Glance not works on local http pages | https://github.com/zen-browser/desktop/issues/7263 | 0:39:34 | 11 days, 19:55:22 |
|
|
||||||
| Compact mode leaves empty space after sidebar disappeared | https://github.com/zen-browser/desktop/issues/7262 | 0:10:52 | 15 days, 8:01:40 |
|
|
||||||
| In WIN10, when browser is maximized, an autohide taskbar cannot unhide | https://github.com/zen-browser/desktop/issues/7261 | None | 3 days, 7:50:43 |
|
|
||||||
| "Move sidebar to right" is not working | https://github.com/zen-browser/desktop/issues/7260 | 3:02:35 | 4 days, 3:22:44 |
|
|
||||||
| Side by side view leaves a gap in the tabs at the side bar | https://github.com/zen-browser/desktop/issues/7258 | None | None |
|
|
||||||
| White text in right click menu on browser chrome in light mode | https://github.com/zen-browser/desktop/issues/7257 | 8 days, 21:19:48 | None |
|
|
||||||
| URL always focused when I open a new tab. | https://github.com/zen-browser/desktop/issues/7255 | 5:53:57 | 9 days, 23:59:28 |
|
|
||||||
| Essential tabs. Glance window expanding event trigger the Leave event of the Google Meet stream | https://github.com/zen-browser/desktop/issues/7254 | 5:29:41 | 18:32:56 |
|
|
||||||
| IDN address shows punny code in URL | https://github.com/zen-browser/desktop/issues/7253 | None | None |
|
|
||||||
| UI display exception in right tab mode | https://github.com/zen-browser/desktop/issues/7252 | 18:35:56 | None |
|
|
||||||
| Bugs in Tiktok web site | https://github.com/zen-browser/desktop/issues/7250 | None | None |
|
|
||||||
| Pinned sidebar overlaps bookmarks bar in compact mode with no tabs open | https://github.com/zen-browser/desktop/issues/7249 | 1:14:48 | 13 days, 2:45:51 |
|
|
||||||
| Search Window Closes When Switching Keyboard Language in GNOME | https://github.com/zen-browser/desktop/issues/7248 | None | None |
|
|
||||||
| The Window Control Buttons sometimes are unavailable after screen sharing. | https://github.com/zen-browser/desktop/issues/7247 | None | None |
|
|
||||||
| [BUG] Extensions become huge after collapsing the side bar | https://github.com/zen-browser/desktop/issues/7246 | 0:05:27 | None |
|
|
||||||
| Essential tabs do not auto-load when opened after reopening Zen | https://github.com/zen-browser/desktop/issues/7245 | None | None |
|
|
||||||
| Azure Devops Server not loading properly | https://github.com/zen-browser/desktop/issues/7244 | None | None |
|
|
||||||
| Image Previews Not Displaying in Google Chat on Zen Browser | https://github.com/zen-browser/desktop/issues/7243 | 0:02:08 | None |
|
|
||||||
| [Twilight 1.11] Janky rendering behaviour with split view | https://github.com/zen-browser/desktop/issues/7242 | None | 1 day, 14:55:44 |
|
|
||||||
| INSANE MEMORY LEAK THAT YOU KEEP CLOSING & IGNORING | https://github.com/zen-browser/desktop/issues/7240 | 0:10:04 | 2:32:53 |
|
|
||||||
| --zen-sidebar-width not set correctly when opening Zen with compact mode enabled | https://github.com/zen-browser/desktop/issues/7239 | 7:28:04 | 7:56:39 |
|
|
||||||
| Ctrl + T and Ctrl + L popup address bar only shows up after starting to type | https://github.com/zen-browser/desktop/issues/7238 | None | None |
|
|
||||||
| Some Shortcuts not working in some keyboard layouts. | https://github.com/zen-browser/desktop/issues/7237 | 13 days, 9:31:33 | 13 days, 9:31:33 |
|
|
||||||
| Re-Opening: Stopping YouTube video on Zen forcing Alcove (dynamic island app) to quit and cannot be launched again | https://github.com/zen-browser/desktop/issues/7235 | None | None |
|
|
||||||
| Thumbwheel MX Master 3s to switch a workspace | https://github.com/zen-browser/desktop/issues/7234 | 14 days, 15:00:31 | None |
|
|
||||||
| Browser unsupported error on Google Docs | https://github.com/zen-browser/desktop/issues/7233 | None | None |
|
|
||||||
| Previous windows and tabs are not reopened on Zen for mac | https://github.com/zen-browser/desktop/issues/7232 | None | None |
|
|
||||||
| Keyboard shortcut binding: Recieve keys as accent characters | https://github.com/zen-browser/desktop/issues/7230 | 10 days, 2:40:15 | 13 days, 14:20:32 |
|
|
||||||
| Cannot login to Syncthing GUI with username/password | https://github.com/zen-browser/desktop/issues/7228 | 4 days, 11:35:55 | None |
|
|
||||||
| Minimize to taskbar and full screen buttons not showing up - Linux | https://github.com/zen-browser/desktop/issues/7227 | None | None |
|
|
||||||
| Zen makes PC completely unresponsive | https://github.com/zen-browser/desktop/issues/7226 | 1 day, 20:39:55 | 11 days, 16:18:54 |
|
|
||||||
| Bookmark Manager: Workspace not populated nor editable | https://github.com/zen-browser/desktop/issues/7225 | 2:56:17 | 2:56:17 |
|
|
||||||
| Twilight and Zen side by side install bugged on macOS | https://github.com/zen-browser/desktop/issues/7224 | None | None |
|
|
||||||
| Element.io: clicking on link can steal focus, dim page | https://github.com/zen-browser/desktop/issues/7222 | 22:41:10 | None |
|
|
||||||
| Essential tabs disappear if they are assigned to different containers | https://github.com/zen-browser/desktop/issues/7220 | 20:50:53 | None |
|
|
||||||
| Pages Not Loading – Only Works in Private Mode | https://github.com/zen-browser/desktop/issues/7219 | 15:48:55 | 7 days, 12:35:00 |
|
|
||||||
| Youtube Audio Jitters while i play league of legends | https://github.com/zen-browser/desktop/issues/7217 | None | None |
|
|
||||||
| Split tabs resizing bar shows through Side web panels | https://github.com/zen-browser/desktop/issues/7216 | None | None |
|
|
||||||
| Close button hover makes browser have an epileptic attack | https://github.com/zen-browser/desktop/issues/7215 | None | None |
|
|
||||||
| Zen Support Link in Settings menu links to Mozilla instead of Zen | https://github.com/zen-browser/desktop/issues/7214 | None | None |
|
|
||||||
| Editing a URL always opens a new tab | https://github.com/zen-browser/desktop/issues/7213 | 19:28:32 | 20:39:12 |
|
|
||||||
| Keeps logging out of my accounts | https://github.com/zen-browser/desktop/issues/7212 | 20 days, 0:43:00 | None |
|
|
||||||
| Split View - Grid: When reopening Zen, grid layout is "forgotten" and reset back to default | https://github.com/zen-browser/desktop/issues/7211 | 16 days, 1:00:24 | None |
|
|
||||||
| iCloud Password Extension Bug on Mac 15.4 - This extension requires Sonoma or above / Verification Code does not appear | https://github.com/zen-browser/desktop/issues/7210 | 1 day, 8:30:59 | None |
|
|
||||||
| Status bar graphical issue/glitch | https://github.com/zen-browser/desktop/issues/7208 | 20:10:21 | 9 days, 12:31:32 |
|
|
||||||
| When restoring session manually, It always creates extra window apart from the previous session | https://github.com/zen-browser/desktop/issues/7207 | None | None |
|
|
||||||
| Split view bugs out when open a pop up page | https://github.com/zen-browser/desktop/issues/7206 | 0:48:48 | None |
|
|
||||||
| Can't Switch Profile | https://github.com/zen-browser/desktop/issues/7205 | 1:13:14 | 1:13:14 |
|
|
||||||
| start too slowly | https://github.com/zen-browser/desktop/issues/7204 | 0:29:57 | 1:43:28 |
|
|
||||||
| [twilight 1.10.3] can't create workspaces at all | https://github.com/zen-browser/desktop/issues/7203 | 1:36:25 | 2:02:36 |
|
|
||||||
| Zen ignores system trusted certs when run in flatpak | https://github.com/zen-browser/desktop/issues/7202 | 2:03:40 | None |
|
|
||||||
| Google Docs stops accepting keyboard input | https://github.com/zen-browser/desktop/issues/7201 | 1 day, 6:00:18 | None |
|
|
||||||
| Default Profile Cannot be Deleted | https://github.com/zen-browser/desktop/issues/7200 | 5:20:28 | 5 days, 16:04:35 |
|
|
||||||
| Zen not respecting system theme | https://github.com/zen-browser/desktop/issues/7199 | 3:10:26 | 4:25:44 |
|
|
||||||
| Opening multiple tabs to Zen Mods site to try multiple mods overwrites all new mods except the most recent | https://github.com/zen-browser/desktop/issues/7198 | None | None |
|
|
||||||
| INSANE MEMORY LEAK THAT YOU KEEP CLOSING & IGNORING | https://github.com/zen-browser/desktop/issues/7197 | 0:30:36 | 6:55:54 |
|
|
||||||
| ETP icon missing | https://github.com/zen-browser/desktop/issues/7195 | 0:05:14 | 8:42:37 |
|
|
||||||
| Any web page is not displayed | https://github.com/zen-browser/desktop/issues/7194 | 8:23:51 | 5 days, 1:34:24 |
|
|
||||||
| Window buttons aren't filled to the top right. | https://github.com/zen-browser/desktop/issues/7193 | 11:18:10 | 11:18:10 |
|
|
||||||
| Cursor not hiding when entering fullscreen playback on MacOS | https://github.com/zen-browser/desktop/issues/7192 | 0:02:58 | None |
|
|
||||||
| Crash on wayland when using discrete GPU | https://github.com/zen-browser/desktop/issues/7190 | None | 24 days, 7:14:40 |
|
|
||||||
| Web panel does not obey default zoom | https://github.com/zen-browser/desktop/issues/7189 | None | 3 days, 9:18:34 |
|
|
||||||
| Compact mode does not show popup/redirect warnings | https://github.com/zen-browser/desktop/issues/7188 | 14 days, 19:04:37 | None |
|
|
||||||
| Using lots of ram on mac | https://github.com/zen-browser/desktop/issues/7187 | 4:56:02 | 16:12:58 |
|
|
||||||
| Background goes gray when I maximize the window | https://github.com/zen-browser/desktop/issues/7185 | None | None |
|
|
||||||
| Level1techs forum loads VERY slowly only on Zen | https://github.com/zen-browser/desktop/issues/7184 | 5:43:12 | 17 days, 4:27:11 |
|
|
||||||
| After deleting the non-deafult workspaces, any reference to workspaces disappeared | https://github.com/zen-browser/desktop/issues/7183 | 10 days, 20:48:36 | 14 days, 6:48:03 |
|
|
||||||
| Essentials and pinned tabs get stuck in a half-glance state if a glance window is forced into a new container tab | https://github.com/zen-browser/desktop/issues/7182 | 7:36:25 | None |
|
|
||||||
| Workspace navigation emojis should be emojis at all times | https://github.com/zen-browser/desktop/issues/7181 | 5:37:07 | 21 days, 20:30:16 |
|
|
||||||
| Closing glance view with escape minimizes Zen on MacOS | https://github.com/zen-browser/desktop/issues/7179 | 7 days, 19:04:25 | None |
|
|
||||||
| Thick Border around the context menus | https://github.com/zen-browser/desktop/issues/7177 | 12 days, 0:26:31 | None |
|
|
||||||
| Sidebar popup doesn't work if running new tab from link on webpage | https://github.com/zen-browser/desktop/issues/7175 | 10 days, 10:52:50 | 15 days, 2:43:49 |
|
|
||||||
| Slow startup on Windows | https://github.com/zen-browser/desktop/issues/7174 | None | None |
|
|
||||||
| Glance opens on magnet links | https://github.com/zen-browser/desktop/issues/7173 | 23:54:11 | 1 day, 23:56:02 |
|
|
||||||
| WebGL isn't supported | https://github.com/zen-browser/desktop/issues/7172 | 4 days, 9:42:07 | 4 days, 9:42:07 |
|
|
||||||
| Cursor Auto-Highlight on Ctrl+Tab Disrupts Tab Cycling | https://github.com/zen-browser/desktop/issues/7170 | 11:18:59 | None |
|
|
||||||
| Confirmation dialog before quitting prevents unattended macOS updates | https://github.com/zen-browser/desktop/issues/7169 | None | None |
|
|
||||||
| Extension's options pop-up in the address after switching between single and multiple toolbars | https://github.com/zen-browser/desktop/issues/7168 | None | None |
|
|
||||||
| Lag and auto-scroll upon switching from a workspace that has split tabs open | https://github.com/zen-browser/desktop/issues/7167 | None | None |
|
|
||||||
| Essentials turning into pinned tab in new window | https://github.com/zen-browser/desktop/issues/7166 | None | None |
|
|
||||||
| Option "Open links in tabs instead of new windows" unchecked after restart browser | https://github.com/zen-browser/desktop/issues/7165 | 4:30:57 | None |
|
|
||||||
| Massive Screen Time spikes on MacOS | https://github.com/zen-browser/desktop/issues/7163 | 17 days, 15:28:42 | None |
|
|
||||||
| Split screen weird behaviour | https://github.com/zen-browser/desktop/issues/7162 | 2 days, 7:25:53 | None |
|
|
||||||
|
|
||||||
_This report was generated with the [Issue Metrics Action](https://github.com/github/issue-metrics)_
|
|
||||||
Search query used to find these items: `repo:zen-browser/desktop is:issue created:2025-04-01..2025-04-30`
|
|
2
l10n
2
l10n
|
@ -1 +1 @@
|
||||||
Subproject commit ebecb32da8929e4f14f9a20f40acb9dab401101c
|
Subproject commit e51bc808c44f5b7f1505e14a217720c9179f9cab
|
524
package-lock.json
generated
524
package-lock.json
generated
|
@ -9,7 +9,7 @@
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"license": "MPL-2.0",
|
"license": "MPL-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@zen-browser/surfer": "^1.11.13"
|
"@zen-browser/surfer": "^1.11.11"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/preset-typescript": "^7.27.0",
|
"@babel/preset-typescript": "^7.27.0",
|
||||||
|
@ -817,14 +817,14 @@
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/@zen-browser/surfer": {
|
"node_modules/@zen-browser/surfer": {
|
||||||
"version": "1.11.13",
|
"version": "1.11.11",
|
||||||
"resolved": "https://registry.npmjs.org/@zen-browser/surfer/-/surfer-1.11.13.tgz",
|
"resolved": "https://registry.npmjs.org/@zen-browser/surfer/-/surfer-1.11.11.tgz",
|
||||||
"integrity": "sha512-D0TyunAWYtTdJkuUkYeOc6VBXzE9aoDs58kWu/Oi/aU3vd8IbqXPbZZfYwj5FWPWDReMrJUNkkKAEdbL44y9aw==",
|
"integrity": "sha512-n5t25jjG77/rg1HETQBloriCc4GVlHaGWDTNdOxU35Y2qqokcSU+3mPP2cy8u/GBfF0AS6YQmCjE2636tbZkRA==",
|
||||||
"license": "MPL-2.0",
|
"license": "MPL-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@resvg/resvg-js": "^1.4.0",
|
"@resvg/resvg-js": "^1.4.0",
|
||||||
"async-icns": "^1.0.2",
|
"async-icns": "^1.0.2",
|
||||||
"axios": "^0.30.0",
|
"axios": "^0.21.1",
|
||||||
"chalk": "^4.1.0",
|
"chalk": "^4.1.0",
|
||||||
"cli-progress": "^3.9.1",
|
"cli-progress": "^3.9.1",
|
||||||
"commander": "^6.2.1",
|
"commander": "^6.2.1",
|
||||||
|
@ -841,7 +841,7 @@
|
||||||
"prompts": "^2.4.1",
|
"prompts": "^2.4.1",
|
||||||
"rustic": "^1.2.1",
|
"rustic": "^1.2.1",
|
||||||
"semver": "^7.3.7",
|
"semver": "^7.3.7",
|
||||||
"sharp": "^0.32.6",
|
"sharp": "^0.30.7",
|
||||||
"tiny-glob": "^0.2.9",
|
"tiny-glob": "^0.2.9",
|
||||||
"xmlbuilder2": "^3.0.2"
|
"xmlbuilder2": "^3.0.2"
|
||||||
},
|
},
|
||||||
|
@ -942,99 +942,13 @@
|
||||||
"node": "^12.20.0 || >=14"
|
"node": "^12.20.0 || >=14"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/asynckit": {
|
|
||||||
"version": "0.4.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
|
|
||||||
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
|
|
||||||
"license": "MIT"
|
|
||||||
},
|
|
||||||
"node_modules/axios": {
|
"node_modules/axios": {
|
||||||
"version": "0.30.0",
|
"version": "0.21.4",
|
||||||
"resolved": "https://registry.npmjs.org/axios/-/axios-0.30.0.tgz",
|
"resolved": "https://registry.npmjs.org/axios/-/axios-0.21.4.tgz",
|
||||||
"integrity": "sha512-Z4F3LjCgfjZz8BMYalWdMgAQUnEtKDmpwNHjh/C8pQZWde32TF64cqnSeyL3xD/aTIASRU30RHTNzRiV/NpGMg==",
|
"integrity": "sha512-ut5vewkiu8jjGBdqpM44XxjuCjq9LAKeHVmoVfHVzy8eHgxxq8SbAVQNovDA8mVi05kP0Ea/n/UzcSHcTJQfNg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"follow-redirects": "^1.15.4",
|
"follow-redirects": "^1.14.0"
|
||||||
"form-data": "^4.0.0",
|
|
||||||
"proxy-from-env": "^1.1.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/b4a": {
|
|
||||||
"version": "1.6.7",
|
|
||||||
"resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz",
|
|
||||||
"integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==",
|
|
||||||
"license": "Apache-2.0"
|
|
||||||
},
|
|
||||||
"node_modules/bare-events": {
|
|
||||||
"version": "2.5.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.4.tgz",
|
|
||||||
"integrity": "sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==",
|
|
||||||
"license": "Apache-2.0",
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"node_modules/bare-fs": {
|
|
||||||
"version": "4.1.4",
|
|
||||||
"resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-4.1.4.tgz",
|
|
||||||
"integrity": "sha512-r8+26Voz8dGX3AYpJdFb1ZPaUSM8XOLCZvy+YGpRTmwPHIxA7Z3Jov/oMPtV7hfRQbOnH8qGlLTzQAbgtdNN0Q==",
|
|
||||||
"license": "Apache-2.0",
|
|
||||||
"optional": true,
|
|
||||||
"dependencies": {
|
|
||||||
"bare-events": "^2.5.4",
|
|
||||||
"bare-path": "^3.0.0",
|
|
||||||
"bare-stream": "^2.6.4"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"bare": ">=1.16.0"
|
|
||||||
},
|
|
||||||
"peerDependencies": {
|
|
||||||
"bare-buffer": "*"
|
|
||||||
},
|
|
||||||
"peerDependenciesMeta": {
|
|
||||||
"bare-buffer": {
|
|
||||||
"optional": true
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/bare-os": {
|
|
||||||
"version": "3.6.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/bare-os/-/bare-os-3.6.1.tgz",
|
|
||||||
"integrity": "sha512-uaIjxokhFidJP+bmmvKSgiMzj2sV5GPHaZVAIktcxcpCyBFFWO+YlikVAdhmUo2vYFvFhOXIAlldqV29L8126g==",
|
|
||||||
"license": "Apache-2.0",
|
|
||||||
"optional": true,
|
|
||||||
"engines": {
|
|
||||||
"bare": ">=1.14.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/bare-path": {
|
|
||||||
"version": "3.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/bare-path/-/bare-path-3.0.0.tgz",
|
|
||||||
"integrity": "sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==",
|
|
||||||
"license": "Apache-2.0",
|
|
||||||
"optional": true,
|
|
||||||
"dependencies": {
|
|
||||||
"bare-os": "^3.0.1"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/bare-stream": {
|
|
||||||
"version": "2.6.5",
|
|
||||||
"resolved": "https://registry.npmjs.org/bare-stream/-/bare-stream-2.6.5.tgz",
|
|
||||||
"integrity": "sha512-jSmxKJNJmHySi6hC42zlZnq00rga4jjxcgNZjY9N5WlOe/iOoGRtdwGsHzQv2RlH2KOYMwGUXhf2zXd32BA9RA==",
|
|
||||||
"license": "Apache-2.0",
|
|
||||||
"optional": true,
|
|
||||||
"dependencies": {
|
|
||||||
"streamx": "^2.21.0"
|
|
||||||
},
|
|
||||||
"peerDependencies": {
|
|
||||||
"bare-buffer": "*",
|
|
||||||
"bare-events": "*"
|
|
||||||
},
|
|
||||||
"peerDependenciesMeta": {
|
|
||||||
"bare-buffer": {
|
|
||||||
"optional": true
|
|
||||||
},
|
|
||||||
"bare-events": {
|
|
||||||
"optional": true
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/base64-js": {
|
"node_modules/base64-js": {
|
||||||
|
@ -1197,19 +1111,6 @@
|
||||||
"integrity": "sha512-LdUw/JMZyKN+EBDbOHqynYtOLXDjgo+uf5vCUhfO5hVsU2chvbqyexizvxUMaU4ipYZy9MiQyIFwMeIgsb6nBA==",
|
"integrity": "sha512-LdUw/JMZyKN+EBDbOHqynYtOLXDjgo+uf5vCUhfO5hVsU2chvbqyexizvxUMaU4ipYZy9MiQyIFwMeIgsb6nBA==",
|
||||||
"license": "(MIT OR Apache-2.0)"
|
"license": "(MIT OR Apache-2.0)"
|
||||||
},
|
},
|
||||||
"node_modules/call-bind-apply-helpers": {
|
|
||||||
"version": "1.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz",
|
|
||||||
"integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"es-errors": "^1.3.0",
|
|
||||||
"function-bind": "^1.1.2"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 0.4"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/call-once-fn": {
|
"node_modules/call-once-fn": {
|
||||||
"version": "1.0.15",
|
"version": "1.0.15",
|
||||||
"resolved": "https://registry.npmjs.org/call-once-fn/-/call-once-fn-1.0.15.tgz",
|
"resolved": "https://registry.npmjs.org/call-once-fn/-/call-once-fn-1.0.15.tgz",
|
||||||
|
@ -1381,18 +1282,6 @@
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/combined-stream": {
|
|
||||||
"version": "1.0.8",
|
|
||||||
"resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
|
|
||||||
"integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"delayed-stream": "~1.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 0.8"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/commander": {
|
"node_modules/commander": {
|
||||||
"version": "6.2.1",
|
"version": "6.2.1",
|
||||||
"resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
|
"resolved": "https://registry.npmjs.org/commander/-/commander-6.2.1.tgz",
|
||||||
|
@ -1495,38 +1384,15 @@
|
||||||
"node": ">=4.0.0"
|
"node": ">=4.0.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/delayed-stream": {
|
|
||||||
"version": "1.0.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
|
|
||||||
"integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==",
|
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
|
||||||
"node": ">=0.4.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/detect-libc": {
|
"node_modules/detect-libc": {
|
||||||
"version": "2.0.4",
|
"version": "2.0.3",
|
||||||
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz",
|
"resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.3.tgz",
|
||||||
"integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==",
|
"integrity": "sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/dunder-proto": {
|
|
||||||
"version": "1.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz",
|
|
||||||
"integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"call-bind-apply-helpers": "^1.0.1",
|
|
||||||
"es-errors": "^1.3.0",
|
|
||||||
"gopd": "^1.2.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 0.4"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/duplexify": {
|
"node_modules/duplexify": {
|
||||||
"version": "4.1.3",
|
"version": "4.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/duplexify/-/duplexify-4.1.3.tgz",
|
||||||
|
@ -1589,51 +1455,6 @@
|
||||||
"url": "https://github.com/sponsors/sindresorhus"
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/es-define-property": {
|
|
||||||
"version": "1.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz",
|
|
||||||
"integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==",
|
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 0.4"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/es-errors": {
|
|
||||||
"version": "1.3.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz",
|
|
||||||
"integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==",
|
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 0.4"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/es-object-atoms": {
|
|
||||||
"version": "1.1.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz",
|
|
||||||
"integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"es-errors": "^1.3.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 0.4"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/es-set-tostringtag": {
|
|
||||||
"version": "2.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz",
|
|
||||||
"integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"es-errors": "^1.3.0",
|
|
||||||
"get-intrinsic": "^1.2.6",
|
|
||||||
"has-tostringtag": "^1.0.2",
|
|
||||||
"hasown": "^2.0.2"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 0.4"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/escalade": {
|
"node_modules/escalade": {
|
||||||
"version": "3.2.0",
|
"version": "3.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
|
"resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz",
|
||||||
|
@ -1756,12 +1577,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/fast-fifo": {
|
|
||||||
"version": "1.3.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz",
|
|
||||||
"integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==",
|
|
||||||
"license": "MIT"
|
|
||||||
},
|
|
||||||
"node_modules/fifo": {
|
"node_modules/fifo": {
|
||||||
"version": "2.4.1",
|
"version": "2.4.1",
|
||||||
"resolved": "https://registry.npmjs.org/fifo/-/fifo-2.4.1.tgz",
|
"resolved": "https://registry.npmjs.org/fifo/-/fifo-2.4.1.tgz",
|
||||||
|
@ -1825,21 +1640,6 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/form-data": {
|
|
||||||
"version": "4.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.2.tgz",
|
|
||||||
"integrity": "sha512-hGfm/slu0ZabnNt4oaRZ6uREyfCj6P4fT/n6A1rGV+Z0VdGXjfOhVUpkn6qVQONHGIFwmveGXyDs75+nr6FM8w==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"asynckit": "^0.4.0",
|
|
||||||
"combined-stream": "^1.0.8",
|
|
||||||
"es-set-tostringtag": "^2.1.0",
|
|
||||||
"mime-types": "^2.1.12"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 6"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/formal-git": {
|
"node_modules/formal-git": {
|
||||||
"version": "1.1.5",
|
"version": "1.1.5",
|
||||||
"resolved": "https://registry.npmjs.org/formal-git/-/formal-git-1.1.5.tgz",
|
"resolved": "https://registry.npmjs.org/formal-git/-/formal-git-1.1.5.tgz",
|
||||||
|
@ -1871,15 +1671,6 @@
|
||||||
"node": ">=12"
|
"node": ">=12"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/function-bind": {
|
|
||||||
"version": "1.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz",
|
|
||||||
"integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==",
|
|
||||||
"license": "MIT",
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/ljharb"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/gensync": {
|
"node_modules/gensync": {
|
||||||
"version": "1.0.0-beta.2",
|
"version": "1.0.0-beta.2",
|
||||||
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
|
"resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz",
|
||||||
|
@ -1913,43 +1704,6 @@
|
||||||
"url": "https://github.com/sponsors/sindresorhus"
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/get-intrinsic": {
|
|
||||||
"version": "1.3.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz",
|
|
||||||
"integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"call-bind-apply-helpers": "^1.0.2",
|
|
||||||
"es-define-property": "^1.0.1",
|
|
||||||
"es-errors": "^1.3.0",
|
|
||||||
"es-object-atoms": "^1.1.1",
|
|
||||||
"function-bind": "^1.1.2",
|
|
||||||
"get-proto": "^1.0.1",
|
|
||||||
"gopd": "^1.2.0",
|
|
||||||
"has-symbols": "^1.1.0",
|
|
||||||
"hasown": "^2.0.2",
|
|
||||||
"math-intrinsics": "^1.1.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 0.4"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/ljharb"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/get-proto": {
|
|
||||||
"version": "1.0.1",
|
|
||||||
"resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz",
|
|
||||||
"integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"dunder-proto": "^1.0.1",
|
|
||||||
"es-object-atoms": "^1.0.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 0.4"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/get-stream": {
|
"node_modules/get-stream": {
|
||||||
"version": "6.0.1",
|
"version": "6.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
|
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz",
|
||||||
|
@ -1990,18 +1744,6 @@
|
||||||
"integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==",
|
"integrity": "sha512-uHJgbwAMwNFf5mLst7IWLNg14x1CkeqglJb/K3doi4dw6q2IvAAmM/Y81kevy83wP+Sst+nutFTYOGg3d1lsxg==",
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/gopd": {
|
|
||||||
"version": "1.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz",
|
|
||||||
"integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==",
|
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 0.4"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/ljharb"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/graceful-fs": {
|
"node_modules/graceful-fs": {
|
||||||
"version": "4.2.11",
|
"version": "4.2.11",
|
||||||
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
|
"resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz",
|
||||||
|
@ -2017,51 +1759,12 @@
|
||||||
"node": ">=8"
|
"node": ">=8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/has-symbols": {
|
|
||||||
"version": "1.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz",
|
|
||||||
"integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==",
|
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 0.4"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/ljharb"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/has-tostringtag": {
|
|
||||||
"version": "1.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz",
|
|
||||||
"integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"has-symbols": "^1.0.3"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 0.4"
|
|
||||||
},
|
|
||||||
"funding": {
|
|
||||||
"url": "https://github.com/sponsors/ljharb"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/hash-string": {
|
"node_modules/hash-string": {
|
||||||
"version": "1.0.0",
|
"version": "1.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/hash-string/-/hash-string-1.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/hash-string/-/hash-string-1.0.0.tgz",
|
||||||
"integrity": "sha512-dtNNyxXobzHavayZwOwRWhBTqS9GX4jDjIMsGc0fDyaN2A+4zMn5Ua9ODDCggN6w3Spma6mAHL3ImmW3BkWDmQ==",
|
"integrity": "sha512-dtNNyxXobzHavayZwOwRWhBTqS9GX4jDjIMsGc0fDyaN2A+4zMn5Ua9ODDCggN6w3Spma6mAHL3ImmW3BkWDmQ==",
|
||||||
"license": "ISC"
|
"license": "ISC"
|
||||||
},
|
},
|
||||||
"node_modules/hasown": {
|
|
||||||
"version": "2.0.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz",
|
|
||||||
"integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"function-bind": "^1.1.2"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 0.4"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/human-signals": {
|
"node_modules/human-signals": {
|
||||||
"version": "2.1.0",
|
"version": "2.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz",
|
||||||
|
@ -2636,15 +2339,6 @@
|
||||||
"yallist": "^3.0.2"
|
"yallist": "^3.0.2"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/math-intrinsics": {
|
|
||||||
"version": "1.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz",
|
|
||||||
"integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==",
|
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 0.4"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/merge-stream": {
|
"node_modules/merge-stream": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.0",
|
||||||
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz",
|
||||||
|
@ -2665,27 +2359,6 @@
|
||||||
"node": ">=8.6"
|
"node": ">=8.6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/mime-db": {
|
|
||||||
"version": "1.52.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz",
|
|
||||||
"integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==",
|
|
||||||
"license": "MIT",
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 0.6"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/mime-types": {
|
|
||||||
"version": "2.1.35",
|
|
||||||
"resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz",
|
|
||||||
"integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"mime-db": "1.52.0"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 0.6"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/mimic-fn": {
|
"node_modules/mimic-fn": {
|
||||||
"version": "2.1.0",
|
"version": "2.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz",
|
||||||
|
@ -2804,9 +2477,9 @@
|
||||||
"license": "ISC"
|
"license": "ISC"
|
||||||
},
|
},
|
||||||
"node_modules/node-abi": {
|
"node_modules/node-abi": {
|
||||||
"version": "3.75.0",
|
"version": "3.74.0",
|
||||||
"resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.75.0.tgz",
|
"resolved": "https://registry.npmjs.org/node-abi/-/node-abi-3.74.0.tgz",
|
||||||
"integrity": "sha512-OhYaY5sDsIka7H7AtijtI9jwGYLyl29eQn/W623DiN/MIv5sUqc4g7BIDThX+gb7di9f6xK02nkp8sdfFWZLTg==",
|
"integrity": "sha512-c5XK0MjkGBrQPGYG24GBADZud0NCbznxNx0ZkS+ebUTrmV1qTDxPxSL8zEAPURXSbLRWVexxmP4986BziahL5w==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"semver": "^7.3.5"
|
"semver": "^7.3.5"
|
||||||
|
@ -2816,9 +2489,9 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/node-addon-api": {
|
"node_modules/node-addon-api": {
|
||||||
"version": "6.1.0",
|
"version": "5.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-6.1.0.tgz",
|
"resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-5.1.0.tgz",
|
||||||
"integrity": "sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==",
|
"integrity": "sha512-eh0GgfEkpnoWDq+VY8OyvYhFEzBk6jIYbRKdIlyTiAXIVJ8PyBaKb0rp7oDtoddbdoHWhq8wwr+XZ81F1rpNdA==",
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/node-releases": {
|
"node_modules/node-releases": {
|
||||||
|
@ -2993,59 +2666,6 @@
|
||||||
"node": ">=10"
|
"node": ">=10"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/prebuild-install/node_modules/bl": {
|
|
||||||
"version": "4.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
|
|
||||||
"integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"buffer": "^5.5.0",
|
|
||||||
"inherits": "^2.0.4",
|
|
||||||
"readable-stream": "^3.4.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/prebuild-install/node_modules/readable-stream": {
|
|
||||||
"version": "3.6.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
|
|
||||||
"integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"inherits": "^2.0.3",
|
|
||||||
"string_decoder": "^1.1.1",
|
|
||||||
"util-deprecate": "^1.0.1"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">= 6"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/prebuild-install/node_modules/tar-fs": {
|
|
||||||
"version": "2.1.2",
|
|
||||||
"resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.2.tgz",
|
|
||||||
"integrity": "sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"chownr": "^1.1.1",
|
|
||||||
"mkdirp-classic": "^0.5.2",
|
|
||||||
"pump": "^3.0.0",
|
|
||||||
"tar-stream": "^2.1.4"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/prebuild-install/node_modules/tar-stream": {
|
|
||||||
"version": "2.2.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
|
|
||||||
"integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"bl": "^4.0.3",
|
|
||||||
"end-of-stream": "^1.4.1",
|
|
||||||
"fs-constants": "^1.0.0",
|
|
||||||
"inherits": "^2.0.3",
|
|
||||||
"readable-stream": "^3.1.1"
|
|
||||||
},
|
|
||||||
"engines": {
|
|
||||||
"node": ">=6"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/prettier": {
|
"node_modules/prettier": {
|
||||||
"version": "3.5.3",
|
"version": "3.5.3",
|
||||||
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz",
|
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.5.3.tgz",
|
||||||
|
@ -3120,12 +2740,6 @@
|
||||||
"node": ">=6"
|
"node": ">=6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/proxy-from-env": {
|
|
||||||
"version": "1.1.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz",
|
|
||||||
"integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==",
|
|
||||||
"license": "MIT"
|
|
||||||
},
|
|
||||||
"node_modules/pump": {
|
"node_modules/pump": {
|
||||||
"version": "3.0.2",
|
"version": "3.0.2",
|
||||||
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz",
|
"resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz",
|
||||||
|
@ -3323,9 +2937,9 @@
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/semver": {
|
"node_modules/semver": {
|
||||||
"version": "7.7.2",
|
"version": "7.7.1",
|
||||||
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz",
|
"resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz",
|
||||||
"integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==",
|
"integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==",
|
||||||
"license": "ISC",
|
"license": "ISC",
|
||||||
"bin": {
|
"bin": {
|
||||||
"semver": "bin/semver.js"
|
"semver": "bin/semver.js"
|
||||||
|
@ -3351,23 +2965,23 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/sharp": {
|
"node_modules/sharp": {
|
||||||
"version": "0.32.6",
|
"version": "0.30.7",
|
||||||
"resolved": "https://registry.npmjs.org/sharp/-/sharp-0.32.6.tgz",
|
"resolved": "https://registry.npmjs.org/sharp/-/sharp-0.30.7.tgz",
|
||||||
"integrity": "sha512-KyLTWwgcR9Oe4d9HwCwNM2l7+J0dUQwn/yf7S0EnTtb0eVS4RxO0eUSvxPtzT4F3SY+C4K6fqdv/DO27sJ/v/w==",
|
"integrity": "sha512-G+MY2YW33jgflKPTXXptVO28HvNOo9G3j0MybYAHeEmby+QuD2U98dT6ueht9cv/XDqZspSpIhoSW+BAKJ7Hig==",
|
||||||
"hasInstallScript": true,
|
"hasInstallScript": true,
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"color": "^4.2.3",
|
"color": "^4.2.3",
|
||||||
"detect-libc": "^2.0.2",
|
"detect-libc": "^2.0.1",
|
||||||
"node-addon-api": "^6.1.0",
|
"node-addon-api": "^5.0.0",
|
||||||
"prebuild-install": "^7.1.1",
|
"prebuild-install": "^7.1.1",
|
||||||
"semver": "^7.5.4",
|
"semver": "^7.3.7",
|
||||||
"simple-get": "^4.0.1",
|
"simple-get": "^4.0.1",
|
||||||
"tar-fs": "^3.0.4",
|
"tar-fs": "^2.1.1",
|
||||||
"tunnel-agent": "^0.6.0"
|
"tunnel-agent": "^0.6.0"
|
||||||
},
|
},
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=14.15.0"
|
"node": ">=12.13.0"
|
||||||
},
|
},
|
||||||
"funding": {
|
"funding": {
|
||||||
"url": "https://opencollective.com/libvips"
|
"url": "https://opencollective.com/libvips"
|
||||||
|
@ -3538,19 +3152,6 @@
|
||||||
"integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==",
|
"integrity": "sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==",
|
||||||
"license": "MIT"
|
"license": "MIT"
|
||||||
},
|
},
|
||||||
"node_modules/streamx": {
|
|
||||||
"version": "2.22.0",
|
|
||||||
"resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.0.tgz",
|
|
||||||
"integrity": "sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==",
|
|
||||||
"license": "MIT",
|
|
||||||
"dependencies": {
|
|
||||||
"fast-fifo": "^1.3.2",
|
|
||||||
"text-decoder": "^1.1.0"
|
|
||||||
},
|
|
||||||
"optionalDependencies": {
|
|
||||||
"bare-events": "^2.2.0"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/string_decoder": {
|
"node_modules/string_decoder": {
|
||||||
"version": "1.1.1",
|
"version": "1.1.1",
|
||||||
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
|
||||||
|
@ -3667,17 +3268,15 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/tar-fs": {
|
"node_modules/tar-fs": {
|
||||||
"version": "3.0.8",
|
"version": "2.1.2",
|
||||||
"resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.8.tgz",
|
"resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-2.1.2.tgz",
|
||||||
"integrity": "sha512-ZoROL70jptorGAlgAYiLoBLItEKw/fUxg9BSYK/dF/GAGYFJOJJJMvjPAKDJraCXFwadD456FCuvLWgfhMsPwg==",
|
"integrity": "sha512-EsaAXwxmx8UB7FRKqeozqEPop69DXcmYwTQwXvyAPF352HJsPdkVhvTaDPYqfNgruveJIJy3TA2l+2zj8LJIJA==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"chownr": "^1.1.1",
|
||||||
|
"mkdirp-classic": "^0.5.2",
|
||||||
"pump": "^3.0.0",
|
"pump": "^3.0.0",
|
||||||
"tar-stream": "^3.1.5"
|
"tar-stream": "^2.1.4"
|
||||||
},
|
|
||||||
"optionalDependencies": {
|
|
||||||
"bare-fs": "^4.0.1",
|
|
||||||
"bare-path": "^3.0.0"
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/tar-iterator": {
|
"node_modules/tar-iterator": {
|
||||||
|
@ -3700,14 +3299,19 @@
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/tar-stream": {
|
"node_modules/tar-stream": {
|
||||||
"version": "3.1.7",
|
"version": "2.2.0",
|
||||||
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz",
|
"resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-2.2.0.tgz",
|
||||||
"integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==",
|
"integrity": "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"b4a": "^1.6.4",
|
"bl": "^4.0.3",
|
||||||
"fast-fifo": "^1.2.0",
|
"end-of-stream": "^1.4.1",
|
||||||
"streamx": "^2.15.0"
|
"fs-constants": "^1.0.0",
|
||||||
|
"inherits": "^2.0.3",
|
||||||
|
"readable-stream": "^3.1.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=6"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/tar-stream-compat": {
|
"node_modules/tar-stream-compat": {
|
||||||
|
@ -3737,6 +3341,31 @@
|
||||||
"safe-buffer": "^5.1.1"
|
"safe-buffer": "^5.1.1"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"node_modules/tar-stream/node_modules/bl": {
|
||||||
|
"version": "4.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz",
|
||||||
|
"integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"buffer": "^5.5.0",
|
||||||
|
"inherits": "^2.0.4",
|
||||||
|
"readable-stream": "^3.4.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/tar-stream/node_modules/readable-stream": {
|
||||||
|
"version": "3.6.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
|
||||||
|
"integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"inherits": "^2.0.3",
|
||||||
|
"string_decoder": "^1.1.1",
|
||||||
|
"util-deprecate": "^1.0.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 6"
|
||||||
|
}
|
||||||
|
},
|
||||||
"node_modules/temp-suffix": {
|
"node_modules/temp-suffix": {
|
||||||
"version": "0.1.14",
|
"version": "0.1.14",
|
||||||
"resolved": "https://registry.npmjs.org/temp-suffix/-/temp-suffix-0.1.14.tgz",
|
"resolved": "https://registry.npmjs.org/temp-suffix/-/temp-suffix-0.1.14.tgz",
|
||||||
|
@ -3749,15 +3378,6 @@
|
||||||
"node": ">=0.8"
|
"node": ">=0.8"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/text-decoder": {
|
|
||||||
"version": "1.2.3",
|
|
||||||
"resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz",
|
|
||||||
"integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==",
|
|
||||||
"license": "Apache-2.0",
|
|
||||||
"dependencies": {
|
|
||||||
"b4a": "^1.6.4"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"node_modules/through": {
|
"node_modules/through": {
|
||||||
"version": "2.3.8",
|
"version": "2.3.8",
|
||||||
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
|
"resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
|
||||||
|
|
|
@ -23,9 +23,7 @@
|
||||||
"lint": "npx prettier . --check && autopep8 --diff scripts/ src/",
|
"lint": "npx prettier . --check && autopep8 --diff scripts/ src/",
|
||||||
"prepare": "husky",
|
"prepare": "husky",
|
||||||
"reset-ff": "surfer reset",
|
"reset-ff": "surfer reset",
|
||||||
"surfer": "surfer",
|
"surfer": "surfer"
|
||||||
"test": "python3 scripts/run_tests.py",
|
|
||||||
"test:dbg": "python3 scripts/run_tests.py --jsdebugger --debug-on-failure"
|
|
||||||
},
|
},
|
||||||
"repository": {
|
"repository": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
|
@ -42,7 +40,7 @@
|
||||||
},
|
},
|
||||||
"homepage": "https://github.com/zen-browser/desktop#readme",
|
"homepage": "https://github.com/zen-browser/desktop#readme",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@zen-browser/surfer": "^1.11.13"
|
"@zen-browser/surfer": "^1.11.11"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/preset-typescript": "^7.27.0",
|
"@babel/preset-typescript": "^7.27.0",
|
||||||
|
|
|
@ -38,7 +38,7 @@ def get_rc_response() -> Optional[str]:
|
||||||
for tag_dict in data["tags"]:
|
for tag_dict in data["tags"]:
|
||||||
tag = tag_dict["tag"]
|
tag = tag_dict["tag"]
|
||||||
if (tag.startswith("FIREFOX") and tag.endswith("_BUILD1")
|
if (tag.startswith("FIREFOX") and tag.endswith("_BUILD1")
|
||||||
and "ESR" not in tag and "b" not in tag and "ANDROID" not in tag):
|
and "ESR" not in tag and "b" not in tag):
|
||||||
return (tag.replace("FIREFOX_", "").replace("_BUILD1",
|
return (tag.replace("FIREFOX_", "").replace("_BUILD1",
|
||||||
"").replace("_", "."))
|
"").replace("_", "."))
|
||||||
except (FileNotFoundError, json.JSONDecodeError) as e:
|
except (FileNotFoundError, json.JSONDecodeError) as e:
|
||||||
|
|
|
@ -1,45 +0,0 @@
|
||||||
import os
|
|
||||||
import sys
|
|
||||||
import subprocess
|
|
||||||
from pathlib import Path
|
|
||||||
|
|
||||||
|
|
||||||
def main():
|
|
||||||
project_root = Path(__file__).resolve().parent.parent
|
|
||||||
package_json = project_root / 'package.json'
|
|
||||||
|
|
||||||
# Ensure script is run from project root
|
|
||||||
if not package_json.exists():
|
|
||||||
print("Please run this script from the root of the project", file=sys.stderr)
|
|
||||||
sys.exit(1)
|
|
||||||
|
|
||||||
args = sys.argv[1:]
|
|
||||||
path = ""
|
|
||||||
for arg in args:
|
|
||||||
if not arg.startswith("--"):
|
|
||||||
path = arg
|
|
||||||
break
|
|
||||||
|
|
||||||
# Collect any additional arguments
|
|
||||||
other_args = [arg for arg in args if arg != path]
|
|
||||||
|
|
||||||
engine_dir = project_root / 'engine'
|
|
||||||
os.chdir(engine_dir)
|
|
||||||
|
|
||||||
def run_mach_with_paths(test_paths):
|
|
||||||
command = ['./mach', 'mochitest'] + other_args + test_paths
|
|
||||||
subprocess.run(command, check=True)
|
|
||||||
|
|
||||||
if path in ("", "all"):
|
|
||||||
test_dirs = [p for p in Path("zen/tests").iterdir() if p.is_dir()]
|
|
||||||
test_paths = [str(p) for p in test_dirs]
|
|
||||||
run_mach_with_paths(test_paths)
|
|
||||||
else:
|
|
||||||
run_mach_with_paths([f"zen/tests/{path}"])
|
|
||||||
|
|
||||||
# Return to original directory
|
|
||||||
os.chdir(project_root)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
main()
|
|
|
@ -1,8 +1,8 @@
|
||||||
diff --git a/Cargo.lock b/Cargo.lock
|
diff --git a/Cargo.lock b/Cargo.lock
|
||||||
index f7ebed9b2a71da90c5751cfd5d5f018cc8b73612..96e881c7782198f1e58be2578f167c7079a8191e 100644
|
index 38508fffccbce801a02d4a4211f368674307c4d3..5ce56c36da2e242ad81621c2032eb68dcd26e960 100644
|
||||||
--- a/Cargo.lock
|
--- a/Cargo.lock
|
||||||
+++ b/Cargo.lock
|
+++ b/Cargo.lock
|
||||||
@@ -4014,8 +4014,6 @@ dependencies = [
|
@@ -3931,8 +3931,6 @@ dependencies = [
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "mime_guess"
|
name = "mime_guess"
|
||||||
version = "2.0.4"
|
version = "2.0.4"
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
diff --git a/Cargo.toml b/Cargo.toml
|
diff --git a/Cargo.toml b/Cargo.toml
|
||||||
index 8c6b99bc629ec26e01ab3746f2ae46174bfaa0b1..5791c7470923c7c15986089b40357ce80365e942 100644
|
index d3d529b487f80d4b4f3bfa13cdd3f62946352db8..b35a9e0e3339d48d1cd0cab7b22d030f330e40d1 100644
|
||||||
--- a/Cargo.toml
|
--- a/Cargo.toml
|
||||||
+++ b/Cargo.toml
|
+++ b/Cargo.toml
|
||||||
@@ -233,6 +233,9 @@ rure = { path = "third_party/rust/rure" }
|
@@ -217,6 +217,9 @@ rure = { path = "third_party/rust/rure" }
|
||||||
# Patch `plist` to work with `indexmap` 2.*
|
# Patch `plist` to work with `indexmap` 2.*
|
||||||
plist = { path = "third_party/rust/plist" }
|
plist = { path = "third_party/rust/plist" }
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
diff --git a/browser/actors/WebRTCParent.sys.mjs b/browser/actors/WebRTCParent.sys.mjs
|
diff --git a/browser/actors/WebRTCParent.sys.mjs b/browser/actors/WebRTCParent.sys.mjs
|
||||||
index 4ed2dd19207fc38b9e5cc22ea2947aba94b2f5ad..ffc88d62dc46683399c68cdfd35f1b1efde70902 100644
|
index 40e3a057a1d4b2f9bcfb73fa5ff96b2555865434..a92bed06766dd930bd336d56cd9ddcf3c6c0eeca 100644
|
||||||
--- a/browser/actors/WebRTCParent.sys.mjs
|
--- a/browser/actors/WebRTCParent.sys.mjs
|
||||||
+++ b/browser/actors/WebRTCParent.sys.mjs
|
+++ b/browser/actors/WebRTCParent.sys.mjs
|
||||||
@@ -152,6 +152,7 @@ export class WebRTCParent extends JSWindowActorParent {
|
@@ -152,6 +152,7 @@ export class WebRTCParent extends JSWindowActorParent {
|
||||||
|
|
|
@ -1,6 +0,0 @@
|
||||||
|
|
||||||
pref("browser.ml.chat.enabled", false);
|
|
||||||
pref("browser.ml.chat.shortcuts", false);
|
|
||||||
pref("browser.ml.chat.shortcuts.custom", false);
|
|
||||||
pref("browser.ml.chat.sidebar", false);
|
|
||||||
pref("browser.ml.enable", false);
|
|
|
@ -1,52 +0,0 @@
|
||||||
|
|
||||||
|
|
||||||
// Restore session on startup
|
|
||||||
pref("browser.startup.page", 3);
|
|
||||||
pref("browser.sessionstore.restore_pinned_tabs_on_demand", true);
|
|
||||||
|
|
||||||
// Toolbars
|
|
||||||
pref("browser.tabs.closeWindowWithLastTab", false);
|
|
||||||
pref("browser.tabs.loadBookmarksInTabs", false);
|
|
||||||
pref("browser.tabs.hoverPreview.enabled", false);
|
|
||||||
pref("browser.tabs.dragdrop.moveOverThresholdPercent", 50);
|
|
||||||
pref("browser.tabs.unloadTabInContextMenu", true);
|
|
||||||
pref("browser.tabs.fadeOutExplicitlyUnloadedTabs", true);
|
|
||||||
|
|
||||||
pref('browser.toolbars.bookmarks.visibility', 'never');
|
|
||||||
pref("browser.bookmarks.openInTabClosesMenu", false);
|
|
||||||
pref("browser.menu.showViewImageInfo", true);
|
|
||||||
pref("findbar.highlightAll", true);
|
|
||||||
|
|
||||||
pref("layout.word_select.eat_space_to_next_word", false);
|
|
||||||
|
|
||||||
// Better Windows theming
|
|
||||||
pref("widget.non-native-theme.scrollbar.style", 2);
|
|
||||||
pref("widget.non-native-theme.use-theme-accent", true);
|
|
||||||
|
|
||||||
// for the new layout:
|
|
||||||
pref('browser.download.autohideButton', false);
|
|
||||||
|
|
||||||
// Disable Firefox's revamp
|
|
||||||
pref("sidebar.revamp", false, locked);
|
|
||||||
pref("sidebar.verticalTabs", false, locked);
|
|
||||||
|
|
||||||
// Enable experimental settings page (Used for Zen Labs)
|
|
||||||
pref('browser.preferences.experimental', true);
|
|
||||||
|
|
||||||
// Downloads
|
|
||||||
pref("browser.download.manager.addToRecentDocs", false);
|
|
||||||
pref('browser.download.open_pdf_attachments_inline', true);
|
|
||||||
pref('browser.download.alwaysOpenPanel', false);
|
|
||||||
|
|
||||||
// Updates
|
|
||||||
#ifdef MOZILLA_OFFICIAL
|
|
||||||
pref("app.update.checkInstallTime.days", 6);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include fullscreen.inc
|
|
||||||
#include ai.inc
|
|
||||||
#include disablemozilla.inc
|
|
||||||
|
|
||||||
// TODO: Check this out!
|
|
||||||
pref("browser.profiles.enabled", false);
|
|
||||||
pref("browser.tabs.groups.enabled", false);
|
|
|
@ -1,11 +0,0 @@
|
||||||
|
|
||||||
// Common UI changes
|
|
||||||
pref("browser.privatebrowsing.vpnpromourl", "", locked);
|
|
||||||
pref("extensions.getAddons.showPane", false);
|
|
||||||
pref("extensions.htmlaboutaddons.recommendations.enabled", false);
|
|
||||||
pref("browser.discovery.enabled", false);
|
|
||||||
pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons", false);
|
|
||||||
pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features", false);
|
|
||||||
pref("browser.preferences.moreFromMozilla", false, locked);
|
|
||||||
pref("browser.aboutwelcome.enabled", false);
|
|
||||||
pref("browser.contentblocking.report.show_mobile_app", false, locked);
|
|
|
@ -1,5 +0,0 @@
|
||||||
|
|
||||||
// security: They must enable this themselves, to avoid people downloading malware
|
|
||||||
pref('xpinstall.signatures.required', true);
|
|
||||||
pref("extensions.pocket.enabled", false);
|
|
||||||
|
|
|
@ -1,142 +0,0 @@
|
||||||
|
|
||||||
pref('zen.welcome-screen.seen', false, sticky);
|
|
||||||
|
|
||||||
pref('zen.tabs.vertical', true);
|
|
||||||
pref('zen.tabs.vertical.right-side', false);
|
|
||||||
pref('zen.tabs.rename-tabs', true);
|
|
||||||
pref('zen.tabs.show-newtab-vertical', true);
|
|
||||||
|
|
||||||
pref('zen.ctrlTab.show-pending-tabs', false);
|
|
||||||
|
|
||||||
pref('zen.theme.accent-color', "#ffb787");
|
|
||||||
pref('zen.theme.content-element-separation', 8); // In pixels
|
|
||||||
pref('zen.theme.gradient', true);
|
|
||||||
pref('zen.theme.gradient.show-custom-colors', false);
|
|
||||||
pref('zen.theme.essentials-favicon-bg', true);
|
|
||||||
|
|
||||||
pref('zen.view.show-newtab-button-border-top', false);
|
|
||||||
pref('zen.view.show-newtab-button-top', true);
|
|
||||||
|
|
||||||
pref('zen.mediacontrols.enabled', true);
|
|
||||||
|
|
||||||
// Exposure:
|
|
||||||
pref('zen.haptic-feedback.enabled', true);
|
|
||||||
|
|
||||||
pref('zen.mods.auto-update-days', 20); // In days
|
|
||||||
#ifdef MOZILLA_OFFICIAL
|
|
||||||
pref('zen.mods.auto-update', true);
|
|
||||||
pref('zen.rice.api.url', 'https://share.zen-browser.app', locked);
|
|
||||||
pref('zen.injections.match-urls', 'https://zen-browser.app/*,https://share.zen-browser.app/*', locked);
|
|
||||||
#else
|
|
||||||
pref('zen.mods.auto-update', false);
|
|
||||||
pref('zen.rice.api.url', "http://localhost", locked);
|
|
||||||
pref('zen.injections.match-urls', 'http://localhost/*', locked);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
pref('zen.rice.share.notice.accepted', false);
|
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
pref('zen.theme.border-radius', 10); // In pixels
|
|
||||||
#else
|
|
||||||
pref('zen.theme.border-radius', 8); // In pixels
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
pref('zen.theme.acrylic-elements', false);
|
|
||||||
#else
|
|
||||||
pref('zen.theme.acrylic-elements', false);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
pref('zen.theme.color-prefs.use-workspace-colors', true);
|
|
||||||
|
|
||||||
pref('zen.view.compact.hide-tabbar', true);
|
|
||||||
pref('zen.view.compact.hide-toolbar', false);
|
|
||||||
pref('zen.view.compact.toolbar-flash-popup', false);
|
|
||||||
pref('zen.view.compact.toolbar-flash-popup.duration', 800);
|
|
||||||
pref('zen.view.compact.toolbar-hide-after-hover.duration', 1000);
|
|
||||||
pref('zen.view.compact.color-toolbar', true);
|
|
||||||
pref('zen.view.compact.color-sidebar', true);
|
|
||||||
pref('zen.view.compact.animate-sidebar', true);
|
|
||||||
pref('zen.view.compact.show-sidebar-and-toolbar-on-hover', true);
|
|
||||||
pref('zen.view.compact.show-background-tab-toast', true);
|
|
||||||
|
|
||||||
pref('zen.urlbar.replace-newtab', true);
|
|
||||||
pref('zen.urlbar.show-protections-icon', false);
|
|
||||||
pref('zen.urlbar.behavior', 'floating-on-type'); // default, floating-on-type, float
|
|
||||||
pref('zen.urlbar.wait-to-clear', 45000); // in ms (default 45s)
|
|
||||||
pref('zen.urlbar.show-domain-only-in-sidebar', true);
|
|
||||||
pref('zen.urlbar.hide-one-offs', true);
|
|
||||||
pref('zen.urlbar.enable-overrides', false);
|
|
||||||
|
|
||||||
// Glance
|
|
||||||
pref('zen.glance.enabled', true);
|
|
||||||
pref('zen.glance.hold-duration', 300); // in ms
|
|
||||||
pref('zen.glance.open-essential-external-links', true);
|
|
||||||
pref('zen.glance.activation-method', 'alt'); // ctrl, alt, shift, none, hold
|
|
||||||
|
|
||||||
pref('zen.view.sidebar-height-throttle', 200); // in ms
|
|
||||||
pref('zen.view.sidebar-expanded.max-width', 500);
|
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
pref('zen.view.mac.show-three-dot-menu', false);
|
|
||||||
pref('zen.widget.mac.mono-window-controls', true);
|
|
||||||
#endif
|
|
||||||
pref('zen.view.use-single-toolbar', true);
|
|
||||||
pref('zen.view.sidebar-expanded', true);
|
|
||||||
pref('zen.view.sidebar-collapsed.hide-mute-button', true);
|
|
||||||
pref('zen.view.experimental-force-window-controls-left', false);
|
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
pref('zen.view.grey-out-inactive-windows', false);
|
|
||||||
#else
|
|
||||||
pref('zen.view.grey-out-inactive-windows', true);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
pref('zen.view.hide-window-controls', true);
|
|
||||||
pref('zen.view.experimental-no-window-controls', false);
|
|
||||||
|
|
||||||
pref('zen.keyboard.shortcuts.enabled', true);
|
|
||||||
pref('zen.keyboard.shortcuts.version', 0); // Empty string means default shortcuts
|
|
||||||
pref('zen.keyboard.shortcuts.disable-mainkeyset-clear', false); // for debugging
|
|
||||||
|
|
||||||
pref('zen.themes.updated-value-observer', false);
|
|
||||||
|
|
||||||
pref('zen.pinned-tab-manager.debug', false);
|
|
||||||
pref('zen.pinned-tab-manager.restore-pinned-tabs-to-pinned-url', false);
|
|
||||||
pref('zen.pinned-tab-manager.close-shortcut-behavior', 'reset-unload-switch');
|
|
||||||
|
|
||||||
#ifdef MOZILLA_OFFICIAL
|
|
||||||
pref('zen.watermark.enabled', true, sticky);
|
|
||||||
#else
|
|
||||||
pref('zen.watermark.enabled', false, sticky);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Startup flags
|
|
||||||
pref('zen.startup.smooth-scroll-in-tabs', true);
|
|
||||||
|
|
||||||
// Zen Workspaces
|
|
||||||
pref('zen.workspaces.continue-where-left-off', false);
|
|
||||||
pref('zen.workspaces.hide-default-container-indicator', true);
|
|
||||||
pref('zen.workspaces.force-container-workspace', false);
|
|
||||||
pref('zen.workspaces.open-new-tab-if-last-unpinned-tab-is-closed', false);
|
|
||||||
pref('zen.workspaces.swipe-actions', true);
|
|
||||||
pref('zen.workspaces.wrap-around-navigation', true);
|
|
||||||
pref('zen.workspaces.natural-scroll', false);
|
|
||||||
pref('zen.workspaces.scroll-modifier-key','ctrl'); // can be ctrl, alt, shift, or a meta key
|
|
||||||
pref('services.sync.engine.workspaces', false);
|
|
||||||
pref('zen.workspaces.container-specific-essentials-enabled', false);
|
|
||||||
|
|
||||||
#ifdef MOZILLA_OFFICIAL
|
|
||||||
pref('zen.workspaces.debug', false);
|
|
||||||
#else
|
|
||||||
pref('zen.workspaces.debug', true);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Zen Split View
|
|
||||||
pref('zen.splitView.enable-tab-drop', true);
|
|
||||||
pref('zen.splitView.min-resize-width', 7);
|
|
||||||
pref('zen.splitView.rearrange-hover-size', 24);
|
|
||||||
|
|
||||||
// Zen Download Animations
|
|
||||||
pref('zen.downloads.download-animation', true);
|
|
||||||
pref('zen.downloads.download-animation-duration', 1000); // ms
|
|
|
@ -1,8 +1,8 @@
|
||||||
diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js
|
diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js
|
||||||
index beced8067e6c8b5c8cf8e3f6060ba259ec9a294d..33a264e7f9cf97944da3888bdb957fa6e7c4c346 100644
|
index 89b8b830e8f53582dd9910b0172098d31a8d8967..51bdc847823cb95f811b7e9d2d864b9aacf0e364 100644
|
||||||
--- a/browser/app/profile/firefox.js
|
--- a/browser/app/profile/firefox.js
|
||||||
+++ b/browser/app/profile/firefox.js
|
+++ b/browser/app/profile/firefox.js
|
||||||
@@ -3398,3 +3398,5 @@ pref("toolkit.contentRelevancy.enabled", false);
|
@@ -3375,3 +3375,5 @@ pref("toolkit.contentRelevancy.enabled", false);
|
||||||
pref("toolkit.contentRelevancy.ingestEnabled", false);
|
pref("toolkit.contentRelevancy.ingestEnabled", false);
|
||||||
// Pref to enable extra logging for the content relevancy feature
|
// Pref to enable extra logging for the content relevancy feature
|
||||||
pref("toolkit.contentRelevancy.log", false);
|
pref("toolkit.contentRelevancy.log", false);
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
|
|
||||||
pref("full-screen-api.transition-duration.enter", "0 0");
|
|
||||||
pref("full-screen-api.transition-duration.leave", "0 0");
|
|
||||||
pref("full-screen-api.warning.delay", -1);
|
|
||||||
pref("full-screen-api.warning.timeout", 0);
|
|
|
@ -1,11 +0,0 @@
|
||||||
|
|
||||||
pref("widget.gtk.rounded-bottom-corners.enabled", true);
|
|
||||||
|
|
||||||
// Enable transparent background for linux
|
|
||||||
#ifdef MOZ_WIDGET_GTK
|
|
||||||
pref('zen.widget.linux.transparency', false);
|
|
||||||
|
|
||||||
// VAAPI/FFMPEG is Linux only
|
|
||||||
pref('media.ffmpeg.vaapi.enabled', true);
|
|
||||||
pref('media.ffmpeg.encoder.enabled', true);
|
|
||||||
#endif
|
|
|
@ -1,11 +0,0 @@
|
||||||
|
|
||||||
// Enable transparent background for macos
|
|
||||||
pref('widget.macos.titlebar-blend-mode.behind-window', true);
|
|
||||||
// 1. hudWindow
|
|
||||||
// 2. fullScreenUI
|
|
||||||
// 3. popover
|
|
||||||
// 4. menu
|
|
||||||
// 5. toolTip
|
|
||||||
// 6. headerView
|
|
||||||
// 7. underlay
|
|
||||||
pref('zen.widget.macos.window-material', 3);
|
|
|
@ -1,6 +0,0 @@
|
||||||
|
|
||||||
pref('image.jxl.enabled', true, locked);
|
|
||||||
pref("svg.context-properties.content.enabled", true);
|
|
||||||
pref("image.avif.enabled", true, locked);
|
|
||||||
|
|
||||||
pref("media.eme.enabled", true);
|
|
|
@ -1,9 +0,0 @@
|
||||||
|
|
||||||
pref('browser.newtabpage.activity-stream.feeds.topsites', false);
|
|
||||||
pref('browser.newtabpage.activity-stream.feeds.section.topstories', false);
|
|
||||||
pref("browser.topsites.contile.enabled", false);
|
|
||||||
pref('browser.newtabpage.activity-stream.system.showWeather', false);
|
|
||||||
|
|
||||||
pref('browser.newtabpage.activity-stream.newtabWallpapers.enabled', true);
|
|
||||||
pref('browser.newtabpage.activity-stream.newtabWallpapers.v2.enabled', true);
|
|
||||||
pref('browser.translations.newSettingsUI.enable', true);
|
|
|
@ -1,4 +0,0 @@
|
||||||
|
|
||||||
pref('pdfjs.enableHighlightEditor', true);
|
|
||||||
pref('pdfjs.enableHighlightFloatingButton', true);
|
|
||||||
pref("pdfjs.enableScripting", false);
|
|
|
@ -1,41 +0,0 @@
|
||||||
|
|
||||||
// ---- Experimental settings to try make zen faster
|
|
||||||
pref("media.memory_cache_max_size", 1048576);
|
|
||||||
pref("media.cache_readahead_limit", 9000);
|
|
||||||
pref("media.cache_resume_threshold", 3600);
|
|
||||||
pref("media.memory_caches_combined_limit_kb", 2560000);
|
|
||||||
|
|
||||||
pref("image.mem.decode_bytes_at_a_time", 32768);
|
|
||||||
|
|
||||||
// Enable GPU by default
|
|
||||||
pref("gfx.canvas.accelerated", true);
|
|
||||||
pref("media.hardware-video-decoding.enabled", true);
|
|
||||||
pref("layers.gpu-process.enabled", true);
|
|
||||||
|
|
||||||
#ifdef XP_MACOSX
|
|
||||||
// Pref to control the reponse taken on macOS when the OS is under memory
|
|
||||||
// pressure. Changes to the pref take effect immediately. Browser restart not
|
|
||||||
// required. The pref value is a bitmask:
|
|
||||||
// 0x0: No response (other than recording for telemetry, crash reporting)
|
|
||||||
// 0x1: Use the tab unloading feature to reduce memory use. Requires that
|
|
||||||
// the above "browser.tabs.unloadOnLowMemory" pref be set to true for tab
|
|
||||||
// unloading to occur.
|
|
||||||
// 0x2: Issue the internal "memory-pressure" notification to reduce memory use
|
|
||||||
// 0x3: Both 0x1 and 0x2.
|
|
||||||
pref("browser.lowMemoryResponseMask", 3);
|
|
||||||
#endif
|
|
||||||
|
|
||||||
// Prefetching:
|
|
||||||
pref("network.dns.disablePrefetch", false);
|
|
||||||
pref("network.prefetch-next", true);
|
|
||||||
pref("network.dns.disablePrefetchFromHTTPS", false);
|
|
||||||
pref("network.predictor.enable-hover-on-ssl", true);
|
|
||||||
pref("network.http.rcwn.enabled", false);
|
|
||||||
|
|
||||||
// Experimental Zen Features
|
|
||||||
// Strategy to use for bytecode cache (Thanks https://github.com/gunir)
|
|
||||||
pref('dom.script_loader.bytecode_cache.strategy', 2);
|
|
||||||
pref("layout.css.grid-template-masonry-value.enabled", true);
|
|
||||||
|
|
||||||
// No Proxy should be default, Use system proxy allows antivirus, virus or system proxy to MITM or slowing down Zen
|
|
||||||
pref("network.proxy.type", 0);
|
|
|
@ -1,4 +0,0 @@
|
||||||
|
|
||||||
pref("media.videocontrols.picture-in-picture.video-toggle.enabled", true);
|
|
||||||
// TODO: Enable once we have a proper settings page
|
|
||||||
pref("media.videocontrols.picture-in-picture.enable-when-switching-tabs.enabled", false);
|
|
|
@ -1,44 +0,0 @@
|
||||||
|
|
||||||
pref("datareporting.policy.dataSubmissionEnabled", false, locked);
|
|
||||||
pref("datareporting.healthreport.uploadEnabled", false, locked);
|
|
||||||
pref("toolkit.telemetry.unified", false, locked);
|
|
||||||
pref("toolkit.telemetry.enabled", false, locked);
|
|
||||||
pref("toolkit.telemetry.server", "data:,", locked);
|
|
||||||
pref("toolkit.telemetry.archive.enabled", false, locked);
|
|
||||||
pref("toolkit.telemetry.newProfilePing.enabled", false, locked);
|
|
||||||
pref("toolkit.telemetry.shutdownPingSender.enabled", false, locked);
|
|
||||||
pref("toolkit.telemetry.updatePing.enabled", false, locked);
|
|
||||||
pref("toolkit.telemetry.bhrPing.enabled", false, locked);
|
|
||||||
pref("toolkit.telemetry.firstShutdownPing.enabled", false, locked);
|
|
||||||
pref("toolkit.telemetry.coverage.opt-out", true, locked);
|
|
||||||
pref("toolkit.coverage.opt-out", true, locked);
|
|
||||||
pref("toolkit.coverage.endpoint.base", "", locked);
|
|
||||||
pref("browser.newtabpage.activity-stream.feeds.telemetry", false, locked);
|
|
||||||
pref("browser.newtabpage.activity-stream.telemetry", false, locked);
|
|
||||||
pref("browser.ping-centre.telemetry", false);
|
|
||||||
pref("browser.attribution.enabled", false);
|
|
||||||
pref("toolkit.telemetry.pioneer-new-studies-available", false);
|
|
||||||
pref("app.shield.optoutstudies.enabled", false, locked);
|
|
||||||
pref("app.normandy.enabled", false);
|
|
||||||
pref("app.normandy.api_url", "", locked);
|
|
||||||
|
|
||||||
// Crash reports
|
|
||||||
pref("breakpad.reportURL", "");
|
|
||||||
pref("browser.tabs.crashReporting.sendReport", false);
|
|
||||||
pref("browser.crashReports.unsubmittedCheck.autoSubmit2", false);
|
|
||||||
|
|
||||||
// Other privacy
|
|
||||||
pref("extensions.getAddons.cache.enabled", false);
|
|
||||||
|
|
||||||
// Disable cache for private browsing
|
|
||||||
pref("browser.privatebrowsing.forceMediaMemoryCache", true);
|
|
||||||
|
|
||||||
// Tracking protection
|
|
||||||
pref("browser.helperApps.deleteTempFileOnExit", true);
|
|
||||||
pref("browser.uitour.enabled", false);
|
|
||||||
|
|
||||||
pref("privacy.globalprivacycontrol.enabled", true);
|
|
||||||
|
|
||||||
// Contextual identity
|
|
||||||
pref('privacy.userContext.enabled', true);
|
|
||||||
pref('privacy.userContext.ui.enabled', true);
|
|
|
@ -1,14 +0,0 @@
|
||||||
|
|
||||||
pref("apz.overscroll.enabled", true);
|
|
||||||
pref("general.smoothScroll", true);
|
|
||||||
pref("general.smoothScroll.msdPhysics.enabled", true);
|
|
||||||
pref("general.smoothScroll.currentVelocityWeighting", "0.15");
|
|
||||||
pref("general.smoothScroll.stopDecelerationWeighting", "0.6");
|
|
||||||
pref("mousewheel.min_line_scroll_amount", 10);
|
|
||||||
pref("general.smoothScroll.mouseWheel.durationMinMS", 80);
|
|
||||||
pref("general.smoothScroll.msdPhysics.continuousMotionMaxDeltaMS", 12);
|
|
||||||
pref("general.smoothScroll.msdPhysics.motionBeginSpringConstant", 600);
|
|
||||||
pref("general.smoothScroll.msdPhysics.regularSpringConstant", 650);
|
|
||||||
pref("general.smoothScroll.msdPhysics.slowdownMinDeltaMS", 25);
|
|
||||||
pref("general.smoothScroll.msdPhysics.slowdownSpringConstant", 250);
|
|
||||||
pref("mousewheel.default.delta_multiplier_y", 200);
|
|
|
@ -1,32 +0,0 @@
|
||||||
|
|
||||||
pref('browser.urlbar.unitConversion.enabled', true);
|
|
||||||
pref('browser.urlbar.trending.featureGate', false);
|
|
||||||
pref('browser.urlbar.weather.featureGate', false);
|
|
||||||
pref('browser.urlbar.quickactions.enabled', true);
|
|
||||||
pref('browser.urlbar.clipboard.featureGate', true);
|
|
||||||
pref('browser.urlbar.suggest.calculator', true);
|
|
||||||
|
|
||||||
pref("browser.urlbar.trimHttps", true);
|
|
||||||
pref("browser.urlbar.untrimOnUserInteraction.featureGate", true);
|
|
||||||
|
|
||||||
// Keep in sync with browser/components/topsites/constants.mjs
|
|
||||||
pref("browser.urlbar.maxRichResults", 7);
|
|
||||||
|
|
||||||
// Enable private suggestions
|
|
||||||
pref('browser.search.suggest.enabled', false);
|
|
||||||
pref('browser.search.suggest.enabled.private', false);
|
|
||||||
|
|
||||||
pref("browser.urlbar.trimHttps", true);
|
|
||||||
pref("browser.search.separatePrivateDefault.ui.enabled", true);
|
|
||||||
pref("browser.urlbar.update2.engineAliasRefresh", true);
|
|
||||||
pref("browser.urlbar.quicksuggest.enabled", false, locked);
|
|
||||||
pref("browser.urlbar.suggest.quicksuggest.sponsored", false, locked);
|
|
||||||
pref("browser.urlbar.suggest.quicksuggest.nonsponsored", false, locked);
|
|
||||||
pref("browser.urlbar.groupLabels.enabled", false);
|
|
||||||
pref("browser.urlbar.keepPanelOpenDuringImeComposition", true); // IMPORTANT: Fixes closing the urlbar when on some languages
|
|
||||||
pref("browser.formfill.enable", false);
|
|
||||||
pref("security.insecure_connection_text.enabled", true);
|
|
||||||
pref("security.insecure_connection_text.pbmode.enabled", true);
|
|
||||||
pref("network.IDN_show_punycode", true);
|
|
||||||
|
|
||||||
pref("browser.urlbar.suggest.topsites", true, locked);
|
|
|
@ -1,7 +0,0 @@
|
||||||
|
|
||||||
// Mica
|
|
||||||
pref("widget.windows.mica", true);
|
|
||||||
pref("widget.windows.mica.popups", true);
|
|
||||||
pref("widget.windows.mica.toplevel-backdrop", 2);
|
|
||||||
|
|
||||||
pref("dom.ipc.processPriorityManager.backgroundUsesEcoQoS", false);
|
|
|
@ -8,37 +8,458 @@
|
||||||
#endif
|
#endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
pref("browser.tabs.hoverPreview.enabled", false);
|
||||||
|
|
||||||
|
#ifdef MOZ_UPDATE_CHANNEL
|
||||||
|
pref("devtools.debugger.prompt-connection", true);
|
||||||
|
#endif
|
||||||
|
|
||||||
// Dont download the multilingual dictionary
|
// Dont download the multilingual dictionary
|
||||||
pref("intl.multilingual.downloadEnabled", false);
|
pref("intl.multilingual.downloadEnabled", false);
|
||||||
|
|
||||||
|
// Restore session on startup
|
||||||
|
pref("browser.startup.page", 3);
|
||||||
|
pref("browser.sessionstore.restore_pinned_tabs_on_demand", true);
|
||||||
|
|
||||||
// Theme
|
// Theme
|
||||||
pref('toolkit.legacyUserProfileCustomizations.stylesheets', true);
|
pref('toolkit.legacyUserProfileCustomizations.stylesheets', true);
|
||||||
|
pref('browser.compactmode.show', true);
|
||||||
|
|
||||||
#ifdef XP_WIN
|
#ifdef XP_WIN
|
||||||
#include windows.inc
|
pref("browser.privateWindowSeparation.enabled", false);
|
||||||
|
|
||||||
|
// Mica
|
||||||
|
pref("widget.windows.mica", true);
|
||||||
|
pref("widget.windows.mica.popups", true);
|
||||||
|
pref("widget.windows.mica.toplevel-backdrop", 2);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
pref('browser.newtabpage.activity-stream.newtabWallpapers.enabled', true);
|
||||||
|
pref('browser.newtabpage.activity-stream.newtabWallpapers.v2.enabled', true);
|
||||||
|
pref('browser.translations.newSettingsUI.enable', true);
|
||||||
|
|
||||||
|
pref('privacy.userContext.enabled', true);
|
||||||
|
pref('privacy.userContext.ui.enabled', true);
|
||||||
|
|
||||||
|
pref("browser.urlbar.trimHttps", true);
|
||||||
|
pref("browser.urlbar.untrimOnUserInteraction.featureGate", true);
|
||||||
|
|
||||||
|
// Url bar
|
||||||
|
pref('browser.urlbar.unitConversion.enabled', true);
|
||||||
|
pref('browser.urlbar.trending.featureGate', false);
|
||||||
|
pref('browser.urlbar.weather.featureGate', true);
|
||||||
|
pref('browser.urlbar.quickactions.enabled', true);
|
||||||
|
pref('browser.urlbar.clipboard.featureGate', true);
|
||||||
|
pref('browser.urlbar.suggest.calculator', true);
|
||||||
|
|
||||||
|
// new tab page
|
||||||
|
pref('browser.newtabpage.activity-stream.feeds.topsites', false);
|
||||||
|
pref('browser.newtabpage.activity-stream.feeds.section.topstories', false);
|
||||||
|
pref("browser.topsites.contile.enabled", true);
|
||||||
|
|
||||||
|
// Pdf
|
||||||
|
pref('pdfjs.enableHighlightEditor', true);
|
||||||
|
pref('pdfjs.enableHighlightFloatingButton', true);
|
||||||
|
|
||||||
|
pref("alerts.showFavicons", true);
|
||||||
|
|
||||||
|
// Toolbars
|
||||||
|
pref("browser.tabs.closeWindowWithLastTab", false);
|
||||||
|
pref("browser.tabs.loadBookmarksInTabs", false);
|
||||||
|
pref("browser.tabs.dragdrop.moveOverThresholdPercent", 50);
|
||||||
|
pref('browser.toolbars.bookmarks.visibility', 'never');
|
||||||
|
pref("browser.bookmarks.openInTabClosesMenu", false);
|
||||||
|
pref("browser.menu.showViewImageInfo", true);
|
||||||
|
pref("findbar.highlightAll", true);
|
||||||
|
pref("layout.word_select.eat_space_to_next_word", false);
|
||||||
|
|
||||||
|
// TODO:
|
||||||
|
pref("browser.tabs.groups.enabled", false);
|
||||||
|
|
||||||
|
// Enable Do Not Track and GPC by default.
|
||||||
|
pref("privacy.donottrackheader.enabled", false);
|
||||||
|
pref("privacy.globalprivacycontrol.enabled", true);
|
||||||
|
|
||||||
|
pref("app.update.checkInstallTime.days", 6);
|
||||||
|
|
||||||
|
// CUSTOM ZEN PREFS
|
||||||
|
|
||||||
|
pref('zen.welcome-screen.seen', false, sticky);
|
||||||
|
|
||||||
|
pref('zen.tabs.vertical', true);
|
||||||
|
pref('zen.tabs.vertical.right-side', false);
|
||||||
|
pref('zen.tabs.rename-tabs', true);
|
||||||
|
pref('zen.theme.accent-color', "#ffb787");
|
||||||
|
pref('zen.theme.content-element-separation', 8); // In pixels
|
||||||
|
pref('zen.theme.gradient', true);
|
||||||
|
pref('zen.theme.gradient.show-custom-colors', false);
|
||||||
|
pref('zen.theme.essentials-favicon-bg', true);
|
||||||
|
|
||||||
|
pref('zen.tabs.show-newtab-vertical', true);
|
||||||
|
pref('zen.view.show-newtab-button-border-top', false);
|
||||||
|
pref('zen.view.show-newtab-button-top', true);
|
||||||
|
|
||||||
|
pref('zen.mediacontrols.enabled', true);
|
||||||
|
|
||||||
|
#ifdef MOZILLA_OFFICIAL
|
||||||
|
pref('zen.rice.api.url', 'https://share.zen-browser.app', locked);
|
||||||
|
pref('zen.injections.match-urls', 'https://zen-browser.app/*,https://share.zen-browser.app/*', locked);
|
||||||
|
#else
|
||||||
|
pref('zen.rice.api.url', "http://localhost", locked);
|
||||||
|
pref('zen.injections.match-urls', 'http://localhost/*', locked);
|
||||||
|
#endif
|
||||||
|
pref('zen.rice.share.notice.accepted', false);
|
||||||
|
|
||||||
|
#ifdef XP_MACOSX
|
||||||
|
pref('zen.theme.border-radius', 10); // In pixels
|
||||||
|
#else
|
||||||
|
pref('zen.theme.border-radius', 8); // In pixels
|
||||||
|
#endif
|
||||||
|
|
||||||
|
pref('zen.theme.color-prefs.use-workspace-colors', true);
|
||||||
|
|
||||||
|
pref('zen.view.compact.hide-tabbar', true);
|
||||||
|
pref('zen.view.compact.hide-toolbar', false);
|
||||||
|
pref('zen.view.compact.toolbar-flash-popup', false);
|
||||||
|
pref('zen.view.compact.toolbar-flash-popup.duration', 800);
|
||||||
|
pref('zen.view.compact.toolbar-hide-after-hover.duration', 1000);
|
||||||
|
pref('zen.view.compact.color-toolbar', true);
|
||||||
|
pref('zen.view.compact.color-sidebar', true);
|
||||||
|
pref('zen.view.compact.animate-sidebar', true);
|
||||||
|
pref('zen.view.compact.show-sidebar-and-toolbar-on-hover', true);
|
||||||
|
|
||||||
|
pref('zen.urlbar.replace-newtab', true);
|
||||||
|
pref('zen.urlbar.show-protections-icon', false);
|
||||||
|
pref('zen.urlbar.behavior', 'floating-on-type'); // default, floating-on-type, float
|
||||||
|
pref('zen.urlbar.wait-to-clear', 45000); // in ms (default 45s)
|
||||||
|
pref('zen.urlbar.show-domain-only-in-sidebar', true);
|
||||||
|
pref('zen.urlbar.hide-one-offs', true);
|
||||||
|
|
||||||
|
#ifdef XP_MACOSX
|
||||||
|
// Disable for macos in the meantime until @HarryHeres finds a solution for hight DPI screens
|
||||||
|
pref('zen.view.experimental-rounded-view', false);
|
||||||
|
#else
|
||||||
|
pref('zen.view.experimental-rounded-view', true);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Glance
|
||||||
|
pref('zen.glance.enabled', true);
|
||||||
|
pref('zen.glance.hold-duration', 300); // in ms
|
||||||
|
pref('zen.glance.open-essential-external-links', true);
|
||||||
|
pref('zen.glance.activation-method', 'alt'); // ctrl, alt, shift, none, hold
|
||||||
|
|
||||||
|
pref('zen.view.sidebar-height-throttle', 200); // in ms
|
||||||
|
pref('zen.view.sidebar-expanded.max-width', 500);
|
||||||
|
|
||||||
|
#ifdef XP_MACOSX
|
||||||
|
pref('zen.view.mac.show-three-dot-menu', false);
|
||||||
|
pref('zen.widget.mac.mono-window-controls', true);
|
||||||
|
#endif
|
||||||
|
pref('zen.view.use-single-toolbar', true);
|
||||||
|
pref('zen.view.sidebar-expanded', true);
|
||||||
|
pref('zen.view.sidebar-collapsed.hide-mute-button', true);
|
||||||
|
pref('zen.view.experimental-force-window-controls-left', false);
|
||||||
|
|
||||||
|
#ifdef XP_MACOSX
|
||||||
|
pref('zen.view.grey-out-inactive-windows', false);
|
||||||
|
#else
|
||||||
|
pref('zen.view.grey-out-inactive-windows', true);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
pref('zen.view.hide-window-controls', true);
|
||||||
|
pref('zen.view.experimental-no-window-controls', false);
|
||||||
|
|
||||||
|
pref('zen.tabs.dim-pending', true);
|
||||||
|
|
||||||
|
pref('zen.keyboard.shortcuts.enabled', true);
|
||||||
|
pref('zen.keyboard.shortcuts.version', 0); // Empty string means default shortcuts
|
||||||
|
pref('zen.keyboard.shortcuts.disable-mainkeyset-clear', false); // for debugging
|
||||||
|
|
||||||
|
pref('zen.themes.updated-value-observer', false);
|
||||||
|
|
||||||
|
pref('zen.tab-unloader.enabled', true);
|
||||||
|
pref('zen.tab-unloader.timeout-minutes', 40);
|
||||||
|
pref('zen.tab-unloader.excluded-urls', "example.com,example.org");
|
||||||
|
|
||||||
|
pref('zen.pinned-tab-manager.debug', false);
|
||||||
|
pref('zen.pinned-tab-manager.restore-pinned-tabs-to-pinned-url', false);
|
||||||
|
pref('zen.pinned-tab-manager.close-shortcut-behavior', 'reset-unload-switch');
|
||||||
|
|
||||||
|
// TODO: Check this out!
|
||||||
|
pref("browser.profiles.enabled", false);
|
||||||
|
|
||||||
|
// Zen Split View
|
||||||
|
pref('zen.splitView.enable-tab-drop', true);
|
||||||
|
pref('zen.splitView.min-resize-width', 7);
|
||||||
|
pref('zen.splitView.rearrange-hover-size', 24);
|
||||||
|
|
||||||
|
// Zen Download Animations
|
||||||
|
pref('zen.downloads.download-animation', true);
|
||||||
|
pref('zen.downloads.download-animation-duration', 1000); // ms
|
||||||
|
|
||||||
|
// Startup flags
|
||||||
|
pref('zen.startup.smooth-scroll-in-tabs', true);
|
||||||
|
|
||||||
|
// Zen Workspaces
|
||||||
|
pref('zen.workspaces.hide-default-container-indicator', true);
|
||||||
|
pref('zen.workspaces.force-container-workspace', false);
|
||||||
|
pref('zen.workspaces.open-new-tab-if-last-unpinned-tab-is-closed', false);
|
||||||
|
pref('zen.workspaces.show-workspace-indicator', true);
|
||||||
|
pref('zen.workspaces.swipe-actions', true);
|
||||||
|
pref('zen.workspaces.wrap-around-navigation', true);
|
||||||
|
pref('zen.workspaces.natural-scroll', false);
|
||||||
|
pref('zen.workspaces.scroll-modifier-key','ctrl'); // can be ctrl, alt, shift, or a meta key
|
||||||
|
pref('services.sync.engine.workspaces', false);
|
||||||
|
pref('zen.workspaces.container-specific-essentials-enabled', false);
|
||||||
|
|
||||||
|
// Essentials
|
||||||
|
pref('zen.essentials.enabled', true);
|
||||||
|
|
||||||
|
// Zen Watermark
|
||||||
|
#ifdef MOZILLA_OFFICIAL
|
||||||
|
pref('zen.watermark.enabled', true, sticky);
|
||||||
|
#else
|
||||||
|
pref('zen.watermark.enabled', false, sticky);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Privacy
|
||||||
|
pref('dom.private-attribution.submission.enabled', false);
|
||||||
|
pref('dom.security.https_only_mode', true);
|
||||||
|
|
||||||
|
// Crash reports
|
||||||
|
pref("breakpad.reportURL", "");
|
||||||
|
pref("browser.tabs.crashReporting.sendReport", false);
|
||||||
|
pref("browser.crashReports.unsubmittedCheck.autoSubmit2", false);
|
||||||
|
|
||||||
|
// TLS / SSL
|
||||||
|
pref("security.ssl.treat_unsafe_negotiation_as_broken", true);
|
||||||
|
pref("browser.xul.error_pages.expert_bad_cert", true);
|
||||||
|
pref("security.tls.enable_0rtt_data", false);
|
||||||
|
pref("network.http.http3.enable_0rtt", false);
|
||||||
|
|
||||||
|
// Network
|
||||||
|
pref("network.http.max-urgent-start-excessive-connections-per-host", 5);
|
||||||
|
pref("network.dnsCacheExpiration", 3600);
|
||||||
|
pref("network.http.max-persistent-connections-per-proxy", 48); // default=32
|
||||||
|
pref("network.websocket.max-connections", 400); // default=200
|
||||||
|
pref("network.ssl_tokens_cache_capacity", 32768);
|
||||||
|
|
||||||
|
// Enable importers for other browsers
|
||||||
|
pref('browser.migrate.vivaldi.enabled', true);
|
||||||
|
pref('browser.migrate.opera-gx.enabled', true);
|
||||||
|
pref('browser.migrate.opera.enabled', true);
|
||||||
|
|
||||||
|
// DNS
|
||||||
|
// pref('network.trr.mode', 5);
|
||||||
|
|
||||||
|
// security: They must enable this themselves, to avoid people downloading malware
|
||||||
|
pref('xpinstall.signatures.required', true);
|
||||||
|
|
||||||
|
// Experimental Zen Features
|
||||||
|
// Strategy to use for bytecode cache (Thanks https://github.com/gunir)
|
||||||
|
pref('dom.script_loader.bytecode_cache.strategy', 2);
|
||||||
|
pref("dom.text_fragments.enabled", true);
|
||||||
|
|
||||||
|
pref("layout.css.grid-template-masonry-value.enabled", true);
|
||||||
|
pref("dom.security.sanitizer.enabled", true);
|
||||||
|
|
||||||
|
// Pocket
|
||||||
|
pref("extensions.pocket.enabled", false);
|
||||||
|
|
||||||
|
// MIXED CONTENT + CROSS-SITE
|
||||||
|
pref("pdfjs.enableScripting", false);
|
||||||
|
pref("extensions.postDownloadThirdPartyPrompt", false);
|
||||||
|
|
||||||
|
// Downloads
|
||||||
|
pref("browser.download.manager.addToRecentDocs", false);
|
||||||
|
pref('browser.download.open_pdf_attachments_inline', true);
|
||||||
|
pref('browser.download.alwaysOpenPanel', false);
|
||||||
|
|
||||||
|
// Tracking protection
|
||||||
|
pref("browser.helperApps.deleteTempFileOnExit", true);
|
||||||
|
pref("browser.uitour.enabled", false);
|
||||||
|
|
||||||
|
// Disable cache for private browsing
|
||||||
|
pref("browser.privatebrowsing.forceMediaMemoryCache", true);
|
||||||
|
|
||||||
|
// Enable private suggestions
|
||||||
|
pref('browser.search.suggest.enabled', true);
|
||||||
|
pref('browser.search.suggest.enabled.private', true);
|
||||||
|
|
||||||
|
pref("extensions.enabledScopes", 5); // [HIDDEN PREF]
|
||||||
|
|
||||||
|
// Media codecs
|
||||||
|
pref('image.jxl.enabled', true, locked);
|
||||||
|
pref("svg.context-properties.content.enabled", true);
|
||||||
|
pref("image.avif.enabled", true, locked);
|
||||||
|
|
||||||
|
// Smooth scrolling
|
||||||
|
#ifndef XP_MACOSX
|
||||||
|
pref("apz.overscroll.enabled", true);
|
||||||
|
pref("general.smoothScroll", true);
|
||||||
|
pref("general.smoothScroll.msdPhysics.enabled", true);
|
||||||
|
pref("general.smoothScroll.currentVelocityWeighting", "0.15");
|
||||||
|
pref("general.smoothScroll.stopDecelerationWeighting", "0.6");
|
||||||
|
pref("mousewheel.min_line_scroll_amount", 10);
|
||||||
|
pref("general.smoothScroll.mouseWheel.durationMinMS", 80);
|
||||||
|
pref("general.smoothScroll.msdPhysics.continuousMotionMaxDeltaMS", 12);
|
||||||
|
pref("general.smoothScroll.msdPhysics.motionBeginSpringConstant", 600);
|
||||||
|
pref("general.smoothScroll.msdPhysics.regularSpringConstant", 650);
|
||||||
|
pref("general.smoothScroll.msdPhysics.slowdownMinDeltaMS", 25);
|
||||||
|
pref("general.smoothScroll.msdPhysics.slowdownSpringConstant", 250);
|
||||||
|
pref("mousewheel.default.delta_multiplier_y", 200);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(XP_WIN)
|
||||||
|
pref("dom.ipc.processPriorityManager.backgroundUsesEcoQoS", false);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifdef UNIX_BUT_NOT_MAC
|
#ifdef UNIX_BUT_NOT_MAC
|
||||||
#include linux.inc
|
pref("widget.gtk.rounded-bottom-corners.enabled", true);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
pref('browser.newtabpage.activity-stream.system.showWeather', true);
|
||||||
|
|
||||||
|
// Enable experimental settings page (Used for Zen Labs)
|
||||||
|
pref('browser.preferences.experimental', true);
|
||||||
|
|
||||||
|
// Prefetching:
|
||||||
|
pref("network.dns.disablePrefetch", false);
|
||||||
|
pref("network.prefetch-next", true);
|
||||||
|
pref("network.predictor.enabled", true);
|
||||||
|
pref("network.dns.disablePrefetchFromHTTPS", false);
|
||||||
|
pref("network.predictor.enable-hover-on-ssl", true);
|
||||||
|
pref("network.http.speculative-parallel-limit", 10);
|
||||||
|
pref("network.http.rcwn.enabled", false);
|
||||||
|
|
||||||
|
// Disable Firefox's revamp
|
||||||
|
pref("sidebar.revamp", false, locked);
|
||||||
|
pref("sidebar.verticalTabs", false, locked);
|
||||||
|
|
||||||
|
// Better Windows theming
|
||||||
|
pref("widget.non-native-theme.scrollbar.style", 2);
|
||||||
|
pref("widget.non-native-theme.use-theme-accent", true);
|
||||||
|
|
||||||
|
// Expose Letterboxing https://github.com/zen-browser/desktop/issues/475
|
||||||
|
pref("privacy.resistFingerprinting.letterboxing", false);
|
||||||
|
pref("privacy.resistFingerprinting.letterboxing.dimensions", "");
|
||||||
|
|
||||||
|
// Remove Inspect Accessibity Properties menu
|
||||||
|
pref("devtools.accessibility.enabled", false);
|
||||||
|
|
||||||
|
// Enable GPU by default
|
||||||
|
// pref('gfx.webrender.all', true);
|
||||||
|
|
||||||
|
// VAAPI/FFMPEG is Linux only
|
||||||
|
#ifdef MOZ_WIDGET_GTK
|
||||||
|
pref('media.ffmpeg.vaapi.enabled', true);
|
||||||
|
pref('media.ffmpeg.encoder.enabled', true);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// Fix buffering issues: Youtube, Archive bugzilla.mozilla.org/show_bug.cgi?id=1854077
|
||||||
|
pref("network.fetchpriority.enabled", true);
|
||||||
|
|
||||||
|
// No Proxy should be default, Use system proxy allows antivirus, virus or system proxy to MITM or slowing down Zen
|
||||||
|
pref("network.proxy.type", 0);
|
||||||
|
|
||||||
|
// for the new layout:
|
||||||
|
pref('browser.download.autohideButton', false);
|
||||||
|
|
||||||
|
// Enable transparent background for macos
|
||||||
#ifdef XP_MACOSX
|
#ifdef XP_MACOSX
|
||||||
#include macos.inc
|
pref('widget.macos.titlebar-blend-mode.behind-window', true);
|
||||||
|
// 1. hudWindow
|
||||||
|
// 2. fullScreenUI
|
||||||
|
// 3. popover
|
||||||
|
// 4. menu
|
||||||
|
// 5. toolTip
|
||||||
|
// 6. headerView
|
||||||
|
// 7. underlay
|
||||||
|
pref('zen.widget.macos.window-material', 3);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include urlbar.inc
|
// Enable transparent background for linux
|
||||||
#include newtab.inc
|
#ifdef MOZ_WIDGET_GTK
|
||||||
#include pdf.inc
|
pref('zen.widget.linux.transparency', false);
|
||||||
#include extensions.inc
|
|
||||||
#include privacy.inc
|
|
||||||
#include media.inc
|
|
||||||
#include browser.inc
|
|
||||||
|
|
||||||
#include features.inc
|
|
||||||
|
|
||||||
#ifndef XP_MACOSX
|
|
||||||
#include smoothscroll.inc
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#include performance.inc
|
// Urlbar and autocomplete
|
||||||
#include pip.inc
|
pref("browser.urlbar.maxRichResults", 8);
|
||||||
|
pref("browser.urlbar.trimHttps", true);
|
||||||
|
pref("browser.search.separatePrivateDefault.ui.enabled", true);
|
||||||
|
pref("browser.urlbar.update2.engineAliasRefresh", true);
|
||||||
|
pref("browser.search.suggest.enabled", false);
|
||||||
|
pref("browser.urlbar.quicksuggest.enabled", false);
|
||||||
|
pref("browser.urlbar.suggest.quicksuggest.sponsored", false);
|
||||||
|
pref("browser.urlbar.suggest.quicksuggest.nonsponsored", false);
|
||||||
|
pref("browser.urlbar.groupLabels.enabled", false);
|
||||||
|
pref("browser.urlbar.keepPanelOpenDuringImeComposition", true); // IMPORTANT: Fixes closing the urlbar when on some languages
|
||||||
|
pref("browser.formfill.enable", false);
|
||||||
|
pref("security.insecure_connection_text.enabled", true);
|
||||||
|
pref("security.insecure_connection_text.pbmode.enabled", true);
|
||||||
|
pref("network.IDN_show_punycode", true);
|
||||||
|
|
||||||
|
// Telemetry
|
||||||
|
pref("datareporting.policy.dataSubmissionEnabled", false, locked);
|
||||||
|
pref("datareporting.healthreport.uploadEnabled", false, locked);
|
||||||
|
pref("toolkit.telemetry.unified", false, locked);
|
||||||
|
pref("toolkit.telemetry.enabled", false, locked);
|
||||||
|
pref("toolkit.telemetry.server", "data:,", locked);
|
||||||
|
pref("toolkit.telemetry.archive.enabled", false, locked);
|
||||||
|
pref("toolkit.telemetry.newProfilePing.enabled", false, locked);
|
||||||
|
pref("toolkit.telemetry.shutdownPingSender.enabled", false, locked);
|
||||||
|
pref("toolkit.telemetry.updatePing.enabled", false, locked);
|
||||||
|
pref("toolkit.telemetry.bhrPing.enabled", false, locked);
|
||||||
|
pref("toolkit.telemetry.firstShutdownPing.enabled", false, locked);
|
||||||
|
pref("toolkit.telemetry.coverage.opt-out", true, locked);
|
||||||
|
pref("toolkit.coverage.opt-out", true, locked);
|
||||||
|
pref("toolkit.coverage.endpoint.base", "", locked);
|
||||||
|
pref("browser.newtabpage.activity-stream.feeds.telemetry", false, locked);
|
||||||
|
pref("browser.newtabpage.activity-stream.telemetry", false, locked);
|
||||||
|
pref("browser.ping-centre.telemetry", false);
|
||||||
|
pref("browser.attribution.enabled", false);
|
||||||
|
pref("toolkit.telemetry.pioneer-new-studies-available", false);
|
||||||
|
pref("app.shield.optoutstudies.enabled", false, locked);
|
||||||
|
pref("app.normandy.enabled", false, locked);
|
||||||
|
pref("app.normandy.api_url", "", locked);
|
||||||
|
|
||||||
|
// Fullscreen notice
|
||||||
|
pref("full-screen-api.transition-duration.enter", "0 0");
|
||||||
|
pref("full-screen-api.transition-duration.leave", "0 0");
|
||||||
|
pref("full-screen-api.warning.delay", -1);
|
||||||
|
pref("full-screen-api.warning.timeout", 0);
|
||||||
|
|
||||||
|
// Common UI changes
|
||||||
|
pref("browser.privatebrowsing.vpnpromourl", "", locked);
|
||||||
|
pref("extensions.getAddons.showPane", false);
|
||||||
|
pref("extensions.htmlaboutaddons.recommendations.enabled", false);
|
||||||
|
pref("browser.discovery.enabled", false);
|
||||||
|
pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.addons", false);
|
||||||
|
pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features", false);
|
||||||
|
pref("browser.preferences.moreFromMozilla", false, locked);
|
||||||
|
pref("browser.aboutwelcome.enabled", false);
|
||||||
|
|
||||||
|
// AI/ML stuff
|
||||||
|
pref("browser.ml.chat.enabled", false);
|
||||||
|
pref("browser.ml.chat.shortcuts", false);
|
||||||
|
pref("browser.ml.chat.shortcuts.custom", false);
|
||||||
|
pref("browser.ml.chat.sidebar", false);
|
||||||
|
pref("browser.ml.enable", false);
|
||||||
|
|
||||||
|
// ---- Experimental settings to try make zen faster
|
||||||
|
pref("media.memory_cache_max_size", 1048576);
|
||||||
|
pref("media.cache_readahead_limit", 9000);
|
||||||
|
pref("media.cache_resume_threshold", 3600);
|
||||||
|
pref("media.memory_caches_combined_limit_kb", 2560000);
|
||||||
|
|
||||||
|
pref("image.mem.decode_bytes_at_a_time", 32768);
|
||||||
|
|
||||||
|
// Enable GPU by default
|
||||||
|
pref("gfx.canvas.accelerated", true);
|
||||||
|
pref("media.hardware-video-decoding.enabled", true);
|
||||||
|
pref("layers.gpu-process.enabled", true);
|
||||||
|
|
||||||
|
// Picture-in-picture
|
||||||
|
pref("media.videocontrols.picture-in-picture.video-toggle.enabled", true);
|
||||||
|
// TODO: Enable once we have a proper settings page
|
||||||
|
pref("media.videocontrols.picture-in-picture.enable-when-switching-tabs.enabled", false);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
diff --git a/browser/base/content/aboutDialog.js b/browser/base/content/aboutDialog.js
|
diff --git a/browser/base/content/aboutDialog.js b/browser/base/content/aboutDialog.js
|
||||||
index f6e1391baf12abb91c85a95107bb3923118746c0..cac04aa288e8a305d0c8b28e0c919abce87658e5 100644
|
index f6e1391baf12abb91c85a95107bb3923118746c0..76c7b75a4e29056110f1631a50047c4ddd8b1f4a 100644
|
||||||
--- a/browser/base/content/aboutDialog.js
|
--- a/browser/base/content/aboutDialog.js
|
||||||
+++ b/browser/base/content/aboutDialog.js
|
+++ b/browser/base/content/aboutDialog.js
|
||||||
@@ -52,7 +52,7 @@ function init() {
|
@@ -52,7 +52,7 @@ function init() {
|
||||||
|
@ -20,18 +20,3 @@ index f6e1391baf12abb91c85a95107bb3923118746c0..cac04aa288e8a305d0c8b28e0c919abc
|
||||||
versionIdKey += "-nightly";
|
versionIdKey += "-nightly";
|
||||||
let buildID = Services.appinfo.appBuildID;
|
let buildID = Services.appinfo.appBuildID;
|
||||||
let year = buildID.slice(0, 4);
|
let year = buildID.slice(0, 4);
|
||||||
@@ -125,14 +125,6 @@ function init() {
|
|
||||||
window.close();
|
|
||||||
});
|
|
||||||
if (AppConstants.MOZ_UPDATER) {
|
|
||||||
- document
|
|
||||||
- .getElementById("aboutDialogHelpLink")
|
|
||||||
- .addEventListener("click", () => {
|
|
||||||
- openHelpLink("firefox-help");
|
|
||||||
- });
|
|
||||||
- document
|
|
||||||
- .getElementById("submit-feedback")
|
|
||||||
- .addEventListener("click", openFeedbackPage);
|
|
||||||
document
|
|
||||||
.getElementById("checkForUpdatesButton")
|
|
||||||
.addEventListener("command", () => {
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
diff --git a/browser/base/content/aboutDialog.xhtml b/browser/base/content/aboutDialog.xhtml
|
diff --git a/browser/base/content/aboutDialog.xhtml b/browser/base/content/aboutDialog.xhtml
|
||||||
index c64980810570fcea84e33fdc2d66ac42a79f4e46..6ef9bf4b88f0a0539d833f662c4dd890fd1fde93 100644
|
index c64980810570fcea84e33fdc2d66ac42a79f4e46..b7198e810a7510fa82cc6801cfd01c88a08d42c1 100644
|
||||||
--- a/browser/base/content/aboutDialog.xhtml
|
--- a/browser/base/content/aboutDialog.xhtml
|
||||||
+++ b/browser/base/content/aboutDialog.xhtml
|
+++ b/browser/base/content/aboutDialog.xhtml
|
||||||
@@ -35,6 +35,7 @@
|
@@ -35,6 +35,7 @@
|
||||||
|
@ -10,18 +10,7 @@ index c64980810570fcea84e33fdc2d66ac42a79f4e46..6ef9bf4b88f0a0539d833f662c4dd890
|
||||||
</linkset>
|
</linkset>
|
||||||
|
|
||||||
<html:div id="aboutDialogContainer">
|
<html:div id="aboutDialogContainer">
|
||||||
@@ -102,10 +103,6 @@
|
@@ -125,21 +126,23 @@
|
||||||
<label id="version" class="update"/>
|
|
||||||
<label id="releasenotes" is="text-link" hidden="true" data-l10n-id="releaseNotes-link"/>
|
|
||||||
</hbox>
|
|
||||||
- <description class="text-blurb">
|
|
||||||
- <label id="aboutDialogHelpLink" is="text-link" data-l10n-id="aboutdialog-help-user"/>
|
|
||||||
- <label id="submit-feedback" is="text-link" data-l10n-id="aboutdialog-submit-feedback"/>
|
|
||||||
- </description>
|
|
||||||
</vbox>
|
|
||||||
#endif
|
|
||||||
</hbox>
|
|
||||||
@@ -125,21 +122,17 @@
|
|
||||||
</description>
|
</description>
|
||||||
</vbox>
|
</vbox>
|
||||||
<description class="text-blurb" id="communityDesc" data-l10n-id="community-2">
|
<description class="text-blurb" id="communityDesc" data-l10n-id="community-2">
|
||||||
|
@ -29,10 +18,12 @@ index c64980810570fcea84e33fdc2d66ac42a79f4e46..6ef9bf4b88f0a0539d833f662c4dd890
|
||||||
+ <label is="text-link" href="https://github.com/zen-browser/desktop" data-l10n-name="community-mozillaLink"/>
|
+ <label is="text-link" href="https://github.com/zen-browser/desktop" data-l10n-name="community-mozillaLink"/>
|
||||||
<label is="text-link" useoriginprincipal="true" href="about:credits" data-l10n-name="community-creditsLink"/>
|
<label is="text-link" useoriginprincipal="true" href="about:credits" data-l10n-name="community-creditsLink"/>
|
||||||
</description>
|
</description>
|
||||||
- <description class="text-blurb" id="contributeDesc" data-l10n-id="helpus">
|
+#if 0
|
||||||
- <label is="text-link" href="https://foundation.mozilla.org/?form=firefox-about" data-l10n-name="helpus-donateLink"/>
|
<description class="text-blurb" id="contributeDesc" data-l10n-id="helpus">
|
||||||
- <label is="text-link" href="https://www.mozilla.org/contribute/?utm_source=firefox-browser&utm_medium=firefox-desktop&utm_campaign=about-dialog" data-l10n-name="helpus-getInvolvedLink"/>
|
<label is="text-link" href="https://foundation.mozilla.org/?form=firefox-about" data-l10n-name="helpus-donateLink"/>
|
||||||
- </description>
|
<label is="text-link" href="https://www.mozilla.org/contribute/?utm_source=firefox-browser&utm_medium=firefox-desktop&utm_campaign=about-dialog" data-l10n-name="helpus-getInvolvedLink"/>
|
||||||
|
</description>
|
||||||
|
+#endif
|
||||||
</vbox>
|
</vbox>
|
||||||
</vbox>
|
</vbox>
|
||||||
</hbox>
|
</hbox>
|
||||||
|
|
15
src/browser/base/content/appmenu-viewcache-inc-xhtml.patch
Normal file
15
src/browser/base/content/appmenu-viewcache-inc-xhtml.patch
Normal file
|
@ -0,0 +1,15 @@
|
||||||
|
diff --git a/browser/base/content/appmenu-viewcache.inc.xhtml b/browser/base/content/appmenu-viewcache.inc.xhtml
|
||||||
|
index 3c5c4f29b1de25a4ce17089502f2251a27e5c7f5..dfa3260ed3c2bb6067745696fbf103c7e56c639a 100644
|
||||||
|
--- a/browser/base/content/appmenu-viewcache.inc.xhtml
|
||||||
|
+++ b/browser/base/content/appmenu-viewcache.inc.xhtml
|
||||||
|
@@ -421,6 +421,10 @@
|
||||||
|
class="subviewbutton"
|
||||||
|
data-l10n-id="appmenu-customizetoolbar"
|
||||||
|
command="cmd_CustomizeToolbars"/>
|
||||||
|
+ <toolbarbutton id="appmenu-zen-share-rice"
|
||||||
|
+ class="subviewbutton"
|
||||||
|
+ data-l10n-id="appmenu-zen-share-rice"
|
||||||
|
+ oncommand="gZenThemePicker.shareTheme()" />
|
||||||
|
<toolbarseparator/>
|
||||||
|
<html:h2 id="appmenu-developer-tools"
|
||||||
|
data-l10n-id="appmenu-developer-tools-subheader"
|
|
@ -1,35 +1,8 @@
|
||||||
diff --git a/browser/base/content/browser-addons.js b/browser/base/content/browser-addons.js
|
diff --git a/browser/base/content/browser-addons.js b/browser/base/content/browser-addons.js
|
||||||
index 73593191936cc345ee8e2c28cb251dc13f4c2fd4..e6c459c1ebc60a1f3930a55e212570f696bf07a0 100644
|
index 992d07daaef1abc4554a43aa654888f66963c575..73e620b70b7ed14e9d140e875c2cd5f5ac31456b 100644
|
||||||
--- a/browser/base/content/browser-addons.js
|
--- a/browser/base/content/browser-addons.js
|
||||||
+++ b/browser/base/content/browser-addons.js
|
+++ b/browser/base/content/browser-addons.js
|
||||||
@@ -735,7 +735,7 @@ var gXPInstallObserver = {
|
@@ -2105,18 +2105,20 @@ var gUnifiedExtensions = {
|
||||||
persistent: true,
|
|
||||||
hideClose: true,
|
|
||||||
popupOptions: {
|
|
||||||
- position: "bottomright topright",
|
|
||||||
+ position: gZenUIManager.panelUIPosition,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
@@ -942,7 +942,7 @@ var gXPInstallObserver = {
|
|
||||||
hideClose: true,
|
|
||||||
timeout: Date.now() + 30000,
|
|
||||||
popupOptions: {
|
|
||||||
- position: "bottomright topright",
|
|
||||||
+ position: gZenUIManager.panelUIPosition,
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
@@ -2125,7 +2125,7 @@ var gUnifiedExtensions = {
|
|
||||||
|
|
||||||
panel.hidden = false;
|
|
||||||
PanelMultiView.openPopup(panel, this._button, {
|
|
||||||
- position: "bottomright topright",
|
|
||||||
+ position: gZenUIManager.panelUIPosition,
|
|
||||||
triggerEvent: aEvent,
|
|
||||||
});
|
|
||||||
}
|
|
||||||
@@ -2294,18 +2294,20 @@ var gUnifiedExtensions = {
|
|
||||||
this._maybeMoveWidgetNodeBack(widgetId);
|
this._maybeMoveWidgetNodeBack(widgetId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,15 +1,13 @@
|
||||||
diff --git a/browser/base/content/browser-box.inc.xhtml b/browser/base/content/browser-box.inc.xhtml
|
diff --git a/browser/base/content/browser-box.inc.xhtml b/browser/base/content/browser-box.inc.xhtml
|
||||||
index 7d7e8697f02f90d4f336c9ab0a73a89848e0c21c..64e950106dd05b443ce72107613ac9cc405d56ea 100644
|
index 7d7e8697f02f90d4f336c9ab0a73a89848e0c21c..d113b439888d26629ce5f6b5d35f8fa12249774b 100644
|
||||||
--- a/browser/base/content/browser-box.inc.xhtml
|
--- a/browser/base/content/browser-box.inc.xhtml
|
||||||
+++ b/browser/base/content/browser-box.inc.xhtml
|
+++ b/browser/base/content/browser-box.inc.xhtml
|
||||||
@@ -23,7 +23,15 @@
|
@@ -23,7 +23,13 @@
|
||||||
<browser id="sidebar" autoscroll="false" disablehistory="true" disablefullscreen="true" tooltip="aHTMLTooltip"/>
|
<browser id="sidebar" autoscroll="false" disablehistory="true" disablefullscreen="true" tooltip="aHTMLTooltip"/>
|
||||||
</vbox>
|
</vbox>
|
||||||
<splitter id="sidebar-splitter" class="chromeclass-extrachrome sidebar-splitter" resizebefore="sibling" resizeafter="none" hidden="true"/>
|
<splitter id="sidebar-splitter" class="chromeclass-extrachrome sidebar-splitter" resizebefore="sibling" resizeafter="none" hidden="true"/>
|
||||||
+<vbox flex="1" id="zen-appcontent-wrapper">
|
+<vbox flex="1" id="zen-appcontent-wrapper">
|
||||||
+ <html:div id="zen-appcontent-navbar-wrapper">
|
+ <html:div id="zen-appcontent-navbar-container"></html:div>
|
||||||
+ <html:div id="zen-appcontent-navbar-container"></html:div>
|
|
||||||
+ </html:div>
|
|
||||||
+ <hbox id="zen-tabbox-wrapper" flex="1">
|
+ <hbox id="zen-tabbox-wrapper" flex="1">
|
||||||
<tabbox id="tabbrowser-tabbox" flex="1" tabcontainer="tabbrowser-tabs">
|
<tabbox id="tabbrowser-tabbox" flex="1" tabcontainer="tabbrowser-tabs">
|
||||||
+#include zen-tabbrowser-elements.inc.xhtml
|
+#include zen-tabbrowser-elements.inc.xhtml
|
||||||
|
|
|
@ -15,7 +15,7 @@ index 3d5173315812589c0b79beec5f0419fc37cb8868..c4216db9e414fbbaead6ecd89b40366b
|
||||||
TelemetryTimestamps.add("delayedStartupStarted");
|
TelemetryTimestamps.add("delayedStartupStarted");
|
||||||
|
|
||||||
this._cancelDelayedStartup();
|
this._cancelDelayedStartup();
|
||||||
+ gZenWorkspaces.afterLoadInit();
|
+ ZenWorkspaces.afterLoadInit();
|
||||||
|
|
||||||
gBrowser.addEventListener(
|
gBrowser.addEventListener(
|
||||||
"PermissionStateChange",
|
"PermissionStateChange",
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
|
diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js
|
||||||
index 6d664917a5a3bb1cea8a747e42e8bc0065ec999e..5059293ebfa29d646455b7a3505bd6eae408ba64 100644
|
index ea79d296e7dd0f8fd812b0677a252af5cf7ad26e..bd95ef5d6b99399c859af1cf71d9d62477f4ac2b 100644
|
||||||
--- a/browser/base/content/browser.js
|
--- a/browser/base/content/browser.js
|
||||||
+++ b/browser/base/content/browser.js
|
+++ b/browser/base/content/browser.js
|
||||||
@@ -33,6 +33,7 @@ ChromeUtils.defineESModuleGetters(this, {
|
@@ -33,6 +33,7 @@ ChromeUtils.defineESModuleGetters(this, {
|
||||||
|
@ -10,32 +10,33 @@ index 6d664917a5a3bb1cea8a747e42e8bc0065ec999e..5059293ebfa29d646455b7a3505bd6ea
|
||||||
DevToolsSocketStatus:
|
DevToolsSocketStatus:
|
||||||
"resource://devtools/shared/security/DevToolsSocketStatus.sys.mjs",
|
"resource://devtools/shared/security/DevToolsSocketStatus.sys.mjs",
|
||||||
DownloadUtils: "resource://gre/modules/DownloadUtils.sys.mjs",
|
DownloadUtils: "resource://gre/modules/DownloadUtils.sys.mjs",
|
||||||
@@ -2340,6 +2341,10 @@ var XULBrowserWindow = {
|
@@ -2338,6 +2339,11 @@ var XULBrowserWindow = {
|
||||||
AboutReaderParent.updateReaderButton(gBrowser.selectedBrowser);
|
AboutReaderParent.updateReaderButton(gBrowser.selectedBrowser);
|
||||||
TranslationsParent.onLocationChange(gBrowser.selectedBrowser);
|
TranslationsParent.onLocationChange(gBrowser.selectedBrowser);
|
||||||
|
|
||||||
+ gZenViewSplitter.onLocationChange(gBrowser.selectedBrowser);
|
+ gZenViewSplitter.onLocationChange(gBrowser.selectedBrowser);
|
||||||
+ gZenWorkspaces.onLocationChange(gBrowser.selectedBrowser);
|
+ ZenWorkspaces.onLocationChange(gBrowser.selectedBrowser);
|
||||||
|
+ gZenTabUnloader.onLocationChange(gBrowser.selectedBrowser);
|
||||||
+ gZenPinnedTabManager.onLocationChange(gBrowser.selectedBrowser);
|
+ gZenPinnedTabManager.onLocationChange(gBrowser.selectedBrowser);
|
||||||
+
|
+
|
||||||
PictureInPicture.updateUrlbarToggle(gBrowser.selectedBrowser);
|
PictureInPicture.updateUrlbarToggle(gBrowser.selectedBrowser);
|
||||||
|
|
||||||
if (!gMultiProcessBrowser) {
|
if (!gMultiProcessBrowser) {
|
||||||
@@ -4816,7 +4821,7 @@ function switchToTabHavingURI(
|
@@ -4814,7 +4820,7 @@ function switchToTabHavingURI(
|
||||||
ignoreQueryString || replaceQueryString,
|
ignoreQueryString || replaceQueryString,
|
||||||
ignoreFragmentWhenComparing
|
ignoreFragmentWhenComparing
|
||||||
);
|
);
|
||||||
- let browsers = aWindow.gBrowser.browsers;
|
- let browsers = aWindow.gBrowser.browsers;
|
||||||
+ let browsers = aWindow.gZenWorkspaces.allUsedBrowsers;
|
+ let browsers = aWindow.ZenWorkspaces.allUsedBrowsers;
|
||||||
for (let i = 0; i < browsers.length; i++) {
|
for (let i = 0; i < browsers.length; i++) {
|
||||||
let browser = browsers[i];
|
let browser = browsers[i];
|
||||||
let browserCompare = cleanURL(
|
let browserCompare = cleanURL(
|
||||||
@@ -4859,7 +4864,7 @@ function switchToTabHavingURI(
|
@@ -4857,7 +4863,7 @@ function switchToTabHavingURI(
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!doAdopt) {
|
if (!doAdopt) {
|
||||||
- aWindow.gBrowser.tabContainer.selectedIndex = i;
|
- aWindow.gBrowser.tabContainer.selectedIndex = i;
|
||||||
+ aWindow.gZenWorkspaces.switchIfNeeded(browser, i);
|
+ aWindow.ZenWorkspaces.switchIfNeeded(browser, i);
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
diff --git a/browser/base/content/browser.xhtml b/browser/base/content/browser.xhtml
|
diff --git a/browser/base/content/browser.xhtml b/browser/base/content/browser.xhtml
|
||||||
index 8f8c5536cb6e54300897180ca3f950974c60e930..79305485631f14712d8b2674f477b641ec53fcd6 100644
|
index 51a25aaa5558e6e17246d54a7ed95d5ddf3ecdab..b49984c8711fc9f5f19f0cf6ecca07a8cca0d125 100644
|
||||||
--- a/browser/base/content/browser.xhtml
|
--- a/browser/base/content/browser.xhtml
|
||||||
+++ b/browser/base/content/browser.xhtml
|
+++ b/browser/base/content/browser.xhtml
|
||||||
@@ -26,6 +26,7 @@
|
@@ -26,6 +26,7 @@
|
||||||
|
@ -10,7 +10,7 @@ index 8f8c5536cb6e54300897180ca3f950974c60e930..79305485631f14712d8b2674f477b641
|
||||||
persist="screenX screenY width height sizemode"
|
persist="screenX screenY width height sizemode"
|
||||||
data-l10n-sync="true">
|
data-l10n-sync="true">
|
||||||
<head>
|
<head>
|
||||||
@@ -105,8 +106,11 @@
|
@@ -104,8 +105,11 @@
|
||||||
|
|
||||||
<title data-l10n-id="browser-main-window-default-title"></title>
|
<title data-l10n-id="browser-main-window-default-title"></title>
|
||||||
|
|
||||||
|
@ -22,11 +22,12 @@ index 8f8c5536cb6e54300897180ca3f950974c60e930..79305485631f14712d8b2674f477b641
|
||||||
</head>
|
</head>
|
||||||
<html:body xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
<html:body xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
|
||||||
# All sets except for popupsets (commands, keys, and stringbundles)
|
# All sets except for popupsets (commands, keys, and stringbundles)
|
||||||
@@ -128,9 +132,11 @@
|
@@ -127,9 +131,12 @@
|
||||||
</vbox>
|
</vbox>
|
||||||
</html:template>
|
</html:template>
|
||||||
|
|
||||||
+<hbox id="zen-main-app-wrapper" flex="1" persist="zen-compact-mode">
|
+<hbox id="zen-main-app-wrapper" flex="1" persist="zen-compact-mode">
|
||||||
|
+ <vbox id="zen-toast-container"></vbox>
|
||||||
#include navigator-toolbox.inc.xhtml
|
#include navigator-toolbox.inc.xhtml
|
||||||
|
|
||||||
#include browser-box.inc.xhtml
|
#include browser-box.inc.xhtml
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
diff --git a/browser/base/content/navigator-toolbox.inc.xhtml b/browser/base/content/navigator-toolbox.inc.xhtml
|
diff --git a/browser/base/content/navigator-toolbox.inc.xhtml b/browser/base/content/navigator-toolbox.inc.xhtml
|
||||||
index 00c8976d3e258c0875d7da2f3ec823d8907a84c9..cc61d5a845b5ce22a61f5a1aab8b280b2bcdf101 100644
|
index 00c8976d3e258c0875d7da2f3ec823d8907a84c9..b5735712aaa7c2ae2baa4b858e735413b130ca94 100644
|
||||||
--- a/browser/base/content/navigator-toolbox.inc.xhtml
|
--- a/browser/base/content/navigator-toolbox.inc.xhtml
|
||||||
+++ b/browser/base/content/navigator-toolbox.inc.xhtml
|
+++ b/browser/base/content/navigator-toolbox.inc.xhtml
|
||||||
@@ -2,7 +2,7 @@
|
@@ -2,7 +2,7 @@
|
||||||
|
@ -22,24 +22,27 @@ index 00c8976d3e258c0875d7da2f3ec823d8907a84c9..cc61d5a845b5ce22a61f5a1aab8b280b
|
||||||
<toolbar id="TabsToolbar"
|
<toolbar id="TabsToolbar"
|
||||||
class="browser-toolbar browser-titlebar"
|
class="browser-toolbar browser-titlebar"
|
||||||
fullscreentoolbar="true"
|
fullscreentoolbar="true"
|
||||||
@@ -50,6 +50,8 @@
|
@@ -50,6 +50,10 @@
|
||||||
tooltip="tabbrowser-tab-tooltip"
|
tooltip="tabbrowser-tab-tooltip"
|
||||||
orient="horizontal"
|
orient="horizontal"
|
||||||
stopwatchid="tabClick">
|
stopwatchid="tabClick">
|
||||||
+<html:div id="zen-essentials" skipintoolbarset="true"></html:div>
|
+<html:div id="zen-essentials-wrapper" skipintoolbarset="true"></html:div>
|
||||||
|
+<hbox id="zen-current-workspace-indicator-container"></hbox>
|
||||||
+<html:div id="zen-tabs-wrapper">
|
+<html:div id="zen-tabs-wrapper">
|
||||||
|
+<html:div id="zen-browser-tabs-container">
|
||||||
<hbox class="tab-drop-indicator" hidden="true"/>
|
<hbox class="tab-drop-indicator" hidden="true"/>
|
||||||
<html:span id="tab-drag-empty-feedback" role="presentation"/>
|
<html:span id="tab-drag-empty-feedback" role="presentation"/>
|
||||||
# If the name (tabbrowser-arrowscrollbox) or structure of this changes
|
# If the name (tabbrowser-arrowscrollbox) or structure of this changes
|
||||||
@@ -76,6 +78,7 @@
|
@@ -76,6 +80,8 @@
|
||||||
tooltip="dynamic-shortcut-tooltip"
|
tooltip="dynamic-shortcut-tooltip"
|
||||||
data-l10n-id="tabs-toolbar-new-tab"/>
|
data-l10n-id="tabs-toolbar-new-tab"/>
|
||||||
<html:span id="tabbrowser-tab-a11y-desc" hidden="true"/>
|
<html:span id="tabbrowser-tab-a11y-desc" hidden="true"/>
|
||||||
|
+</html:div>
|
||||||
+</html:div>
|
+</html:div>
|
||||||
</tabs>
|
</tabs>
|
||||||
|
|
||||||
<toolbarbutton id="new-tab-button"
|
<toolbarbutton id="new-tab-button"
|
||||||
@@ -101,9 +104,10 @@
|
@@ -101,9 +107,10 @@
|
||||||
#include private-browsing-indicator.inc.xhtml
|
#include private-browsing-indicator.inc.xhtml
|
||||||
<toolbarbutton class="content-analysis-indicator toolbarbutton-1 content-analysis-indicator-icon"/>
|
<toolbarbutton class="content-analysis-indicator toolbarbutton-1 content-analysis-indicator-icon"/>
|
||||||
|
|
||||||
|
|
|
@ -29,15 +29,19 @@
|
||||||
</linkset>
|
</linkset>
|
||||||
|
|
||||||
# Scripts used all over the browser
|
# Scripts used all over the browser
|
||||||
<script src="chrome://browser/content/ZenUIManager.mjs"></script>
|
<script>
|
||||||
<script src="chrome://browser/content/zen-components/ZenFolders.mjs"></script>
|
Services.scriptloader.loadSubScript("chrome://browser/content/ZenUIManager.mjs", this);
|
||||||
<script src="chrome://browser/content/zen-components/ZenMods.mjs"></script>
|
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenFolders.mjs", this);
|
||||||
<script src="chrome://browser/content/zen-components/ZenCompactMode.mjs"></script>
|
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenThemesCommon.mjs", this);
|
||||||
<script src="chrome://browser/content/zen-components/ZenPinnedTabsStorage.mjs"></script>
|
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenThemesImporter.mjs", this);
|
||||||
<script src="chrome://browser/content/zen-components/ZenWorkspacesStorage.mjs"></script>
|
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenCompactMode.mjs", this);
|
||||||
<script src="chrome://browser/content/zen-components/ZenPinnedTabManager.mjs"></script>
|
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenTabUnloader.mjs", this);
|
||||||
<script src="chrome://browser/content/zen-components/ZenGradientGenerator.mjs"></script>
|
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenPinnedTabsStorage.mjs", this);
|
||||||
<script src="chrome://browser/content/zen-components/ZenViewSplitter.mjs"></script>
|
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenWorkspacesStorage.mjs", this);
|
||||||
<script src="chrome://browser/content/zen-components/ZenGlanceManager.mjs"></script>
|
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenPinnedTabManager.mjs", this);
|
||||||
<script src="chrome://browser/content/zen-components/ZenMediaController.mjs"></script>
|
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenGradientGenerator.mjs", this);
|
||||||
<script src="chrome://browser/content/zen-components/ZenDownloadAnimation.mjs"></script>
|
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenViewSplitter.mjs", this);
|
||||||
|
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenGlanceManager.mjs", this);
|
||||||
|
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenMediaController.mjs", this);
|
||||||
|
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenDownloadAnimation.mjs", this);
|
||||||
|
</script>
|
||||||
|
|
|
@ -9,7 +9,6 @@
|
||||||
content/browser/ZenCustomizableUI.sys.mjs (../../zen/common/ZenCustomizableUI.sys.mjs)
|
content/browser/ZenCustomizableUI.sys.mjs (../../zen/common/ZenCustomizableUI.sys.mjs)
|
||||||
content/browser/zen-components/ZenUIMigration.mjs (../../zen/common/ZenUIMigration.mjs)
|
content/browser/zen-components/ZenUIMigration.mjs (../../zen/common/ZenUIMigration.mjs)
|
||||||
content/browser/zen-components/ZenCommonUtils.mjs (../../zen/common/ZenCommonUtils.mjs)
|
content/browser/zen-components/ZenCommonUtils.mjs (../../zen/common/ZenCommonUtils.mjs)
|
||||||
content/browser/zen-components/ZenSessionStore.mjs (../../zen/common/ZenSessionStore.mjs)
|
|
||||||
|
|
||||||
content/browser/zen-styles/zen-theme.css (../../zen/common/styles/zen-theme.css)
|
content/browser/zen-styles/zen-theme.css (../../zen/common/styles/zen-theme.css)
|
||||||
content/browser/zen-styles/zen-buttons.css (../../zen/common/styles/zen-buttons.css)
|
content/browser/zen-styles/zen-buttons.css (../../zen/common/styles/zen-buttons.css)
|
||||||
|
@ -35,19 +34,21 @@
|
||||||
content/browser/zen-components/ZenViewSplitter.mjs (../../zen/split-view/ZenViewSplitter.mjs)
|
content/browser/zen-components/ZenViewSplitter.mjs (../../zen/split-view/ZenViewSplitter.mjs)
|
||||||
content/browser/zen-styles/zen-decks.css (../../zen/split-view/zen-decks.css)
|
content/browser/zen-styles/zen-decks.css (../../zen/split-view/zen-decks.css)
|
||||||
|
|
||||||
content/browser/zen-components/ZenMods.mjs (../../zen/mods/ZenMods.mjs)
|
content/browser/zen-components/ZenThemesCommon.mjs (../../zen/mods/ZenThemesCommon.mjs)
|
||||||
|
content/browser/zen-components/ZenThemesImporter.mjs (../../zen/mods/ZenThemesImporter.mjs)
|
||||||
|
content/browser/zen-components/actors/ZenThemeMarketplaceParent.sys.mjs (../../zen/mods/actors/ZenThemeMarketplaceParent.sys.mjs)
|
||||||
|
content/browser/zen-components/actors/ZenThemeMarketplaceChild.sys.mjs (../../zen/mods/actors/ZenThemeMarketplaceChild.sys.mjs)
|
||||||
|
|
||||||
content/browser/zen-components/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/ZenWorkspaces.mjs (../../zen/workspaces/ZenWorkspaces.mjs)
|
||||||
content/browser/zen-components/ZenWorkspacesStorage.mjs (../../zen/workspaces/ZenWorkspacesStorage.mjs)
|
content/browser/zen-components/ZenWorkspacesStorage.mjs (../../zen/workspaces/ZenWorkspacesStorage.mjs)
|
||||||
content/browser/zen-components/ZenWorkspacesSync.mjs (../../zen/workspaces/ZenWorkspacesSync.mjs)
|
content/browser/zen-components/ZenWorkspacesSync.mjs (../../zen/workspaces/ZenWorkspacesSync.mjs)
|
||||||
content/browser/zen-components/ZenGradientGenerator.mjs (../../zen/workspaces/ZenGradientGenerator.mjs)
|
content/browser/zen-components/ZenGradientGenerator.mjs (../../zen/workspaces/ZenGradientGenerator.mjs)
|
||||||
* content/browser/zen-styles/zen-workspaces.css (../../zen/workspaces/zen-workspaces.css)
|
content/browser/zen-styles/zen-workspaces.css (../../zen/workspaces/zen-workspaces.css)
|
||||||
content/browser/zen-styles/zen-gradient-generator.css (../../zen/workspaces/zen-gradient-generator.css)
|
content/browser/zen-styles/zen-gradient-generator.css (../../zen/workspaces/zen-gradient-generator.css)
|
||||||
|
|
||||||
content/browser/zen-components/ZenKeyboardShortcuts.mjs (../../zen/kbs/ZenKeyboardShortcuts.mjs)
|
content/browser/zen-components/ZenKeyboardShortcuts.mjs (../../zen/kbs/ZenKeyboardShortcuts.mjs)
|
||||||
|
|
||||||
|
content/browser/zen-components/ZenTabUnloader.mjs (../../zen/tabs/ZenTabUnloader.mjs)
|
||||||
content/browser/zen-components/ZenPinnedTabsStorage.mjs (../../zen/tabs/ZenPinnedTabsStorage.mjs)
|
content/browser/zen-components/ZenPinnedTabsStorage.mjs (../../zen/tabs/ZenPinnedTabsStorage.mjs)
|
||||||
content/browser/zen-components/ZenPinnedTabManager.mjs (../../zen/tabs/ZenPinnedTabManager.mjs)
|
content/browser/zen-components/ZenPinnedTabManager.mjs (../../zen/tabs/ZenPinnedTabManager.mjs)
|
||||||
* content/browser/zen-styles/zen-tabs.css (../../zen/tabs/zen-tabs.css)
|
* content/browser/zen-styles/zen-tabs.css (../../zen/tabs/zen-tabs.css)
|
||||||
|
@ -55,6 +56,8 @@
|
||||||
|
|
||||||
content/browser/zen-components/ZenGlanceManager.mjs (../../zen/glance/ZenGlanceManager.mjs)
|
content/browser/zen-components/ZenGlanceManager.mjs (../../zen/glance/ZenGlanceManager.mjs)
|
||||||
content/browser/zen-styles/zen-glance.css (../../zen/glance/zen-glance.css)
|
content/browser/zen-styles/zen-glance.css (../../zen/glance/zen-glance.css)
|
||||||
|
content/browser/zen-components/actors/ZenGlanceChild.sys.mjs (../../zen/glance/actors/ZenGlanceChild.sys.mjs)
|
||||||
|
content/browser/zen-components/actors/ZenGlanceParent.sys.mjs (../../zen/glance/actors/ZenGlanceParent.sys.mjs)
|
||||||
|
|
||||||
content/browser/zen-components/ZenFolders.mjs (../../zen/folders/ZenFolders.mjs)
|
content/browser/zen-components/ZenFolders.mjs (../../zen/folders/ZenFolders.mjs)
|
||||||
content/browser/zen-styles/zen-folders.css (../../zen/folders/zen-folders.css)
|
content/browser/zen-styles/zen-folders.css (../../zen/folders/zen-folders.css)
|
||||||
|
@ -70,7 +73,7 @@
|
||||||
content/browser/zen-styles/zen-download-box-animation.css (../../zen/downloads/zen-download-box-animation.css)
|
content/browser/zen-styles/zen-download-box-animation.css (../../zen/downloads/zen-download-box-animation.css)
|
||||||
|
|
||||||
|
|
||||||
# Images
|
# Images
|
||||||
content/browser/zen-images/gradient.png (../../zen/images/gradient.png)
|
content/browser/zen-images/gradient.png (../../zen/images/gradient.png)
|
||||||
content/browser/zen-images/brand-header.svg (../../zen/images/brand-header.svg)
|
content/browser/zen-images/brand-header.svg (../../zen/images/brand-header.svg)
|
||||||
content/browser/zen-images/layouts/collapsed.png (../../zen/images/layouts/collapsed.png)
|
content/browser/zen-images/layouts/collapsed.png (../../zen/images/layouts/collapsed.png)
|
||||||
|
@ -82,7 +85,7 @@
|
||||||
content/browser/zen-images/downloads/download.svg (../../zen/images/downloads/download.svg)
|
content/browser/zen-images/downloads/download.svg (../../zen/images/downloads/download.svg)
|
||||||
content/browser/zen-images/downloads/archive.svg (../../zen/images/downloads/archive.svg)
|
content/browser/zen-images/downloads/archive.svg (../../zen/images/downloads/archive.svg)
|
||||||
|
|
||||||
# Fonts
|
# Fonts
|
||||||
content/browser/zen-fonts/JunicodeVF-Italic.woff2 (../../zen/fonts/JunicodeVF-Italic.woff2)
|
content/browser/zen-fonts/JunicodeVF-Italic.woff2 (../../zen/fonts/JunicodeVF-Italic.woff2)
|
||||||
content/browser/zen-fonts/JunicodeVF-Roman.woff2 (../../zen/fonts/JunicodeVF-Roman.woff2)
|
content/browser/zen-fonts/JunicodeVF-Roman.woff2 (../../zen/fonts/JunicodeVF-Roman.woff2)
|
||||||
|
|
||||||
|
@ -100,4 +103,4 @@
|
||||||
content/browser/zen-images/favicons/slack.ico (../../zen/images/favicons/slack.ico)
|
content/browser/zen-images/favicons/slack.ico (../../zen/images/favicons/slack.ico)
|
||||||
content/browser/zen-images/favicons/reddit.ico (../../zen/images/favicons/reddit.ico)
|
content/browser/zen-images/favicons/reddit.ico (../../zen/images/favicons/reddit.ico)
|
||||||
content/browser/zen-images/favicons/x.ico (../../zen/images/favicons/x.ico)
|
content/browser/zen-images/favicons/x.ico (../../zen/images/favicons/x.ico)
|
||||||
content/browser/zen-images/favicons/trello.ico (../../zen/images/favicons/trello.ico)
|
content/browser/zen-images/favicons/trello.ico (../../zen/images/favicons/trello.ico)
|
|
@ -43,6 +43,10 @@
|
||||||
|
|
||||||
<command id="cmd_zenCopyCurrentURL" />
|
<command id="cmd_zenCopyCurrentURL" />
|
||||||
<command id="cmd_zenCopyCurrentURLMarkdown" />
|
<command id="cmd_zenCopyCurrentURLMarkdown" />
|
||||||
|
|
||||||
|
<command id="cmd_zenUnloadTab" />
|
||||||
|
<command id="cmd_zenPreventUnloadTab" />
|
||||||
|
<command id="cmd_zenIgnoreUnloadTab" />
|
||||||
</commandset>
|
</commandset>
|
||||||
|
|
||||||
<keyset id="zenKeyset"></keyset>
|
<keyset id="zenKeyset"></keyset>
|
||||||
|
|
|
@ -45,7 +45,7 @@
|
||||||
<label data-l10n-id="zen-panel-ui-gradient-generator-custom-color"></label>
|
<label data-l10n-id="zen-panel-ui-gradient-generator-custom-color"></label>
|
||||||
<hbox>
|
<hbox>
|
||||||
<html:input type="text" placeholder="#000000" id="PanelUI-zen-gradient-generator-custom-input" />
|
<html:input type="text" placeholder="#000000" id="PanelUI-zen-gradient-generator-custom-input" />
|
||||||
<toolbarbutton id="PanelUI-zen-gradient-generator-color-custom-add" class="subviewbutton">
|
<toolbarbutton id="PanelUI-zen-gradient-generator-color-custom-add" class="subviewbutton" data-l10n-id="zen-panel-ui-gradient-generator-custom-color-add">
|
||||||
<image></image>
|
<image></image>
|
||||||
</toolbarbutton>
|
</toolbarbutton>
|
||||||
</hbox>
|
</hbox>
|
||||||
|
|
|
@ -1,13 +1,11 @@
|
||||||
# This needs to be here, before all the other scripts, because it's used before
|
# This needs to be here, before all the other scripts, because it's used before
|
||||||
# the window is fully loaded.
|
# the window is fully loaded.
|
||||||
# Make sure they are loaded before the global-scripts.inc file.
|
# Make sure they are loaded before the global-scripts.inc file.
|
||||||
<script type="text/javascript" src="chrome://browser/content/zen-sets.js"></script>
|
<script type="text/javascript">
|
||||||
<script type="text/javascript" src="chrome://browser/content/zen-components/ZenCommonUtils.mjs"></script>
|
Services.scriptloader.loadSubScript("chrome://browser/content/zen-sets.js", this);
|
||||||
<script type="text/javascript" src="chrome://browser/content/zen-components/ZenKeyboardShortcuts.mjs"></script>
|
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenCommonUtils.mjs", this);
|
||||||
<script type="text/javascript" src="chrome://browser/content/zen-components/ZenWorkspaceIcons.mjs"></script>
|
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenKeyboardShortcuts.mjs", this);
|
||||||
<script type="text/javascript" src="chrome://browser/content/zen-components/ZenWorkspace.mjs"></script>
|
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenWorkspaces.mjs", this);
|
||||||
<script type="text/javascript" src="chrome://browser/content/zen-components/ZenWorkspaces.mjs"></script>
|
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenWorkspacesSync.mjs", this);
|
||||||
<script type="text/javascript" src="chrome://browser/content/zen-components/ZenWorkspacesSync.mjs"></script>
|
Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenActorsManager.mjs", this);
|
||||||
<script type="text/javascript" src="chrome://browser/content/zen-components/ZenActorsManager.mjs"></script>
|
</script>
|
||||||
<script type="text/javascript" src="chrome://browser/content/zen-components/ZenSessionStore.mjs"></script>
|
|
||||||
|
|
||||||
|
|
|
@ -2,12 +2,12 @@
|
||||||
<toolbar brighttext="true"
|
<toolbar brighttext="true"
|
||||||
id="zen-sidebar-bottom-buttons"
|
id="zen-sidebar-bottom-buttons"
|
||||||
fullscreentoolbar="true"
|
fullscreentoolbar="true"
|
||||||
class="browser-toolbar customization-target"
|
class="browser-toolbar customization-target zen-dont-hide-on-fullscreen"
|
||||||
data-l10n-id="tabs-toolbar"
|
data-l10n-id="tabs-toolbar"
|
||||||
customizable="true"
|
customizable="true"
|
||||||
skipintoolbarset="true"
|
skipintoolbarset="true"
|
||||||
context="toolbar-context-menu"
|
context="toolbar-context-menu"
|
||||||
mode="icons">
|
mode="icons">
|
||||||
<toolbarbutton removable="true" class="chromeclass-toolbar-additional toolbarbutton-1 zen-sidebar-action-button" id="zen-expand-sidebar-button" command="cmd_zenToggleSidebar" data-l10n-id="sidebar-zen-expand"></toolbarbutton>
|
<toolbarbutton removable="true" class="chromeclass-toolbar-additional toolbarbutton-1 zen-sidebar-action-button" id="zen-expand-sidebar-button" command="cmd_zenToggleSidebar" data-l10n-id="sidebar-zen-expand" cui-areatype="toolbar"></toolbarbutton>
|
||||||
<zen-workspace-icons id="zen-workspaces-button" overflows="false" removable="false"></zen-workspace-icons>
|
<toolbarbutton id="zen-workspaces-button" class="chromeclass-toolbar-additional" overflows="false" removable="false"></toolbarbutton>
|
||||||
</toolbar>
|
</toolbar>
|
||||||
|
|
|
@ -1,4 +1,2 @@
|
||||||
<vbox id="zen-toast-container"></vbox>
|
|
||||||
|
|
||||||
#include ../../../zen/split-view/zen-splitview-overlay.inc.xhtml
|
#include ../../../zen/split-view/zen-splitview-overlay.inc.xhtml
|
||||||
#include ../../../zen/glance/zen-glance.inc.xhtml
|
#include ../../../zen/glance/zen-glance.inc.xhtml
|
|
@ -1,9 +1,9 @@
|
||||||
diff --git a/browser/base/moz.build b/browser/base/moz.build
|
diff --git a/browser/base/moz.build b/browser/base/moz.build
|
||||||
index 9da444880c4dbf188443d43e8d0a71d98311a2b7..3a654be6f78931e92479b30de6f0a6e50da81908 100644
|
index 636e0841786735a63ddea00e819c0b6f0b8a5d4d..62e4531bd19caf098fd76c69b213fa32d62546a6 100644
|
||||||
--- a/browser/base/moz.build
|
--- a/browser/base/moz.build
|
||||||
+++ b/browser/base/moz.build
|
+++ b/browser/base/moz.build
|
||||||
@@ -81,3 +81,5 @@ DEFINES["MOZ_APP_VERSION_DISPLAY"] = CONFIG["MOZ_APP_VERSION_DISPLAY"]
|
@@ -87,3 +87,5 @@ if CONFIG["MOZ_WIDGET_TOOLKIT"] in ("windows", "gtk"):
|
||||||
DEFINES["APP_LICENSE_BLOCK"] = "%s/content/overrides/app-license.html" % SRCDIR
|
DEFINES["MENUBAR_CAN_AUTOHIDE"] = 1
|
||||||
|
|
||||||
JAR_MANIFESTS += ["jar.mn"]
|
JAR_MANIFESTS += ["jar.mn"]
|
||||||
+
|
+
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
diff --git a/browser/components/BrowserContentHandler.sys.mjs b/browser/components/BrowserContentHandler.sys.mjs
|
diff --git a/browser/components/BrowserContentHandler.sys.mjs b/browser/components/BrowserContentHandler.sys.mjs
|
||||||
index e72feb538c0dc182211945a66e51bcea73d3d4a0..b4d9115873b7af414043c53fb817b611b78ec58f 100644
|
index 5911b276fdc9889d3cb61bac3d302ec5239e4a90..a405f8a0204e98fa9de08f1cd7b6761f0fc6198e 100644
|
||||||
--- a/browser/components/BrowserContentHandler.sys.mjs
|
--- a/browser/components/BrowserContentHandler.sys.mjs
|
||||||
+++ b/browser/components/BrowserContentHandler.sys.mjs
|
+++ b/browser/components/BrowserContentHandler.sys.mjs
|
||||||
@@ -1281,6 +1281,7 @@ function maybeRecordToHandleTelemetry(uri, isLaunch) {
|
@@ -1270,6 +1270,7 @@ function maybeRecordToHandleTelemetry(uri, isLaunch) {
|
||||||
".avif",
|
".avif",
|
||||||
".htm",
|
".htm",
|
||||||
".html",
|
".html",
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
diff --git a/browser/components/BrowserGlue.sys.mjs b/browser/components/BrowserGlue.sys.mjs
|
diff --git a/browser/components/BrowserGlue.sys.mjs b/browser/components/BrowserGlue.sys.mjs
|
||||||
index cebca6d017a0c3fc8eff7a38f987726324789e69..73a24df91bec368f2f27c538b37d57595e18c599 100644
|
index a6a7f9165aece774c3f1c15f7e352b11a4bf90f4..a4b6124b85f099c6f12d297fc26f2040370c337c 100644
|
||||||
--- a/browser/components/BrowserGlue.sys.mjs
|
--- a/browser/components/BrowserGlue.sys.mjs
|
||||||
+++ b/browser/components/BrowserGlue.sys.mjs
|
+++ b/browser/components/BrowserGlue.sys.mjs
|
||||||
@@ -8,6 +8,7 @@ import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs";
|
@@ -8,6 +8,7 @@ import { XPCOMUtils } from "resource://gre/modules/XPCOMUtils.sys.mjs";
|
||||||
|
@ -10,7 +10,7 @@ index cebca6d017a0c3fc8eff7a38f987726324789e69..73a24df91bec368f2f27c538b37d5759
|
||||||
AboutHomeStartupCache: "resource:///modules/AboutHomeStartupCache.sys.mjs",
|
AboutHomeStartupCache: "resource:///modules/AboutHomeStartupCache.sys.mjs",
|
||||||
AboutNewTab: "resource:///modules/AboutNewTab.sys.mjs",
|
AboutNewTab: "resource:///modules/AboutNewTab.sys.mjs",
|
||||||
AWToolbarButton: "resource:///modules/aboutwelcome/AWToolbarUtils.sys.mjs",
|
AWToolbarButton: "resource:///modules/aboutwelcome/AWToolbarUtils.sys.mjs",
|
||||||
@@ -881,6 +882,7 @@ BrowserGlue.prototype = {
|
@@ -1886,6 +1887,7 @@ BrowserGlue.prototype = {
|
||||||
|
|
||||||
lazy.ProcessHangMonitor.init();
|
lazy.ProcessHangMonitor.init();
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
diff --git a/browser/components/customizableui/CustomizableUI.sys.mjs b/browser/components/customizableui/CustomizableUI.sys.mjs
|
diff --git a/browser/components/customizableui/CustomizableUI.sys.mjs b/browser/components/customizableui/CustomizableUI.sys.mjs
|
||||||
index 5bb6be19f7f855b129aac921af1ed5cfc63d732b..41230a61f3088a234903dcc10abd361efac34729 100644
|
index 91088fab1759b9af908912648d28daa5938a29c9..3f52ee8cd77ac171fd2cbf355ade1371e57d0db5 100644
|
||||||
--- a/browser/components/customizableui/CustomizableUI.sys.mjs
|
--- a/browser/components/customizableui/CustomizableUI.sys.mjs
|
||||||
+++ b/browser/components/customizableui/CustomizableUI.sys.mjs
|
+++ b/browser/components/customizableui/CustomizableUI.sys.mjs
|
||||||
@@ -13,6 +13,7 @@ ChromeUtils.defineESModuleGetters(lazy, {
|
@@ -13,6 +13,7 @@ ChromeUtils.defineESModuleGetters(lazy, {
|
||||||
|
@ -10,19 +10,22 @@ index 5bb6be19f7f855b129aac921af1ed5cfc63d732b..41230a61f3088a234903dcc10abd361e
|
||||||
HomePage: "resource:///modules/HomePage.sys.mjs",
|
HomePage: "resource:///modules/HomePage.sys.mjs",
|
||||||
PanelMultiView: "resource:///modules/PanelMultiView.sys.mjs",
|
PanelMultiView: "resource:///modules/PanelMultiView.sys.mjs",
|
||||||
PrivateBrowsingUtils: "resource://gre/modules/PrivateBrowsingUtils.sys.mjs",
|
PrivateBrowsingUtils: "resource://gre/modules/PrivateBrowsingUtils.sys.mjs",
|
||||||
@@ -331,20 +332,14 @@ var CustomizableUIInternal = {
|
@@ -25,7 +26,7 @@ ChromeUtils.defineLazyGetter(lazy, "gWidgetsBundle", function () {
|
||||||
"back-button",
|
return Services.strings.createBundle(kUrl);
|
||||||
"forward-button",
|
});
|
||||||
"stop-reload-button",
|
|
||||||
- Services.policies.isAllowed("removeHomeButtonByDefault")
|
-const kDefaultThemeID = "default-theme@mozilla.org";
|
||||||
- ? null
|
+const kDefaultThemeID = "firefox-compact-dark@mozilla.org";
|
||||||
- : "home-button",
|
|
||||||
"spring",
|
const kSpecialWidgetPfx = "customizableui-special-";
|
||||||
|
|
||||||
|
@@ -338,13 +339,11 @@ var CustomizableUIInternal = {
|
||||||
"vertical-spacer",
|
"vertical-spacer",
|
||||||
"urlbar-container",
|
"urlbar-container",
|
||||||
"spring",
|
"spring",
|
||||||
- "save-to-pocket-button",
|
- "save-to-pocket-button",
|
||||||
- "downloads-button",
|
- "downloads-button",
|
||||||
|
+// "downloads-button",
|
||||||
AppConstants.MOZ_DEV_EDITION ? "developer-button" : null,
|
AppConstants.MOZ_DEV_EDITION ? "developer-button" : null,
|
||||||
- "fxa-toolbar-menu-button",
|
- "fxa-toolbar-menu-button",
|
||||||
lazy.resetPBMToolbarButtonEnabled ? "reset-pbm-toolbar-button" : null,
|
lazy.resetPBMToolbarButtonEnabled ? "reset-pbm-toolbar-button" : null,
|
||||||
|
@ -32,16 +35,15 @@ index 5bb6be19f7f855b129aac921af1ed5cfc63d732b..41230a61f3088a234903dcc10abd361e
|
||||||
this.registerArea(
|
this.registerArea(
|
||||||
CustomizableUI.AREA_NAVBAR,
|
CustomizableUI.AREA_NAVBAR,
|
||||||
{
|
{
|
||||||
@@ -352,8 +347,6 @@ var CustomizableUIInternal = {
|
@@ -352,7 +351,6 @@ var CustomizableUIInternal = {
|
||||||
overflowable: true,
|
overflowable: true,
|
||||||
defaultPlacements: navbarPlacements,
|
defaultPlacements: navbarPlacements,
|
||||||
verticalTabsDefaultPlacements: [
|
verticalTabsDefaultPlacements: [
|
||||||
- "firefox-view-button",
|
- "firefox-view-button",
|
||||||
- "alltabs-button",
|
"alltabs-button",
|
||||||
],
|
],
|
||||||
defaultCollapsed: false,
|
defaultCollapsed: false,
|
||||||
},
|
@@ -377,10 +375,7 @@ var CustomizableUIInternal = {
|
||||||
@@ -377,10 +370,7 @@ var CustomizableUIInternal = {
|
|
||||||
{
|
{
|
||||||
type: CustomizableUI.TYPE_TOOLBAR,
|
type: CustomizableUI.TYPE_TOOLBAR,
|
||||||
defaultPlacements: [
|
defaultPlacements: [
|
||||||
|
@ -52,7 +54,7 @@ index 5bb6be19f7f855b129aac921af1ed5cfc63d732b..41230a61f3088a234903dcc10abd361e
|
||||||
],
|
],
|
||||||
verticalTabsDefaultPlacements: [],
|
verticalTabsDefaultPlacements: [],
|
||||||
defaultCollapsed: null,
|
defaultCollapsed: null,
|
||||||
@@ -462,6 +452,7 @@ var CustomizableUIInternal = {
|
@@ -462,6 +457,7 @@ var CustomizableUIInternal = {
|
||||||
CustomizableUI.AREA_NAVBAR,
|
CustomizableUI.AREA_NAVBAR,
|
||||||
CustomizableUI.AREA_BOOKMARKS,
|
CustomizableUI.AREA_BOOKMARKS,
|
||||||
CustomizableUI.AREA_TABSTRIP,
|
CustomizableUI.AREA_TABSTRIP,
|
||||||
|
@ -60,7 +62,7 @@ index 5bb6be19f7f855b129aac921af1ed5cfc63d732b..41230a61f3088a234903dcc10abd361e
|
||||||
]);
|
]);
|
||||||
if (AppConstants.platform != "macosx") {
|
if (AppConstants.platform != "macosx") {
|
||||||
toolbars.add(CustomizableUI.AREA_MENUBAR);
|
toolbars.add(CustomizableUI.AREA_MENUBAR);
|
||||||
@@ -1262,6 +1253,9 @@ var CustomizableUIInternal = {
|
@@ -1262,6 +1258,9 @@ var CustomizableUIInternal = {
|
||||||
placements = gPlacements.get(area);
|
placements = gPlacements.get(area);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -70,7 +72,7 @@ index 5bb6be19f7f855b129aac921af1ed5cfc63d732b..41230a61f3088a234903dcc10abd361e
|
||||||
// For toolbars that need it, mark as dirty.
|
// For toolbars that need it, mark as dirty.
|
||||||
let defaultPlacements = areaProperties.get("defaultPlacements");
|
let defaultPlacements = areaProperties.get("defaultPlacements");
|
||||||
if (
|
if (
|
||||||
@@ -1769,7 +1763,7 @@ var CustomizableUIInternal = {
|
@@ -1769,7 +1768,7 @@ var CustomizableUIInternal = {
|
||||||
lazy.log.info(
|
lazy.log.info(
|
||||||
"Widget " + aWidgetId + " not found, unable to remove from " + aArea
|
"Widget " + aWidgetId + " not found, unable to remove from " + aArea
|
||||||
);
|
);
|
||||||
|
@ -79,7 +81,7 @@ index 5bb6be19f7f855b129aac921af1ed5cfc63d732b..41230a61f3088a234903dcc10abd361e
|
||||||
}
|
}
|
||||||
|
|
||||||
this.notifyDOMChange(widgetNode, null, container, true, () => {
|
this.notifyDOMChange(widgetNode, null, container, true, () => {
|
||||||
@@ -1779,7 +1773,7 @@ var CustomizableUIInternal = {
|
@@ -1779,7 +1778,7 @@ var CustomizableUIInternal = {
|
||||||
// We also need to remove the panel context menu if it's there:
|
// We also need to remove the panel context menu if it's there:
|
||||||
this.ensureButtonContextMenu(widgetNode);
|
this.ensureButtonContextMenu(widgetNode);
|
||||||
if (gPalette.has(aWidgetId) || this.isSpecialWidget(aWidgetId)) {
|
if (gPalette.has(aWidgetId) || this.isSpecialWidget(aWidgetId)) {
|
||||||
|
@ -88,7 +90,7 @@ index 5bb6be19f7f855b129aac921af1ed5cfc63d732b..41230a61f3088a234903dcc10abd361e
|
||||||
} else {
|
} else {
|
||||||
window.gNavToolbox.palette.appendChild(widgetNode);
|
window.gNavToolbox.palette.appendChild(widgetNode);
|
||||||
}
|
}
|
||||||
@@ -1947,16 +1941,16 @@ var CustomizableUIInternal = {
|
@@ -1947,16 +1946,16 @@ var CustomizableUIInternal = {
|
||||||
elem.setAttribute("skipintoolbarset", "true");
|
elem.setAttribute("skipintoolbarset", "true");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -108,7 +110,7 @@ index 5bb6be19f7f855b129aac921af1ed5cfc63d732b..41230a61f3088a234903dcc10abd361e
|
||||||
// Handle initial state of vertical tabs.
|
// Handle initial state of vertical tabs.
|
||||||
if (isVerticalTabs) {
|
if (isVerticalTabs) {
|
||||||
// Show the vertical tabs toolbar
|
// Show the vertical tabs toolbar
|
||||||
@@ -2198,6 +2192,10 @@ var CustomizableUIInternal = {
|
@@ -2198,6 +2197,10 @@ var CustomizableUIInternal = {
|
||||||
* The identifier string of the area that aNode is being inserted into.
|
* The identifier string of the area that aNode is being inserted into.
|
||||||
*/
|
*/
|
||||||
insertWidgetBefore(aNode, aNextNode, aContainer, aAreaId) {
|
insertWidgetBefore(aNode, aNextNode, aContainer, aAreaId) {
|
||||||
|
@ -119,7 +121,7 @@ index 5bb6be19f7f855b129aac921af1ed5cfc63d732b..41230a61f3088a234903dcc10abd361e
|
||||||
this.notifyDOMChange(aNode, aNextNode, aContainer, false, () => {
|
this.notifyDOMChange(aNode, aNextNode, aContainer, false, () => {
|
||||||
this.setLocationAttributes(aNode, aAreaId);
|
this.setLocationAttributes(aNode, aAreaId);
|
||||||
aContainer.insertBefore(aNode, aNextNode);
|
aContainer.insertBefore(aNode, aNextNode);
|
||||||
@@ -3321,7 +3319,6 @@ var CustomizableUIInternal = {
|
@@ -3321,7 +3324,6 @@ var CustomizableUIInternal = {
|
||||||
if (!this.isWidgetRemovable(aWidgetId)) {
|
if (!this.isWidgetRemovable(aWidgetId)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -127,7 +129,7 @@ index 5bb6be19f7f855b129aac921af1ed5cfc63d732b..41230a61f3088a234903dcc10abd361e
|
||||||
let placements = gPlacements.get(oldPlacement.area);
|
let placements = gPlacements.get(oldPlacement.area);
|
||||||
let position = placements.indexOf(aWidgetId);
|
let position = placements.indexOf(aWidgetId);
|
||||||
if (position != -1) {
|
if (position != -1) {
|
||||||
@@ -4556,7 +4553,7 @@ var CustomizableUIInternal = {
|
@@ -4556,7 +4558,7 @@ var CustomizableUIInternal = {
|
||||||
* For all registered areas, builds those areas to reflect the current
|
* For all registered areas, builds those areas to reflect the current
|
||||||
* placement state of all widgets.
|
* placement state of all widgets.
|
||||||
*/
|
*/
|
||||||
|
@ -136,7 +138,7 @@ index 5bb6be19f7f855b129aac921af1ed5cfc63d732b..41230a61f3088a234903dcc10abd361e
|
||||||
for (let [areaId, areaNodes] of gBuildAreas) {
|
for (let [areaId, areaNodes] of gBuildAreas) {
|
||||||
let placements = gPlacements.get(areaId);
|
let placements = gPlacements.get(areaId);
|
||||||
let isFirstChangedToolbar = true;
|
let isFirstChangedToolbar = true;
|
||||||
@@ -4567,7 +4564,7 @@ var CustomizableUIInternal = {
|
@@ -4567,7 +4569,7 @@ var CustomizableUIInternal = {
|
||||||
if (area.get("type") == CustomizableUI.TYPE_TOOLBAR) {
|
if (area.get("type") == CustomizableUI.TYPE_TOOLBAR) {
|
||||||
let defaultCollapsed = area.get("defaultCollapsed");
|
let defaultCollapsed = area.get("defaultCollapsed");
|
||||||
let win = areaNode.ownerGlobal;
|
let win = areaNode.ownerGlobal;
|
||||||
|
@ -145,7 +147,7 @@ index 5bb6be19f7f855b129aac921af1ed5cfc63d732b..41230a61f3088a234903dcc10abd361e
|
||||||
win.setToolbarVisibility(
|
win.setToolbarVisibility(
|
||||||
areaNode,
|
areaNode,
|
||||||
typeof defaultCollapsed == "string"
|
typeof defaultCollapsed == "string"
|
||||||
@@ -5858,6 +5855,7 @@ export var CustomizableUI = {
|
@@ -5858,6 +5860,7 @@ export var CustomizableUI = {
|
||||||
unregisterArea(aName, aDestroyPlacements) {
|
unregisterArea(aName, aDestroyPlacements) {
|
||||||
CustomizableUIInternal.unregisterArea(aName, aDestroyPlacements);
|
CustomizableUIInternal.unregisterArea(aName, aDestroyPlacements);
|
||||||
},
|
},
|
||||||
|
@ -153,7 +155,7 @@ index 5bb6be19f7f855b129aac921af1ed5cfc63d732b..41230a61f3088a234903dcc10abd361e
|
||||||
/**
|
/**
|
||||||
* Add a widget to an area.
|
* Add a widget to an area.
|
||||||
* If the area to which you try to add is not known to CustomizableUI,
|
* If the area to which you try to add is not known to CustomizableUI,
|
||||||
@@ -7905,11 +7903,11 @@ class OverflowableToolbar {
|
@@ -7905,11 +7908,11 @@ class OverflowableToolbar {
|
||||||
parseFloat(style.paddingLeft) -
|
parseFloat(style.paddingLeft) -
|
||||||
parseFloat(style.paddingRight) -
|
parseFloat(style.paddingRight) -
|
||||||
toolbarChildrenWidth;
|
toolbarChildrenWidth;
|
||||||
|
@ -167,7 +169,7 @@ index 5bb6be19f7f855b129aac921af1ed5cfc63d732b..41230a61f3088a234903dcc10abd361e
|
||||||
});
|
});
|
||||||
|
|
||||||
lazy.log.debug(
|
lazy.log.debug(
|
||||||
@@ -7919,7 +7917,8 @@ class OverflowableToolbar {
|
@@ -7919,7 +7922,8 @@ class OverflowableToolbar {
|
||||||
// If the target has min-width: 0, their children might actually overflow
|
// If the target has min-width: 0, their children might actually overflow
|
||||||
// it, so check for both cases explicitly.
|
// it, so check for both cases explicitly.
|
||||||
let targetContentWidth = Math.max(targetWidth, targetChildrenWidth);
|
let targetContentWidth = Math.max(targetWidth, targetChildrenWidth);
|
||||||
|
@ -177,7 +179,7 @@ index 5bb6be19f7f855b129aac921af1ed5cfc63d732b..41230a61f3088a234903dcc10abd361e
|
||||||
return { isOverflowing, targetContentWidth, totalAvailWidth };
|
return { isOverflowing, targetContentWidth, totalAvailWidth };
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -8013,7 +8012,7 @@ class OverflowableToolbar {
|
@@ -8013,7 +8017,7 @@ class OverflowableToolbar {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (!inserted) {
|
if (!inserted) {
|
||||||
|
@ -186,7 +188,7 @@ index 5bb6be19f7f855b129aac921af1ed5cfc63d732b..41230a61f3088a234903dcc10abd361e
|
||||||
}
|
}
|
||||||
child.removeAttribute("cui-anchorid");
|
child.removeAttribute("cui-anchorid");
|
||||||
child.removeAttribute("overflowedItem");
|
child.removeAttribute("overflowedItem");
|
||||||
@@ -8358,7 +8357,7 @@ class OverflowableToolbar {
|
@@ -8358,7 +8362,7 @@ class OverflowableToolbar {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case "mousedown": {
|
case "mousedown": {
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
diff --git a/browser/components/customizableui/CustomizeMode.sys.mjs b/browser/components/customizableui/CustomizeMode.sys.mjs
|
diff --git a/browser/components/customizableui/CustomizeMode.sys.mjs b/browser/components/customizableui/CustomizeMode.sys.mjs
|
||||||
index 619bb2af5a3a0995fc93fa040696dd2854848ab5..14ad5f6122971a0a0dc20d22acdc073f84965dad 100644
|
index 619bb2af5a3a0995fc93fa040696dd2854848ab5..bbc6bad906e9ccaf668ca99f4a0411f564ef1e56 100644
|
||||||
--- a/browser/components/customizableui/CustomizeMode.sys.mjs
|
--- a/browser/components/customizableui/CustomizeMode.sys.mjs
|
||||||
+++ b/browser/components/customizableui/CustomizeMode.sys.mjs
|
+++ b/browser/components/customizableui/CustomizeMode.sys.mjs
|
||||||
@@ -500,7 +500,7 @@ export class CustomizeMode {
|
@@ -500,7 +500,7 @@ export class CustomizeMode {
|
||||||
|
@ -20,15 +20,7 @@ index 619bb2af5a3a0995fc93fa040696dd2854848ab5..14ad5f6122971a0a0dc20d22acdc073f
|
||||||
customizer.hidden = true;
|
customizer.hidden = true;
|
||||||
browser.hidden = false;
|
browser.hidden = false;
|
||||||
|
|
||||||
@@ -1173,6 +1173,7 @@ export class CustomizeMode {
|
@@ -3125,6 +3125,20 @@ export class CustomizeMode {
|
||||||
return (
|
|
||||||
aNode.localName == "toolbarbutton" ||
|
|
||||||
aNode.localName == "toolbaritem" ||
|
|
||||||
+ aNode.localName == "zen-workspace-icons" ||
|
|
||||||
aNode.localName == "toolbarseparator" ||
|
|
||||||
aNode.localName == "toolbarspring" ||
|
|
||||||
aNode.localName == "toolbarspacer"
|
|
||||||
@@ -3125,6 +3126,20 @@ export class CustomizeMode {
|
|
||||||
if (makeSpaceImmediately) {
|
if (makeSpaceImmediately) {
|
||||||
aDraggedOverItem.setAttribute("notransition", "true");
|
aDraggedOverItem.setAttribute("notransition", "true");
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
diff --git a/browser/components/customizableui/content/panelUI.js b/browser/components/customizableui/content/panelUI.js
|
diff --git a/browser/components/customizableui/content/panelUI.js b/browser/components/customizableui/content/panelUI.js
|
||||||
index 689205034d9df67ff1fe0ebbf4a3481a5f414391..2626b7286deb51f66b6ccbbc32d510139cacb109 100644
|
index ec52437dba30633a374299a46c856e1df05dec0e..48617e32d56c3b3f525557ddeac6297555c48c04 100644
|
||||||
--- a/browser/components/customizableui/content/panelUI.js
|
--- a/browser/components/customizableui/content/panelUI.js
|
||||||
+++ b/browser/components/customizableui/content/panelUI.js
|
+++ b/browser/components/customizableui/content/panelUI.js
|
||||||
@@ -516,8 +516,7 @@ const PanelUI = {
|
@@ -515,8 +515,7 @@ const PanelUI = {
|
||||||
tempPanel.setAttribute("animate", "false");
|
tempPanel.setAttribute("animate", "false");
|
||||||
}
|
}
|
||||||
tempPanel.setAttribute("context", "");
|
tempPanel.setAttribute("context", "");
|
||||||
|
@ -12,7 +12,7 @@ index 689205034d9df67ff1fe0ebbf4a3481a5f414391..2626b7286deb51f66b6ccbbc32d51013
|
||||||
.appendChild(tempPanel);
|
.appendChild(tempPanel);
|
||||||
|
|
||||||
let multiView = document.createXULElement("panelmultiview");
|
let multiView = document.createXULElement("panelmultiview");
|
||||||
@@ -959,7 +958,7 @@ const PanelUI = {
|
@@ -957,7 +956,7 @@ const PanelUI = {
|
||||||
el.removeAttribute("data-lazy-l10n-id");
|
el.removeAttribute("data-lazy-l10n-id");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
diff --git a/browser/components/extensions/parent/ext-tabs.js b/browser/components/extensions/parent/ext-tabs.js
|
diff --git a/browser/components/extensions/parent/ext-tabs.js b/browser/components/extensions/parent/ext-tabs.js
|
||||||
index 517ea0079c12941a844a4f9e4ba694c6411887ee..510ab14dfa2178c332c9862d6a01b75bd12dfe3b 100644
|
index b47f0510e32d788dfe7c3109474c4512c9900d4a..49697125a2998bbd50d87c54e2c5974baaf9a7e2 100644
|
||||||
--- a/browser/components/extensions/parent/ext-tabs.js
|
--- a/browser/components/extensions/parent/ext-tabs.js
|
||||||
+++ b/browser/components/extensions/parent/ext-tabs.js
|
+++ b/browser/components/extensions/parent/ext-tabs.js
|
||||||
@@ -482,6 +482,7 @@ this.tabs = class extends ExtensionAPIPersistent {
|
@@ -468,6 +468,7 @@ this.tabs = class extends ExtensionAPIPersistent {
|
||||||
}
|
}
|
||||||
|
|
||||||
let tab = tabManager.getWrapper(event.originalTarget);
|
let tab = tabManager.getWrapper(event.originalTarget);
|
||||||
|
@ -10,11 +10,3 @@ index 517ea0079c12941a844a4f9e4ba694c6411887ee..510ab14dfa2178c332c9862d6a01b75b
|
||||||
|
|
||||||
let changeInfo = {};
|
let changeInfo = {};
|
||||||
for (let prop of needed) {
|
for (let prop of needed) {
|
||||||
@@ -836,6 +837,7 @@ this.tabs = class extends ExtensionAPIPersistent {
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
+ window.gZenCompactModeManager._nextTimeWillBeActive = active;
|
|
||||||
let nativeTab = window.gBrowser.addTab(url, options);
|
|
||||||
|
|
||||||
if (active) {
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
diff --git a/browser/components/places/PlacesUIUtils.sys.mjs b/browser/components/places/PlacesUIUtils.sys.mjs
|
diff --git a/browser/components/places/PlacesUIUtils.sys.mjs b/browser/components/places/PlacesUIUtils.sys.mjs
|
||||||
index c7c5c28e1ea6d05094ed9fe751c6b50ab9645370..72f1038aa37b0951a1e78331ee317f714e5b6e8b 100644
|
index 1f5e163bae58f3f1cac750ca32846cc8a80bd2ca..16034842b4ca5295aa3c9237db55035ecc4016d2 100644
|
||||||
--- a/browser/components/places/PlacesUIUtils.sys.mjs
|
--- a/browser/components/places/PlacesUIUtils.sys.mjs
|
||||||
+++ b/browser/components/places/PlacesUIUtils.sys.mjs
|
+++ b/browser/components/places/PlacesUIUtils.sys.mjs
|
||||||
@@ -59,6 +59,7 @@ class BookmarkState {
|
@@ -59,6 +59,7 @@ class BookmarkState {
|
||||||
|
@ -157,12 +157,20 @@ index c7c5c28e1ea6d05094ed9fe751c6b50ab9645370..72f1038aa37b0951a1e78331ee317f71
|
||||||
/**
|
/**
|
||||||
* Append transactions to update tags by given information.
|
* Append transactions to update tags by given information.
|
||||||
*
|
*
|
||||||
@@ -903,7 +1012,7 @@ export var PlacesUIUtils = {
|
@@ -903,8 +1012,15 @@ export var PlacesUIUtils = {
|
||||||
aNode,
|
aNode,
|
||||||
aWhere,
|
aWhere,
|
||||||
aWindow,
|
aWindow,
|
||||||
- { aPrivate = false, userContextId = 0 } = {}
|
- { aPrivate = false, userContextId = 0 } = {}
|
||||||
+ { aPrivate = false, userContextId = undefined } = {}
|
+ { aPrivate = false, userContextId = undefined } = {}
|
||||||
) {
|
) {
|
||||||
|
+ if (typeof userContextId == "undefined") {
|
||||||
|
+ try {
|
||||||
|
+ let browserWindow = getBrowserWindow(aWindow);
|
||||||
|
+ userContextId = browserWindow.ZenWorkspaces.getDefaultContainer();
|
||||||
|
+ } catch {}
|
||||||
|
+ }
|
||||||
|
+
|
||||||
if (
|
if (
|
||||||
aNode &&
|
aNode &&
|
||||||
|
lazy.PlacesUtils.nodeIsURI(aNode) &&
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
diff --git a/browser/components/places/content/browserPlacesViews.js b/browser/components/places/content/browserPlacesViews.js
|
diff --git a/browser/components/places/content/browserPlacesViews.js b/browser/components/places/content/browserPlacesViews.js
|
||||||
index ad138a38340e8e8510d395f46c30ec4121d731bb..52beaa66395e2b240a7122936cd4d2452b386724 100644
|
index ad138a38340e8e8510d395f46c30ec4121d731bb..9294f05633acbe560df003333b7ef7d9a12a2a11 100644
|
||||||
--- a/browser/components/places/content/browserPlacesViews.js
|
--- a/browser/components/places/content/browserPlacesViews.js
|
||||||
+++ b/browser/components/places/content/browserPlacesViews.js
|
+++ b/browser/components/places/content/browserPlacesViews.js
|
||||||
@@ -330,12 +330,23 @@ class PlacesViewBase {
|
@@ -330,12 +330,23 @@ class PlacesViewBase {
|
||||||
|
@ -13,7 +13,7 @@ index ad138a38340e8e8510d395f46c30ec4121d731bb..52beaa66395e2b240a7122936cd4d245
|
||||||
+ let child = resultNode.getChild(i);
|
+ let child = resultNode.getChild(i);
|
||||||
+ // Skip nodes that don't belong in current workspace
|
+ // Skip nodes that don't belong in current workspace
|
||||||
+ if (PlacesUtils.nodeIsURI(child) || PlacesUtils.containerTypes.includes(child.type)) {
|
+ if (PlacesUtils.nodeIsURI(child) || PlacesUtils.containerTypes.includes(child.type)) {
|
||||||
+ if (typeof gZenWorkspaces !== 'undefined' && gZenWorkspaces.isBookmarkInAnotherWorkspace(child)) {
|
+ if (typeof ZenWorkspaces !== 'undefined' && ZenWorkspaces.isBookmarkInAnotherWorkspace(child)) {
|
||||||
+ continue;
|
+ continue;
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
|
@ -52,7 +52,7 @@ index ad138a38340e8e8510d395f46c30ec4121d731bb..52beaa66395e2b240a7122936cd4d245
|
||||||
+ for (let i = 0; i < cc; i++) {
|
+ for (let i = 0; i < cc; i++) {
|
||||||
+ let child = this._resultNode.getChild(i);
|
+ let child = this._resultNode.getChild(i);
|
||||||
+ if (PlacesUtils.nodeIsURI(child) || PlacesUtils.containerTypes.includes(child.type)) {
|
+ if (PlacesUtils.nodeIsURI(child) || PlacesUtils.containerTypes.includes(child.type)) {
|
||||||
+ if (!(typeof gZenWorkspaces !== 'undefined' && gZenWorkspaces.isBookmarkInAnotherWorkspace(child))) {
|
+ if (!(typeof ZenWorkspaces !== 'undefined' && ZenWorkspaces.isBookmarkInAnotherWorkspace(child))) {
|
||||||
+ visibleNodes.push(child);
|
+ visibleNodes.push(child);
|
||||||
+ }
|
+ }
|
||||||
+ } else {
|
+ } else {
|
||||||
|
|
|
@ -1,18 +1,8 @@
|
||||||
diff --git a/browser/components/preferences/main.inc.xhtml b/browser/components/preferences/main.inc.xhtml
|
diff --git a/browser/components/preferences/main.inc.xhtml b/browser/components/preferences/main.inc.xhtml
|
||||||
index f9129fb171362e81369056923bf25acbb87d2ad8..924bcd2cd66a5dfcf9c45aac0c63cd0257c21a2c 100644
|
index cdcf50ec1bc4a54c69f5baf4a6d40ab0c63a8121..87603323c2b0b9ea0c847a8a06e293a16c1252b8 100644
|
||||||
--- a/browser/components/preferences/main.inc.xhtml
|
--- a/browser/components/preferences/main.inc.xhtml
|
||||||
+++ b/browser/components/preferences/main.inc.xhtml
|
+++ b/browser/components/preferences/main.inc.xhtml
|
||||||
@@ -29,6 +29,9 @@
|
@@ -183,6 +183,7 @@
|
||||||
<vbox id="startupPageBox">
|
|
||||||
<checkbox id="browserRestoreSession"
|
|
||||||
data-l10n-id="startup-restore-windows-and-tabs"/>
|
|
||||||
+ <checkbox id="zenWorkspaceContinueWhereLeftOff"
|
|
||||||
+ data-l10n-id="zen-workspace-continue-where-left-off"
|
|
||||||
+ preference="zen.workspaces.continue-where-left-off"/>
|
|
||||||
#ifdef XP_WIN
|
|
||||||
<hbox id="windowsLaunchOnLoginBox" align="center" hidden="true">
|
|
||||||
<checkbox id="windowsLaunchOnLogin"
|
|
||||||
@@ -186,6 +189,7 @@
|
|
||||||
</groupbox>
|
</groupbox>
|
||||||
|
|
||||||
<!-- Browser layout -->
|
<!-- Browser layout -->
|
||||||
|
@ -20,7 +10,7 @@ index f9129fb171362e81369056923bf25acbb87d2ad8..924bcd2cd66a5dfcf9c45aac0c63cd02
|
||||||
<groupbox data-category="paneGeneral"
|
<groupbox data-category="paneGeneral"
|
||||||
data-subcategory="layout"
|
data-subcategory="layout"
|
||||||
hidden="true">
|
hidden="true">
|
||||||
@@ -201,6 +205,7 @@
|
@@ -198,6 +199,7 @@
|
||||||
preference="sidebar.revamp"/>
|
preference="sidebar.revamp"/>
|
||||||
<description class="indent" data-l10n-id="browser-layout-show-sidebar-desc"></description>
|
<description class="indent" data-l10n-id="browser-layout-show-sidebar-desc"></description>
|
||||||
</groupbox>
|
</groupbox>
|
||||||
|
@ -28,7 +18,7 @@ index f9129fb171362e81369056923bf25acbb87d2ad8..924bcd2cd66a5dfcf9c45aac0c63cd02
|
||||||
|
|
||||||
<hbox id="languageAndAppearanceCategory"
|
<hbox id="languageAndAppearanceCategory"
|
||||||
class="subcategory"
|
class="subcategory"
|
||||||
@@ -421,6 +426,7 @@
|
@@ -411,6 +413,7 @@
|
||||||
languages-customize-add.label,
|
languages-customize-add.label,
|
||||||
" />
|
" />
|
||||||
</hbox>
|
</hbox>
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
diff --git a/browser/components/preferences/main.js b/browser/components/preferences/main.js
|
diff --git a/browser/components/preferences/main.js b/browser/components/preferences/main.js
|
||||||
index 2116a8a3b5746b79280f2d73b5e29b01c7a15993..448269adeab747fd2da419509e6923eefbb87d8a 100644
|
index aa339be9ba94ed776fa25f2d72f9e6b25dc86cd3..4c6c725942b3d6f2a42938d444ac7645526623cc 100644
|
||||||
--- a/browser/components/preferences/main.js
|
--- a/browser/components/preferences/main.js
|
||||||
+++ b/browser/components/preferences/main.js
|
+++ b/browser/components/preferences/main.js
|
||||||
@@ -389,7 +389,7 @@ function getBundleForLocales(newLocales) {
|
@@ -389,7 +389,7 @@ function getBundleForLocales(newLocales) {
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
diff --git a/browser/components/preferences/preferences.js b/browser/components/preferences/preferences.js
|
diff --git a/browser/components/preferences/preferences.js b/browser/components/preferences/preferences.js
|
||||||
index 6a575e3148de0c73f7ab7ff9afbd3ff179bce313..b7c2f2818358b7b6b6fc62b298dc67a66ebd9e3b 100644
|
index e4746e3408e68273126e6d2baf5afcf80721674b..e478aaf6bfefa6acd9062aeb3e4709ca0d5d779c 100644
|
||||||
--- a/browser/components/preferences/preferences.js
|
--- a/browser/components/preferences/preferences.js
|
||||||
+++ b/browser/components/preferences/preferences.js
|
+++ b/browser/components/preferences/preferences.js
|
||||||
@@ -117,6 +117,7 @@ ChromeUtils.defineLazyGetter(this, "gSubDialog", function () {
|
@@ -118,6 +118,7 @@ ChromeUtils.defineLazyGetter(this, "gSubDialog", function () {
|
||||||
styleSheets: [
|
styleSheets: [
|
||||||
"chrome://browser/skin/preferences/dialog.css",
|
"chrome://browser/skin/preferences/dialog.css",
|
||||||
"chrome://browser/skin/preferences/preferences.css",
|
"chrome://browser/skin/preferences/preferences.css",
|
||||||
|
@ -10,7 +10,7 @@ index 6a575e3148de0c73f7ab7ff9afbd3ff179bce313..b7c2f2818358b7b6b6fc62b298dc67a6
|
||||||
],
|
],
|
||||||
resizeCallback: async ({ title, frame }) => {
|
resizeCallback: async ({ title, frame }) => {
|
||||||
// Search within main document and highlight matched keyword.
|
// Search within main document and highlight matched keyword.
|
||||||
@@ -196,6 +197,10 @@ function init_all() {
|
@@ -197,6 +198,10 @@ function init_all() {
|
||||||
register_module("paneSearch", gSearchPane);
|
register_module("paneSearch", gSearchPane);
|
||||||
register_module("panePrivacy", gPrivacyPane);
|
register_module("panePrivacy", gPrivacyPane);
|
||||||
register_module("paneContainers", gContainersPane);
|
register_module("paneContainers", gContainersPane);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
diff --git a/browser/components/preferences/preferences.xhtml b/browser/components/preferences/preferences.xhtml
|
diff --git a/browser/components/preferences/preferences.xhtml b/browser/components/preferences/preferences.xhtml
|
||||||
index b3b128cb5eb8c005c642965a8c8e5e68bf756e77..6e128d45c983b267e349b08097c56380dd04be3d 100644
|
index 43be2b6ac84827bd13723e0211a3ade401934591..513584d7e720451efdb87350ac07d8b2590c1705 100644
|
||||||
--- a/browser/components/preferences/preferences.xhtml
|
--- a/browser/components/preferences/preferences.xhtml
|
||||||
+++ b/browser/components/preferences/preferences.xhtml
|
+++ b/browser/components/preferences/preferences.xhtml
|
||||||
@@ -44,6 +44,8 @@
|
@@ -44,6 +44,8 @@
|
||||||
|
@ -11,7 +11,7 @@ index b3b128cb5eb8c005c642965a8c8e5e68bf756e77..6e128d45c983b267e349b08097c56380
|
||||||
<link rel="localization" href="branding/brand.ftl"/>
|
<link rel="localization" href="branding/brand.ftl"/>
|
||||||
<link rel="localization" href="browser/browser.ftl"/>
|
<link rel="localization" href="browser/browser.ftl"/>
|
||||||
<!-- Used by fontbuilder.js -->
|
<!-- Used by fontbuilder.js -->
|
||||||
@@ -104,6 +106,11 @@
|
@@ -105,6 +107,11 @@
|
||||||
<hbox flex="1">
|
<hbox flex="1">
|
||||||
|
|
||||||
<vbox class="navigation">
|
<vbox class="navigation">
|
||||||
|
@ -23,7 +23,7 @@ index b3b128cb5eb8c005c642965a8c8e5e68bf756e77..6e128d45c983b267e349b08097c56380
|
||||||
<!-- category list -->
|
<!-- category list -->
|
||||||
<richlistbox id="categories" data-l10n-id="category-list" data-l10n-attrs="aria-label">
|
<richlistbox id="categories" data-l10n-id="category-list" data-l10n-attrs="aria-label">
|
||||||
<richlistitem id="category-general"
|
<richlistitem id="category-general"
|
||||||
@@ -116,6 +123,50 @@
|
@@ -117,6 +124,50 @@
|
||||||
<label class="category-name" flex="1" data-l10n-id="pane-general-title"></label>
|
<label class="category-name" flex="1" data-l10n-id="pane-general-title"></label>
|
||||||
</richlistitem>
|
</richlistitem>
|
||||||
|
|
||||||
|
@ -74,7 +74,7 @@ index b3b128cb5eb8c005c642965a8c8e5e68bf756e77..6e128d45c983b267e349b08097c56380
|
||||||
<richlistitem id="category-home"
|
<richlistitem id="category-home"
|
||||||
class="category"
|
class="category"
|
||||||
value="paneHome"
|
value="paneHome"
|
||||||
@@ -227,11 +278,6 @@
|
@@ -228,11 +279,6 @@
|
||||||
<html:a href="about:policies" target="_blank" data-l10n-id="managed-notice"/>
|
<html:a href="about:policies" target="_blank" data-l10n-id="managed-notice"/>
|
||||||
</hbox>
|
</hbox>
|
||||||
</hbox>
|
</hbox>
|
||||||
|
@ -86,7 +86,7 @@ index b3b128cb5eb8c005c642965a8c8e5e68bf756e77..6e128d45c983b267e349b08097c56380
|
||||||
</hbox>
|
</hbox>
|
||||||
</hbox>
|
</hbox>
|
||||||
<vbox id="mainPrefPane">
|
<vbox id="mainPrefPane">
|
||||||
@@ -245,6 +291,10 @@
|
@@ -246,6 +292,10 @@
|
||||||
#include sync.inc.xhtml
|
#include sync.inc.xhtml
|
||||||
#include experimental.inc.xhtml
|
#include experimental.inc.xhtml
|
||||||
#include moreFromMozilla.inc.xhtml
|
#include moreFromMozilla.inc.xhtml
|
||||||
|
|
|
@ -14,37 +14,30 @@ var gZenMarketplaceManager = {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!window.gZenMods) {
|
|
||||||
window.gZenMods = ZenMultiWindowFeature.currentBrowser.gZenMods;
|
|
||||||
}
|
|
||||||
|
|
||||||
header.appendChild(this._initDisableAll());
|
header.appendChild(this._initDisableAll());
|
||||||
|
|
||||||
this._initImportExport();
|
this._initImportExport();
|
||||||
|
|
||||||
this.__hasInitializedEvents = true;
|
this.__hasInitializedEvents = true;
|
||||||
|
|
||||||
await this._buildModsList();
|
await this._buildThemesList();
|
||||||
|
|
||||||
Services.prefs.addObserver(gZenMods.updatePref, this);
|
Services.prefs.addObserver(this.updatePref, this);
|
||||||
|
|
||||||
const checkForUpdateClick = (event) => {
|
const checkForUpdateClick = (event) => {
|
||||||
if (event.target === checkForUpdates) {
|
if (event.target === checkForUpdates) {
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
|
|
||||||
this._checkForThemeUpdates(event);
|
this._checkForThemeUpdates(event);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
checkForUpdates.addEventListener('click', checkForUpdateClick);
|
checkForUpdates.addEventListener('click', checkForUpdateClick);
|
||||||
|
|
||||||
document.addEventListener('ZenModsMarketplace:CheckForUpdatesFinished', (event) => {
|
document.addEventListener('ZenThemeMarketplace:CheckForUpdatesFinished', (event) => {
|
||||||
checkForUpdates.disabled = false;
|
checkForUpdates.disabled = false;
|
||||||
|
|
||||||
const updates = event.detail.updates;
|
const updates = event.detail.updates;
|
||||||
const success = document.getElementById('zenThemeMarketplaceUpdatesSuccess');
|
const success = document.getElementById('zenThemeMarketplaceUpdatesSuccess');
|
||||||
const error = document.getElementById('zenThemeMarketplaceUpdatesFailure');
|
const error = document.getElementById('zenThemeMarketplaceUpdatesFailure');
|
||||||
|
|
||||||
if (updates) {
|
if (updates) {
|
||||||
success.hidden = false;
|
success.hidden = false;
|
||||||
error.hidden = true;
|
error.hidden = true;
|
||||||
|
@ -55,16 +48,13 @@ var gZenMarketplaceManager = {
|
||||||
});
|
});
|
||||||
|
|
||||||
window.addEventListener('unload', () => {
|
window.addEventListener('unload', () => {
|
||||||
Services.prefs.removeObserver(gZenMods.updatePref, this);
|
Services.prefs.removeObserver(this.updatePref, this);
|
||||||
this.__hasInitializedEvents = false;
|
this.__hasInitializedEvents = false;
|
||||||
|
document.removeEventListener('ZenThemeMarketplace:CheckForUpdatesFinished', this);
|
||||||
document.removeEventListener('ZenModsMarketplace:CheckForUpdatesFinished', this);
|
document.removeEventListener('ZenCheckForThemeUpdates', this);
|
||||||
document.removeEventListener('ZenCheckForModUpdates', this);
|
|
||||||
|
|
||||||
checkForUpdates.removeEventListener('click', checkForUpdateClick);
|
checkForUpdates.removeEventListener('click', checkForUpdateClick);
|
||||||
|
this.themesList.innerHTML = '';
|
||||||
this.modsList.innerHTML = '';
|
this._doNotRebuildThemesList = false;
|
||||||
this._doNotRebuildModsList = false;
|
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -73,98 +63,121 @@ var gZenMarketplaceManager = {
|
||||||
const exportButton = document.getElementById('zenThemeMarketplaceExport');
|
const exportButton = document.getElementById('zenThemeMarketplaceExport');
|
||||||
|
|
||||||
if (importButton) {
|
if (importButton) {
|
||||||
importButton.addEventListener('click', this._importThemes.bind(this));
|
importButton.addEventListener('click', async () => {
|
||||||
|
await this._importThemes();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (exportButton) {
|
if (exportButton) {
|
||||||
exportButton.addEventListener('click', this._exportThemes.bind(this));
|
exportButton.addEventListener('click', async () => {
|
||||||
|
await this._exportThemes();
|
||||||
|
});
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
_initDisableAll() {
|
_initDisableAll() {
|
||||||
const areModsDisabled = Services.prefs.getBoolPref('zen.themes.disable-all', false);
|
const areThemesDisabled = Services.prefs.getBoolPref('zen.themes.disable-all', false);
|
||||||
const browser = ZenMultiWindowFeature.currentBrowser;
|
const browser = ZenThemesCommon.currentBrowser;
|
||||||
const mozToggle = document.createElement('moz-toggle');
|
const mozToggle = document.createElement('moz-toggle');
|
||||||
|
|
||||||
mozToggle.className =
|
mozToggle.className = 'zenThemeMarketplaceItemPreferenceToggle zenThemeMarketplaceDisableAllToggle';
|
||||||
'zenThemeMarketplaceItemPreferenceToggle zenThemeMarketplaceDisableAllToggle';
|
mozToggle.pressed = !areThemesDisabled;
|
||||||
mozToggle.pressed = !areModsDisabled;
|
|
||||||
|
|
||||||
browser.document.l10n.setAttributes(
|
browser.document.l10n.setAttributes(mozToggle, `zen-theme-disable-all-${!areThemesDisabled ? 'enabled' : 'disabled'}`);
|
||||||
mozToggle,
|
|
||||||
`zen-theme-disable-all-${!areModsDisabled ? 'enabled' : 'disabled'}`
|
|
||||||
);
|
|
||||||
|
|
||||||
mozToggle.addEventListener('toggle', async (event) => {
|
mozToggle.addEventListener('toggle', async (event) => {
|
||||||
const { pressed = false } = event.target || {};
|
const { pressed = false } = event.target || {};
|
||||||
|
|
||||||
this.modsList.style.display = pressed ? '' : 'none';
|
this.themesList.style.display = pressed ? '' : 'none';
|
||||||
Services.prefs.setBoolPref('zen.themes.disable-all', !pressed);
|
Services.prefs.setBoolPref('zen.themes.disable-all', !pressed);
|
||||||
browser.document.l10n.setAttributes(
|
browser.document.l10n.setAttributes(mozToggle, `zen-theme-disable-all-${pressed ? 'enabled' : 'disabled'}`);
|
||||||
mozToggle,
|
|
||||||
`zen-theme-disable-all-${pressed ? 'enabled' : 'disabled'}`
|
|
||||||
);
|
|
||||||
});
|
});
|
||||||
|
|
||||||
if (areModsDisabled) {
|
if (areThemesDisabled) {
|
||||||
this.modsList.style.display = 'none';
|
this.themesList.style.display = 'none';
|
||||||
}
|
}
|
||||||
|
|
||||||
return mozToggle;
|
return mozToggle;
|
||||||
},
|
},
|
||||||
|
|
||||||
async observe() {
|
async observe() {
|
||||||
await this._buildModsList();
|
ZenThemesCommon.resetThemesCache();
|
||||||
|
await this._buildThemesList();
|
||||||
},
|
},
|
||||||
|
|
||||||
_checkForThemeUpdates(event) {
|
_checkForThemeUpdates(event) {
|
||||||
// Send a message to the child to check for theme updates.
|
// Send a message to the child to check for theme updates.
|
||||||
event.target.disabled = true;
|
event.target.disabled = true;
|
||||||
// send an event that will be listened by the child process.
|
// send an event that will be listened by the child process.
|
||||||
document.dispatchEvent(new CustomEvent('ZenCheckForModUpdates'));
|
document.dispatchEvent(new CustomEvent('ZenCheckForThemeUpdates'));
|
||||||
},
|
},
|
||||||
|
|
||||||
get modsList() {
|
get updatePref() {
|
||||||
if (!this._modsList) {
|
return 'zen.themes.updated-value-observer';
|
||||||
this._modsList = document.getElementById('zenThemeMarketplaceList');
|
},
|
||||||
|
|
||||||
|
triggerThemeUpdate() {
|
||||||
|
Services.prefs.setBoolPref(this.updatePref, !Services.prefs.getBoolPref(this.updatePref));
|
||||||
|
},
|
||||||
|
|
||||||
|
get themesList() {
|
||||||
|
if (!this._themesList) {
|
||||||
|
this._themesList = document.getElementById('zenThemeMarketplaceList');
|
||||||
}
|
}
|
||||||
return this._modsList;
|
return this._themesList;
|
||||||
},
|
},
|
||||||
|
|
||||||
async removeMod(modId) {
|
async removeTheme(themeId) {
|
||||||
await gZenMods.removeMod(modId);
|
const themePath = ZenThemesCommon.getThemeFolder(themeId);
|
||||||
|
|
||||||
gZenMods.triggerModsUpdate();
|
console.info(`[ZenThemeMarketplaceParent:settings]: Removing theme ${themePath}`);
|
||||||
|
|
||||||
|
await IOUtils.remove(themePath, { recursive: true, ignoreAbsent: true });
|
||||||
|
|
||||||
|
const themes = await ZenThemesCommon.getThemes();
|
||||||
|
delete themes[themeId];
|
||||||
|
await IOUtils.writeJSON(ZenThemesCommon.themesDataFile, themes);
|
||||||
|
|
||||||
|
this.triggerThemeUpdate();
|
||||||
},
|
},
|
||||||
|
|
||||||
async disableMod(modId) {
|
async disableTheme(themeId) {
|
||||||
await gZenMods.disableMod(modId);
|
const themes = await ZenThemesCommon.getThemes();
|
||||||
|
const theme = themes[themeId];
|
||||||
|
|
||||||
this._doNotRebuildModsList = true;
|
console.log(`[ZenThemeMarketplaceParent:settings]: Disabling theme ${theme.name}`);
|
||||||
gZenMods.triggerModsUpdate();
|
|
||||||
|
theme.enabled = false;
|
||||||
|
|
||||||
|
await IOUtils.writeJSON(ZenThemesCommon.themesDataFile, themes);
|
||||||
|
this._doNotRebuildThemesList = true;
|
||||||
|
this.triggerThemeUpdate();
|
||||||
},
|
},
|
||||||
|
|
||||||
async enableMod(modId) {
|
async enableTheme(themeId) {
|
||||||
await gZenMods.enableMod(modId);
|
const themes = await ZenThemesCommon.getThemes();
|
||||||
|
const theme = themes[themeId];
|
||||||
|
|
||||||
this._doNotRebuildModsList = true;
|
console.log(`[ZenThemeMarketplaceParent:settings]: Enabling theme ${theme.name}`);
|
||||||
gZenMods.triggerModsUpdate();
|
|
||||||
|
theme.enabled = true;
|
||||||
|
|
||||||
|
await IOUtils.writeJSON(ZenThemesCommon.themesDataFile, themes);
|
||||||
|
this._doNotRebuildThemesList = true;
|
||||||
|
this.triggerThemeUpdate();
|
||||||
},
|
},
|
||||||
|
|
||||||
_triggerBuildUpdateWithoutRebuild() {
|
_triggerBuildUpdateWithoutRebuild() {
|
||||||
this._doNotRebuildModsList = true;
|
this._doNotRebuildThemesList = true;
|
||||||
gZenMods.triggerModsUpdate();
|
this.triggerThemeUpdate();
|
||||||
},
|
},
|
||||||
|
|
||||||
async _importThemes() {
|
async _importThemes() {
|
||||||
const errorBox = document.getElementById('zenThemeMarketplaceImportFailure');
|
const errorBox = document.getElementById('zenThemeMarketplaceImportFailure');
|
||||||
const successBox = document.getElementById('zenThemeMarketplaceImportSuccess');
|
const successBox = document.getElementById('zenThemeMarketplaceImportSuccess');
|
||||||
|
|
||||||
successBox.hidden = true;
|
successBox.hidden = true;
|
||||||
errorBox.hidden = true;
|
errorBox.hidden = true;
|
||||||
|
|
||||||
const input = document.createElement('input');
|
const input = document.createElement('input');
|
||||||
|
|
||||||
input.type = 'file';
|
input.type = 'file';
|
||||||
input.accept = '.json';
|
input.accept = '.json';
|
||||||
input.style.display = 'none';
|
input.style.display = 'none';
|
||||||
|
@ -172,52 +185,45 @@ var gZenMarketplaceManager = {
|
||||||
input.setAttribute('accept', '.json');
|
input.setAttribute('accept', '.json');
|
||||||
|
|
||||||
let timeout;
|
let timeout;
|
||||||
|
|
||||||
const filePromise = new Promise((resolve) => {
|
const filePromise = new Promise((resolve) => {
|
||||||
input.addEventListener('change', (event) => {
|
input.addEventListener('change', (event) => {
|
||||||
if (timeout) {
|
if (timeout) clearTimeout(timeout);
|
||||||
clearTimeout(timeout);
|
|
||||||
}
|
|
||||||
|
|
||||||
const file = event.target.files[0];
|
const file = event.target.files[0];
|
||||||
resolve(file);
|
resolve(file);
|
||||||
});
|
});
|
||||||
|
|
||||||
timeout = setTimeout(() => {
|
timeout = setTimeout(() => {
|
||||||
console.warn('[ZenSettings:ZenMods]: Import timeout reached, aborting.');
|
console.warn('[ZenThemeMarketplaceParent:settings]: Import timeout reached, aborting.');
|
||||||
resolve(null);
|
resolve(null);
|
||||||
}, 60000);
|
}, 60000);
|
||||||
});
|
});
|
||||||
|
|
||||||
input.addEventListener('cancel', () => {
|
|
||||||
console.warn('[ZenSettings:ZenMods]: Import cancelled by user.');
|
|
||||||
clearTimeout(timeout);
|
|
||||||
});
|
|
||||||
|
|
||||||
input.click();
|
input.click();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const file = await filePromise;
|
const file = await filePromise;
|
||||||
|
|
||||||
if (!file) {
|
if (!file) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const content = await file.text();
|
const content = await file.text();
|
||||||
|
|
||||||
const mods = JSON.parse(content);
|
const themes = JSON.parse(content);
|
||||||
|
const existingThemes = await ZenThemesCommon.getThemes();
|
||||||
|
const uniqueThemes = { ...themes, ...existingThemes };
|
||||||
|
|
||||||
for (const mod of Object.values(mods)) {
|
console.log(`[ZenThemeMarketplaceParent:settings]: Importing ${Object.keys(themes).length} themes`);
|
||||||
mod.modId = mod.id;
|
await IOUtils.writeJSON(ZenThemesCommon.themesDataFile, uniqueThemes);
|
||||||
await window.ZenInstallMod(mod);
|
this.triggerThemeUpdate();
|
||||||
|
successBox.hidden = false;
|
||||||
|
|
||||||
|
let buttonIndex = await confirmRestartPrompt(true, 1, true, true);
|
||||||
|
if (buttonIndex == CONFIRM_RESTART_PROMPT_RESTART_NOW) {
|
||||||
|
Services.startup.quit(Ci.nsIAppStartup.eAttemptQuit | Ci.nsIAppStartup.eRestart);
|
||||||
}
|
}
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('[ZenSettings:ZenMods]: Error while importing mods:', error);
|
console.error('[ZenThemeMarketplaceParent:settings]: Error while importing themes:', error);
|
||||||
errorBox.hidden = false;
|
errorBox.hidden = false;
|
||||||
}
|
} finally {
|
||||||
|
if (input) input.remove();
|
||||||
if (input) {
|
|
||||||
input.remove();
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
|
@ -228,54 +234,51 @@ var gZenMarketplaceManager = {
|
||||||
successBox.hidden = true;
|
successBox.hidden = true;
|
||||||
errorBox.hidden = true;
|
errorBox.hidden = true;
|
||||||
|
|
||||||
let temporalAnchor, temporalUrl;
|
let a, url;
|
||||||
try {
|
try {
|
||||||
const mods = await gZenMods.getMods();
|
const themes = await ZenThemesCommon.getThemes();
|
||||||
const modsJson = JSON.stringify(mods, null, 2);
|
const themesJson = JSON.stringify(themes, null, 2);
|
||||||
const blob = new Blob([modsJson], { type: 'application/json' });
|
const blob = new Blob([themesJson], { type: 'application/json' });
|
||||||
|
url = URL.createObjectURL(blob);
|
||||||
temporalUrl = URL.createObjectURL(blob);
|
|
||||||
// Creating a link to download the JSON file
|
// Creating a link to download the JSON file
|
||||||
temporalAnchor = document.createElement('a');
|
a = document.createElement('a');
|
||||||
temporalAnchor.href = temporalUrl;
|
a.href = url;
|
||||||
temporalAnchor.download = 'zen-mods-export.json';
|
a.download = 'zen-themes-export.json';
|
||||||
|
|
||||||
document.body.appendChild(temporalAnchor);
|
|
||||||
temporalAnchor.click();
|
|
||||||
temporalAnchor.remove();
|
|
||||||
|
|
||||||
|
document.body.appendChild(a);
|
||||||
|
a.click();
|
||||||
|
a.remove();
|
||||||
successBox.hidden = false;
|
successBox.hidden = false;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
console.error('[ZenSettings:ZenMods]: Error while exporting mods:', error);
|
console.error('[ZenThemeMarketplaceParent:settings]: Error while exporting themes:', error);
|
||||||
errorBox.hidden = false;
|
errorBox.hidden = false;
|
||||||
}
|
} finally {
|
||||||
|
if (a) {
|
||||||
if (temporalAnchor) {
|
a.remove();
|
||||||
temporalAnchor.remove();
|
}
|
||||||
}
|
if (url) {
|
||||||
|
URL.revokeObjectURL(url);
|
||||||
if (temporalUrl) {
|
}
|
||||||
URL.revokeObjectURL(temporalUrl);
|
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
async _buildModsList() {
|
async _buildThemesList() {
|
||||||
if (!this.modsList) {
|
if (!this.themesList) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this._doNotRebuildModsList) {
|
if (this._doNotRebuildThemesList) {
|
||||||
this._doNotRebuildModsList = false;
|
this._doNotRebuildThemesList = false;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
const mods = await gZenMods.getMods();
|
const themes = await ZenThemesCommon.getThemes();
|
||||||
const browser = ZenMultiWindowFeature.currentBrowser;
|
const browser = ZenMultiWindowFeature.currentBrowser;
|
||||||
const modList = document.createElement('div');
|
const themeList = document.createElement('div');
|
||||||
|
|
||||||
for (const mod of Object.values(mods).sort((a, b) => a.name.localeCompare(b.name))) {
|
for (const theme of Object.values(themes).sort((a, b) => a.name.localeCompare(b.name))) {
|
||||||
const sanitizedName = gZenMods.sanitizeModName(mod.name);
|
const sanitizedName = `theme-${theme.name?.replaceAll(/\s/g, '-')?.replaceAll(/[^A-z_-]+/g, '')}`;
|
||||||
const isModEnabled = mod.enabled === undefined || mod.enabled;
|
const isThemeEnabled = theme.enabled === undefined || theme.enabled;
|
||||||
const fragment = window.MozXULElement.parseXULToFragment(`
|
const fragment = window.MozXULElement.parseXULToFragment(`
|
||||||
<vbox class="zenThemeMarketplaceItem">
|
<vbox class="zenThemeMarketplaceItem">
|
||||||
<vbox class="zenThemeMarketplaceItemContent">
|
<vbox class="zenThemeMarketplaceItemContent">
|
||||||
|
@ -285,14 +288,14 @@ var gZenMarketplaceManager = {
|
||||||
<description class="description-deemphasized zenThemeMarketplaceItemDescription"></description>
|
<description class="description-deemphasized zenThemeMarketplaceItemDescription"></description>
|
||||||
</vbox>
|
</vbox>
|
||||||
<hbox class="zenThemeMarketplaceItemActions">
|
<hbox class="zenThemeMarketplaceItemActions">
|
||||||
${mod.preferences ? `<button id="zenThemeMarketplaceItemConfigureButton-${sanitizedName}" class="zenThemeMarketplaceItemConfigureButton" hidden="true"></button>` : ''}
|
${theme.preferences ? `<button id="zenThemeMarketplaceItemConfigureButton-${sanitizedName}" class="zenThemeMarketplaceItemConfigureButton" hidden="true"></button>` : ''}
|
||||||
${mod.homepage ? `<button id="zenThemeMarketplaceItemHomePageLink-${sanitizedName}" class="zenThemeMarketplaceItemHomepageButton" zen-mod-id="${mod.id}"></button>` : ''}
|
${theme.homepage ? `<button id="zenThemeMarketplaceItemHomePageLink-${sanitizedName}" class="zenThemeMarketplaceItemHomepageButton" zen-theme-id="${theme.id}"></button>` : ''}
|
||||||
<button class="zenThemeMarketplaceItemUninstallButton" data-l10n-id="zen-theme-marketplace-remove-button" zen-mod-id="${mod.id}"></button>
|
<button class="zenThemeMarketplaceItemUninstallButton" data-l10n-id="zen-theme-marketplace-remove-button" zen-theme-id="${theme.id}"></button>
|
||||||
</hbox>
|
</hbox>
|
||||||
</vbox>
|
</vbox>
|
||||||
`);
|
`);
|
||||||
|
|
||||||
const modName = `${mod.name} (v${mod.version ?? '1.0.0'})`;
|
const themeName = `${theme.name} (v${theme.version || '1.0.0'})`;
|
||||||
|
|
||||||
const base = fragment.querySelector('.zenThemeMarketplaceItem');
|
const base = fragment.querySelector('.zenThemeMarketplaceItem');
|
||||||
const baseHeader = fragment.querySelector('#zenThemeMarketplaceItemContentHeader');
|
const baseHeader = fragment.querySelector('#zenThemeMarketplaceItemContentHeader');
|
||||||
|
@ -307,7 +310,7 @@ var gZenMarketplaceManager = {
|
||||||
|
|
||||||
mainDialogDiv.className = 'zenThemeMarketplaceItemPreferenceDialog';
|
mainDialogDiv.className = 'zenThemeMarketplaceItemPreferenceDialog';
|
||||||
headerDiv.className = 'zenThemeMarketplaceItemPreferenceDialogTopBar';
|
headerDiv.className = 'zenThemeMarketplaceItemPreferenceDialogTopBar';
|
||||||
headerTitle.textContent = modName;
|
headerTitle.textContent = themeName;
|
||||||
browser.document.l10n.setAttributes(headerTitle, 'zen-theme-marketplace-theme-header-title', {
|
browser.document.l10n.setAttributes(headerTitle, 'zen-theme-marketplace-theme-header-title', {
|
||||||
name: sanitizedName,
|
name: sanitizedName,
|
||||||
});
|
});
|
||||||
|
@ -318,10 +321,10 @@ var gZenMarketplaceManager = {
|
||||||
contentDiv.className = 'zenThemeMarketplaceItemPreferenceDialogContent';
|
contentDiv.className = 'zenThemeMarketplaceItemPreferenceDialogContent';
|
||||||
mozToggle.className = 'zenThemeMarketplaceItemPreferenceToggle';
|
mozToggle.className = 'zenThemeMarketplaceItemPreferenceToggle';
|
||||||
|
|
||||||
mozToggle.pressed = isModEnabled;
|
mozToggle.pressed = isThemeEnabled;
|
||||||
browser.document.l10n.setAttributes(
|
browser.document.l10n.setAttributes(
|
||||||
mozToggle,
|
mozToggle,
|
||||||
`zen-theme-marketplace-toggle-${isModEnabled ? 'enabled' : 'disabled'}-button`
|
`zen-theme-marketplace-toggle-${isThemeEnabled ? 'enabled' : 'disabled'}-button`
|
||||||
);
|
);
|
||||||
|
|
||||||
baseHeader.appendChild(mozToggle);
|
baseHeader.appendChild(mozToggle);
|
||||||
|
@ -339,37 +342,27 @@ var gZenMarketplaceManager = {
|
||||||
});
|
});
|
||||||
|
|
||||||
mozToggle.addEventListener('toggle', async (event) => {
|
mozToggle.addEventListener('toggle', async (event) => {
|
||||||
const modId = event.target
|
const themeId = event.target
|
||||||
.closest('.zenThemeMarketplaceItem')
|
.closest('.zenThemeMarketplaceItem')
|
||||||
.querySelector('.zenThemeMarketplaceItemUninstallButton')
|
.querySelector('.zenThemeMarketplaceItemUninstallButton')
|
||||||
.getAttribute('zen-mod-id');
|
.getAttribute('zen-theme-id');
|
||||||
event.target.setAttribute('disabled', true);
|
event.target.setAttribute('disabled', true);
|
||||||
|
|
||||||
if (!event.target.hasAttribute('pressed')) {
|
if (!event.target.hasAttribute('pressed')) {
|
||||||
await this.disableMod(modId);
|
await this.disableTheme(themeId);
|
||||||
|
|
||||||
browser.document.l10n.setAttributes(
|
browser.document.l10n.setAttributes(mozToggle, 'zen-theme-marketplace-toggle-disabled-button');
|
||||||
mozToggle,
|
|
||||||
'zen-theme-marketplace-toggle-disabled-button'
|
|
||||||
);
|
|
||||||
|
|
||||||
if (mod.preferences) {
|
if (theme.preferences) {
|
||||||
document
|
document.getElementById(`zenThemeMarketplaceItemConfigureButton-${sanitizedName}`).setAttribute('hidden', true);
|
||||||
.getElementById(`zenThemeMarketplaceItemConfigureButton-${sanitizedName}`)
|
|
||||||
.setAttribute('hidden', true);
|
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
await this.enableMod(modId);
|
await this.enableTheme(themeId);
|
||||||
|
|
||||||
browser.document.l10n.setAttributes(
|
browser.document.l10n.setAttributes(mozToggle, 'zen-theme-marketplace-toggle-enabled-button');
|
||||||
mozToggle,
|
|
||||||
'zen-theme-marketplace-toggle-enabled-button'
|
|
||||||
);
|
|
||||||
|
|
||||||
if (mod.preferences) {
|
if (theme.preferences) {
|
||||||
document
|
document.getElementById(`zenThemeMarketplaceItemConfigureButton-${sanitizedName}`).removeAttribute('hidden');
|
||||||
.getElementById(`zenThemeMarketplaceItemConfigureButton-${sanitizedName}`)
|
|
||||||
.removeAttribute('hidden');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
|
@ -378,47 +371,39 @@ var gZenMarketplaceManager = {
|
||||||
}, 400);
|
}, 400);
|
||||||
});
|
});
|
||||||
|
|
||||||
fragment.querySelector('.zenThemeMarketplaceItemTitle').textContent = modName;
|
fragment.querySelector('.zenThemeMarketplaceItemTitle').textContent = themeName;
|
||||||
fragment.querySelector('.zenThemeMarketplaceItemDescription').textContent = mod.description;
|
fragment.querySelector('.zenThemeMarketplaceItemDescription').textContent = theme.description;
|
||||||
fragment
|
fragment.querySelector('.zenThemeMarketplaceItemUninstallButton').addEventListener('click', async (event) => {
|
||||||
.querySelector('.zenThemeMarketplaceItemUninstallButton')
|
const [msg] = await document.l10n.formatValues([{ id: 'zen-theme-marketplace-remove-confirmation' }]);
|
||||||
.addEventListener('click', async (event) => {
|
|
||||||
const [msg] = await document.l10n.formatValues([
|
|
||||||
{ id: 'zen-theme-marketplace-remove-confirmation' },
|
|
||||||
]);
|
|
||||||
|
|
||||||
if (!confirm(msg)) {
|
if (!confirm(msg)) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
await this.removeMod(event.target.getAttribute('zen-mod-id'));
|
await this.removeTheme(event.target.getAttribute('zen-theme-id'));
|
||||||
});
|
});
|
||||||
|
|
||||||
if (mod.homepage) {
|
if (theme.homepage) {
|
||||||
const homepageButton = fragment.querySelector('.zenThemeMarketplaceItemHomepageButton');
|
const homepageButton = fragment.querySelector('.zenThemeMarketplaceItemHomepageButton');
|
||||||
homepageButton.addEventListener('click', () => {
|
homepageButton.addEventListener('click', () => {
|
||||||
// open the homepage url in a new tab
|
// open the homepage url in a new tab
|
||||||
const url = mod.homepage;
|
const url = theme.homepage;
|
||||||
|
|
||||||
window.open(url, '_blank');
|
window.open(url, '_blank');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mod.preferences) {
|
if (theme.preferences) {
|
||||||
fragment
|
fragment.querySelector('.zenThemeMarketplaceItemConfigureButton').addEventListener('click', () => {
|
||||||
.querySelector('.zenThemeMarketplaceItemConfigureButton')
|
dialog.showModal();
|
||||||
.addEventListener('click', () => {
|
});
|
||||||
dialog.showModal();
|
|
||||||
});
|
|
||||||
|
|
||||||
if (isModEnabled) {
|
if (isThemeEnabled) {
|
||||||
fragment
|
fragment.querySelector('.zenThemeMarketplaceItemConfigureButton').removeAttribute('hidden');
|
||||||
.querySelector('.zenThemeMarketplaceItemConfigureButton')
|
|
||||||
.removeAttribute('hidden');
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const preferences = await gZenMods.getModPreferences(mod);
|
const preferences = await ZenThemesCommon.getThemePreferences(theme);
|
||||||
|
|
||||||
if (preferences.length > 0) {
|
if (preferences.length > 0) {
|
||||||
const preferencesWrapper = document.createXULElement('vbox');
|
const preferencesWrapper = document.createXULElement('vbox');
|
||||||
|
@ -455,10 +440,7 @@ var gZenMarketplaceManager = {
|
||||||
if (placeholder) {
|
if (placeholder) {
|
||||||
defaultItem.setAttribute('label', placeholder || '-');
|
defaultItem.setAttribute('label', placeholder || '-');
|
||||||
} else {
|
} else {
|
||||||
browser.document.l10n.setAttributes(
|
browser.document.l10n.setAttributes(defaultItem, 'zen-theme-marketplace-dropdown-default-label');
|
||||||
defaultItem,
|
|
||||||
'zen-theme-marketplace-dropdown-default-label'
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
menupopup.appendChild(defaultItem);
|
menupopup.appendChild(defaultItem);
|
||||||
|
@ -470,7 +452,7 @@ var gZenMarketplaceManager = {
|
||||||
|
|
||||||
if (!['string', 'number'].includes(valueType)) {
|
if (!['string', 'number'].includes(valueType)) {
|
||||||
console.log(
|
console.log(
|
||||||
`[ZenSettings:ZenMods]: Warning, invalid data type received (${valueType}), skipping.`
|
`[ZenThemeMarketplaceParent:settings]: Warning, invalid data type received (${valueType}), skipping.`
|
||||||
);
|
);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -526,9 +508,7 @@ var gZenMarketplaceManager = {
|
||||||
</hbox>
|
</hbox>
|
||||||
`);
|
`);
|
||||||
|
|
||||||
const checkboxElement = checkbox.querySelector(
|
const checkboxElement = checkbox.querySelector('.zenThemeMarketplaceItemPreferenceCheckbox');
|
||||||
'.zenThemeMarketplaceItemPreferenceCheckbox'
|
|
||||||
);
|
|
||||||
checkboxElement.setAttribute('label', label);
|
checkboxElement.setAttribute('label', label);
|
||||||
checkboxElement.setAttribute('tooltiptext', property);
|
checkboxElement.setAttribute('tooltiptext', property);
|
||||||
checkboxElement.setAttribute('zen-pref', property);
|
checkboxElement.setAttribute('zen-pref', property);
|
||||||
|
@ -574,28 +554,21 @@ var gZenMarketplaceManager = {
|
||||||
if (placeholder) {
|
if (placeholder) {
|
||||||
input.setAttribute('placeholder', placeholder || '-');
|
input.setAttribute('placeholder', placeholder || '-');
|
||||||
} else {
|
} else {
|
||||||
browser.document.l10n.setAttributes(
|
browser.document.l10n.setAttributes(input, 'zen-theme-marketplace-input-default-placeholder');
|
||||||
input,
|
|
||||||
'zen-theme-marketplace-input-default-placeholder'
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
input.addEventListener(
|
input.addEventListener(
|
||||||
'change',
|
'input',
|
||||||
gZenMods.debounce((event) => {
|
ZenThemesCommon.debounce((event) => {
|
||||||
const value = event.target.value;
|
const value = event.target.value;
|
||||||
|
|
||||||
Services.prefs.setStringPref(property, value);
|
Services.prefs.setStringPref(property, value);
|
||||||
this._triggerBuildUpdateWithoutRebuild();
|
this._triggerBuildUpdateWithoutRebuild();
|
||||||
|
|
||||||
if (value === '') {
|
if (value === '') {
|
||||||
browser.document
|
browser.document.querySelector(':root').style.removeProperty(`--${sanitizedProperty}`);
|
||||||
.querySelector(':root')
|
|
||||||
.style.removeProperty(`--${sanitizedProperty}`);
|
|
||||||
} else {
|
} else {
|
||||||
browser.document
|
browser.document.querySelector(':root').style.setProperty(`--${sanitizedProperty}`, value);
|
||||||
.querySelector(':root')
|
|
||||||
.style.setProperty(`--${sanitizedProperty}`, value);
|
|
||||||
}
|
}
|
||||||
}, 500)
|
}, 500)
|
||||||
);
|
);
|
||||||
|
@ -616,18 +589,18 @@ var gZenMarketplaceManager = {
|
||||||
|
|
||||||
default:
|
default:
|
||||||
console.log(
|
console.log(
|
||||||
`[ZenSettings:ZenMods]: Warning, unknown preference type received (${type}), skipping.`
|
`[ZenThemeMarketplaceParent:settings]: Warning, unknown preference type received (${type}), skipping.`
|
||||||
);
|
);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
contentDiv.appendChild(preferencesWrapper);
|
contentDiv.appendChild(preferencesWrapper);
|
||||||
}
|
}
|
||||||
modList.appendChild(fragment);
|
themeList.appendChild(fragment);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.modsList.replaceChildren(...modList.children);
|
this.themesList.replaceChildren(...themeList.children);
|
||||||
modList.remove();
|
themeList.remove();
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -635,19 +608,6 @@ const kZenExtendedSidebar = 'zen.view.sidebar-expanded';
|
||||||
const kZenSingleToolbar = 'zen.view.use-single-toolbar';
|
const kZenSingleToolbar = 'zen.view.use-single-toolbar';
|
||||||
|
|
||||||
var gZenLooksAndFeel = {
|
var gZenLooksAndFeel = {
|
||||||
kZenColors: [
|
|
||||||
'#aac7ff',
|
|
||||||
'#74d7cb',
|
|
||||||
'#a0d490',
|
|
||||||
'#dec663',
|
|
||||||
'#ffb787',
|
|
||||||
'#dec1b1',
|
|
||||||
'#ffb1c0',
|
|
||||||
'#ddbfc3',
|
|
||||||
'#f6b0ea',
|
|
||||||
'#d4bbff',
|
|
||||||
],
|
|
||||||
|
|
||||||
init() {
|
init() {
|
||||||
if (this.__hasInitialized) return;
|
if (this.__hasInitialized) return;
|
||||||
this.__hasInitialized = true;
|
this.__hasInitialized = true;
|
||||||
|
@ -678,11 +638,7 @@ var gZenLooksAndFeel = {
|
||||||
layout.classList.remove('selected');
|
layout.classList.remove('selected');
|
||||||
if (layout.getAttribute('layout') == 'single' && isSingleToolbar) {
|
if (layout.getAttribute('layout') == 'single' && isSingleToolbar) {
|
||||||
layout.classList.add('selected');
|
layout.classList.add('selected');
|
||||||
} else if (
|
} else if (layout.getAttribute('layout') == 'multiple' && !isSingleToolbar && isExtendedSidebar) {
|
||||||
layout.getAttribute('layout') == 'multiple' &&
|
|
||||||
!isSingleToolbar &&
|
|
||||||
isExtendedSidebar
|
|
||||||
) {
|
|
||||||
layout.classList.add('selected');
|
layout.classList.add('selected');
|
||||||
} else if (layout.getAttribute('layout') == 'collapsed' && !isExtendedSidebar) {
|
} else if (layout.getAttribute('layout') == 'collapsed' && !isExtendedSidebar) {
|
||||||
layout.classList.add('selected');
|
layout.classList.add('selected');
|
||||||
|
@ -702,10 +658,7 @@ var gZenLooksAndFeel = {
|
||||||
|
|
||||||
layout.classList.add('selected');
|
layout.classList.add('selected');
|
||||||
|
|
||||||
Services.prefs.setBoolPref(
|
Services.prefs.setBoolPref(kZenExtendedSidebar, layout.getAttribute('layout') != 'collapsed');
|
||||||
kZenExtendedSidebar,
|
|
||||||
layout.getAttribute('layout') != 'collapsed'
|
|
||||||
);
|
|
||||||
Services.prefs.setBoolPref(kZenSingleToolbar, layout.getAttribute('layout') == 'single');
|
Services.prefs.setBoolPref(kZenSingleToolbar, layout.getAttribute('layout') == 'single');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
@ -749,8 +702,7 @@ var gZenLooksAndFeel = {
|
||||||
_initializeColorPicker(accentColor) {
|
_initializeColorPicker(accentColor) {
|
||||||
let elem = document.getElementById('zenLooksAndFeelColorOptions');
|
let elem = document.getElementById('zenLooksAndFeelColorOptions');
|
||||||
elem.innerHTML = '';
|
elem.innerHTML = '';
|
||||||
|
for (let color of ZenThemesCommon.kZenColors) {
|
||||||
for (let color of this.kZenColors) {
|
|
||||||
let colorElemParen = document.createElement('div');
|
let colorElemParen = document.createElement('div');
|
||||||
let colorElem = document.createElement('div');
|
let colorElem = document.createElement('div');
|
||||||
colorElemParen.classList.add('zenLooksAndFeelColorOptionParen');
|
colorElemParen.classList.add('zenLooksAndFeelColorOptionParen');
|
||||||
|
@ -774,7 +726,7 @@ var gZenLooksAndFeel = {
|
||||||
},
|
},
|
||||||
|
|
||||||
_getInitialAccentColor() {
|
_getInitialAccentColor() {
|
||||||
return Services.prefs.getStringPref('zen.theme.accent-color', this.kZenColors[0]);
|
return Services.prefs.getStringPref('zen.theme.accent-color', ZenThemesCommon.kZenColors[0]);
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -790,19 +742,13 @@ var gZenWorkspacesSettings = {
|
||||||
};
|
};
|
||||||
Services.prefs.addObserver('zen.tab-unloader.enabled', tabsUnloaderPrefListener);
|
Services.prefs.addObserver('zen.tab-unloader.enabled', tabsUnloaderPrefListener);
|
||||||
Services.prefs.addObserver('zen.glance.enabled', tabsUnloaderPrefListener); // We can use the same listener for both prefs
|
Services.prefs.addObserver('zen.glance.enabled', tabsUnloaderPrefListener); // We can use the same listener for both prefs
|
||||||
Services.prefs.addObserver(
|
Services.prefs.addObserver('zen.workspaces.container-specific-essentials-enabled', tabsUnloaderPrefListener);
|
||||||
'zen.workspaces.container-specific-essentials-enabled',
|
|
||||||
tabsUnloaderPrefListener
|
|
||||||
);
|
|
||||||
Services.prefs.addObserver('zen.glance.activation-method', tabsUnloaderPrefListener);
|
Services.prefs.addObserver('zen.glance.activation-method', tabsUnloaderPrefListener);
|
||||||
window.addEventListener('unload', () => {
|
window.addEventListener('unload', () => {
|
||||||
Services.prefs.removeObserver('zen.tab-unloader.enabled', tabsUnloaderPrefListener);
|
Services.prefs.removeObserver('zen.tab-unloader.enabled', tabsUnloaderPrefListener);
|
||||||
Services.prefs.removeObserver('zen.glance.enabled', tabsUnloaderPrefListener);
|
Services.prefs.removeObserver('zen.glance.enabled', tabsUnloaderPrefListener);
|
||||||
Services.prefs.removeObserver('zen.glance.activation-method', tabsUnloaderPrefListener);
|
Services.prefs.removeObserver('zen.glance.activation-method', tabsUnloaderPrefListener);
|
||||||
Services.prefs.removeObserver(
|
Services.prefs.removeObserver('zen.workspaces.container-specific-essentials-enabled', tabsUnloaderPrefListener);
|
||||||
'zen.workspaces.container-specific-essentials-enabled',
|
|
||||||
tabsUnloaderPrefListener
|
|
||||||
);
|
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
|
@ -862,11 +808,6 @@ var zenMissingKeyboardShortcutL10n = {
|
||||||
key_accessibility: 'zen-devtools-toggle-accessibility-shortcut',
|
key_accessibility: 'zen-devtools-toggle-accessibility-shortcut',
|
||||||
};
|
};
|
||||||
|
|
||||||
var zenIgnoreKeyboardShortcutL10n = [
|
|
||||||
'zen-full-zoom-reduce-shortcut-alt-b',
|
|
||||||
'zen-full-zoom-reduce-shortcut-alt-a',
|
|
||||||
];
|
|
||||||
|
|
||||||
var gZenCKSSettings = {
|
var gZenCKSSettings = {
|
||||||
async init() {
|
async init() {
|
||||||
await this._initializeCKS();
|
await this._initializeCKS();
|
||||||
|
@ -930,10 +871,6 @@ var gZenCKSSettings = {
|
||||||
|
|
||||||
const labelValue = zenMissingKeyboardShortcutL10n[keyID] ?? l10nID;
|
const labelValue = zenMissingKeyboardShortcutL10n[keyID] ?? l10nID;
|
||||||
|
|
||||||
if (zenIgnoreKeyboardShortcutL10n.includes(labelValue)) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
let fragment = window.MozXULElement.parseXULToFragment(`
|
let fragment = window.MozXULElement.parseXULToFragment(`
|
||||||
<hbox class="${ZEN_CKS_CLASS_BASE}">
|
<hbox class="${ZEN_CKS_CLASS_BASE}">
|
||||||
<label class="${ZEN_CKS_LABEL_CLASS}" for="${ZEN_CKS_CLASS_BASE}-${keyID}"></label>
|
<label class="${ZEN_CKS_LABEL_CLASS}" for="${ZEN_CKS_CLASS_BASE}-${keyID}"></label>
|
||||||
|
@ -993,9 +930,6 @@ var gZenCKSSettings = {
|
||||||
sibling.remove();
|
sibling.remove();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (target.classList.contains(`${ZEN_CKS_INPUT_FIELD_CLASS}-not-set`)) {
|
|
||||||
target.label = 'Not set';
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
const groupElem = wrapper.querySelector(`[data-group="${ZEN_CKS_GROUP_PREFIX}-${group}"]`);
|
const groupElem = wrapper.querySelector(`[data-group="${ZEN_CKS_GROUP_PREFIX}-${group}"]`);
|
||||||
|
@ -1032,16 +966,8 @@ var gZenCKSSettings = {
|
||||||
|
|
||||||
event.preventDefault();
|
event.preventDefault();
|
||||||
|
|
||||||
let input = document.querySelector(
|
let input = document.querySelector(`.${ZEN_CKS_INPUT_FIELD_CLASS}[${KEYBIND_ATTRIBUTE_KEY}="${this._currentActionID}"]`);
|
||||||
`.${ZEN_CKS_INPUT_FIELD_CLASS}[${KEYBIND_ATTRIBUTE_KEY}="${this._currentActionID}"]`
|
const modifiers = new KeyShortcutModifiers(event.ctrlKey, event.altKey, event.shiftKey, event.metaKey, false);
|
||||||
);
|
|
||||||
const modifiers = new KeyShortcutModifiers(
|
|
||||||
event.ctrlKey,
|
|
||||||
event.altKey,
|
|
||||||
event.shiftKey,
|
|
||||||
event.metaKey,
|
|
||||||
false
|
|
||||||
);
|
|
||||||
const modifiersActive = modifiers.areAnyActive();
|
const modifiersActive = modifiers.areAnyActive();
|
||||||
|
|
||||||
input.classList.remove(`${ZEN_CKS_INPUT_FIELD_CLASS}-not-set`);
|
input.classList.remove(`${ZEN_CKS_INPUT_FIELD_CLASS}-not-set`);
|
||||||
|
@ -1053,7 +979,6 @@ var gZenCKSSettings = {
|
||||||
shortcut = shortcut.replace(/Ctrl|Control|Shift|Alt|Option|Cmd|Meta/, ''); // Remove all modifiers
|
shortcut = shortcut.replace(/Ctrl|Control|Shift|Alt|Option|Cmd|Meta/, ''); // Remove all modifiers
|
||||||
|
|
||||||
if (shortcut == 'Tab' && !modifiersActive) {
|
if (shortcut == 'Tab' && !modifiersActive) {
|
||||||
input.classList.remove(`${ZEN_CKS_INPUT_FIELD_CLASS}-not-set`);
|
|
||||||
input.classList.remove(`${ZEN_CKS_INPUT_FIELD_CLASS}-editing`);
|
input.classList.remove(`${ZEN_CKS_INPUT_FIELD_CLASS}-editing`);
|
||||||
this._latestValidKey = null;
|
this._latestValidKey = null;
|
||||||
return;
|
return;
|
||||||
|
@ -1081,9 +1006,6 @@ var gZenCKSSettings = {
|
||||||
input.classList.remove(`${ZEN_CKS_INPUT_FIELD_CLASS}-editing`);
|
input.classList.remove(`${ZEN_CKS_INPUT_FIELD_CLASS}-editing`);
|
||||||
|
|
||||||
this._editDone(this._latestValidKey, this._latestModifier);
|
this._editDone(this._latestValidKey, this._latestModifier);
|
||||||
if (this.name == 'Not set') {
|
|
||||||
input.classList.add(`${ZEN_CKS_INPUT_FIELD_CLASS}-not-set`);
|
|
||||||
}
|
|
||||||
this._latestValidKey = null;
|
this._latestValidKey = null;
|
||||||
this._latestModifier = null;
|
this._latestModifier = null;
|
||||||
input.classList.remove(`${ZEN_CKS_INPUT_FIELD_CLASS}-invalid`);
|
input.classList.remove(`${ZEN_CKS_INPUT_FIELD_CLASS}-invalid`);
|
||||||
|
@ -1105,10 +1027,6 @@ var gZenCKSSettings = {
|
||||||
this._latestValidKey = null;
|
this._latestValidKey = null;
|
||||||
this._latestModifier = null;
|
this._latestModifier = null;
|
||||||
this._hasSafed = true;
|
this._hasSafed = true;
|
||||||
const sibling = input.nextElementSibling;
|
|
||||||
if (sibling && sibling.classList.contains(`${ZEN_CKS_CLASS_BASE}-conflict`)) {
|
|
||||||
sibling.remove();
|
|
||||||
}
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1202,6 +1120,11 @@ Preferences.addAll([
|
||||||
type: 'bool',
|
type: 'bool',
|
||||||
default: true,
|
default: true,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
id: 'zen.essentials.enabled',
|
||||||
|
type: 'bool',
|
||||||
|
default: true,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
id: 'zen.workspaces.container-specific-essentials-enabled',
|
id: 'zen.workspaces.container-specific-essentials-enabled',
|
||||||
type: 'bool',
|
type: 'bool',
|
||||||
|
@ -1227,14 +1150,4 @@ Preferences.addAll([
|
||||||
type: 'bool',
|
type: 'bool',
|
||||||
default: true,
|
default: true,
|
||||||
},
|
},
|
||||||
{
|
|
||||||
id: 'zen.workspaces.continue-where-left-off',
|
|
||||||
type: 'bool',
|
|
||||||
default: false,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
id: 'zen.mods.auto-update',
|
|
||||||
type: 'bool',
|
|
||||||
default: true,
|
|
||||||
},
|
|
||||||
]);
|
]);
|
||||||
|
|
|
@ -78,6 +78,9 @@
|
||||||
</hbox>
|
</hbox>
|
||||||
|
|
||||||
<groupbox id="zenThemeGroup" data-category="paneZenLooks" hidden="true" class="highlighting-group">
|
<groupbox id="zenThemeGroup" data-category="paneZenLooks" hidden="true" class="highlighting-group">
|
||||||
|
<label><html:h2 data-l10n-id="zen-look-and-feel-urlbar-header"/></label>
|
||||||
|
<description class="description-deemphasized" data-l10n-id="zen-look-and-feel-urlbar-description" />
|
||||||
|
|
||||||
<label><html:h2 data-l10n-id="zen-look-and-feel-compact-view-header"/></label>
|
<label><html:h2 data-l10n-id="zen-look-and-feel-compact-view-header"/></label>
|
||||||
<description class="description-deemphasized" data-l10n-id="zen-look-and-feel-compact-view-description" />
|
<description class="description-deemphasized" data-l10n-id="zen-look-and-feel-compact-view-description" />
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
<script src="chrome://browser/content/zen-components/ZenCommonUtils.mjs" defer=""/>
|
<script src="chrome://browser/content/zen-components/ZenCommonUtils.mjs" defer=""/>
|
||||||
|
<script src="chrome://browser/content/zen-components/ZenThemesCommon.mjs" defer=""/>
|
||||||
<html:template id="template-paneZenMarketplace">
|
<html:template id="template-paneZenMarketplace">
|
||||||
<hbox id="ZenMarketplaceCategory"
|
<hbox id="ZenMarketplaceCategory"
|
||||||
class="subcategory"
|
class="subcategory"
|
||||||
|
@ -20,10 +21,6 @@
|
||||||
<button id="zenThemeMarketplaceCheckForUpdates" data-l10n-id="zen-theme-marketplace-check-for-updates-button" />
|
<button id="zenThemeMarketplaceCheckForUpdates" data-l10n-id="zen-theme-marketplace-check-for-updates-button" />
|
||||||
</hbox>
|
</hbox>
|
||||||
|
|
||||||
<checkbox id="zenWorkspacesForceContainerTabsToWorkspace"
|
|
||||||
data-l10n-id="zen-themes-auto-update"
|
|
||||||
preference="zen.mods.auto-update"/>
|
|
||||||
|
|
||||||
<description class="description-deemphasized" data-l10n-id="zen-theme-marketplace-updates-success" hidden="true" id="zenThemeMarketplaceUpdatesSuccess" />
|
<description class="description-deemphasized" data-l10n-id="zen-theme-marketplace-updates-success" hidden="true" id="zenThemeMarketplaceUpdatesSuccess" />
|
||||||
<description class="description-deemphasized" data-l10n-id="zen-theme-marketplace-updates-failure" hidden="true" id="zenThemeMarketplaceUpdatesFailure" />
|
<description class="description-deemphasized" data-l10n-id="zen-theme-marketplace-updates-failure" hidden="true" id="zenThemeMarketplaceUpdatesFailure" />
|
||||||
|
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
class="subcategory"
|
class="subcategory"
|
||||||
hidden="true"
|
hidden="true"
|
||||||
data-category="paneZenTabManagement">
|
data-category="paneZenTabManagement">
|
||||||
|
<html:h1 data-l10n-id="pane-workspaces-title"/>
|
||||||
</hbox>
|
</hbox>
|
||||||
|
|
||||||
<hbox id="zenTabManagementCategory"
|
<hbox id="zenTabManagementCategory"
|
||||||
|
@ -31,6 +32,26 @@
|
||||||
<html:h1 data-l10n-id="pane-zen-tabs-unloader-title"/>
|
<html:h1 data-l10n-id="pane-zen-tabs-unloader-title"/>
|
||||||
</hbox>
|
</hbox>
|
||||||
|
|
||||||
|
<groupbox id="zenTabsUnloadGroup" data-category="paneZenTabManagement" hidden="true" class="highlighting-group">
|
||||||
|
<label><html:h2 data-l10n-id="zen-tabs-unloader-header"/></label>
|
||||||
|
<description class="description-deemphasized" data-l10n-id="zen-tabs-unloader-description" />
|
||||||
|
|
||||||
|
<checkbox id="zenTabsUnloadActivate"
|
||||||
|
data-l10n-id="zen-tabs-unloader-enabled"
|
||||||
|
preference="zen.tab-unloader.enabled"/>
|
||||||
|
|
||||||
|
|
||||||
|
<label><html:h2 data-l10n-id="zen-tabs-unloader-unload-delay"/></label>
|
||||||
|
<hbox id="zenTabsUnloadDelayContainer">
|
||||||
|
<description class="description-deemphasized" data-l10n-id="zen-tabs-unloader-unload-delay-description" />
|
||||||
|
<html:input id="zenTabsUnloadDelay"
|
||||||
|
type="number"
|
||||||
|
min="1"
|
||||||
|
max="1000"
|
||||||
|
preference="zen.tab-unloader.timeout-minutes"/>
|
||||||
|
</hbox>
|
||||||
|
</groupbox>
|
||||||
|
|
||||||
<hbox id="zenPinnedTabsManagerCategory"
|
<hbox id="zenPinnedTabsManagerCategory"
|
||||||
class="subcategory"
|
class="subcategory"
|
||||||
hidden="true"
|
hidden="true"
|
||||||
|
|
|
@ -1,13 +0,0 @@
|
||||||
diff --git a/browser/components/search/SearchUIUtils.sys.mjs b/browser/components/search/SearchUIUtils.sys.mjs
|
|
||||||
index ecebaad93acfc9eb7dfd9d9f56fec2e1a4abe392..8bb1348b3258dbc518d23ec39181a81f87fc8c1e 100644
|
|
||||||
--- a/browser/components/search/SearchUIUtils.sys.mjs
|
|
||||||
+++ b/browser/components/search/SearchUIUtils.sys.mjs
|
|
||||||
@@ -403,7 +403,7 @@ export var SearchUIUtils = {
|
|
||||||
triggeringSearchEngine: engine.name,
|
|
||||||
},
|
|
||||||
});
|
|
||||||
-
|
|
||||||
+ window.gZenGlanceManager?.onSearchSelectCommand(where);
|
|
||||||
return { engine, url: submission.uri };
|
|
||||||
},
|
|
||||||
|
|
|
@ -1,28 +1,8 @@
|
||||||
diff --git a/browser/components/sessionstore/SessionStore.sys.mjs b/browser/components/sessionstore/SessionStore.sys.mjs
|
diff --git a/browser/components/sessionstore/SessionStore.sys.mjs b/browser/components/sessionstore/SessionStore.sys.mjs
|
||||||
index 8c6047e1ada5a22e57e1e665965237c9e22641d7..8d0585e738a5a758ebbddfa0787c71d634dadd4d 100644
|
index 5633e5032f5d50c70512187d27e045b579978927..dd7aa4827eaa809dadc7e1fe6cdd1083e79f383a 100644
|
||||||
--- a/browser/components/sessionstore/SessionStore.sys.mjs
|
--- a/browser/components/sessionstore/SessionStore.sys.mjs
|
||||||
+++ b/browser/components/sessionstore/SessionStore.sys.mjs
|
+++ b/browser/components/sessionstore/SessionStore.sys.mjs
|
||||||
@@ -2088,7 +2088,6 @@ var SessionStoreInternal = {
|
@@ -3202,7 +3202,7 @@ var SessionStoreInternal = {
|
||||||
if (closedWindowState) {
|
|
||||||
let newWindowState;
|
|
||||||
if (
|
|
||||||
- AppConstants.platform == "macosx" ||
|
|
||||||
!lazy.SessionStartup.willRestore()
|
|
||||||
) {
|
|
||||||
// We want to split the window up into pinned tabs and unpinned tabs.
|
|
||||||
@@ -2303,11 +2302,9 @@ var SessionStoreInternal = {
|
|
||||||
tabbrowser.selectedTab.label;
|
|
||||||
}
|
|
||||||
|
|
||||||
- if (AppConstants.platform != "macosx") {
|
|
||||||
// Until we decide otherwise elsewhere, this window is part of a series
|
|
||||||
// of closing windows to quit.
|
|
||||||
winData._shouldRestore = true;
|
|
||||||
- }
|
|
||||||
|
|
||||||
// Store the window's close date to figure out when each individual tab
|
|
||||||
// was closed. This timestamp should allow re-arranging data based on how
|
|
||||||
@@ -3216,7 +3213,7 @@ var SessionStoreInternal = {
|
|
||||||
if (!isPrivateWindow && tabState.isPrivate) {
|
if (!isPrivateWindow && tabState.isPrivate) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -31,33 +11,22 @@ index 8c6047e1ada5a22e57e1e665965237c9e22641d7..8d0585e738a5a758ebbddfa0787c71d6
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3925,6 +3922,11 @@ var SessionStoreInternal = {
|
@@ -3911,6 +3911,9 @@ var SessionStoreInternal = {
|
||||||
Math.min(tabState.index, tabState.entries.length)
|
Math.min(tabState.index, tabState.entries.length)
|
||||||
);
|
);
|
||||||
tabState.pinned = false;
|
tabState.pinned = false;
|
||||||
+ tabState.zenEssential = false;
|
+ tabState.zenEssential = false;
|
||||||
+ tabState.zenPinnedId = null;
|
+ tabState.zenPinnedId = null;
|
||||||
+ tabState.zenIsGlance = false;
|
|
||||||
+ tabState.zenGlanceId = null;
|
|
||||||
+ tabState.zenHasStaticLabel = false;
|
+ tabState.zenHasStaticLabel = false;
|
||||||
|
|
||||||
if (inBackground === false) {
|
if (inBackground === false) {
|
||||||
aWindow.gBrowser.selectedTab = newTab;
|
aWindow.gBrowser.selectedTab = newTab;
|
||||||
@@ -5239,7 +5241,7 @@ var SessionStoreInternal = {
|
@@ -5416,14 +5419,15 @@ var SessionStoreInternal = {
|
||||||
}
|
|
||||||
|
|
||||||
let workspaceID = aWindow.getWorkspaceID();
|
|
||||||
- if (workspaceID) {
|
|
||||||
+ if (workspaceID && !(this.isLastRestorableWindow() && AppConstants.platform == "macosx")) {
|
|
||||||
winData.workspaceID = workspaceID;
|
|
||||||
}
|
|
||||||
},
|
|
||||||
@@ -5430,14 +5432,15 @@ var SessionStoreInternal = {
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let tabbrowser = aWindow.gBrowser;
|
let tabbrowser = aWindow.gBrowser;
|
||||||
- let tabs = tabbrowser.tabs;
|
- let tabs = tabbrowser.tabs;
|
||||||
+ let tabs = aWindow.gZenWorkspaces.allStoredTabs;
|
+ let tabs = aWindow.ZenWorkspaces.allStoredTabs;
|
||||||
/** @type {WindowStateData} */
|
/** @type {WindowStateData} */
|
||||||
let winData = this._windows[aWindow.__SSi];
|
let winData = this._windows[aWindow.__SSi];
|
||||||
let tabsData = (winData.tabs = []);
|
let tabsData = (winData.tabs = []);
|
||||||
|
@ -70,29 +39,16 @@ index 8c6047e1ada5a22e57e1e665965237c9e22641d7..8d0585e738a5a758ebbddfa0787c71d6
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
let tabData = lazy.TabState.collect(tab, TAB_CUSTOM_VALUES.get(tab));
|
let tabData = lazy.TabState.collect(tab, TAB_CUSTOM_VALUES.get(tab));
|
||||||
@@ -5456,8 +5459,8 @@ var SessionStoreInternal = {
|
@@ -5442,7 +5446,7 @@ var SessionStoreInternal = {
|
||||||
// We don't store the Firefox View tab in Session Store, so if it was the last selected "tab" when
|
// We don't store the Firefox View tab in Session Store, so if it was the last selected "tab" when
|
||||||
// a window is closed, point to the first item in the tab strip instead (it will never be the Firefox View tab,
|
// a window is closed, point to the first item in the tab strip instead (it will never be the Firefox View tab,
|
||||||
// since it's only inserted into the tab strip after it's selected).
|
// since it's only inserted into the tab strip after it's selected).
|
||||||
- if (aWindow.FirefoxViewHandler.tab?.selected) {
|
- if (aWindow.FirefoxViewHandler.tab?.selected) {
|
||||||
- selectedIndex = 1;
|
|
||||||
+ if (aWindow.FirefoxViewHandler.tab?.selected || tabbrowser.selectedTab.hasAttribute("zen-empty-tab")) {
|
+ if (aWindow.FirefoxViewHandler.tab?.selected || tabbrowser.selectedTab.hasAttribute("zen-empty-tab")) {
|
||||||
+ selectedIndex = 0;
|
selectedIndex = 1;
|
||||||
winData.title = tabbrowser.tabs[0].label;
|
winData.title = tabbrowser.tabs[0].label;
|
||||||
}
|
}
|
||||||
winData.selected = selectedIndex;
|
@@ -5599,6 +5603,7 @@ var SessionStoreInternal = {
|
||||||
@@ -5569,8 +5572,8 @@ var SessionStoreInternal = {
|
|
||||||
// selectTab represents.
|
|
||||||
let selectTab = 0;
|
|
||||||
if (overwriteTabs) {
|
|
||||||
- selectTab = parseInt(winData.selected || 1, 10);
|
|
||||||
- selectTab = Math.max(selectTab, 1);
|
|
||||||
+ selectTab = parseInt(winData.selected || 0, 10);
|
|
||||||
+ selectTab = Math.max(selectTab, 0);
|
|
||||||
selectTab = Math.min(selectTab, winData.tabs.length);
|
|
||||||
}
|
|
||||||
|
|
||||||
@@ -5613,6 +5616,7 @@ var SessionStoreInternal = {
|
|
||||||
winData.tabs,
|
winData.tabs,
|
||||||
winData.groups ?? []
|
winData.groups ?? []
|
||||||
);
|
);
|
||||||
|
@ -100,13 +56,12 @@ index 8c6047e1ada5a22e57e1e665965237c9e22641d7..8d0585e738a5a758ebbddfa0787c71d6
|
||||||
this._log.debug(
|
this._log.debug(
|
||||||
`restoreWindow, createTabsForSessionRestore returned ${tabs.length} tabs`
|
`restoreWindow, createTabsForSessionRestore returned ${tabs.length} tabs`
|
||||||
);
|
);
|
||||||
@@ -6162,6 +6166,22 @@ var SessionStoreInternal = {
|
@@ -6148,8 +6153,23 @@ var SessionStoreInternal = {
|
||||||
|
|
||||||
// Most of tabData has been restored, now continue with restoring
|
// Most of tabData has been restored, now continue with restoring
|
||||||
// attributes that may trigger external events.
|
// attributes that may trigger external events.
|
||||||
+ if (tabData.zenEssential) {
|
+ if (tabData.zenEssential) {
|
||||||
+ tab.setAttribute("zen-essential", "true");
|
+ tab.setAttribute("zen-essential", "true");
|
||||||
+ tabData.pinned = true; // Essential tabs are always pinned.
|
|
||||||
+ }
|
+ }
|
||||||
+ if (tabData.zenIsEmpty) {
|
+ if (tabData.zenIsEmpty) {
|
||||||
+ tab.setAttribute("zen-empty-tab", "true");
|
+ tab.setAttribute("zen-empty-tab", "true");
|
||||||
|
@ -121,5 +76,8 @@ index 8c6047e1ada5a22e57e1e665965237c9e22641d7..8d0585e738a5a758ebbddfa0787c71d6
|
||||||
+ tab.setAttribute("zenDefaultUserContextId", true);
|
+ tab.setAttribute("zenDefaultUserContextId", true);
|
||||||
+ }
|
+ }
|
||||||
|
|
||||||
if (tabData.pinned) {
|
- if (tabData.pinned) {
|
||||||
|
+ if (tabData.pinned || tabData.zenEssential) {
|
||||||
tabbrowser.pinTab(tab);
|
tabbrowser.pinTab(tab);
|
||||||
|
} else {
|
||||||
|
tabbrowser.unpinTab(tab);
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
diff --git a/browser/components/sessionstore/TabState.sys.mjs b/browser/components/sessionstore/TabState.sys.mjs
|
diff --git a/browser/components/sessionstore/TabState.sys.mjs b/browser/components/sessionstore/TabState.sys.mjs
|
||||||
index 8f7ed557e6aa61e7e16ed4a8d785ad5fe651b3d8..76f4cf5aef30cb580ef0295fe6928b5a6a362f4b 100644
|
index 8f7ed557e6aa61e7e16ed4a8d785ad5fe651b3d8..f73cd2d5b43d22a4ff14eb59cb9b168707a437f3 100644
|
||||||
--- a/browser/components/sessionstore/TabState.sys.mjs
|
--- a/browser/components/sessionstore/TabState.sys.mjs
|
||||||
+++ b/browser/components/sessionstore/TabState.sys.mjs
|
+++ b/browser/components/sessionstore/TabState.sys.mjs
|
||||||
@@ -84,6 +84,18 @@ class _TabState {
|
@@ -84,6 +84,17 @@ class _TabState {
|
||||||
tabData.groupId = tab.group.id;
|
tabData.groupId = tab.group.id;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -15,8 +15,7 @@ index 8f7ed557e6aa61e7e16ed4a8d785ad5fe651b3d8..76f4cf5aef30cb580ef0295fe6928b5a
|
||||||
+ tabData.zenPinnedIcon = tab.getAttribute("zen-pinned-icon");
|
+ tabData.zenPinnedIcon = tab.getAttribute("zen-pinned-icon");
|
||||||
+ tabData.zenIsEmpty = tab.hasAttribute("zen-empty-tab");
|
+ tabData.zenIsEmpty = tab.hasAttribute("zen-empty-tab");
|
||||||
+ tabData.zenHasStaticLabel = tab.hasAttribute("zen-has-static-label");
|
+ tabData.zenHasStaticLabel = tab.hasAttribute("zen-has-static-label");
|
||||||
+ tabData.zenGlanceId = tab.getAttribute("glance-id");
|
+ tabData.zenTabId = tab.getAttribute("zen-tab-id");
|
||||||
+ tabData.zenIsGlance = tab.hasAttribute("zen-glance-tab");
|
|
||||||
+
|
+
|
||||||
tabData.searchMode = tab.ownerGlobal.gURLBar.getSearchMode(browser, true);
|
tabData.searchMode = tab.ownerGlobal.gURLBar.getSearchMode(browser, true);
|
||||||
|
|
||||||
|
|
|
@ -1,13 +0,0 @@
|
||||||
diff --git a/browser/components/tabbrowser/TabUnloader.sys.mjs b/browser/components/tabbrowser/TabUnloader.sys.mjs
|
|
||||||
index 44846cc902fd3fc17d12be38ac9abccb47a12f23..c715c7cf47486066b3fd6f92bf78bc8a720759bc 100644
|
|
||||||
--- a/browser/components/tabbrowser/TabUnloader.sys.mjs
|
|
||||||
+++ b/browser/components/tabbrowser/TabUnloader.sys.mjs
|
|
||||||
@@ -52,7 +52,7 @@ let CRITERIA_WEIGHT = 1;
|
|
||||||
*/
|
|
||||||
let DefaultTabUnloaderMethods = {
|
|
||||||
isNonDiscardable(tab, weight) {
|
|
||||||
- if (tab.undiscardable || tab.selected) {
|
|
||||||
+ if (tab.undiscardable || tab.selected || tab.zenModeActive) {
|
|
||||||
return weight;
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,18 +1,17 @@
|
||||||
diff --git a/browser/components/tabbrowser/content/browser-ctrlTab.js b/browser/components/tabbrowser/content/browser-ctrlTab.js
|
diff --git a/browser/components/tabbrowser/content/browser-ctrlTab.js b/browser/components/tabbrowser/content/browser-ctrlTab.js
|
||||||
index 6753641cb579032306453be3f5054d7bc7661e8c..bf21f6c14f825fbe2d322900595cd34456fe1231 100644
|
index 6753641cb579032306453be3f5054d7bc7661e8c..436ee8940c8a73d238a7aed10768a0a752a3f119 100644
|
||||||
--- a/browser/components/tabbrowser/content/browser-ctrlTab.js
|
--- a/browser/components/tabbrowser/content/browser-ctrlTab.js
|
||||||
+++ b/browser/components/tabbrowser/content/browser-ctrlTab.js
|
+++ b/browser/components/tabbrowser/content/browser-ctrlTab.js
|
||||||
@@ -252,7 +252,8 @@ var ctrlTab = {
|
@@ -252,7 +252,7 @@ var ctrlTab = {
|
||||||
},
|
},
|
||||||
|
|
||||||
get tabList() {
|
get tabList() {
|
||||||
- return this._recentlyUsedTabs;
|
- return this._recentlyUsedTabs;
|
||||||
+ const canShowPending = Services.prefs.getBoolPref("zen.ctrlTab.show-pending-tabs", false);
|
+ return this._recentlyUsedTabs.filter(tab => !tab.hasAttribute("pending"));
|
||||||
+ return this._recentlyUsedTabs.filter(tab => !tab.hasAttribute("pending") || canShowPending);
|
|
||||||
},
|
},
|
||||||
|
|
||||||
init: function ctrlTab_init() {
|
init: function ctrlTab_init() {
|
||||||
@@ -459,7 +460,7 @@ var ctrlTab = {
|
@@ -459,7 +459,7 @@ var ctrlTab = {
|
||||||
// If the tab is hidden, don't add it to the list unless it's selected
|
// If the tab is hidden, don't add it to the list unless it's selected
|
||||||
// (Normally hidden tabs would be unhidden when selected, but that doesn't
|
// (Normally hidden tabs would be unhidden when selected, but that doesn't
|
||||||
// happen for Firefox View).
|
// happen for Firefox View).
|
||||||
|
@ -21,7 +20,7 @@ index 6753641cb579032306453be3f5054d7bc7661e8c..bf21f6c14f825fbe2d322900595cd344
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -483,7 +484,7 @@ var ctrlTab = {
|
@@ -483,7 +483,7 @@ var ctrlTab = {
|
||||||
},
|
},
|
||||||
|
|
||||||
open: function ctrlTab_open() {
|
open: function ctrlTab_open() {
|
||||||
|
@ -30,7 +29,7 @@ index 6753641cb579032306453be3f5054d7bc7661e8c..bf21f6c14f825fbe2d322900595cd344
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -761,7 +762,7 @@ var ctrlTab = {
|
@@ -761,7 +761,7 @@ var ctrlTab = {
|
||||||
_initRecentlyUsedTabs() {
|
_initRecentlyUsedTabs() {
|
||||||
this._recentlyUsedTabs = Array.prototype.filter.call(
|
this._recentlyUsedTabs = Array.prototype.filter.call(
|
||||||
gBrowser.tabs,
|
gBrowser.tabs,
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
diff --git a/browser/components/tabbrowser/content/tab.js b/browser/components/tabbrowser/content/tab.js
|
diff --git a/browser/components/tabbrowser/content/tab.js b/browser/components/tabbrowser/content/tab.js
|
||||||
index f43ab1cf6257ff1a9c9aa522a0180fd9bbfe4036..d9714c46de860243b06af7e8343d36b107efb855 100644
|
index dc92771ebc65095dfebbddc238ee6d4fffd897bf..ae9120f7cc8989cf625ac101d053d82582e32009 100644
|
||||||
--- a/browser/components/tabbrowser/content/tab.js
|
--- a/browser/components/tabbrowser/content/tab.js
|
||||||
+++ b/browser/components/tabbrowser/content/tab.js
|
+++ b/browser/components/tabbrowser/content/tab.js
|
||||||
@@ -21,6 +21,7 @@
|
@@ -21,6 +21,7 @@
|
||||||
|
@ -21,7 +21,7 @@ index f43ab1cf6257ff1a9c9aa522a0180fd9bbfe4036..d9714c46de860243b06af7e8343d36b1
|
||||||
</hbox>
|
</hbox>
|
||||||
</stack>
|
</stack>
|
||||||
`;
|
`;
|
||||||
@@ -180,7 +183,7 @@
|
@@ -175,7 +178,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
set _visuallySelected(val) {
|
set _visuallySelected(val) {
|
||||||
|
@ -30,7 +30,7 @@ index f43ab1cf6257ff1a9c9aa522a0180fd9bbfe4036..d9714c46de860243b06af7e8343d36b1
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -216,7 +219,7 @@
|
@@ -211,7 +214,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
get visible() {
|
get visible() {
|
||||||
|
@ -39,7 +39,7 @@ index f43ab1cf6257ff1a9c9aa522a0180fd9bbfe4036..d9714c46de860243b06af7e8343d36b1
|
||||||
}
|
}
|
||||||
|
|
||||||
get hidden() {
|
get hidden() {
|
||||||
@@ -287,7 +290,7 @@
|
@@ -282,7 +285,7 @@
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ index f43ab1cf6257ff1a9c9aa522a0180fd9bbfe4036..d9714c46de860243b06af7e8343d36b1
|
||||||
}
|
}
|
||||||
|
|
||||||
get lastAccessed() {
|
get lastAccessed() {
|
||||||
@@ -459,6 +462,8 @@
|
@@ -454,6 +457,8 @@
|
||||||
this.style.MozUserFocus = "ignore";
|
this.style.MozUserFocus = "ignore";
|
||||||
} else if (
|
} else if (
|
||||||
event.target.classList.contains("tab-close-button") ||
|
event.target.classList.contains("tab-close-button") ||
|
||||||
|
@ -57,18 +57,7 @@ index f43ab1cf6257ff1a9c9aa522a0180fd9bbfe4036..d9714c46de860243b06af7e8343d36b1
|
||||||
event.target.classList.contains("tab-icon-overlay") ||
|
event.target.classList.contains("tab-icon-overlay") ||
|
||||||
event.target.classList.contains("tab-audio-button")
|
event.target.classList.contains("tab-audio-button")
|
||||||
) {
|
) {
|
||||||
@@ -513,6 +518,10 @@
|
@@ -554,6 +559,7 @@
|
||||||
this.style.MozUserFocus = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
+ get glanceTab() {
|
|
||||||
+ return this.querySelector("tab[zen-glance-tab]");
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
on_click(event) {
|
|
||||||
if (event.button != 0) {
|
|
||||||
return;
|
|
||||||
@@ -559,6 +568,7 @@
|
|
||||||
telemetrySource: lazy.TabMetrics.METRIC_SOURCE.TAB_STRIP,
|
telemetrySource: lazy.TabMetrics.METRIC_SOURCE.TAB_STRIP,
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
@ -76,7 +65,7 @@ index f43ab1cf6257ff1a9c9aa522a0180fd9bbfe4036..d9714c46de860243b06af7e8343d36b1
|
||||||
gBrowser.removeTab(this, {
|
gBrowser.removeTab(this, {
|
||||||
animate: true,
|
animate: true,
|
||||||
triggeringEvent: event,
|
triggeringEvent: event,
|
||||||
@@ -569,6 +579,14 @@
|
@@ -564,6 +570,14 @@
|
||||||
// (see tabbrowser-tabs 'click' handler).
|
// (see tabbrowser-tabs 'click' handler).
|
||||||
gBrowser.tabContainer._blockDblClick = true;
|
gBrowser.tabContainer._blockDblClick = true;
|
||||||
}
|
}
|
||||||
|
@ -91,7 +80,7 @@ index f43ab1cf6257ff1a9c9aa522a0180fd9bbfe4036..d9714c46de860243b06af7e8343d36b1
|
||||||
}
|
}
|
||||||
|
|
||||||
on_dblclick(event) {
|
on_dblclick(event) {
|
||||||
@@ -592,6 +610,8 @@
|
@@ -587,6 +601,8 @@
|
||||||
animate: true,
|
animate: true,
|
||||||
triggeringEvent: event,
|
triggeringEvent: event,
|
||||||
});
|
});
|
||||||
|
|
|
@ -1,11 +1,15 @@
|
||||||
diff --git a/browser/components/tabbrowser/content/tabbrowser.js b/browser/components/tabbrowser/content/tabbrowser.js
|
diff --git a/browser/components/tabbrowser/content/tabbrowser.js b/browser/components/tabbrowser/content/tabbrowser.js
|
||||||
index d5aa64842a35c6697263c63fd3a0571b64b01344..14f5bc046f2e54109bd3fd0402a8f8b598a513c2 100644
|
index 6dece2b9d0462d90a28e75350ce983d87816ef73..fc09d86f76ce3de8ecc2731450681069b17d16d7 100644
|
||||||
--- a/browser/components/tabbrowser/content/tabbrowser.js
|
--- a/browser/components/tabbrowser/content/tabbrowser.js
|
||||||
+++ b/browser/components/tabbrowser/content/tabbrowser.js
|
+++ b/browser/components/tabbrowser/content/tabbrowser.js
|
||||||
@@ -413,11 +413,41 @@
|
@@ -415,11 +415,58 @@
|
||||||
return this.tabContainer.visibleTabs;
|
return this.tabContainer.visibleTabs;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
+ zenInsertTabAtIndex(...args) {
|
||||||
|
+ return this.#insertTabAtElementIndex(...args);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
+ get _numVisiblePinTabsWithoutCollapsed() {
|
+ get _numVisiblePinTabsWithoutCollapsed() {
|
||||||
+ let i = 0;
|
+ let i = 0;
|
||||||
+ for (let item of this.tabContainer.ariaFocusableItems) {
|
+ for (let item of this.tabContainer.ariaFocusableItems) {
|
||||||
|
@ -33,6 +37,19 @@ index d5aa64842a35c6697263c63fd3a0571b64b01344..14f5bc046f2e54109bd3fd0402a8f8b5
|
||||||
+ }
|
+ }
|
||||||
+ return i;
|
+ return i;
|
||||||
+ }
|
+ }
|
||||||
|
+
|
||||||
|
+ get _numZenVisibleEssentials() {
|
||||||
|
+ let i = 0;
|
||||||
|
+ for (let tab of this.tabs) {
|
||||||
|
+ if (!tab.hasAttribute("zen-essential") && !tab.hasAttribute("zen-glance-tab")) {
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ if (!tab.hidden) {
|
||||||
|
+ i += !tab.hasAttribute("zen-glance-tab");
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ return i;
|
||||||
|
+ }
|
||||||
+
|
+
|
||||||
get pinnedTabCount() {
|
get pinnedTabCount() {
|
||||||
- for (var i = 0; i < this.tabs.length; i++) {
|
- for (var i = 0; i < this.tabs.length; i++) {
|
||||||
|
@ -46,15 +63,15 @@ index d5aa64842a35c6697263c63fd3a0571b64b01344..14f5bc046f2e54109bd3fd0402a8f8b5
|
||||||
}
|
}
|
||||||
return i;
|
return i;
|
||||||
}
|
}
|
||||||
@@ -569,6 +599,7 @@
|
@@ -571,6 +618,7 @@
|
||||||
this.tabpanels.appendChild(panel);
|
this.tabpanels.appendChild(panel);
|
||||||
|
|
||||||
let tab = this.tabs[0];
|
let tab = this.tabs[0];
|
||||||
+ gZenWorkspaces.handleInitialTab(tab, (!remoteType || remoteType === E10SUtils.PRIVILEGEDABOUT_REMOTE_TYPE) && !gZenUIManager.testingEnabled);
|
+ ZenWorkspaces.handleInitialTab(tab, (!remoteType || remoteType === E10SUtils.PRIVILEGEDABOUT_REMOTE_TYPE) && !gZenUIManager.testingEnabled);
|
||||||
tab.linkedPanel = uniqueId;
|
tab.linkedPanel = uniqueId;
|
||||||
this._selectedTab = tab;
|
this._selectedTab = tab;
|
||||||
this._selectedBrowser = browser;
|
this._selectedBrowser = browser;
|
||||||
@@ -834,11 +865,13 @@
|
@@ -836,11 +884,13 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
this.showTab(aTab);
|
this.showTab(aTab);
|
||||||
|
@ -64,14 +81,14 @@ index d5aa64842a35c6697263c63fd3a0571b64b01344..14f5bc046f2e54109bd3fd0402a8f8b5
|
||||||
+ if (this.tabContainer.verticalMode && !handled) {
|
+ if (this.tabContainer.verticalMode && !handled) {
|
||||||
this.#handleTabMove(aTab, () =>
|
this.#handleTabMove(aTab, () =>
|
||||||
- this.verticalPinnedTabsContainer.appendChild(aTab)
|
- this.verticalPinnedTabsContainer.appendChild(aTab)
|
||||||
+ aTab.hasAttribute("zen-essential") ? gZenWorkspaces.getEssentialsSection(aTab).appendChild(aTab) : this.verticalPinnedTabsContainer.insertBefore(aTab, this.verticalPinnedTabsContainer.lastChild)
|
+ aTab.hasAttribute("zen-essential") ? ZenWorkspaces.getEssentialsSection(aTab).appendChild(aTab) : this.verticalPinnedTabsContainer.insertBefore(aTab, this.verticalPinnedTabsContainer.lastChild)
|
||||||
);
|
);
|
||||||
- } else {
|
- } else {
|
||||||
+ } else if (!handled) {
|
+ } else if (!handled) {
|
||||||
this.moveTabTo(aTab, {
|
this.moveTabTo(aTab, {
|
||||||
tabIndex: this.pinnedTabCount,
|
tabIndex: this.pinnedTabCount,
|
||||||
forceUngrouped: true,
|
forceUngrouped: true,
|
||||||
@@ -855,12 +888,15 @@
|
@@ -857,12 +907,15 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.tabContainer.verticalMode) {
|
if (this.tabContainer.verticalMode) {
|
||||||
|
@ -83,12 +100,12 @@ index d5aa64842a35c6697263c63fd3a0571b64b01344..14f5bc046f2e54109bd3fd0402a8f8b5
|
||||||
aTab.removeAttribute("pinned");
|
aTab.removeAttribute("pinned");
|
||||||
- this.tabContainer.arrowScrollbox.prepend(aTab);
|
- this.tabContainer.arrowScrollbox.prepend(aTab);
|
||||||
+ if (!handled) {
|
+ if (!handled) {
|
||||||
+ gZenWorkspaces.activeWorkspaceStrip.prepend(aTab);
|
+ ZenWorkspaces.activeWorkspaceStrip.prepend(aTab);
|
||||||
+ }
|
+ }
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
this.moveTabTo(aTab, {
|
this.moveTabTo(aTab, {
|
||||||
@@ -1044,6 +1080,8 @@
|
@@ -1046,6 +1099,8 @@
|
||||||
|
|
||||||
let LOCAL_PROTOCOLS = ["chrome:", "about:", "resource:", "data:"];
|
let LOCAL_PROTOCOLS = ["chrome:", "about:", "resource:", "data:"];
|
||||||
|
|
||||||
|
@ -97,7 +114,7 @@ index d5aa64842a35c6697263c63fd3a0571b64b01344..14f5bc046f2e54109bd3fd0402a8f8b5
|
||||||
if (
|
if (
|
||||||
aIconURL &&
|
aIconURL &&
|
||||||
!aLoadingPrincipal &&
|
!aLoadingPrincipal &&
|
||||||
@@ -1054,6 +1092,9 @@
|
@@ -1056,6 +1111,9 @@
|
||||||
);
|
);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -107,7 +124,7 @@ index d5aa64842a35c6697263c63fd3a0571b64b01344..14f5bc046f2e54109bd3fd0402a8f8b5
|
||||||
|
|
||||||
let browser = this.getBrowserForTab(aTab);
|
let browser = this.getBrowserForTab(aTab);
|
||||||
browser.mIconURL = aIconURL;
|
browser.mIconURL = aIconURL;
|
||||||
@@ -1303,6 +1344,7 @@
|
@@ -1305,6 +1363,7 @@
|
||||||
if (!this._previewMode) {
|
if (!this._previewMode) {
|
||||||
newTab.recordTimeFromUnloadToReload();
|
newTab.recordTimeFromUnloadToReload();
|
||||||
newTab.updateLastAccessed();
|
newTab.updateLastAccessed();
|
||||||
|
@ -115,7 +132,7 @@ index d5aa64842a35c6697263c63fd3a0571b64b01344..14f5bc046f2e54109bd3fd0402a8f8b5
|
||||||
oldTab.updateLastAccessed();
|
oldTab.updateLastAccessed();
|
||||||
// if this is the foreground window, update the last-seen timestamps.
|
// if this is the foreground window, update the last-seen timestamps.
|
||||||
if (this.ownerGlobal == BrowserWindowTracker.getTopWindow()) {
|
if (this.ownerGlobal == BrowserWindowTracker.getTopWindow()) {
|
||||||
@@ -1455,6 +1497,9 @@
|
@@ -1457,6 +1516,9 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
let activeEl = document.activeElement;
|
let activeEl = document.activeElement;
|
||||||
|
@ -125,7 +142,7 @@ index d5aa64842a35c6697263c63fd3a0571b64b01344..14f5bc046f2e54109bd3fd0402a8f8b5
|
||||||
// If focus is on the old tab, move it to the new tab.
|
// If focus is on the old tab, move it to the new tab.
|
||||||
if (activeEl == oldTab) {
|
if (activeEl == oldTab) {
|
||||||
newTab.focus();
|
newTab.focus();
|
||||||
@@ -1778,7 +1823,8 @@
|
@@ -1780,7 +1842,8 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
_setTabLabel(aTab, aLabel, { beforeTabOpen, isContentTitle, isURL } = {}) {
|
_setTabLabel(aTab, aLabel, { beforeTabOpen, isContentTitle, isURL } = {}) {
|
||||||
|
@ -135,7 +152,7 @@ index d5aa64842a35c6697263c63fd3a0571b64b01344..14f5bc046f2e54109bd3fd0402a8f8b5
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1886,7 +1932,7 @@
|
@@ -1888,7 +1951,7 @@
|
||||||
newIndex = this.selectedTab._tPos + 1;
|
newIndex = this.selectedTab._tPos + 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -144,7 +161,7 @@ index d5aa64842a35c6697263c63fd3a0571b64b01344..14f5bc046f2e54109bd3fd0402a8f8b5
|
||||||
if (this.isTabGroupLabel(targetTab)) {
|
if (this.isTabGroupLabel(targetTab)) {
|
||||||
throw new Error(
|
throw new Error(
|
||||||
"Replacing a tab group label with a tab is not supported"
|
"Replacing a tab group label with a tab is not supported"
|
||||||
@@ -2150,6 +2196,7 @@
|
@@ -2152,6 +2215,7 @@
|
||||||
uriIsAboutBlank,
|
uriIsAboutBlank,
|
||||||
userContextId,
|
userContextId,
|
||||||
skipLoad,
|
skipLoad,
|
||||||
|
@ -152,7 +169,7 @@ index d5aa64842a35c6697263c63fd3a0571b64b01344..14f5bc046f2e54109bd3fd0402a8f8b5
|
||||||
} = {}) {
|
} = {}) {
|
||||||
let b = document.createXULElement("browser");
|
let b = document.createXULElement("browser");
|
||||||
// Use the JSM global to create the permanentKey, so that if the
|
// Use the JSM global to create the permanentKey, so that if the
|
||||||
@@ -2223,8 +2270,7 @@
|
@@ -2225,8 +2289,7 @@
|
||||||
// we use a different attribute name for this?
|
// we use a different attribute name for this?
|
||||||
b.setAttribute("name", name);
|
b.setAttribute("name", name);
|
||||||
}
|
}
|
||||||
|
@ -162,7 +179,7 @@ index d5aa64842a35c6697263c63fd3a0571b64b01344..14f5bc046f2e54109bd3fd0402a8f8b5
|
||||||
b.setAttribute("transparent", "true");
|
b.setAttribute("transparent", "true");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2389,7 +2435,7 @@
|
@@ -2391,7 +2454,7 @@
|
||||||
|
|
||||||
let panel = this.getPanel(browser);
|
let panel = this.getPanel(browser);
|
||||||
let uniqueId = this._generateUniquePanelID();
|
let uniqueId = this._generateUniquePanelID();
|
||||||
|
@ -171,7 +188,7 @@ index d5aa64842a35c6697263c63fd3a0571b64b01344..14f5bc046f2e54109bd3fd0402a8f8b5
|
||||||
aTab.linkedPanel = uniqueId;
|
aTab.linkedPanel = uniqueId;
|
||||||
|
|
||||||
// Inject the <browser> into the DOM if necessary.
|
// Inject the <browser> into the DOM if necessary.
|
||||||
@@ -2448,8 +2494,8 @@
|
@@ -2450,8 +2513,8 @@
|
||||||
// If we transitioned from one browser to two browsers, we need to set
|
// If we transitioned from one browser to two browsers, we need to set
|
||||||
// hasSiblings=false on both the existing browser and the new browser.
|
// hasSiblings=false on both the existing browser and the new browser.
|
||||||
if (this.tabs.length == 2) {
|
if (this.tabs.length == 2) {
|
||||||
|
@ -182,7 +199,7 @@ index d5aa64842a35c6697263c63fd3a0571b64b01344..14f5bc046f2e54109bd3fd0402a8f8b5
|
||||||
} else {
|
} else {
|
||||||
aTab.linkedBrowser.browsingContext.hasSiblings = this.tabs.length > 1;
|
aTab.linkedBrowser.browsingContext.hasSiblings = this.tabs.length > 1;
|
||||||
}
|
}
|
||||||
@@ -2680,6 +2726,7 @@
|
@@ -2679,6 +2742,7 @@
|
||||||
schemelessInput,
|
schemelessInput,
|
||||||
hasValidUserGestureActivation = false,
|
hasValidUserGestureActivation = false,
|
||||||
textDirectiveUserActivation = false,
|
textDirectiveUserActivation = false,
|
||||||
|
@ -190,20 +207,20 @@ index d5aa64842a35c6697263c63fd3a0571b64b01344..14f5bc046f2e54109bd3fd0402a8f8b5
|
||||||
} = {}
|
} = {}
|
||||||
) {
|
) {
|
||||||
// all callers of addTab that pass a params object need to pass
|
// all callers of addTab that pass a params object need to pass
|
||||||
@@ -2690,6 +2737,12 @@
|
@@ -2689,6 +2753,12 @@
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
+ let hasZenDefaultUserContextId = false;
|
+ let hasZenDefaultUserContextId = false;
|
||||||
+ let zenForcedWorkspaceId = undefined;
|
+ let zenForcedWorkspaceId = undefined;
|
||||||
+ if (typeof gZenWorkspaces !== "undefined" && !_forZenEmptyTab) {
|
+ if (typeof ZenWorkspaces !== "undefined" && !_forZenEmptyTab) {
|
||||||
+ [userContextId, hasZenDefaultUserContextId, zenForcedWorkspaceId] = gZenWorkspaces.getContextIdIfNeeded(userContextId, fromExternal, allowInheritPrincipal);
|
+ [userContextId, hasZenDefaultUserContextId, zenForcedWorkspaceId] = ZenWorkspaces.getContextIdIfNeeded(userContextId, fromExternal, allowInheritPrincipal);
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
if (!UserInteraction.running("browser.tabs.opening", window)) {
|
if (!UserInteraction.running("browser.tabs.opening", window)) {
|
||||||
UserInteraction.start("browser.tabs.opening", "initting", window);
|
UserInteraction.start("browser.tabs.opening", "initting", window);
|
||||||
}
|
}
|
||||||
@@ -2753,6 +2806,16 @@
|
@@ -2752,6 +2822,16 @@
|
||||||
noInitialLabel,
|
noInitialLabel,
|
||||||
skipBackgroundNotify,
|
skipBackgroundNotify,
|
||||||
});
|
});
|
||||||
|
@ -218,9 +235,9 @@ index d5aa64842a35c6697263c63fd3a0571b64b01344..14f5bc046f2e54109bd3fd0402a8f8b5
|
||||||
+ t.setAttribute("zen-empty-tab", "true");
|
+ t.setAttribute("zen-empty-tab", "true");
|
||||||
+ }
|
+ }
|
||||||
if (insertTab) {
|
if (insertTab) {
|
||||||
// Insert the tab into the tab container in the correct position.
|
if (typeof index == "number") {
|
||||||
// For now, we support `index` as an alias for `tabIndex`.
|
elementIndex = this.#tabIndexToElementIndex(index);
|
||||||
@@ -2783,6 +2846,7 @@
|
@@ -2779,6 +2859,7 @@
|
||||||
openWindowInfo,
|
openWindowInfo,
|
||||||
skipLoad,
|
skipLoad,
|
||||||
triggeringRemoteType,
|
triggeringRemoteType,
|
||||||
|
@ -228,35 +245,45 @@ index d5aa64842a35c6697263c63fd3a0571b64b01344..14f5bc046f2e54109bd3fd0402a8f8b5
|
||||||
}));
|
}));
|
||||||
|
|
||||||
if (focusUrlBar) {
|
if (focusUrlBar) {
|
||||||
@@ -2902,6 +2966,12 @@
|
@@ -2898,6 +2979,9 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
+ if (typeof window.gZenVerticalTabsManager !== "undefined") {
|
+ if (typeof window.gZenVerticalTabsManager !== "undefined") {
|
||||||
+ gZenVerticalTabsManager.animateTab(t);
|
+ gZenVerticalTabsManager.animateTab(t);
|
||||||
+ }
|
|
||||||
+ if (typeof window.gZenCompactModeManager !== "undefined" && !skipLoad && insertTab) {
|
|
||||||
+ gZenCompactModeManager._onTabOpen(t, inBackground);
|
|
||||||
+ }
|
+ }
|
||||||
// Additionally send pinned tab events
|
// Additionally send pinned tab events
|
||||||
if (pinned) {
|
if (pinned) {
|
||||||
this._notifyPinnedStatus(t);
|
this._notifyPinnedStatus(t);
|
||||||
@@ -2990,10 +3060,10 @@
|
@@ -2945,12 +3029,15 @@
|
||||||
isAdoptingGroup = false,
|
* @param {string} [label=]
|
||||||
|
* @returns {MozTabbrowserTabGroup}
|
||||||
|
*/
|
||||||
|
- _createTabGroup(id, color, collapsed, label = "") {
|
||||||
|
+ _createTabGroup(id, color, collapsed, label = "", pinned = false, essential = false, splitViewGroup = false) {
|
||||||
|
let group = document.createXULElement("tab-group", { is: "tab-group" });
|
||||||
|
group.id = id;
|
||||||
|
group.collapsed = collapsed;
|
||||||
|
group.color = color;
|
||||||
|
group.label = label;
|
||||||
|
+ group.pinned = pinned;
|
||||||
|
+ group.essential = essential;
|
||||||
|
+ if (splitViewGroup) group.setAttribute('split-view-group', true);
|
||||||
|
return group;
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -2993,6 +3080,7 @@
|
||||||
|
insertBefore = null,
|
||||||
isUserTriggered = false,
|
isUserTriggered = false,
|
||||||
telemetryUserCreateSource = "unknown",
|
telemetryUserCreateSource = "unknown",
|
||||||
+ forSplitView = false,
|
+ forSplitView = false,
|
||||||
} = {}
|
} = {}
|
||||||
) {
|
) {
|
||||||
if (!tabs?.length) {
|
if (!tabs?.length) {
|
||||||
- throw new Error("Cannot create tab group with zero tabs");
|
@@ -3011,7 +3099,12 @@
|
||||||
|
id = `${Date.now()}-${Math.round(Math.random() * 100)}`;
|
||||||
}
|
}
|
||||||
|
let group = this._createTabGroup(id, color, false, label);
|
||||||
if (!color) {
|
|
||||||
@@ -3014,7 +3084,12 @@
|
|
||||||
label,
|
|
||||||
isAdoptingGroup
|
|
||||||
);
|
|
||||||
- this.tabContainer.insertBefore(
|
- this.tabContainer.insertBefore(
|
||||||
+ if (forSplitView) {
|
+ if (forSplitView) {
|
||||||
+ group.setAttribute('split-view-group', true);
|
+ group.setAttribute('split-view-group', true);
|
||||||
|
@ -267,7 +294,7 @@ index d5aa64842a35c6697263c63fd3a0571b64b01344..14f5bc046f2e54109bd3fd0402a8f8b5
|
||||||
group,
|
group,
|
||||||
insertBefore?.group ?? insertBefore
|
insertBefore?.group ?? insertBefore
|
||||||
);
|
);
|
||||||
@@ -3303,6 +3378,7 @@
|
@@ -3342,6 +3435,7 @@
|
||||||
openWindowInfo,
|
openWindowInfo,
|
||||||
skipLoad,
|
skipLoad,
|
||||||
triggeringRemoteType,
|
triggeringRemoteType,
|
||||||
|
@ -275,7 +302,7 @@ index d5aa64842a35c6697263c63fd3a0571b64b01344..14f5bc046f2e54109bd3fd0402a8f8b5
|
||||||
}
|
}
|
||||||
) {
|
) {
|
||||||
// If we don't have a preferred remote type (or it is `NOT_REMOTE`), and
|
// If we don't have a preferred remote type (or it is `NOT_REMOTE`), and
|
||||||
@@ -3372,6 +3448,7 @@
|
@@ -3411,6 +3505,7 @@
|
||||||
openWindowInfo,
|
openWindowInfo,
|
||||||
name,
|
name,
|
||||||
skipLoad,
|
skipLoad,
|
||||||
|
@ -283,26 +310,70 @@ index d5aa64842a35c6697263c63fd3a0571b64b01344..14f5bc046f2e54109bd3fd0402a8f8b5
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3560,7 +3637,7 @@
|
@@ -3589,6 +3684,30 @@
|
||||||
// Add a new tab if needed.
|
) {
|
||||||
if (!tab) {
|
tabWasReused = true;
|
||||||
let createLazyBrowser =
|
tab = this.selectedTab;
|
||||||
- restoreTabsLazily && !select && !tabData.pinned;
|
+ if (tabData.zenWorkspace) {
|
||||||
+ restoreTabsLazily && !tabData.pinned;
|
+ tab.setAttribute("zen-workspace-id", tabData.zenWorkspace);
|
||||||
|
+ }
|
||||||
let url = "about:blank";
|
+ if (tabData.zenIsEmpty) {
|
||||||
if (tabData.entries?.length) {
|
+ tab.setAttribute("zen-empty-tab", "true");
|
||||||
@@ -3598,7 +3675,8 @@
|
+ }
|
||||||
|
+ if (tabData.zenHasStaticLabel) {
|
||||||
|
+ tab.setAttribute("zen-has-static-label", "true");
|
||||||
|
+ }
|
||||||
|
+ if (tabData.zenPinnedId) {
|
||||||
|
+ tab.setAttribute("zen-pin-id", tabData.zenPinnedId);
|
||||||
|
+ }
|
||||||
|
+ if (tabData.zenTabId) {
|
||||||
|
+ tab.setAttribute("zen-tab-id", tabData.zenTabId);
|
||||||
|
+ }
|
||||||
|
+ if (tabData.zenEssential) {
|
||||||
|
+ tab.setAttribute("zen-essential", "true");
|
||||||
|
+ }
|
||||||
|
+ if (tabData.zenDefaultUserContextId) {
|
||||||
|
+ tab.setAttribute("zenDefaultUserContextId", "true");
|
||||||
|
+ }
|
||||||
|
+ if (tabData.zenPinnedEntry) {
|
||||||
|
+ tab.setAttribute("zen-pinned-entry", tabData.zenPinnedEntry);
|
||||||
|
+ }
|
||||||
|
if (!tabData.pinned) {
|
||||||
|
this.unpinTab(tab);
|
||||||
|
} else {
|
||||||
|
@@ -3637,7 +3756,30 @@
|
||||||
skipLoad: true,
|
skipLoad: true,
|
||||||
preferredRemoteType,
|
preferredRemoteType,
|
||||||
});
|
});
|
||||||
-
|
-
|
||||||
+ tab._originalUrl = url;
|
+ if (tabData.zenWorkspace) {
|
||||||
+ gZenSessionStore.restoreInitialTabData(tab, tabData);
|
+ tab.setAttribute("zen-workspace-id", tabData.zenWorkspace);
|
||||||
|
+ }
|
||||||
|
+ if (tabData.zenPinnedId) {
|
||||||
|
+ tab.setAttribute("zen-pin-id", tabData.zenPinnedId);
|
||||||
|
+ }
|
||||||
|
+ if (tabData.zenIsEmpty) {
|
||||||
|
+ tab.setAttribute("zen-empty-tab", "true");
|
||||||
|
+ }
|
||||||
|
+ if (tabData.zenHasStaticLabel) {
|
||||||
|
+ tab.setAttribute("zen-has-static-label", "true");
|
||||||
|
+ }
|
||||||
|
+ if (tabData.zenTabId) {
|
||||||
|
+ tab.setAttribute("zen-tab-id", tabData.zenTabId);
|
||||||
|
+ }
|
||||||
|
+ if (tabData.zenEssential) {
|
||||||
|
+ tab.setAttribute("zen-essential", "true");
|
||||||
|
+ }
|
||||||
|
+ if (tabData.zenDefaultUserContextId) {
|
||||||
|
+ tab.setAttribute("zenDefaultUserContextId", "true");
|
||||||
|
+ }
|
||||||
|
+ if (tabData.zenPinnedEntry) {
|
||||||
|
+ tab.setAttribute("zen-pinned-entry", tabData.zenPinnedEntry);
|
||||||
|
+ }
|
||||||
if (select) {
|
if (select) {
|
||||||
tabToSelect = tab;
|
tabToSelect = tab;
|
||||||
}
|
}
|
||||||
@@ -3622,7 +3700,8 @@
|
@@ -3661,7 +3803,8 @@
|
||||||
// needs calling:
|
// needs calling:
|
||||||
shouldUpdateForPinnedTabs = true;
|
shouldUpdateForPinnedTabs = true;
|
||||||
}
|
}
|
||||||
|
@ -312,7 +383,7 @@ index d5aa64842a35c6697263c63fd3a0571b64b01344..14f5bc046f2e54109bd3fd0402a8f8b5
|
||||||
let { groupId } = tabData;
|
let { groupId } = tabData;
|
||||||
const tabGroup = tabGroupWorkingData.get(groupId);
|
const tabGroup = tabGroupWorkingData.get(groupId);
|
||||||
// if a tab refers to a tab group we don't know, skip any group
|
// if a tab refers to a tab group we don't know, skip any group
|
||||||
@@ -3636,7 +3715,10 @@
|
@@ -3675,7 +3818,10 @@
|
||||||
tabGroup.stateData.id,
|
tabGroup.stateData.id,
|
||||||
tabGroup.stateData.color,
|
tabGroup.stateData.color,
|
||||||
tabGroup.stateData.collapsed,
|
tabGroup.stateData.collapsed,
|
||||||
|
@ -324,64 +395,47 @@ index d5aa64842a35c6697263c63fd3a0571b64b01344..14f5bc046f2e54109bd3fd0402a8f8b5
|
||||||
);
|
);
|
||||||
tabsFragment.appendChild(tabGroup.node);
|
tabsFragment.appendChild(tabGroup.node);
|
||||||
}
|
}
|
||||||
@@ -3684,8 +3766,16 @@
|
@@ -3723,8 +3869,15 @@
|
||||||
// to remove the old selected tab.
|
// to remove the old selected tab.
|
||||||
if (tabToSelect) {
|
if (tabToSelect) {
|
||||||
let leftoverTab = this.selectedTab;
|
let leftoverTab = this.selectedTab;
|
||||||
- this.selectedTab = tabToSelect;
|
+ if (tabToSelect.pinned) {
|
||||||
- this.removeTab(leftoverTab);
|
+ ZenWorkspaces._tabToRemoveForEmpty = leftoverTab;
|
||||||
+ gZenWorkspaces._tabToRemoveForEmpty = leftoverTab;
|
+ } else {
|
||||||
+ if (Services.prefs.getBoolPref("zen.workspaces.continue-where-left-off")) {
|
this.selectedTab = tabToSelect;
|
||||||
+ gZenWorkspaces._tabToSelect = selectTab - 1;
|
this.removeTab(leftoverTab);
|
||||||
+ }
|
|
||||||
+ if (gZenWorkspaces._initialTab && !gZenVerticalTabsManager._canReplaceNewTab) {
|
|
||||||
+ gZenWorkspaces._initialTab._shouldRemove = true;
|
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+ else {
|
+ else {
|
||||||
+ gZenWorkspaces._tabToRemoveForEmpty = this.selectedTab;
|
+ this.selectedTab._possiblyEmpty = this.selectedTab.isEmpty; // Not needed, but just in case.
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tabs.length > 1 || !tabs[0].selected) {
|
if (tabs.length > 1 || !tabs[0].selected) {
|
||||||
@@ -3881,7 +3971,7 @@
|
@@ -3912,7 +4065,7 @@
|
||||||
// Ensure we have an index if one was not provided.
|
// Ensure we have an index if one was not provided.
|
||||||
if (typeof elementIndex != "number" && typeof tabIndex != "number") {
|
if (typeof index != "number") {
|
||||||
// Move the new tab after another tab if needed, to the end otherwise.
|
// Move the new tab after another tab if needed, to the end otherwise.
|
||||||
- elementIndex = Infinity;
|
- index = Infinity;
|
||||||
+ elementIndex = Services.prefs.getBoolPref("zen.view.show-newtab-button-top") ? this._numVisiblePinTabsWithoutCollapsed : Infinity;
|
+ index = Services.prefs.getBoolPref("zen.view.show-newtab-button-top") ? this.pinnedTabCount : Infinity;
|
||||||
if (
|
if (
|
||||||
!bulkOrderedOpen &&
|
!bulkOrderedOpen &&
|
||||||
((openerTab &&
|
((openerTab &&
|
||||||
@@ -3904,7 +3994,7 @@
|
@@ -3958,18 +4111,18 @@
|
||||||
) {
|
|
||||||
elementIndex = Infinity;
|
|
||||||
} else if (previousTab.visible) {
|
|
||||||
- elementIndex = previousTab.elementIndex + 1;
|
|
||||||
+ elementIndex = (typeof previousTab.elementIndex === 'undefined') ? index : (previousTab.elementIndex + 1);
|
|
||||||
} else if (previousTab == FirefoxViewHandler.tab) {
|
|
||||||
elementIndex = 0;
|
|
||||||
}
|
|
||||||
@@ -3932,14 +4022,14 @@
|
|
||||||
}
|
|
||||||
// Ensure index is within bounds.
|
// Ensure index is within bounds.
|
||||||
if (tab.pinned) {
|
if (tab.pinned) {
|
||||||
- index = Math.max(index, 0);
|
- index = Math.max(index, 0);
|
||||||
- index = Math.min(index, this.pinnedTabCount);
|
- index = Math.min(index, this.pinnedTabCount);
|
||||||
+ index = Math.max(index, tab.hasAttribute("zen-essential") ? 0 : this._numZenEssentials);
|
+ index = Math.max(index, tab.hasAttribute("zen-essential") ? 0 : this._numZenEssentials);
|
||||||
+ index = Math.min(index, tab.hasAttribute("zen-essential") ? this._numZenEssentials : this._numVisiblePinTabsWithoutCollapsed);
|
+ index = Math.min(index, tab.hasAttribute("zen-essential") ? this._numZenEssentials : this.pinnedTabCount);
|
||||||
} else {
|
} else {
|
||||||
- index = Math.max(index, this.pinnedTabCount);
|
index = Math.max(index, this.pinnedTabCount);
|
||||||
+ index = Math.max(index, this._numVisiblePinTabsWithoutCollapsed);
|
index = Math.min(index, this.tabContainer.ariaFocusableItems.length);
|
||||||
index = Math.min(index, allItems.length);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/** @type {MozTabbrowserTab|undefined} */
|
/** @type {MozTabbrowserTab|undefined} */
|
||||||
- let itemAfter = allItems.at(index);
|
- let itemAfter = this.tabContainer.ariaFocusableItems.at(index);
|
||||||
+ let itemAfter = gZenGlanceManager.getTabOrGlanceParent(allItems.at(index));
|
+ let itemAfter = this.tabContainer.ariaFocusableItems.filter(tab => !tab.hasAttribute("zen-glance-tab")).at(index);
|
||||||
|
|
||||||
// Prevent a flash of unstyled content by setting up the tab content
|
|
||||||
// and inherited attributes before appending it (see Bug 1592054):
|
|
||||||
@@ -3947,7 +4037,7 @@
|
|
||||||
|
|
||||||
this.tabContainer._invalidateCachedTabs();
|
this.tabContainer._invalidateCachedTabs();
|
||||||
|
|
||||||
- if (tabGroup) {
|
- if (tabGroup) {
|
||||||
|
@ -389,7 +443,7 @@ index d5aa64842a35c6697263c63fd3a0571b64b01344..14f5bc046f2e54109bd3fd0402a8f8b5
|
||||||
if (this.isTab(itemAfter) && itemAfter.group == tabGroup) {
|
if (this.isTab(itemAfter) && itemAfter.group == tabGroup) {
|
||||||
// Place at the front of, or between tabs in, the same tab group
|
// Place at the front of, or between tabs in, the same tab group
|
||||||
this.tabContainer.insertBefore(tab, itemAfter);
|
this.tabContainer.insertBefore(tab, itemAfter);
|
||||||
@@ -4268,6 +4358,9 @@
|
@@ -4290,6 +4443,9 @@
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -399,7 +453,7 @@ index d5aa64842a35c6697263c63fd3a0571b64b01344..14f5bc046f2e54109bd3fd0402a8f8b5
|
||||||
this.removeTabs(selectedTabs, { telemetrySource });
|
this.removeTabs(selectedTabs, { telemetrySource });
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -4520,6 +4613,7 @@
|
@@ -4542,6 +4698,7 @@
|
||||||
telemetrySource,
|
telemetrySource,
|
||||||
} = {}
|
} = {}
|
||||||
) {
|
) {
|
||||||
|
@ -407,7 +461,7 @@ index d5aa64842a35c6697263c63fd3a0571b64b01344..14f5bc046f2e54109bd3fd0402a8f8b5
|
||||||
// When 'closeWindowWithLastTab' pref is enabled, closing all tabs
|
// When 'closeWindowWithLastTab' pref is enabled, closing all tabs
|
||||||
// can be considered equivalent to closing the window.
|
// can be considered equivalent to closing the window.
|
||||||
if (
|
if (
|
||||||
@@ -4604,6 +4698,7 @@
|
@@ -4626,6 +4783,7 @@
|
||||||
if (lastToClose) {
|
if (lastToClose) {
|
||||||
this.removeTab(lastToClose, aParams);
|
this.removeTab(lastToClose, aParams);
|
||||||
}
|
}
|
||||||
|
@ -415,12 +469,20 @@ index d5aa64842a35c6697263c63fd3a0571b64b01344..14f5bc046f2e54109bd3fd0402a8f8b5
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
console.error(e);
|
console.error(e);
|
||||||
}
|
}
|
||||||
@@ -4641,6 +4736,12 @@
|
@@ -4650,6 +4808,7 @@
|
||||||
|
telemetrySource,
|
||||||
|
} = {}
|
||||||
|
) {
|
||||||
|
+ gZenUIManager.saveScrollbarState();
|
||||||
|
if (UserInteraction.running("browser.tabs.opening", window)) {
|
||||||
|
UserInteraction.finish("browser.tabs.opening", window);
|
||||||
|
}
|
||||||
|
@@ -4663,6 +4822,12 @@
|
||||||
aTab._closeTimeNoAnimTimerId = Glean.browserTabclose.timeNoAnim.start();
|
aTab._closeTimeNoAnimTimerId = Glean.browserTabclose.timeNoAnim.start();
|
||||||
}
|
}
|
||||||
|
|
||||||
+ if (gZenWorkspaces.workspaceEnabled) {
|
+ if (ZenWorkspaces.workspaceEnabled) {
|
||||||
+ let newTab = gZenWorkspaces.handleTabBeforeClose(aTab, closeWindowWithLastTab);
|
+ let newTab = ZenWorkspaces.handleTabBeforeClose(aTab);
|
||||||
+ if (newTab) {
|
+ if (newTab) {
|
||||||
+ this.selectedTab = newTab;
|
+ this.selectedTab = newTab;
|
||||||
+ }
|
+ }
|
||||||
|
@ -428,7 +490,7 @@ index d5aa64842a35c6697263c63fd3a0571b64b01344..14f5bc046f2e54109bd3fd0402a8f8b5
|
||||||
// Handle requests for synchronously removing an already
|
// Handle requests for synchronously removing an already
|
||||||
// asynchronously closing tab.
|
// asynchronously closing tab.
|
||||||
if (!animate && aTab.closing) {
|
if (!animate && aTab.closing) {
|
||||||
@@ -4655,7 +4756,9 @@
|
@@ -4677,7 +4842,9 @@
|
||||||
// frame created for it (for example, by updating the visually selected
|
// frame created for it (for example, by updating the visually selected
|
||||||
// state).
|
// state).
|
||||||
let tabWidth = window.windowUtils.getBoundsWithoutFlushing(aTab).width;
|
let tabWidth = window.windowUtils.getBoundsWithoutFlushing(aTab).width;
|
||||||
|
@ -439,86 +501,97 @@ index d5aa64842a35c6697263c63fd3a0571b64b01344..14f5bc046f2e54109bd3fd0402a8f8b5
|
||||||
if (
|
if (
|
||||||
!this._beginRemoveTab(aTab, {
|
!this._beginRemoveTab(aTab, {
|
||||||
closeWindowFastpath: true,
|
closeWindowFastpath: true,
|
||||||
@@ -4821,7 +4924,7 @@
|
@@ -4840,7 +5007,7 @@
|
||||||
closeWindowWithLastTab != null
|
closeWindowWithLastTab != null
|
||||||
? closeWindowWithLastTab
|
? closeWindowWithLastTab
|
||||||
: !window.toolbar.visible ||
|
: !window.toolbar.visible ||
|
||||||
- Services.prefs.getBoolPref("browser.tabs.closeWindowWithLastTab");
|
- Services.prefs.getBoolPref("browser.tabs.closeWindowWithLastTab");
|
||||||
+ Services.prefs.getBoolPref("browser.tabs.closeWindowWithLastTab") && !gZenWorkspaces._isClosingWindow && !gZenWorkspaces._removedByStartupPage;
|
+ Services.prefs.getBoolPref("browser.tabs.closeWindowWithLastTab") && !ZenWorkspaces._isClosingWindow && !ZenWorkspaces._removedByStartupPage;
|
||||||
|
|
||||||
if (closeWindow) {
|
if (closeWindow) {
|
||||||
// We've already called beforeunload on all the relevant tabs if we get here,
|
// We've already called beforeunload on all the relevant tabs if we get here,
|
||||||
@@ -4845,6 +4948,7 @@
|
@@ -4864,6 +5031,7 @@
|
||||||
|
|
||||||
newTab = true;
|
newTab = true;
|
||||||
}
|
}
|
||||||
+ gZenWorkspaces._removedByStartupPage = false;
|
+ ZenWorkspaces._removedByStartupPage = false;
|
||||||
aTab._endRemoveArgs = [closeWindow, newTab];
|
aTab._endRemoveArgs = [closeWindow, newTab];
|
||||||
|
|
||||||
// swapBrowsersAndCloseOther will take care of closing the window without animation.
|
// swapBrowsersAndCloseOther will take care of closing the window without animation.
|
||||||
@@ -4885,9 +4989,7 @@
|
@@ -4903,9 +5071,7 @@
|
||||||
aTab._mouseleave();
|
aTab._mouseleave();
|
||||||
|
|
||||||
if (newTab) {
|
if (newTab) {
|
||||||
- this.addTrustedTab(BROWSER_NEW_TAB_URL, {
|
- this.addTrustedTab(BROWSER_NEW_TAB_URL, {
|
||||||
- skipAnimation: true,
|
- skipAnimation: true,
|
||||||
- });
|
- });
|
||||||
+ gZenWorkspaces.selectEmptyTab(BROWSER_NEW_TAB_URL);
|
+ ZenWorkspaces.selectEmptyTab(BROWSER_NEW_TAB_URL);
|
||||||
} else {
|
} else {
|
||||||
TabBarVisibility.update();
|
TabBarVisibility.update();
|
||||||
}
|
}
|
||||||
@@ -5016,6 +5118,8 @@
|
@@ -5034,6 +5200,8 @@
|
||||||
this.tabs[i]._tPos = i;
|
this.tabs[i]._tPos = i;
|
||||||
}
|
}
|
||||||
|
|
||||||
+ gZenWorkspaces.updateTabsContainers();
|
+ ZenWorkspaces.updateTabsContainers();
|
||||||
+
|
+
|
||||||
if (!this._windowIsClosing) {
|
if (!this._windowIsClosing) {
|
||||||
if (wasPinned) {
|
if (wasPinned) {
|
||||||
this.tabContainer._positionPinnedTabs();
|
this.tabContainer._positionPinnedTabs();
|
||||||
@@ -5230,6 +5334,7 @@
|
@@ -5159,8 +5327,8 @@
|
||||||
|
return closedCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
- async explicitUnloadTabs(tabs) {
|
||||||
|
- let unloadBlocked = await this.runBeforeUnloadForTabs(tabs);
|
||||||
|
+ async explicitUnloadTabs(tabs, skipPermitUnload = false) {
|
||||||
|
+ let unloadBlocked = skipPermitUnload ? false : await this.runBeforeUnloadForTabs(tabs);
|
||||||
|
if (unloadBlocked) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
@@ -5247,6 +5415,7 @@
|
||||||
|
aExcludeTabs.push(FirefoxViewHandler.tab);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
+ aExcludeTabs.push(...ZenWorkspaces.getTabsToExclude(aTab));
|
||||||
let excludeTabs = new Set(aExcludeTabs);
|
let excludeTabs = new Set(aExcludeTabs);
|
||||||
+ gZenWorkspaces.getTabsToExclude(aTab).forEach(tab => excludeTabs.add(tab));
|
|
||||||
|
|
||||||
// If this tab has a successor, it should be selectable, since
|
// If this tab has a successor, it should be selectable, since
|
||||||
// hiding or closing a tab removes that tab as a successor.
|
@@ -5260,13 +5429,13 @@
|
||||||
@@ -5242,13 +5347,13 @@
|
|
||||||
!excludeTabs.has(aTab.owner) &&
|
!excludeTabs.has(aTab.owner) &&
|
||||||
Services.prefs.getBoolPref("browser.tabs.selectOwnerOnClose")
|
Services.prefs.getBoolPref("browser.tabs.selectOwnerOnClose")
|
||||||
) {
|
) {
|
||||||
- return aTab.owner;
|
- return aTab.owner;
|
||||||
+ return gZenWorkspaces.findTabToBlur(aTab.owner);
|
+ return ZenWorkspaces.findTabToBlur(aTab.owner);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Try to find a remaining tab that comes after the given tab
|
// Try to find a remaining tab that comes after the given tab
|
||||||
let remainingTabs = Array.prototype.filter.call(
|
let remainingTabs = Array.prototype.filter.call(
|
||||||
this.visibleTabs,
|
this.visibleTabs,
|
||||||
- tab => !excludeTabs.has(tab)
|
- tab => !excludeTabs.has(tab)
|
||||||
+ tab => !excludeTabs.has(tab) && gZenWorkspaces._shouldChangeToTab(tab)
|
+ tab => !excludeTabs.has(tab) && ZenWorkspaces._shouldChangeToTab(tab)
|
||||||
);
|
);
|
||||||
|
|
||||||
let tab = this.tabContainer.findNextTab(aTab, {
|
let tab = this.tabContainer.findNextTab(aTab, {
|
||||||
@@ -5264,7 +5369,7 @@
|
@@ -5282,7 +5451,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
if (tab) {
|
if (tab) {
|
||||||
- return tab;
|
- return tab;
|
||||||
+ return gZenWorkspaces.findTabToBlur(tab);
|
+ return ZenWorkspaces.findTabToBlur(tab);
|
||||||
}
|
}
|
||||||
|
|
||||||
// If no qualifying visible tab was found, see if there is a tab in
|
// If no qualifying visible tab was found, see if there is a tab in
|
||||||
@@ -5285,7 +5390,7 @@
|
@@ -5303,7 +5472,7 @@
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
- return tab;
|
- return tab;
|
||||||
+ return gZenWorkspaces.findTabToBlur(tab);
|
+ return ZenWorkspaces.findTabToBlur(tab);
|
||||||
}
|
}
|
||||||
|
|
||||||
_blurTab(aTab) {
|
_blurTab(aTab) {
|
||||||
@@ -5686,10 +5791,10 @@
|
@@ -5704,10 +5873,10 @@
|
||||||
SessionStore.deleteCustomTabValue(aTab, "hiddenBy");
|
SessionStore.deleteCustomTabValue(aTab, "hiddenBy");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -531,22 +604,21 @@ index d5aa64842a35c6697263c63fd3a0571b64b01344..14f5bc046f2e54109bd3fd0402a8f8b5
|
||||||
aTab.selected ||
|
aTab.selected ||
|
||||||
aTab.closing ||
|
aTab.closing ||
|
||||||
// Tabs that are sharing the screen, microphone or camera cannot be hidden.
|
// Tabs that are sharing the screen, microphone or camera cannot be hidden.
|
||||||
@@ -5986,7 +6091,7 @@
|
@@ -6001,7 +6170,7 @@
|
||||||
|
|
||||||
// Don't allow mixing pinned and unpinned tabs.
|
// Don't allow mixing pinned and unpinned tabs.
|
||||||
if (this.isTab(element) && element.pinned) {
|
if (this.isTab(element) && element.pinned) {
|
||||||
- tabIndex = Math.min(tabIndex, this.pinnedTabCount - 1);
|
- tabIndex = Math.min(tabIndex, this.pinnedTabCount - 1);
|
||||||
+ tabIndex = element.hasAttribute('zen-essential') ? Math.min(tabIndex, this._numZenEssentials - 1) : Math.min(Math.max(tabIndex, this._numZenEssentials), this.pinnedTabCount - 1);
|
+ tabIndex = element.hasAttribute('zen-essential') ? Math.min(tabIndex, this._numZenEssentials - 1) : Math.min(tabIndex, this.pinnedTabCount - 1);
|
||||||
} else {
|
} else {
|
||||||
tabIndex = Math.max(tabIndex, this.pinnedTabCount);
|
tabIndex = Math.max(tabIndex, this.pinnedTabCount);
|
||||||
}
|
}
|
||||||
@@ -6012,10 +6117,16 @@
|
@@ -6028,9 +6197,16 @@
|
||||||
this.#handleTabMove(
|
|
||||||
element,
|
element,
|
||||||
() => {
|
() => {
|
||||||
- let neighbor = this.tabs[tabIndex];
|
let neighbor = this.tabs[tabIndex];
|
||||||
- if (forceUngrouped && neighbor?.group) {
|
- if (forceUngrouped && neighbor.group) {
|
||||||
+ let neighbor = gZenGlanceManager.getTabOrGlanceParent(this.tabs[tabIndex]);
|
+ const _tPos = element._tPos;
|
||||||
+ if ((forceUngrouped && neighbor?.group) || neighbor?.group?.hasAttribute("split-view-group")) {
|
+ if ((forceUngrouped && neighbor?.group) || neighbor?.group?.hasAttribute("split-view-group")) {
|
||||||
neighbor = neighbor.group;
|
neighbor = neighbor.group;
|
||||||
}
|
}
|
||||||
|
@ -559,7 +631,7 @@ index d5aa64842a35c6697263c63fd3a0571b64b01344..14f5bc046f2e54109bd3fd0402a8f8b5
|
||||||
if (neighbor && this.isTab(element) && tabIndex > element._tPos) {
|
if (neighbor && this.isTab(element) && tabIndex > element._tPos) {
|
||||||
neighbor.after(element);
|
neighbor.after(element);
|
||||||
} else {
|
} else {
|
||||||
@@ -6084,17 +6195,29 @@
|
@@ -6099,7 +6275,9 @@
|
||||||
targetElement = targetElement.group;
|
targetElement = targetElement.group;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -568,32 +640,23 @@ index d5aa64842a35c6697263c63fd3a0571b64b01344..14f5bc046f2e54109bd3fd0402a8f8b5
|
||||||
+ element = element.group;
|
+ element = element.group;
|
||||||
+ }
|
+ }
|
||||||
// Don't allow mixing pinned and unpinned tabs.
|
// Don't allow mixing pinned and unpinned tabs.
|
||||||
- if (element.pinned && !targetElement?.pinned) {
|
if (element.pinned && !targetElement?.pinned) {
|
||||||
- targetElement = this.tabs[this.pinnedTabCount - 1];
|
targetElement = this.tabs[this.pinnedTabCount - 1];
|
||||||
+ if (element.hasAttribute('zen-essential') && !targetElement?.hasAttribute('zen-essential')) {
|
@@ -6109,7 +6287,13 @@
|
||||||
+ targetElement = this.tabs.filter(tab => !tab.hasAttribute('zen-glance-tab'))[this._numZenEssentials - 1];
|
|
||||||
+ moveBefore = false;
|
|
||||||
+ } else if (element.pinned && !targetElement?.pinned) {
|
|
||||||
+ targetElement = this.tabs.filter(tab => !tab.hasAttribute('zen-glance-tab'))[this.pinnedTabCount - 1];
|
|
||||||
moveBefore = false;
|
|
||||||
} else if (!element.pinned && targetElement && targetElement.pinned) {
|
|
||||||
- targetElement = this.tabs[this.pinnedTabCount];
|
|
||||||
+ targetElement = this.tabs.filter(tab => !tab.hasAttribute('zen-glance-tab'))[this.pinnedTabCount];
|
|
||||||
moveBefore = true;
|
moveBefore = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
+ if (targetElement?.group?.hasAttribute("split-view-group")) {
|
+ if (targetElement?.group?.hasAttribute("split-view-group")) {
|
||||||
+ targetElement = targetElement.group;
|
+ targetElement = targetElement.group;
|
||||||
+ }
|
+ }
|
||||||
+ targetElement = gZenGlanceManager.getTabOrGlanceParent(targetElement);
|
|
||||||
let getContainer = () => {
|
let getContainer = () => {
|
||||||
+ if (element.hasAttribute("zen-essential")) {
|
+ if (element.hasAttribute("zen-essential")) {
|
||||||
+ return gZenWorkspaces.getEssentialsSection(element);
|
+ return ZenWorkspaces.getEssentialsSection(element);
|
||||||
+ }
|
+ }
|
||||||
if (element.pinned && this.tabContainer.verticalMode) {
|
if (element.pinned && this.tabContainer.verticalMode) {
|
||||||
return this.tabContainer.verticalPinnedTabsContainer;
|
return this.tabContainer.verticalPinnedTabsContainer;
|
||||||
}
|
}
|
||||||
@@ -6154,7 +6277,7 @@
|
@@ -6169,7 +6353,7 @@
|
||||||
if (!this.isTab(aTab)) {
|
if (!this.isTab(aTab)) {
|
||||||
throw new Error("Can only move a tab into a tab group");
|
throw new Error("Can only move a tab into a tab group");
|
||||||
}
|
}
|
||||||
|
@ -602,27 +665,27 @@ index d5aa64842a35c6697263c63fd3a0571b64b01344..14f5bc046f2e54109bd3fd0402a8f8b5
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (aTab.group && aTab.group.id === aGroup.id) {
|
if (aTab.group && aTab.group.id === aGroup.id) {
|
||||||
@@ -6248,6 +6371,10 @@
|
@@ -6263,6 +6447,10 @@
|
||||||
|
|
||||||
moveActionCallback();
|
moveActionCallback();
|
||||||
|
|
||||||
+ gZenWorkspaces._makeSureEmptyTabIsLast();
|
+ ZenWorkspaces._makeSureEmptyTabIsLast();
|
||||||
+ gZenViewSplitter._maybeRemoveFakeBrowser(false);
|
+ gZenViewSplitter._maybeRemoveFakeBrowser(false);
|
||||||
+ gZenViewSplitter._canDrop = false;
|
+ gZenViewSplitter._canDrop = false;
|
||||||
+
|
+
|
||||||
// Clear tabs cache after moving nodes because the order of tabs may have
|
// Clear tabs cache after moving nodes because the order of tabs may have
|
||||||
// changed.
|
// changed.
|
||||||
this.tabContainer._invalidateCachedTabs();
|
this.tabContainer._invalidateCachedTabs();
|
||||||
@@ -7145,7 +7272,7 @@
|
@@ -7080,7 +7268,7 @@
|
||||||
// preventDefault(). It will still raise the window if appropriate.
|
// preventDefault(). It will still raise the window if appropriate.
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
- this.selectedTab = tab;
|
- this.selectedTab = tab;
|
||||||
+ gZenWorkspaces.switchTabIfNeeded(tab);
|
+ ZenWorkspaces.switchTabIfNeeded(tab);
|
||||||
window.focus();
|
window.focus();
|
||||||
aEvent.preventDefault();
|
aEvent.preventDefault();
|
||||||
break;
|
break;
|
||||||
@@ -8044,6 +8171,7 @@
|
@@ -7981,6 +8169,7 @@
|
||||||
aWebProgress.isTopLevel
|
aWebProgress.isTopLevel
|
||||||
) {
|
) {
|
||||||
this.mTab.setAttribute("busy", "true");
|
this.mTab.setAttribute("busy", "true");
|
||||||
|
@ -630,7 +693,7 @@ index d5aa64842a35c6697263c63fd3a0571b64b01344..14f5bc046f2e54109bd3fd0402a8f8b5
|
||||||
gBrowser._tabAttrModified(this.mTab, ["busy"]);
|
gBrowser._tabAttrModified(this.mTab, ["busy"]);
|
||||||
this.mTab._notselectedsinceload = !this.mTab.selected;
|
this.mTab._notselectedsinceload = !this.mTab.selected;
|
||||||
}
|
}
|
||||||
@@ -9009,7 +9137,7 @@ var TabContextMenu = {
|
@@ -8954,7 +9143,7 @@ var TabContextMenu = {
|
||||||
);
|
);
|
||||||
contextUnpinSelectedTabs.hidden =
|
contextUnpinSelectedTabs.hidden =
|
||||||
!this.contextTab.pinned || !this.multiselected;
|
!this.contextTab.pinned || !this.multiselected;
|
||||||
|
@ -639,7 +702,7 @@ index d5aa64842a35c6697263c63fd3a0571b64b01344..14f5bc046f2e54109bd3fd0402a8f8b5
|
||||||
// Move Tab items
|
// Move Tab items
|
||||||
let contextMoveTabOptions = document.getElementById(
|
let contextMoveTabOptions = document.getElementById(
|
||||||
"context_moveTabOptions"
|
"context_moveTabOptions"
|
||||||
@@ -9278,6 +9406,7 @@ var TabContextMenu = {
|
@@ -9223,6 +9412,7 @@ var TabContextMenu = {
|
||||||
telemetrySource: gBrowser.TabMetrics.METRIC_SOURCE.TAB_STRIP,
|
telemetrySource: gBrowser.TabMetrics.METRIC_SOURCE.TAB_STRIP,
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -1,13 +0,0 @@
|
||||||
diff --git a/browser/components/tabbrowser/content/tabgroup.js b/browser/components/tabbrowser/content/tabgroup.js
|
|
||||||
index 6dc774ea335b0c5dba7dcf76cdb23728faae1343..b0b9ef236c2e8517db4bcf3270596456bbefe11d 100644
|
|
||||||
--- a/browser/components/tabbrowser/content/tabgroup.js
|
|
||||||
+++ b/browser/components/tabbrowser/content/tabgroup.js
|
|
||||||
@@ -301,7 +301,7 @@
|
|
||||||
*/
|
|
||||||
addTabs(tabs, metricsContext) {
|
|
||||||
for (let tab of tabs) {
|
|
||||||
- if (tab.pinned) {
|
|
||||||
+ if (tab.pinned !== this.pinned) {
|
|
||||||
tab.ownerGlobal.gBrowser.unpinTab(tab);
|
|
||||||
}
|
|
||||||
let tabToMove =
|
|
|
@ -1,5 +1,5 @@
|
||||||
diff --git a/browser/components/tabbrowser/content/tabs.js b/browser/components/tabbrowser/content/tabs.js
|
diff --git a/browser/components/tabbrowser/content/tabs.js b/browser/components/tabbrowser/content/tabs.js
|
||||||
index 84d633471c89230b981d8a07babef4e0c76c0338..de8b1ecf7cb844f6cf3e66a41b6024c574dfc103 100644
|
index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..2885d896c4026278dfcb309f12230d6f86275ada 100644
|
||||||
--- a/browser/components/tabbrowser/content/tabs.js
|
--- a/browser/components/tabbrowser/content/tabs.js
|
||||||
+++ b/browser/components/tabbrowser/content/tabs.js
|
+++ b/browser/components/tabbrowser/content/tabs.js
|
||||||
@@ -83,7 +83,7 @@
|
@@ -83,7 +83,7 @@
|
||||||
|
@ -11,33 +11,33 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..de8b1ecf7cb844f6cf3e66a41b6024c5
|
||||||
}
|
}
|
||||||
return true;
|
return true;
|
||||||
};
|
};
|
||||||
@@ -293,6 +293,7 @@
|
@@ -342,7 +342,7 @@
|
||||||
on_TabGroupCollapse(event) {
|
|
||||||
this._invalidateCachedVisibleTabs();
|
|
||||||
this._unlockTabSizing();
|
|
||||||
+ return;
|
|
||||||
|
|
||||||
// If the user's selected tab is in the collapsing group, kick them off
|
|
||||||
// the tab. If no tabs exist outside the group, create a new one and
|
|
||||||
@@ -349,7 +350,7 @@
|
|
||||||
// and we're not hitting the scroll buttons.
|
// and we're not hitting the scroll buttons.
|
||||||
if (
|
if (
|
||||||
event.button != 0 ||
|
event.button != 0 ||
|
||||||
- event.target != this.arrowScrollbox ||
|
- event.target != this.arrowScrollbox ||
|
||||||
+ !event.target.classList.contains("zen-workspace-normal-tabs-section") ||
|
+ event.target != document.getElementById("zen-tabs-wrapper") ||
|
||||||
event.composedTarget.localName == "toolbarbutton"
|
event.composedTarget.localName == "toolbarbutton"
|
||||||
) {
|
) {
|
||||||
return;
|
return;
|
||||||
@@ -699,7 +700,7 @@
|
@@ -391,6 +391,7 @@
|
||||||
|
// Reset the "ignored click" flag
|
||||||
|
target._ignoredCloseButtonClicks = false;
|
||||||
|
}
|
||||||
|
+ gZenUIManager.saveScrollbarState();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Protects from close-tab-button errant doubleclick:
|
||||||
|
@@ -692,7 +693,7 @@
|
||||||
if (this.#isContainerVerticalPinnedGrid(tab)) {
|
if (this.#isContainerVerticalPinnedGrid(tab)) {
|
||||||
// In expanded vertical mode, the max number of pinned tabs per row is dynamic
|
// In expanded vertical mode, the max number of pinned tabs per row is dynamic
|
||||||
// Set this before adjusting dragged tab's position
|
// Set this before adjusting dragged tab's position
|
||||||
- let pinnedTabs = this.visibleTabs.slice(0, gBrowser.pinnedTabCount);
|
- let pinnedTabs = this.visibleTabs.slice(0, gBrowser.pinnedTabCount);
|
||||||
+ let pinnedTabs = this.ariaFocusableItems.slice(0, gBrowser._numZenEssentials);
|
+ let pinnedTabs = this.visibleTabs.filter(tab => !tab.hasAttribute("zen-glance-tab")).slice(0, gBrowser._numZenVisibleEssentials);
|
||||||
let tabsPerRow = 0;
|
let tabsPerRow = 0;
|
||||||
let position = 0;
|
let position = 0;
|
||||||
for (let pinnedTab of pinnedTabs) {
|
for (let pinnedTab of pinnedTabs) {
|
||||||
@@ -772,7 +773,7 @@
|
@@ -764,7 +765,7 @@
|
||||||
} else if (isTabGroupLabel(tab) && !tab.group.collapsed) {
|
} else if (isTabGroupLabel(tab) && !tab.group.collapsed) {
|
||||||
this._lockTabSizing();
|
this._lockTabSizing();
|
||||||
this.#keepTabSizeLocked = true;
|
this.#keepTabSizeLocked = true;
|
||||||
|
@ -46,16 +46,7 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..de8b1ecf7cb844f6cf3e66a41b6024c5
|
||||||
expandGroupOnDrop = true;
|
expandGroupOnDrop = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -868,7 +869,7 @@
|
@@ -913,6 +914,10 @@
|
||||||
? event.screenY - window.screenY - tabOffset
|
|
||||||
: event.screenY - window.screenY,
|
|
||||||
scrollPos:
|
|
||||||
- this.verticalMode && tab.pinned
|
|
||||||
+ this.verticalMode && tab.pinned && false
|
|
||||||
? this.verticalPinnedTabsContainer.scrollPosition
|
|
||||||
: this.arrowScrollbox.scrollPosition,
|
|
||||||
screenX: event.screenX,
|
|
||||||
@@ -921,6 +922,10 @@
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let draggedTab = event.dataTransfer.mozGetDataAt(TAB_DROP_TYPE, 0);
|
let draggedTab = event.dataTransfer.mozGetDataAt(TAB_DROP_TYPE, 0);
|
||||||
|
@ -66,7 +57,7 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..de8b1ecf7cb844f6cf3e66a41b6024c5
|
||||||
if (
|
if (
|
||||||
(effects == "move" || effects == "copy") &&
|
(effects == "move" || effects == "copy") &&
|
||||||
document == draggedTab.ownerDocument &&
|
document == draggedTab.ownerDocument &&
|
||||||
@@ -1077,6 +1082,18 @@
|
@@ -1069,6 +1074,18 @@
|
||||||
|
|
||||||
this._tabDropIndicator.hidden = true;
|
this._tabDropIndicator.hidden = true;
|
||||||
event.stopPropagation();
|
event.stopPropagation();
|
||||||
|
@ -85,38 +76,32 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..de8b1ecf7cb844f6cf3e66a41b6024c5
|
||||||
if (draggedTab && dropEffect == "copy") {
|
if (draggedTab && dropEffect == "copy") {
|
||||||
let duplicatedDraggedTab;
|
let duplicatedDraggedTab;
|
||||||
let duplicatedTabs = [];
|
let duplicatedTabs = [];
|
||||||
@@ -1116,10 +1133,11 @@
|
@@ -1108,10 +1125,11 @@
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
let isPinned = draggedTab.pinned;
|
let isPinned = draggedTab.pinned;
|
||||||
- let numPinned = gBrowser.pinnedTabCount;
|
- let numPinned = gBrowser.pinnedTabCount;
|
||||||
+ let numPinned = gBrowser._numVisiblePinTabsWithoutCollapsed;
|
- let tabs = this.ariaFocusableItems.slice(
|
||||||
+ let essential = draggedTab.hasAttribute("zen-essential");
|
|
||||||
let tabs = this.ariaFocusableItems.slice(
|
|
||||||
- isPinned ? 0 : numPinned,
|
- isPinned ? 0 : numPinned,
|
||||||
- isPinned ? numPinned : undefined
|
- isPinned ? numPinned : undefined
|
||||||
+ isPinned ? (essential ? 0 : gBrowser._numZenEssentials) : numPinned,
|
+ let numPinned = gBrowser._numVisiblePinTabsWithoutCollapsed;
|
||||||
+ isPinned ? (essential ? gBrowser._numZenEssentials : numPinned) : undefined
|
+ let essential = draggedTab.hasAttribute("zen-essential");
|
||||||
|
+ let tabs = this.ariaFocusableItems.filter(tab => !tab.hasAttribute("zen-glance-tab")).slice(
|
||||||
|
+ isPinned ? (essential ? 0 : gBrowser._numZenVisibleEssentials) : numPinned,
|
||||||
|
+ isPinned ? (essential ? gBrowser._numZenVisibleEssentials : numPinned) : undefined
|
||||||
);
|
);
|
||||||
let size = this.verticalMode ? "height" : "width";
|
let size = this.verticalMode ? "height" : "width";
|
||||||
let screenAxis = this.verticalMode ? "screenY" : "screenX";
|
let screenAxis = this.verticalMode ? "screenY" : "screenX";
|
||||||
@@ -1135,8 +1153,14 @@
|
@@ -1203,7 +1221,7 @@
|
||||||
(lastMovingTabScreen + tabSize);
|
item.removeAttribute("tabdrop-samewindow");
|
||||||
|
resolve();
|
||||||
if (this.verticalMode) {
|
};
|
||||||
+ if (oldTranslateY > 0 && translateOffsetY > tabHeight / 2) {
|
- if (gReduceMotion) {
|
||||||
+ newTranslateY += tabHeight;
|
+ if (true || gReduceMotion) {
|
||||||
+ }
|
postTransitionCleanup();
|
||||||
+ if (oldTranslateY < 0 && -translateOffsetY > tabHeight / 2) {
|
} else {
|
||||||
+ newTranslateY -= tabHeight;
|
let onTransitionEnd = transitionendEvent => {
|
||||||
+ }
|
@@ -1327,6 +1345,7 @@
|
||||||
newTranslateY = Math.min(
|
|
||||||
- Math.max(oldTranslateY, firstBound),
|
|
||||||
+ Math.max(newTranslateY, firstBound),
|
|
||||||
lastBound
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
@@ -1337,6 +1361,7 @@
|
|
||||||
|
|
||||||
let nextItem = this.ariaFocusableItems[newIndex];
|
let nextItem = this.ariaFocusableItems[newIndex];
|
||||||
let tabGroup = isTab(nextItem) && nextItem.group;
|
let tabGroup = isTab(nextItem) && nextItem.group;
|
||||||
|
@ -124,7 +109,7 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..de8b1ecf7cb844f6cf3e66a41b6024c5
|
||||||
gBrowser.loadTabs(urls, {
|
gBrowser.loadTabs(urls, {
|
||||||
inBackground,
|
inBackground,
|
||||||
replace,
|
replace,
|
||||||
@@ -1369,6 +1394,17 @@
|
@@ -1359,6 +1378,17 @@
|
||||||
|
|
||||||
this.finishMoveTogetherSelectedTabs(draggedTab);
|
this.finishMoveTogetherSelectedTabs(draggedTab);
|
||||||
this.finishAnimateTabMove();
|
this.finishAnimateTabMove();
|
||||||
|
@ -142,21 +127,21 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..de8b1ecf7cb844f6cf3e66a41b6024c5
|
||||||
this.#expandGroupOnDrop(draggedTab);
|
this.#expandGroupOnDrop(draggedTab);
|
||||||
|
|
||||||
if (
|
if (
|
||||||
@@ -1597,7 +1633,7 @@
|
@@ -1582,7 +1612,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
get newTabButton() {
|
get newTabButton() {
|
||||||
- return this.querySelector("#tabs-newtab-button");
|
- return this.querySelector("#tabs-newtab-button");
|
||||||
+ return gZenWorkspaces.activeWorkspaceStrip.querySelector("#tabs-newtab-button");
|
+ return ZenWorkspaces.activeWorkspaceStrip.querySelector("#tabs-newtab-button");
|
||||||
}
|
}
|
||||||
|
|
||||||
get verticalMode() {
|
get verticalMode() {
|
||||||
@@ -1621,29 +1657,54 @@
|
@@ -1606,29 +1636,41 @@
|
||||||
if (this.#allTabs) {
|
if (this.#allTabs) {
|
||||||
return this.#allTabs;
|
return this.#allTabs;
|
||||||
}
|
}
|
||||||
- let children = Array.from(this.arrowScrollbox.children);
|
- let children = Array.from(this.arrowScrollbox.children);
|
||||||
+ let children = gZenWorkspaces.tabboxChildren;
|
+ let children = ZenWorkspaces.tabboxChildren;
|
||||||
// remove arrowScrollbox periphery element
|
// remove arrowScrollbox periphery element
|
||||||
children.pop();
|
children.pop();
|
||||||
|
|
||||||
|
@ -166,55 +151,51 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..de8b1ecf7cb844f6cf3e66a41b6024c5
|
||||||
- for (let i = children.length - 1; i >= 0; i--) {
|
- for (let i = children.length - 1; i >= 0; i--) {
|
||||||
- if (children[i].tagName == "tab-group") {
|
- if (children[i].tagName == "tab-group") {
|
||||||
- children.splice(i, 1, ...children[i].tabs);
|
- children.splice(i, 1, ...children[i].tabs);
|
||||||
+ const pinnedTabs = [...gZenWorkspaces.getCurrentEssentialsContainer().children, ...this.verticalPinnedTabsContainer.children];
|
- }
|
||||||
+ const expandTabs = (tabs) => {
|
- }
|
||||||
+ for (let i = tabs.length - 1; i >= 0; i--) {
|
|
||||||
+ const tab = tabs[i];
|
this.#allTabs = [
|
||||||
+ if (isTabGroup(tab)) {
|
|
||||||
+ // remove the group from the list
|
|
||||||
+ tabs.splice(i, 1);
|
|
||||||
+ // add the tabs in the group to the list
|
|
||||||
+ tabs.splice(i, 0, ...tab.tabs);
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
-
|
|
||||||
- this.#allTabs = [
|
|
||||||
- ...this.verticalPinnedTabsContainer.children,
|
- ...this.verticalPinnedTabsContainer.children,
|
||||||
+ expandTabs(pinnedTabs);
|
+ ...ZenWorkspaces.getCurrentEssentialsContainer().children, ...this.verticalPinnedTabsContainer.children,
|
||||||
+ expandTabs(children);
|
|
||||||
+ const allTabs = [
|
|
||||||
+ ...pinnedTabs,
|
|
||||||
...children,
|
...children,
|
||||||
];
|
];
|
||||||
+ const lastPinnedTabIdx = pinnedTabs.length - 1;
|
+ const lastPinnedTabIdx = gBrowser.pinnedTabCount;
|
||||||
+ let i = 0;
|
+ for (let i = 0; i < this.#allTabs.length; i++) {
|
||||||
+ for (const tab of [...allTabs]) {
|
|
||||||
+ // add glance tabs (tabs inside tabs) to the list
|
+ // add glance tabs (tabs inside tabs) to the list
|
||||||
+ const glanceTab = tab.glanceTab;
|
+ const glanceTab = this.#allTabs[i].querySelector("tab[zen-glance-tab]");
|
||||||
+ if (glanceTab) {
|
+ if (glanceTab) {
|
||||||
+ // insert right after the parent tab. note: it must be inserted before
|
+ // insert right after the parent tab. note: it must be inserted before
|
||||||
+ // the last pinned tab so it can be inserted in the correct order
|
+ // the last pinned tab so it can be inserted in the correct order
|
||||||
+ allTabs.splice(Math.max(i++ + 1, lastPinnedTabIdx), 0, glanceTab);
|
+ this.#allTabs.splice(Math.max(i + 1, lastPinnedTabIdx), 0, glanceTab);
|
||||||
+ } else if (tab.classList.contains("vertical-pinned-tabs-container-separator")) {
|
+ i++;
|
||||||
|
+ } else if (this.#allTabs[i].classList.contains("vertical-pinned-tabs-container-separator")) {
|
||||||
+ // remove the separator from the list
|
+ // remove the separator from the list
|
||||||
+ allTabs.splice(i, 1);
|
+ this.#allTabs.splice(i, 1);
|
||||||
+ i--;
|
+ i--;
|
||||||
|
+ } else if (this.#allTabs[i].tagName == "tab-group") {
|
||||||
|
+ this.#allTabs.splice(i, 1, ...this.#allTabs[i].tabs);
|
||||||
+ }
|
+ }
|
||||||
+ i++;
|
|
||||||
+ }
|
+ }
|
||||||
+ this.#allTabs = allTabs;
|
|
||||||
return this.#allTabs;
|
return this.#allTabs;
|
||||||
}
|
}
|
||||||
|
|
||||||
get allGroups() {
|
get allGroups() {
|
||||||
let children = Array.from(this.arrowScrollbox.children);
|
let children = Array.from(this.arrowScrollbox.children);
|
||||||
- return children.filter(node => node.tagName == "tab-group");
|
- return children.filter(node => node.tagName == "tab-group");
|
||||||
+ return gZenWorkspaces.allTabGroups;
|
+ return ZenWorkspaces.allTabGroups;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1698,23 +1759,18 @@
|
@@ -1648,7 +1690,7 @@
|
||||||
|
*/
|
||||||
|
get visibleTabs() {
|
||||||
|
if (!this.#visibleTabs) {
|
||||||
|
- this.#visibleTabs = this.openTabs.filter(tab => tab.visible);
|
||||||
|
+ this.#visibleTabs = this.openTabs.filter(tab => tab.visible && !tab.hasAttribute("zen-empty-tab"));
|
||||||
|
}
|
||||||
|
return this.#visibleTabs;
|
||||||
|
}
|
||||||
|
@@ -1683,23 +1725,18 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
let elementIndex = 0;
|
let elementIndex = 0;
|
||||||
|
@ -226,11 +207,11 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..de8b1ecf7cb844f6cf3e66a41b6024c5
|
||||||
- }
|
- }
|
||||||
- let children = Array.from(this.arrowScrollbox.children);
|
- let children = Array.from(this.arrowScrollbox.children);
|
||||||
+ let verticalPinnedTabsContainer = this.verticalPinnedTabsContainer
|
+ let verticalPinnedTabsContainer = this.verticalPinnedTabsContainer
|
||||||
+ let children = gZenWorkspaces.tabboxChildrenWithoutEmpty;
|
+ let children = ZenWorkspaces.tabboxChildrenWithoutEmpty;
|
||||||
|
|
||||||
let focusableItems = [];
|
let focusableItems = [];
|
||||||
- for (let child of children) {
|
- for (let child of children) {
|
||||||
+ for (let child of [...gZenWorkspaces.getCurrentEssentialsContainer().children, ...verticalPinnedTabsContainer.children, ...children]) {
|
+ for (let child of [...ZenWorkspaces.getCurrentEssentialsContainer().children, ...verticalPinnedTabsContainer.children, ...children]) {
|
||||||
if (isTab(child) && child.visible) {
|
if (isTab(child) && child.visible) {
|
||||||
child.elementIndex = elementIndex++;
|
child.elementIndex = elementIndex++;
|
||||||
focusableItems.push(child);
|
focusableItems.push(child);
|
||||||
|
@ -242,8 +223,15 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..de8b1ecf7cb844f6cf3e66a41b6024c5
|
||||||
let visibleTabsInGroup = child.tabs.filter(tab => tab.visible);
|
let visibleTabsInGroup = child.tabs.filter(tab => tab.visible);
|
||||||
visibleTabsInGroup.forEach(tab => {
|
visibleTabsInGroup.forEach(tab => {
|
||||||
tab.elementIndex = elementIndex++;
|
tab.elementIndex = elementIndex++;
|
||||||
@@ -1724,10 +1780,7 @@
|
@@ -1707,12 +1744,14 @@
|
||||||
|
focusableItems.push(...visibleTabsInGroup);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
+ let glanceTab = child.querySelector("tab[zen-glance-tab]");
|
||||||
|
+ if (isTab(child) && glanceTab) {
|
||||||
|
+ glanceTab.elementIndex = elementIndex++;
|
||||||
|
+ focusableItems.push(glanceTab);
|
||||||
|
+ }
|
||||||
}
|
}
|
||||||
|
|
||||||
- this.#focusableItems = [
|
- this.#focusableItems = [
|
||||||
|
@ -254,15 +242,15 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..de8b1ecf7cb844f6cf3e66a41b6024c5
|
||||||
|
|
||||||
return this.#focusableItems;
|
return this.#focusableItems;
|
||||||
}
|
}
|
||||||
@@ -1735,6 +1788,7 @@
|
@@ -1720,6 +1759,7 @@
|
||||||
_invalidateCachedTabs() {
|
_invalidateCachedTabs() {
|
||||||
this.#allTabs = null;
|
this.#allTabs = null;
|
||||||
this._invalidateCachedVisibleTabs();
|
this._invalidateCachedVisibleTabs();
|
||||||
+ gZenWorkspaces._allStoredTabs = null;
|
+ ZenWorkspaces._allStoredTabs = null;
|
||||||
}
|
}
|
||||||
|
|
||||||
_invalidateCachedVisibleTabs() {
|
_invalidateCachedVisibleTabs() {
|
||||||
@@ -1749,8 +1803,8 @@
|
@@ -1734,8 +1774,8 @@
|
||||||
#isContainerVerticalPinnedGrid(tab) {
|
#isContainerVerticalPinnedGrid(tab) {
|
||||||
return (
|
return (
|
||||||
this.verticalMode &&
|
this.verticalMode &&
|
||||||
|
@ -273,25 +261,25 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..de8b1ecf7cb844f6cf3e66a41b6024c5
|
||||||
!this.expandOnHover
|
!this.expandOnHover
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@@ -1766,7 +1820,7 @@
|
@@ -1751,7 +1791,7 @@
|
||||||
|
|
||||||
if (node == null) {
|
if (node == null) {
|
||||||
// We have a container for non-tab elements at the end of the scrollbox.
|
// We have a container for non-tab elements at the end of the scrollbox.
|
||||||
- node = this.arrowScrollbox.lastChild;
|
- node = this.arrowScrollbox.lastChild;
|
||||||
+ node = gZenWorkspaces.activeWorkspaceStrip.lastChild;
|
+ node = ZenWorkspaces.activeWorkspaceStrip.lastChild;
|
||||||
}
|
}
|
||||||
|
|
||||||
node.before(tab);
|
node.before(tab);
|
||||||
@@ -1861,7 +1915,7 @@
|
@@ -1846,7 +1886,7 @@
|
||||||
// There are separate "new tab" buttons for horizontal tabs toolbar, vertical tabs and
|
// There are separate "new tab" buttons for horizontal tabs toolbar, vertical tabs and
|
||||||
// for when the tab strip is overflowed (which is shared by vertical and horizontal tabs);
|
// for when the tab strip is overflowed (which is shared by vertical and horizontal tabs);
|
||||||
// Attach the long click popup to all of them.
|
// Attach the long click popup to all of them.
|
||||||
- const newTab = document.getElementById("new-tab-button");
|
- const newTab = document.getElementById("new-tab-button");
|
||||||
+ const newTab = gZenWorkspaces.activeWorkspaceStrip.querySelector("#tabs-newtab-button");
|
+ const newTab = ZenWorkspaces.activeWorkspaceStrip.querySelector("#tabs-newtab-button");
|
||||||
const newTab2 = this.newTabButton;
|
const newTab2 = this.newTabButton;
|
||||||
const newTabVertical = document.getElementById(
|
const newTabVertical = document.getElementById(
|
||||||
"vertical-tabs-newtab-button"
|
"vertical-tabs-newtab-button"
|
||||||
@@ -1956,10 +2010,12 @@
|
@@ -1941,10 +1981,12 @@
|
||||||
|
|
||||||
_handleTabSelect(aInstant) {
|
_handleTabSelect(aInstant) {
|
||||||
let selectedTab = this.selectedItem;
|
let selectedTab = this.selectedItem;
|
||||||
|
@ -304,55 +292,91 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..de8b1ecf7cb844f6cf3e66a41b6024c5
|
||||||
selectedTab._notselectedsinceload = false;
|
selectedTab._notselectedsinceload = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2132,6 +2188,7 @@
|
@@ -2085,16 +2127,15 @@
|
||||||
|
// Move pinned tabs to another container when the tabstrip is toggled to vertical
|
||||||
|
// and when session restore code calls _positionPinnedTabs; update styling whenever
|
||||||
|
// the number of pinned tabs changes.
|
||||||
|
- let verticalTabsContainer = document.getElementById(
|
||||||
|
- "vertical-pinned-tabs-container"
|
||||||
|
- );
|
||||||
|
+ let verticalTabsContainer = this.verticalPinnedTabsContainer;
|
||||||
|
let numPinned = gBrowser.pinnedTabCount;
|
||||||
|
-
|
||||||
|
- if (gBrowser.pinnedTabCount !== verticalTabsContainer.children.length) {
|
||||||
|
- let tabs = this.visibleTabs;
|
||||||
|
+ if (!ZenWorkspaces._hasInitializedTabsStrip) return;
|
||||||
|
+ let count = ZenWorkspaces.makeSurePinTabIsInCorrectPosition();
|
||||||
|
+ if (gBrowser.pinnedTabCount !== (verticalTabsContainer.children.length - count - 1 + ZenWorkspaces.getCurrentEssentialsContainer().children.length)) {
|
||||||
|
+ let tabs = this.allTabs.filter(tab => !tab.hasAttribute("zen-glance-tab"));
|
||||||
|
for (let i = 0; i < numPinned; i++) {
|
||||||
|
tabs[i].style.marginInlineStart = "";
|
||||||
|
- verticalTabsContainer.appendChild(tabs[i]);
|
||||||
|
+ tabs[i].hasAttribute("zen-essential") ? ZenWorkspaces.getCurrentEssentialsContainer().appendChild(tabs[i].group?.hasAttribute("split-view-group") ? tabs[i].group : tabs[i]) : verticalTabsContainer.insertBefore(tabs[i].group?.hasAttribute("split-view-group") ? tabs[i].group : tabs[i], verticalTabsContainer.lastChild);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -2102,9 +2143,7 @@
|
||||||
|
}
|
||||||
|
|
||||||
|
_resetVerticalPinnedTabs() {
|
||||||
|
- let verticalTabsContainer = document.getElementById(
|
||||||
|
- "vertical-pinned-tabs-container"
|
||||||
|
- );
|
||||||
|
+ let verticalTabsContainer = this.verticalPinnedTabsContainer;
|
||||||
|
|
||||||
|
if (!verticalTabsContainer.children.length) {
|
||||||
|
return;
|
||||||
|
@@ -2117,7 +2156,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
_positionPinnedTabs() {
|
_positionPinnedTabs() {
|
||||||
+ if (true) return;
|
- let tabs = this.visibleTabs;
|
||||||
let tabs = this.visibleTabs;
|
+ let tabs = this.visibleTabs.filter(tab => !tab.hasAttribute("zen-glance-tab"));
|
||||||
let numPinned = gBrowser.pinnedTabCount;
|
let numPinned = gBrowser.pinnedTabCount;
|
||||||
let absPositionHorizontalTabs =
|
let absPositionHorizontalTabs =
|
||||||
@@ -2206,7 +2263,7 @@
|
this.overflowing && tabs.length > numPinned && numPinned > 0;
|
||||||
|
@@ -2127,7 +2166,7 @@
|
||||||
|
|
||||||
|
if (this.verticalMode) {
|
||||||
|
this._updateVerticalPinnedTabs();
|
||||||
|
- } else if (absPositionHorizontalTabs) {
|
||||||
|
+ } else if (absPositionHorizontalTabs && false) {
|
||||||
|
let layoutData = this._pinnedTabsLayoutCache;
|
||||||
|
let uiDensity = document.documentElement.getAttribute("uidensity");
|
||||||
|
if (!layoutData || layoutData.uiDensity != uiDensity) {
|
||||||
|
@@ -2191,7 +2230,7 @@
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
- let tabs = this.visibleTabs.slice(0, gBrowser.pinnedTabCount);
|
- let tabs = this.visibleTabs.slice(0, gBrowser.pinnedTabCount);
|
||||||
+ let tabs = this.ariaFocusableItems.slice(0, gBrowser._numZenEssentials);
|
+ let tabs = this.visibleTabs.filter(tab => !tab.hasAttribute("zen-glance-tab")).slice(0, gBrowser._numZenVisibleEssentials);
|
||||||
|
|
||||||
let directionX = screenX > dragData.animLastScreenX;
|
let directionX = screenX > dragData.animLastScreenX;
|
||||||
let directionY = screenY > dragData.animLastScreenY;
|
let directionY = screenY > dragData.animLastScreenY;
|
||||||
@@ -2215,6 +2272,8 @@
|
@@ -2199,7 +2238,7 @@
|
||||||
|
dragData.animLastScreenX = screenX;
|
||||||
|
|
||||||
let { width: tabWidth, height: tabHeight } =
|
let { width: tabWidth, height: tabHeight } =
|
||||||
draggedTab.getBoundingClientRect();
|
- draggedTab.getBoundingClientRect();
|
||||||
+ tabWidth += 4; // Add 4px to account for the gap
|
+ (draggedTab.group?.hasAttribute("split-view-group") ? draggedTab.group : draggedTab).getBoundingClientRect();
|
||||||
+ tabHeight += 4;
|
|
||||||
let shiftSizeX = tabWidth * movingTabs.length;
|
let shiftSizeX = tabWidth * movingTabs.length;
|
||||||
let shiftSizeY = tabHeight;
|
let shiftSizeY = tabHeight;
|
||||||
dragData.tabWidth = tabWidth;
|
dragData.tabWidth = tabWidth;
|
||||||
@@ -2244,7 +2303,7 @@
|
@@ -2374,12 +2413,16 @@
|
||||||
let translateX = screenX - dragData.screenX;
|
|
||||||
let translateY = screenY - dragData.screenY;
|
|
||||||
translateY +=
|
|
||||||
- this.verticalPinnedTabsContainer.scrollPosition - dragData.scrollPos;
|
|
||||||
+ dragData.scrollPos;
|
|
||||||
let firstBoundX = firstTabInRow.screenX - firstMovingTabScreenX;
|
|
||||||
let firstBoundY = firstTabInRow.screenY - firstMovingTabScreenY;
|
|
||||||
let lastBoundX =
|
|
||||||
@@ -2389,12 +2448,16 @@
|
|
||||||
|
|
||||||
this.#clearDragOverCreateGroupTimer();
|
this.#clearDragOverCreateGroupTimer();
|
||||||
|
|
||||||
- let isPinned = draggedTab.pinned;
|
- let isPinned = draggedTab.pinned;
|
||||||
- let numPinned = gBrowser.pinnedTabCount;
|
- let numPinned = gBrowser.pinnedTabCount;
|
||||||
|
- let tabs = this.ariaFocusableItems.slice(
|
||||||
|
- isPinned ? 0 : numPinned,
|
||||||
|
- isPinned ? numPinned : undefined
|
||||||
+ let isPinned = draggedTab?.group ? draggedTab.group.pinned : draggedTab.pinned;
|
+ let isPinned = draggedTab?.group ? draggedTab.group.pinned : draggedTab.pinned;
|
||||||
+ let numPinned = gBrowser._numVisiblePinTabsWithoutCollapsed;
|
+ let numPinned = gBrowser._numVisiblePinTabsWithoutCollapsed;
|
||||||
+ let essential = draggedTab.hasAttribute("zen-essential");
|
+ let essential = draggedTab.hasAttribute("zen-essential");
|
||||||
let tabs = this.ariaFocusableItems.slice(
|
+ let tabs = this.ariaFocusableItems.filter(tab => !tab.hasAttribute("zen-glance-tab")).slice(
|
||||||
- isPinned ? 0 : numPinned,
|
+ isPinned ? (essential ? 0 : gBrowser._numZenVisibleEssentials) : numPinned,
|
||||||
- isPinned ? numPinned : undefined
|
+ isPinned ? (essential ? gBrowser._numZenVisibleEssentials : numPinned) : undefined
|
||||||
+ isPinned ? (essential ? 0 : gBrowser._numZenEssentials) : numPinned,
|
|
||||||
+ isPinned ? (essential ? gBrowser._numZenEssentials : numPinned) : undefined
|
|
||||||
);
|
);
|
||||||
+ if (draggedTab.group?.hasAttribute("split-view-group")) {
|
+ if (draggedTab.group?.hasAttribute("split-view-group")) {
|
||||||
+ draggedTab = draggedTab.group.labelElement;
|
+ draggedTab = draggedTab.group.labelElement;
|
||||||
|
@ -360,7 +384,7 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..de8b1ecf7cb844f6cf3e66a41b6024c5
|
||||||
|
|
||||||
if (this.#rtlMode) {
|
if (this.#rtlMode) {
|
||||||
tabs.reverse();
|
tabs.reverse();
|
||||||
@@ -2408,7 +2471,7 @@
|
@@ -2393,7 +2436,7 @@
|
||||||
let size = this.verticalMode ? "height" : "width";
|
let size = this.verticalMode ? "height" : "width";
|
||||||
let translateAxis = this.verticalMode ? "translateY" : "translateX";
|
let translateAxis = this.verticalMode ? "translateY" : "translateX";
|
||||||
let scrollDirection = this.verticalMode ? "scrollTop" : "scrollLeft";
|
let scrollDirection = this.verticalMode ? "scrollTop" : "scrollLeft";
|
||||||
|
@ -369,7 +393,7 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..de8b1ecf7cb844f6cf3e66a41b6024c5
|
||||||
let translateX = event.screenX - dragData.screenX;
|
let translateX = event.screenX - dragData.screenX;
|
||||||
let translateY = event.screenY - dragData.screenY;
|
let translateY = event.screenY - dragData.screenY;
|
||||||
|
|
||||||
@@ -2422,12 +2485,21 @@
|
@@ -2407,10 +2450,19 @@
|
||||||
let lastTab = tabs.at(-1);
|
let lastTab = tabs.at(-1);
|
||||||
let lastMovingTab = movingTabs.at(-1);
|
let lastMovingTab = movingTabs.at(-1);
|
||||||
let firstMovingTab = movingTabs[0];
|
let firstMovingTab = movingTabs[0];
|
||||||
|
@ -387,12 +411,9 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..de8b1ecf7cb844f6cf3e66a41b6024c5
|
||||||
+ shiftSize += 5; // A hack to allow more space for the group
|
+ shiftSize += 5; // A hack to allow more space for the group
|
||||||
+ }
|
+ }
|
||||||
let translate = screen - dragData[screenAxis];
|
let translate = screen - dragData[screenAxis];
|
||||||
- if (!isPinned) {
|
if (!isPinned) {
|
||||||
+ if (true) {
|
|
||||||
translate +=
|
translate +=
|
||||||
this.arrowScrollbox.scrollbox[scrollDirection] - dragData.scrollPos;
|
@@ -2431,6 +2483,9 @@
|
||||||
} else if (isPinned && this.verticalMode) {
|
|
||||||
@@ -2446,6 +2518,9 @@
|
|
||||||
// Shift the `.tab-group-label-container` to shift the label element.
|
// Shift the `.tab-group-label-container` to shift the label element.
|
||||||
item = item.parentElement;
|
item = item.parentElement;
|
||||||
}
|
}
|
||||||
|
@ -402,7 +423,7 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..de8b1ecf7cb844f6cf3e66a41b6024c5
|
||||||
item.style.transform = `${translateAxis}(${translate}px)`;
|
item.style.transform = `${translateAxis}(${translate}px)`;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2583,6 +2658,9 @@
|
@@ -2568,6 +2623,9 @@
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
let element = tabs[mid];
|
let element = tabs[mid];
|
||||||
|
@ -412,7 +433,7 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..de8b1ecf7cb844f6cf3e66a41b6024c5
|
||||||
let elementForSize = isTabGroupLabel(element)
|
let elementForSize = isTabGroupLabel(element)
|
||||||
? element.parentElement
|
? element.parentElement
|
||||||
: element;
|
: element;
|
||||||
@@ -2605,6 +2683,10 @@
|
@@ -2590,6 +2648,10 @@
|
||||||
if (!dropElement) {
|
if (!dropElement) {
|
||||||
dropElement = this.ariaFocusableItems[oldDropElementIndex];
|
dropElement = this.ariaFocusableItems[oldDropElementIndex];
|
||||||
}
|
}
|
||||||
|
@ -423,7 +444,7 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..de8b1ecf7cb844f6cf3e66a41b6024c5
|
||||||
let newDropElementIndex = dropElement
|
let newDropElementIndex = dropElement
|
||||||
? dropElement.elementIndex
|
? dropElement.elementIndex
|
||||||
: oldDropElementIndex;
|
: oldDropElementIndex;
|
||||||
@@ -2613,7 +2695,7 @@
|
@@ -2598,7 +2660,7 @@
|
||||||
let shouldCreateGroupOnDrop;
|
let shouldCreateGroupOnDrop;
|
||||||
let dropBefore;
|
let dropBefore;
|
||||||
if (dropElement) {
|
if (dropElement) {
|
||||||
|
@ -432,7 +453,7 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..de8b1ecf7cb844f6cf3e66a41b6024c5
|
||||||
? dropElement.parentElement
|
? dropElement.parentElement
|
||||||
: dropElement;
|
: dropElement;
|
||||||
|
|
||||||
@@ -2675,12 +2757,12 @@
|
@@ -2660,12 +2722,12 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -447,16 +468,7 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..de8b1ecf7cb844f6cf3e66a41b6024c5
|
||||||
dropElement != draggedTab &&
|
dropElement != draggedTab &&
|
||||||
isTab(dropElement) &&
|
isTab(dropElement) &&
|
||||||
!dropElement?.group &&
|
!dropElement?.group &&
|
||||||
@@ -2720,7 +2802,7 @@
|
@@ -2735,7 +2797,7 @@
|
||||||
// Dropping right before the tab group.
|
|
||||||
dropElement = dropElementGroup;
|
|
||||||
colorCode = undefined;
|
|
||||||
- } else if (dropElementGroup.collapsed) {
|
|
||||||
+ } else if (dropElement?.group?.hasAttribute("split-view-group")) {
|
|
||||||
// Dropping right after the collapsed tab group.
|
|
||||||
dropElement = dropElementGroup;
|
|
||||||
colorCode = undefined;
|
|
||||||
@@ -2750,7 +2832,7 @@
|
|
||||||
// Shift background tabs to leave a gap where the dragged tab
|
// Shift background tabs to leave a gap where the dragged tab
|
||||||
// would currently be dropped.
|
// would currently be dropped.
|
||||||
for (let item of tabs) {
|
for (let item of tabs) {
|
||||||
|
@ -465,7 +477,7 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..de8b1ecf7cb844f6cf3e66a41b6024c5
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2759,6 +2841,9 @@
|
@@ -2744,6 +2806,9 @@
|
||||||
if (isTabGroupLabel(item)) {
|
if (isTabGroupLabel(item)) {
|
||||||
// Shift the `.tab-group-label-container` to shift the label element.
|
// Shift the `.tab-group-label-container` to shift the label element.
|
||||||
item = item.parentElement;
|
item = item.parentElement;
|
||||||
|
@ -475,7 +487,7 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..de8b1ecf7cb844f6cf3e66a41b6024c5
|
||||||
}
|
}
|
||||||
item.style.transform = transform;
|
item.style.transform = transform;
|
||||||
}
|
}
|
||||||
@@ -2811,8 +2896,9 @@
|
@@ -2796,8 +2861,9 @@
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -487,7 +499,7 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..de8b1ecf7cb844f6cf3e66a41b6024c5
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -2824,6 +2910,12 @@
|
@@ -2809,6 +2875,12 @@
|
||||||
item = item.parentElement;
|
item = item.parentElement;
|
||||||
}
|
}
|
||||||
item.style.transform = "";
|
item.style.transform = "";
|
||||||
|
@ -500,7 +512,7 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..de8b1ecf7cb844f6cf3e66a41b6024c5
|
||||||
item.removeAttribute("dragover-createGroup");
|
item.removeAttribute("dragover-createGroup");
|
||||||
}
|
}
|
||||||
this.removeAttribute("movingtab-createGroup");
|
this.removeAttribute("movingtab-createGroup");
|
||||||
@@ -2870,7 +2962,7 @@
|
@@ -2855,7 +2927,7 @@
|
||||||
let postTransitionCleanup = () => {
|
let postTransitionCleanup = () => {
|
||||||
movingTab._moveTogetherSelectedTabsData.animate = false;
|
movingTab._moveTogetherSelectedTabsData.animate = false;
|
||||||
};
|
};
|
||||||
|
@ -509,7 +521,7 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..de8b1ecf7cb844f6cf3e66a41b6024c5
|
||||||
postTransitionCleanup();
|
postTransitionCleanup();
|
||||||
} else {
|
} else {
|
||||||
let onTransitionEnd = transitionendEvent => {
|
let onTransitionEnd = transitionendEvent => {
|
||||||
@@ -3043,7 +3135,7 @@
|
@@ -3028,7 +3100,7 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
_notifyBackgroundTab(aTab) {
|
_notifyBackgroundTab(aTab) {
|
||||||
|
@ -518,7 +530,7 @@ index 84d633471c89230b981d8a07babef4e0c76c0338..de8b1ecf7cb844f6cf3e66a41b6024c5
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3169,6 +3261,9 @@
|
@@ -3154,6 +3226,9 @@
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
diff --git a/browser/components/urlbar/UrlbarInput.sys.mjs b/browser/components/urlbar/UrlbarInput.sys.mjs
|
diff --git a/browser/components/urlbar/UrlbarInput.sys.mjs b/browser/components/urlbar/UrlbarInput.sys.mjs
|
||||||
index 0c5145c3d31862bd2c6b5ed2faa88f02425ffde1..1cf86995514b2c00360f6ed681f0c640dac8ab56 100644
|
index 4b69136aa31bfef3a1d3b57ad0c75fe07fa26be0..2de9f51784a92442da84ead54312e879c1da127b 100644
|
||||||
--- a/browser/components/urlbar/UrlbarInput.sys.mjs
|
--- a/browser/components/urlbar/UrlbarInput.sys.mjs
|
||||||
+++ b/browser/components/urlbar/UrlbarInput.sys.mjs
|
+++ b/browser/components/urlbar/UrlbarInput.sys.mjs
|
||||||
@@ -68,6 +68,13 @@ XPCOMUtils.defineLazyPreferenceGetter(
|
@@ -68,6 +68,13 @@ XPCOMUtils.defineLazyPreferenceGetter(
|
||||||
|
@ -16,24 +16,19 @@ index 0c5145c3d31862bd2c6b5ed2faa88f02425ffde1..1cf86995514b2c00360f6ed681f0c640
|
||||||
const DEFAULT_FORM_HISTORY_NAME = "searchbar-history";
|
const DEFAULT_FORM_HISTORY_NAME = "searchbar-history";
|
||||||
const SEARCH_BUTTON_CLASS = "urlbar-search-button";
|
const SEARCH_BUTTON_CLASS = "urlbar-search-button";
|
||||||
|
|
||||||
@@ -355,7 +362,16 @@ export class UrlbarInput {
|
@@ -349,7 +356,11 @@ export class UrlbarInput {
|
||||||
// See _on_select(). HTMLInputElement.select() dispatches a "select"
|
// See _on_select(). HTMLInputElement.select() dispatches a "select"
|
||||||
// event but does not set the primary selection.
|
// event but does not set the primary selection.
|
||||||
this._suppressPrimaryAdjustment = true;
|
this._suppressPrimaryAdjustment = true;
|
||||||
+ const zenToolbox = this.document.getElementById("navigator-toolbox");
|
+ this.document.getElementById("navigator-toolbox").setAttribute("supress-primary-adjustment", !this.document.getElementById("navigator-toolbox").hasAttribute("zen-has-hover"));
|
||||||
+ this.window.document.documentElement.setAttribute("supress-primary-adjustment", !(
|
|
||||||
+ zenToolbox.hasAttribute("zen-has-hover") ||
|
|
||||||
+ zenToolbox.hasAttribute("zen-has-empty-tab") ||
|
|
||||||
+ zenToolbox.hasAttribute("zen-user-show")
|
|
||||||
+ ));
|
|
||||||
this.inputField.select();
|
this.inputField.select();
|
||||||
+ this.document.ownerGlobal.setTimeout(() => {
|
+ this.document.ownerGlobal.setTimeout(() => {
|
||||||
+ this.window.document.documentElement.removeAttribute("supress-primary-adjustment");
|
+ this.document.getElementById("navigator-toolbox").removeAttribute("supress-primary-adjustment");
|
||||||
+ }, 0);
|
+ }, 100);
|
||||||
this._suppressPrimaryAdjustment = false;
|
this._suppressPrimaryAdjustment = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -431,6 +447,10 @@ export class UrlbarInput {
|
@@ -425,6 +436,10 @@ export class UrlbarInput {
|
||||||
hideSearchTerms = false,
|
hideSearchTerms = false,
|
||||||
isSameDocument = false
|
isSameDocument = false
|
||||||
) {
|
) {
|
||||||
|
@ -44,25 +39,20 @@ index 0c5145c3d31862bd2c6b5ed2faa88f02425ffde1..1cf86995514b2c00360f6ed681f0c640
|
||||||
// We only need to update the searchModeUI on tab switch conditionally
|
// We only need to update the searchModeUI on tab switch conditionally
|
||||||
// as we only persist searchMode with ScotchBonnet enabled.
|
// as we only persist searchMode with ScotchBonnet enabled.
|
||||||
if (
|
if (
|
||||||
@@ -735,8 +755,16 @@ export class UrlbarInput {
|
@@ -698,8 +713,11 @@ export class UrlbarInput {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
-
|
-
|
||||||
+ const zenToolbox = this.document.getElementById("navigator-toolbox");
|
+ this.document.getElementById("navigator-toolbox").setAttribute("supress-primary-adjustment", !this.document.getElementById("navigator-toolbox").hasAttribute("zen-has-hover"));
|
||||||
+ this.window.document.documentElement.setAttribute("supress-primary-adjustment", !(
|
|
||||||
+ zenToolbox.hasAttribute("zen-has-hover") ||
|
|
||||||
+ zenToolbox.hasAttribute("zen-has-empty-tab") ||
|
|
||||||
+ zenToolbox.hasAttribute("zen-user-show")
|
|
||||||
+ ));
|
|
||||||
this.handleNavigation({ event });
|
this.handleNavigation({ event });
|
||||||
+ this.document.ownerGlobal.setTimeout(() => {
|
+ this.document.ownerGlobal.setTimeout(() => {
|
||||||
+ this.window.document.documentElement.removeAttribute("supress-primary-adjustment");
|
+ this.document.getElementById("navigator-toolbox").removeAttribute("supress-primary-adjustment");
|
||||||
+ }, 0);
|
+ }, 200);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -1142,7 +1170,11 @@ export class UrlbarInput {
|
@@ -1093,7 +1111,11 @@ export class UrlbarInput {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this.#providesSearchMode(result)) {
|
if (!this.#providesSearchMode(result)) {
|
||||||
|
@ -74,8 +64,8 @@ index 0c5145c3d31862bd2c6b5ed2faa88f02425ffde1..1cf86995514b2c00360f6ed681f0c640
|
||||||
+ }
|
+ }
|
||||||
}
|
}
|
||||||
|
|
||||||
if (isCanonized) {
|
this.controller.recordSelectedResult(event, result);
|
||||||
@@ -2191,6 +2223,10 @@ export class UrlbarInput {
|
@@ -2125,6 +2147,10 @@ export class UrlbarInput {
|
||||||
await this.#updateLayoutBreakoutDimensions();
|
await this.#updateLayoutBreakoutDimensions();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -86,20 +76,19 @@ index 0c5145c3d31862bd2c6b5ed2faa88f02425ffde1..1cf86995514b2c00360f6ed681f0c640
|
||||||
startLayoutExtend() {
|
startLayoutExtend() {
|
||||||
if (!this.#allowBreakout || this.hasAttribute("breakout-extend")) {
|
if (!this.#allowBreakout || this.hasAttribute("breakout-extend")) {
|
||||||
// Do not expand if the Urlbar does not support being expanded or it is
|
// Do not expand if the Urlbar does not support being expanded or it is
|
||||||
@@ -2205,6 +2241,12 @@ export class UrlbarInput {
|
@@ -2147,6 +2173,11 @@ export class UrlbarInput {
|
||||||
|
|
||||||
this.setAttribute("breakout-extend", "true");
|
this.setAttribute("breakout-extend", "true");
|
||||||
|
|
||||||
+ if (lazy.ZEN_URLBAR_BEHAVIOR == 'float' || (lazy.ZEN_URLBAR_BEHAVIOR == 'floating-on-type' && !this.focusedViaMousedown)) {
|
+ if (lazy.ZEN_URLBAR_BEHAVIOR == 'float' || (lazy.ZEN_URLBAR_BEHAVIOR == 'floating-on-type' && !this.focusedViaMousedown)) {
|
||||||
+ this.setAttribute("zen-floating-urlbar", "true");
|
+ this.setAttribute("zen-floating-urlbar", "true");
|
||||||
+ this.window.gZenUIManager.onFloatingURLBarOpen();
|
|
||||||
+ } else {
|
+ } else {
|
||||||
+ this.removeAttribute("zen-floating-urlbar");
|
+ this.removeAttribute("zen-floating-urlbar");
|
||||||
+ }
|
+ }
|
||||||
// Enable the animation only after the first extend call to ensure it
|
// Enable the animation only after the first extend call to ensure it
|
||||||
// doesn't run when opening a new window.
|
// doesn't run when opening a new window.
|
||||||
if (!this.hasAttribute("breakout-extend-animate")) {
|
if (!this.hasAttribute("breakout-extend-animate")) {
|
||||||
@@ -2224,6 +2266,24 @@ export class UrlbarInput {
|
@@ -2166,6 +2197,19 @@ export class UrlbarInput {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -108,23 +97,18 @@ index 0c5145c3d31862bd2c6b5ed2faa88f02425ffde1..1cf86995514b2c00360f6ed681f0c640
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ // Arc like URLbar: Blur the input on exit
|
+ // Arc like URLbar: Blur the input on exit
|
||||||
+ const zenToolbox = this.document.getElementById("navigator-toolbox");
|
+ this.document.getElementById("navigator-toolbox").setAttribute("supress-primary-adjustment", !this.document.getElementById("navigator-toolbox").hasAttribute("zen-has-hover"));
|
||||||
+ this.window.document.documentElement.setAttribute("supress-primary-adjustment", !(
|
|
||||||
+ zenToolbox.hasAttribute("zen-has-hover") ||
|
|
||||||
+ zenToolbox.hasAttribute("zen-has-empty-tab") ||
|
|
||||||
+ zenToolbox.hasAttribute("zen-user-show")
|
|
||||||
+ ));
|
|
||||||
+ this.window.gBrowser.selectedBrowser.focus();
|
+ this.window.gBrowser.selectedBrowser.focus();
|
||||||
+ this.document.ownerGlobal.setTimeout(() => {
|
+ this.window.setTimeout(() => {
|
||||||
+ this.window.document.documentElement.removeAttribute("supress-primary-adjustment");
|
+ this.document.getElementById("navigator-toolbox").removeAttribute("supress-primary-adjustment");
|
||||||
+ }, 0);
|
+ }, 100);
|
||||||
+
|
+
|
||||||
+ this.removeAttribute("zen-floating-urlbar");
|
+ this.removeAttribute("zen-floating-urlbar");
|
||||||
+
|
+
|
||||||
this.removeAttribute("breakout-extend");
|
this.removeAttribute("breakout-extend");
|
||||||
this.#updateTextboxPosition();
|
this.#updateTextboxPosition();
|
||||||
}
|
}
|
||||||
@@ -2553,7 +2613,7 @@ export class UrlbarInput {
|
@@ -2485,7 +2529,7 @@ export class UrlbarInput {
|
||||||
|
|
||||||
this.textbox.parentNode.style.setProperty(
|
this.textbox.parentNode.style.setProperty(
|
||||||
"--urlbar-container-height",
|
"--urlbar-container-height",
|
||||||
|
@ -133,15 +117,7 @@ index 0c5145c3d31862bd2c6b5ed2faa88f02425ffde1..1cf86995514b2c00360f6ed681f0c640
|
||||||
);
|
);
|
||||||
this.textbox.style.setProperty(
|
this.textbox.style.setProperty(
|
||||||
"--urlbar-height",
|
"--urlbar-height",
|
||||||
@@ -2968,6 +3028,7 @@ export class UrlbarInput {
|
@@ -2998,7 +3042,7 @@ export class UrlbarInput {
|
||||||
}
|
|
||||||
|
|
||||||
_toggleActionOverride(event) {
|
|
||||||
+ if (!Services.prefs.getBoolPref("zen.urlbar.enable-overrides")) return;
|
|
||||||
if (
|
|
||||||
event.keyCode == KeyEvent.DOM_VK_SHIFT ||
|
|
||||||
event.keyCode == KeyEvent.DOM_VK_ALT ||
|
|
||||||
@@ -3069,7 +3130,7 @@ export class UrlbarInput {
|
|
||||||
*/
|
*/
|
||||||
_trimValue(val) {
|
_trimValue(val) {
|
||||||
let trimmedValue = lazy.UrlbarPrefs.get("trimURLs")
|
let trimmedValue = lazy.UrlbarPrefs.get("trimURLs")
|
||||||
|
@ -150,7 +126,7 @@ index 0c5145c3d31862bd2c6b5ed2faa88f02425ffde1..1cf86995514b2c00360f6ed681f0c640
|
||||||
: val;
|
: val;
|
||||||
// Only trim value if the directionality doesn't change to RTL and we're not
|
// Only trim value if the directionality doesn't change to RTL and we're not
|
||||||
// showing a strikeout https protocol.
|
// showing a strikeout https protocol.
|
||||||
@@ -3439,6 +3500,10 @@ export class UrlbarInput {
|
@@ -3368,6 +3412,10 @@ export class UrlbarInput {
|
||||||
}
|
}
|
||||||
reuseEmpty = true;
|
reuseEmpty = true;
|
||||||
}
|
}
|
||||||
|
@ -161,7 +137,7 @@ index 0c5145c3d31862bd2c6b5ed2faa88f02425ffde1..1cf86995514b2c00360f6ed681f0c640
|
||||||
if (
|
if (
|
||||||
where == "tab" &&
|
where == "tab" &&
|
||||||
reuseEmpty &&
|
reuseEmpty &&
|
||||||
@@ -3446,6 +3511,9 @@ export class UrlbarInput {
|
@@ -3375,6 +3423,9 @@ export class UrlbarInput {
|
||||||
) {
|
) {
|
||||||
where = "current";
|
where = "current";
|
||||||
}
|
}
|
||||||
|
@ -171,7 +147,7 @@ index 0c5145c3d31862bd2c6b5ed2faa88f02425ffde1..1cf86995514b2c00360f6ed681f0c640
|
||||||
return where;
|
return where;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3703,6 +3771,7 @@ export class UrlbarInput {
|
@@ -3632,6 +3683,7 @@ export class UrlbarInput {
|
||||||
this.setResultForCurrentValue(null);
|
this.setResultForCurrentValue(null);
|
||||||
this.handleCommand();
|
this.handleCommand();
|
||||||
this.controller.clearLastQueryContextCache();
|
this.controller.clearLastQueryContextCache();
|
||||||
|
@ -179,7 +155,7 @@ index 0c5145c3d31862bd2c6b5ed2faa88f02425ffde1..1cf86995514b2c00360f6ed681f0c640
|
||||||
|
|
||||||
this._suppressStartQuery = false;
|
this._suppressStartQuery = false;
|
||||||
});
|
});
|
||||||
@@ -3710,7 +3779,6 @@ export class UrlbarInput {
|
@@ -3639,7 +3691,6 @@ export class UrlbarInput {
|
||||||
contextMenu.addEventListener("popupshowing", () => {
|
contextMenu.addEventListener("popupshowing", () => {
|
||||||
// Close the results pane when the input field contextual menu is open,
|
// Close the results pane when the input field contextual menu is open,
|
||||||
// because paste and go doesn't want a result selection.
|
// because paste and go doesn't want a result selection.
|
||||||
|
@ -187,7 +163,7 @@ index 0c5145c3d31862bd2c6b5ed2faa88f02425ffde1..1cf86995514b2c00360f6ed681f0c640
|
||||||
|
|
||||||
let controller =
|
let controller =
|
||||||
this.document.commandDispatcher.getControllerForCommand("cmd_paste");
|
this.document.commandDispatcher.getControllerForCommand("cmd_paste");
|
||||||
@@ -4136,6 +4204,11 @@ export class UrlbarInput {
|
@@ -4053,6 +4104,11 @@ export class UrlbarInput {
|
||||||
}
|
}
|
||||||
|
|
||||||
_on_click(event) {
|
_on_click(event) {
|
||||||
|
@ -199,7 +175,7 @@ index 0c5145c3d31862bd2c6b5ed2faa88f02425ffde1..1cf86995514b2c00360f6ed681f0c640
|
||||||
if (
|
if (
|
||||||
event.target == this.inputField ||
|
event.target == this.inputField ||
|
||||||
event.target == this._inputContainer ||
|
event.target == this._inputContainer ||
|
||||||
@@ -4207,7 +4280,7 @@ export class UrlbarInput {
|
@@ -4124,7 +4180,7 @@ export class UrlbarInput {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -208,7 +184,7 @@ index 0c5145c3d31862bd2c6b5ed2faa88f02425ffde1..1cf86995514b2c00360f6ed681f0c640
|
||||||
this.view.autoOpen({ event });
|
this.view.autoOpen({ event });
|
||||||
} else {
|
} else {
|
||||||
if (this._untrimOnFocusAfterKeydown) {
|
if (this._untrimOnFocusAfterKeydown) {
|
||||||
@@ -4247,9 +4320,16 @@ export class UrlbarInput {
|
@@ -4164,9 +4220,12 @@ export class UrlbarInput {
|
||||||
}
|
}
|
||||||
|
|
||||||
_on_mousedown(event) {
|
_on_mousedown(event) {
|
||||||
|
@ -216,28 +192,24 @@ index 0c5145c3d31862bd2c6b5ed2faa88f02425ffde1..1cf86995514b2c00360f6ed681f0c640
|
||||||
+ switch (event.zenOriginalTarget || event.currentTarget) {
|
+ switch (event.zenOriginalTarget || event.currentTarget) {
|
||||||
case this.textbox: {
|
case this.textbox: {
|
||||||
this._mousedownOnUrlbarDescendant = true;
|
this._mousedownOnUrlbarDescendant = true;
|
||||||
+ const isProbablyFloating =
|
+ if (event.type != "click") {
|
||||||
+ (lazy.ZEN_URLBAR_BEHAVIOR == "floating-on-type" &&
|
|
||||||
+ this.hasAttribute("breakout-extend") && !this.focusedViaMousedown) ||
|
|
||||||
+ (lazy.ZEN_URLBAR_BEHAVIOR == "float") || this.window.gZenVerticalTabsManager._hasSetSingleToolbar;
|
|
||||||
+ if (event.type != "click" && isProbablyFloating || event.type == "click" && !isProbablyFloating) {
|
|
||||||
+ return true;
|
+ return true;
|
||||||
+ }
|
+ }
|
||||||
|
|
||||||
if (
|
if (
|
||||||
event.target != this.inputField &&
|
event.target != this.inputField &&
|
||||||
@@ -4261,6 +4341,10 @@ export class UrlbarInput {
|
@@ -4176,8 +4235,8 @@ export class UrlbarInput {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
this.focusedViaMousedown = !this.focused;
|
- this.focusedViaMousedown = !this.focused;
|
||||||
this._preventClickSelectsAll = this.focused;
|
- this._preventClickSelectsAll = this.focused;
|
||||||
+ if (isProbablyFloating) {
|
+ this.focusedViaMousedown = !(lazy.ZEN_URLBAR_BEHAVIOR === 'default' ? this.focused : this.hasAttribute("breakout-extend"));
|
||||||
+ this.focusedViaMousedown = !this.hasAttribute("breakout-extend");
|
+ this._preventClickSelectsAll = lazy.ZEN_URLBAR_BEHAVIOR === 'default' ? this.focused : this.hasAttribute("breakout-extend");
|
||||||
+ this._preventClickSelectsAll = this.hasAttribute("breakout-extend");
|
|
||||||
+ }
|
|
||||||
|
|
||||||
// Keep the focus status, since the attribute may be changed
|
// Keep the focus status, since the attribute may be changed
|
||||||
// upon calling this.focus().
|
// upon calling this.focus().
|
||||||
@@ -4301,7 +4385,7 @@ export class UrlbarInput {
|
@@ -4218,7 +4277,7 @@ export class UrlbarInput {
|
||||||
}
|
}
|
||||||
// Don't close the view when clicking on a tab; we may want to keep the
|
// Don't close the view when clicking on a tab; we may want to keep the
|
||||||
// view open on tab switch, and the TabSelect event arrived earlier.
|
// view open on tab switch, and the TabSelect event arrived earlier.
|
||||||
|
|
|
@ -1,12 +0,0 @@
|
||||||
diff --git a/browser/components/urlbar/UrlbarMuxerUnifiedComplete.sys.mjs b/browser/components/urlbar/UrlbarMuxerUnifiedComplete.sys.mjs
|
|
||||||
index dcf1af43d62979d3226d7f704c51a2f0bb935cc0..8879d657b99cb20cd657c2e4841738ffaa09c658 100644
|
|
||||||
--- a/browser/components/urlbar/UrlbarMuxerUnifiedComplete.sys.mjs
|
|
||||||
+++ b/browser/components/urlbar/UrlbarMuxerUnifiedComplete.sys.mjs
|
|
||||||
@@ -794,6 +794,7 @@ class MuxerUnifiedComplete extends UrlbarMuxer {
|
|
||||||
}
|
|
||||||
|
|
||||||
if (result.providerName == lazy.UrlbarProviderTabToSearch.name) {
|
|
||||||
+ return false;
|
|
||||||
// Discard the result if a tab-to-search result was added already.
|
|
||||||
if (!state.canAddTabToSearch) {
|
|
||||||
return false;
|
|
|
@ -1,56 +0,0 @@
|
||||||
diff --git a/browser/components/urlbar/UrlbarProviderPlaces.sys.mjs b/browser/components/urlbar/UrlbarProviderPlaces.sys.mjs
|
|
||||||
index 899e808c5f8cf14577404e3d1766fe967b32b065..82854a04edc21ac4552d06d6ba45c4714b5ef5cb 100644
|
|
||||||
--- a/browser/components/urlbar/UrlbarProviderPlaces.sys.mjs
|
|
||||||
+++ b/browser/components/urlbar/UrlbarProviderPlaces.sys.mjs
|
|
||||||
@@ -35,6 +35,8 @@ const QUERYINDEX_SWITCHTAB = 9;
|
|
||||||
const QUERYINDEX_FRECENCY = 10;
|
|
||||||
const QUERYINDEX_USERCONTEXTID = 11;
|
|
||||||
const QUERYINDEX_LASTVIST = 12;
|
|
||||||
+const QUERYINDEX_PINNEDTITLE = 13;
|
|
||||||
+const QUERYINDEX_PINNEDURL = 14;
|
|
||||||
|
|
||||||
// This SQL query fragment provides the following:
|
|
||||||
// - whether the entry is bookmarked (QUERYINDEX_BOOKMARKED)
|
|
||||||
@@ -56,11 +58,14 @@ const SQL_BOOKMARK_TAGS_FRAGMENT = `EXISTS(SELECT 1 FROM moz_bookmarks WHERE fk
|
|
||||||
// condition once, and avoid evaluating "btitle" and "tags" when it is false.
|
|
||||||
function defaultQuery(conditions = "") {
|
|
||||||
let query = `SELECT :query_type, h.url, h.title, ${SQL_BOOKMARK_TAGS_FRAGMENT},
|
|
||||||
- h.visit_count, h.typed, h.id, t.open_count, ${lazy.PAGES_FRECENCY_FIELD}, t.userContextId, h.last_visit_date
|
|
||||||
+ h.visit_count, h.typed, h.id, t.open_count, ${lazy.PAGES_FRECENCY_FIELD}, t.userContextId, h.last_visit_date,
|
|
||||||
+ zp.title AS pinned_title, zp.url AS pinned_url
|
|
||||||
FROM moz_places h
|
|
||||||
LEFT JOIN moz_openpages_temp t
|
|
||||||
ON t.url = h.url
|
|
||||||
AND (t.userContextId = :userContextId OR (t.userContextId <> -1 AND :userContextId IS NULL))
|
|
||||||
+ LEFT JOIN zen_pins zp
|
|
||||||
+ ON zp.url = h.url
|
|
||||||
WHERE (
|
|
||||||
(:switchTabsEnabled AND t.open_count > 0) OR
|
|
||||||
${lazy.PAGES_FRECENCY_FIELD} <> 0
|
|
||||||
@@ -74,7 +79,7 @@ function defaultQuery(conditions = "") {
|
|
||||||
:matchBehavior, :searchBehavior, NULL)
|
|
||||||
ELSE
|
|
||||||
AUTOCOMPLETE_MATCH(:searchString, h.url,
|
|
||||||
- h.title, '',
|
|
||||||
+ IFNULL(zp.title, h.title), '',
|
|
||||||
h.visit_count, h.typed,
|
|
||||||
0, t.open_count,
|
|
||||||
:matchBehavior, :searchBehavior, NULL)
|
|
||||||
@@ -1130,11 +1135,14 @@ Search.prototype = {
|
|
||||||
let lastVisit = lastVisitPRTime
|
|
||||||
? lazy.PlacesUtils.toDate(lastVisitPRTime).getTime()
|
|
||||||
: undefined;
|
|
||||||
-
|
|
||||||
+ let pinnedTitle = row.getResultByIndex(QUERYINDEX_PINNEDTITLE);
|
|
||||||
+ let pinnedUrl = row.getResultByIndex(QUERYINDEX_PINNEDURL);
|
|
||||||
+
|
|
||||||
+
|
|
||||||
let match = {
|
|
||||||
placeId,
|
|
||||||
- value: url,
|
|
||||||
- comment: bookmarkTitle || historyTitle,
|
|
||||||
+ value: pinnedUrl || url,
|
|
||||||
+ comment: pinnedTitle || bookmarkTitle || historyTitle,
|
|
||||||
icon: UrlbarUtils.getIconForUrl(url),
|
|
||||||
frecency: frecency || FRECENCY_DEFAULT,
|
|
||||||
userContextId,
|
|
|
@ -1,12 +0,0 @@
|
||||||
diff --git a/browser/components/urlbar/UrlbarValueFormatter.sys.mjs b/browser/components/urlbar/UrlbarValueFormatter.sys.mjs
|
|
||||||
index dfa91b76ad3890ceadb1b1b5d7a63b7074fbb776..6369fa1cdb242de32338bbce6debcdab2a04ca02 100644
|
|
||||||
--- a/browser/components/urlbar/UrlbarValueFormatter.sys.mjs
|
|
||||||
+++ b/browser/components/urlbar/UrlbarValueFormatter.sys.mjs
|
|
||||||
@@ -585,6 +585,7 @@ export class UrlbarValueFormatter {
|
|
||||||
this.window.requestAnimationFrame(() => {
|
|
||||||
if (instance == this._resizeInstance) {
|
|
||||||
this.#ensureFormattedHostVisible();
|
|
||||||
+ this._formatURL();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}, 100);
|
|
|
@ -1,5 +1,5 @@
|
||||||
diff --git a/browser/components/urlbar/UrlbarView.sys.mjs b/browser/components/urlbar/UrlbarView.sys.mjs
|
diff --git a/browser/components/urlbar/UrlbarView.sys.mjs b/browser/components/urlbar/UrlbarView.sys.mjs
|
||||||
index e17f3d34367d6567c89f632b6d1ce537608a6829..7528dfb0abc8ea8d9315591cd529a341b4c3962a 100644
|
index d5382623595de8daed8cd13ea2eb2de329a4bd92..8e160e0bb5a1cd626753feba2008a24e3bbd84cd 100644
|
||||||
--- a/browser/components/urlbar/UrlbarView.sys.mjs
|
--- a/browser/components/urlbar/UrlbarView.sys.mjs
|
||||||
+++ b/browser/components/urlbar/UrlbarView.sys.mjs
|
+++ b/browser/components/urlbar/UrlbarView.sys.mjs
|
||||||
@@ -609,7 +609,7 @@ export class UrlbarView {
|
@@ -609,7 +609,7 @@ export class UrlbarView {
|
||||||
|
@ -11,21 +11,3 @@ index e17f3d34367d6567c89f632b6d1ce537608a6829..7528dfb0abc8ea8d9315591cd529a341
|
||||||
// Try to reuse the cached top-sites context. If it's not cached, then
|
// Try to reuse the cached top-sites context. If it's not cached, then
|
||||||
// there will be a gap of time between when the input is focused and
|
// there will be a gap of time between when the input is focused and
|
||||||
// when the view opens that can be perceived as flicker.
|
// when the view opens that can be perceived as flicker.
|
||||||
@@ -1325,7 +1325,7 @@ export class UrlbarView {
|
|
||||||
includeHiddenExposures: true,
|
|
||||||
});
|
|
||||||
let canBeVisible =
|
|
||||||
- newSpanCount <= this.#queryContext.maxResults && !seenMisplacedResult;
|
|
||||||
+ newSpanCount < this.#queryContext.maxResults && !seenMisplacedResult;
|
|
||||||
if (result.isHiddenExposure) {
|
|
||||||
if (canBeVisible) {
|
|
||||||
this.controller.engagementEvent.addExposure(
|
|
||||||
@@ -2975,7 +2975,7 @@ export class UrlbarView {
|
|
||||||
}
|
|
||||||
|
|
||||||
#enableOrDisableRowWrap() {
|
|
||||||
- let wrap = getBoundsWithoutFlushing(this.input.textbox).width < 650;
|
|
||||||
+ let wrap = false;
|
|
||||||
this.#rows.toggleAttribute("wrap", wrap);
|
|
||||||
this.oneOffSearchButtons.container.toggleAttribute("wrap", wrap);
|
|
||||||
}
|
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
diff --git a/browser/extensions/newtab/lib/ActivityStream.sys.mjs b/browser/extensions/newtab/lib/ActivityStream.sys.mjs
|
diff --git a/browser/extensions/newtab/lib/ActivityStream.sys.mjs b/browser/extensions/newtab/lib/ActivityStream.sys.mjs
|
||||||
index a00011de585a40b91d33364a04c6bf5c86145ecd..f98b6d11519a80aff307513fd77361179f9914a4 100644
|
index 14183ad7165dc91126b4409b26f669409c4e9905..be979225b89b193b9e9c8903de5740dc04a8999f 100644
|
||||||
--- a/browser/extensions/newtab/lib/ActivityStream.sys.mjs
|
--- a/browser/extensions/newtab/lib/ActivityStream.sys.mjs
|
||||||
+++ b/browser/extensions/newtab/lib/ActivityStream.sys.mjs
|
+++ b/browser/extensions/newtab/lib/ActivityStream.sys.mjs
|
||||||
@@ -228,7 +228,7 @@ export const PREFS_CONFIG = new Map([
|
@@ -215,7 +215,7 @@ export const PREFS_CONFIG = new Map([
|
||||||
"showSponsoredTopSites",
|
"showSponsoredTopSites",
|
||||||
{
|
{
|
||||||
title: "Show sponsored top sites",
|
title: "Show sponsored top sites",
|
||||||
|
|
|
@ -1,22 +0,0 @@
|
||||||
diff --git a/browser/installer/windows/nsis/defines.nsi.in b/browser/installer/windows/nsis/defines.nsi.in
|
|
||||||
index eb9e403c36510bfda09eb84b8a35dff731279f5d..939d34dff255122947bf3eeabc9087685f101568 100644
|
|
||||||
--- a/browser/installer/windows/nsis/defines.nsi.in
|
|
||||||
+++ b/browser/installer/windows/nsis/defines.nsi.in
|
|
||||||
@@ -90,7 +90,7 @@
|
|
||||||
!define BETA_UPDATE_CHANNEL
|
|
||||||
!endif
|
|
||||||
|
|
||||||
-!define BaseURLStubPing "http://download-stats.mozilla.org/stub"
|
|
||||||
+!define BaseURLStubPing ""
|
|
||||||
|
|
||||||
# ARCH is used when it is necessary to differentiate the x64 registry keys from
|
|
||||||
# the x86 registry keys (e.g. the uninstall registry key).
|
|
||||||
@@ -148,7 +148,7 @@ VIAddVersionKey "ProductVersion" "${AppVersion}"
|
|
||||||
!define APPROXIMATE_REQUIRED_SPACE_MB "145"
|
|
||||||
|
|
||||||
# Constants for parts of the telemetry submission URL
|
|
||||||
-!define TELEMETRY_BASE_URL https://incoming.telemetry.mozilla.org/submit
|
|
||||||
+!define TELEMETRY_BASE_URL
|
|
||||||
!define TELEMETRY_NAMESPACE firefox-installer
|
|
||||||
!define TELEMETRY_INSTALL_PING_VERSION 1
|
|
||||||
!define TELEMETRY_INSTALL_PING_DOCTYPE install
|
|
|
@ -1,20 +0,0 @@
|
||||||
diff --git a/browser/installer/windows/nsis/installer.nsi b/browser/installer/windows/nsis/installer.nsi
|
|
||||||
index 491bcbbd8430410fa930e7b52491ea62f2c48bbc..42d960f4adb4837009e0106a137c14fcbd7a55f9 100755
|
|
||||||
--- a/browser/installer/windows/nsis/installer.nsi
|
|
||||||
+++ b/browser/installer/windows/nsis/installer.nsi
|
|
||||||
@@ -837,7 +837,7 @@ Section "-InstallEndCleanup"
|
|
||||||
; When we're using the GUI, .onGUIEnd sends the ping, but of course that isn't
|
|
||||||
; invoked when we're running silently.
|
|
||||||
${If} ${Silent}
|
|
||||||
- Call SendPing
|
|
||||||
+ ; Call SendPing
|
|
||||||
${EndIf}
|
|
||||||
SectionEnd
|
|
||||||
|
|
||||||
@@ -1965,5 +1965,5 @@ FunctionEnd
|
|
||||||
|
|
||||||
Function .onGUIEnd
|
|
||||||
${OnEndCommon}
|
|
||||||
- Call SendPing
|
|
||||||
+ ; Call SendPing
|
|
||||||
FunctionEnd
|
|
|
@ -1,13 +0,0 @@
|
||||||
diff --git a/browser/locales/en-US/installer/custom.properties b/browser/locales/en-US/installer/custom.properties
|
|
||||||
index 8c33192e589de1d819cbb21c31cec0480ed4c85e..9db296363303c153dc05ad9e85493f1197bb1efd 100644
|
|
||||||
--- a/browser/locales/en-US/installer/custom.properties
|
|
||||||
+++ b/browser/locales/en-US/installer/custom.properties
|
|
||||||
@@ -73,7 +73,7 @@ STATUS_INSTALL_APP=Installing $BrandShortName…
|
|
||||||
STATUS_UNINSTALL_MAIN=Uninstalling $BrandShortName…
|
|
||||||
STATUS_CLEANUP=A Little Housekeeping…
|
|
||||||
|
|
||||||
-UN_SURVEY_CHECKBOX_LABEL=Tell Mozilla why you uninstalled $BrandShortName
|
|
||||||
+UN_SURVEY_CHECKBOX_LABEL=Tell Zen´s Team why you uninstalled $BrandShortName
|
|
||||||
|
|
||||||
# _DESC strings support approximately 65 characters per line.
|
|
||||||
# One line
|
|
|
@ -1,8 +1,8 @@
|
||||||
diff --git a/browser/modules/ExtensionsUI.sys.mjs b/browser/modules/ExtensionsUI.sys.mjs
|
diff --git a/browser/modules/ExtensionsUI.sys.mjs b/browser/modules/ExtensionsUI.sys.mjs
|
||||||
index 9734d95742035dbe6f608ad3cdaaefc6ed5b83bc..9a7bbb272025e84968d3173faca259f558746c5e 100644
|
index 3f74e47bf7602fa800d1cf3034ec67055cc792b6..e700b88d1aee80c946e234f89f695a31d71ff608 100644
|
||||||
--- a/browser/modules/ExtensionsUI.sys.mjs
|
--- a/browser/modules/ExtensionsUI.sys.mjs
|
||||||
+++ b/browser/modules/ExtensionsUI.sys.mjs
|
+++ b/browser/modules/ExtensionsUI.sys.mjs
|
||||||
@@ -466,7 +466,7 @@ export var ExtensionsUI = {
|
@@ -436,7 +436,7 @@ export var ExtensionsUI = {
|
||||||
eventCallback,
|
eventCallback,
|
||||||
removeOnDismissal: true,
|
removeOnDismissal: true,
|
||||||
popupOptions: {
|
popupOptions: {
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
diff --git a/browser/themes/BuiltInThemeConfig.sys.mjs b/browser/themes/BuiltInThemeConfig.sys.mjs
|
diff --git a/browser/themes/BuiltInThemeConfig.sys.mjs b/browser/themes/BuiltInThemeConfig.sys.mjs
|
||||||
index a5361f1f0ec57f575f8d76e118ff762dc7547501..db5c5eb2059b4ceef3911fd807bf985408859d1a 100644
|
index 081187147736f56abfe5866a69e00ac13a8dd940..9a980fe858c1a77af7634037aebc332d237e9c11 100644
|
||||||
--- a/browser/themes/BuiltInThemeConfig.sys.mjs
|
--- a/browser/themes/BuiltInThemeConfig.sys.mjs
|
||||||
+++ b/browser/themes/BuiltInThemeConfig.sys.mjs
|
+++ b/browser/themes/BuiltInThemeConfig.sys.mjs
|
||||||
@@ -33,11 +33,4 @@ export const BuiltInThemeConfig = new Map([
|
@@ -33,13 +33,6 @@ export const BuiltInThemeConfig = new Map([
|
||||||
path: "resource://builtin-themes/dark/",
|
path: "resource://builtin-themes/dark/",
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
|
@ -13,4 +13,6 @@ index a5361f1f0ec57f575f8d76e118ff762dc7547501..db5c5eb2059b4ceef3911fd807bf9854
|
||||||
- path: "resource://builtin-themes/alpenglow/",
|
- path: "resource://builtin-themes/alpenglow/",
|
||||||
- },
|
- },
|
||||||
- ],
|
- ],
|
||||||
]);
|
[
|
||||||
|
"2022red-colorway@mozilla.org",
|
||||||
|
{
|
||||||
|
|
22
src/browser/themes/BuiltInThemes-sys-mjs.patch
Normal file
22
src/browser/themes/BuiltInThemes-sys-mjs.patch
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
diff --git a/browser/themes/BuiltInThemes.sys.mjs b/browser/themes/BuiltInThemes.sys.mjs
|
||||||
|
index cc7f6cf93e04d339fb79a028b1e5ac6e79eae9c3..85e0d653f9a6d577bdea2a1c9d53018dd45684fa 100644
|
||||||
|
--- a/browser/themes/BuiltInThemes.sys.mjs
|
||||||
|
+++ b/browser/themes/BuiltInThemes.sys.mjs
|
||||||
|
@@ -74,7 +74,7 @@ class _BuiltInThemes {
|
||||||
|
maybeInstallActiveBuiltInTheme() {
|
||||||
|
const activeThemeID = Services.prefs.getStringPref(
|
||||||
|
kActiveThemePref,
|
||||||
|
- "default-theme@mozilla.org"
|
||||||
|
+ "firefox-compact-dark@mozilla.org"
|
||||||
|
);
|
||||||
|
let activeBuiltInTheme = this.builtInThemeMap.get(activeThemeID);
|
||||||
|
|
||||||
|
@@ -166,7 +166,7 @@ class _BuiltInThemes {
|
||||||
|
async _uninstallExpiredThemes() {
|
||||||
|
const activeThemeID = Services.prefs.getStringPref(
|
||||||
|
kActiveThemePref,
|
||||||
|
- "default-theme@mozilla.org"
|
||||||
|
+ "firefox-compact-dark@mozilla.org"
|
||||||
|
);
|
||||||
|
const now = new Date();
|
||||||
|
const expiredThemes = Array.from(this.builtInThemeMap.entries()).filter(
|
22
src/browser/themes/addons/jar-mn.patch
Normal file
22
src/browser/themes/addons/jar-mn.patch
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
diff --git a/browser/themes/addons/jar.mn b/browser/themes/addons/jar.mn
|
||||||
|
index 69bb3000d6d2d249d1d77262dc2a0057d0318308..bbed04a6b6f11c582e17e08201db260b9ed496b7 100644
|
||||||
|
--- a/browser/themes/addons/jar.mn
|
||||||
|
+++ b/browser/themes/addons/jar.mn
|
||||||
|
@@ -5,8 +5,8 @@
|
||||||
|
browser.jar:
|
||||||
|
% resource builtin-themes %content/builtin-themes/
|
||||||
|
|
||||||
|
- content/builtin-themes/alpenglow (alpenglow/*.svg)
|
||||||
|
- content/builtin-themes/alpenglow/manifest.json (alpenglow/manifest.json)
|
||||||
|
+# content/builtin-themes/alpenglow (alpenglow/*.svg)
|
||||||
|
+# content/builtin-themes/alpenglow/manifest.json (alpenglow/manifest.json)
|
||||||
|
|
||||||
|
content/builtin-themes/dark (dark/*.svg)
|
||||||
|
content/builtin-themes/dark (dark/*.css)
|
||||||
|
@@ -100,3 +100,5 @@ browser.jar:
|
||||||
|
content/builtin-themes/colorways/2022innovator/balanced/manifest.json (colorways/2022-independent-voices/innovator/balanced/manifest.json)
|
||||||
|
content/builtin-themes/colorways/2022innovator/bold (colorways/2022-independent-voices/innovator/bold/*.svg)
|
||||||
|
content/builtin-themes/colorways/2022innovator/bold/manifest.json (colorways/2022-independent-voices/innovator/bold/manifest.json)
|
||||||
|
+
|
||||||
|
+#include zen-addons.inc.mn
|
||||||
|
\ No newline at end of file
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue