diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index d8112de01..81ce7483b 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -6,7 +6,8 @@ body: value: | Thank you for filing a bug report! - ## Important + ## IMPORTANT READ + - Please provide descriptive titles. Bad titles do more harm than good. - Please search existing issues to avoid creating duplicates. - For enhancement requests, please use GitHub Discussions. - Please fill out the template below to the best of your ability. @@ -20,6 +21,10 @@ body: - label: I have read the instructions. - label: I have searched existing issues and avoided creating duplicates. - label: I am not filing an enhancement request. + - label: I have checked that this issue cannot be reproduced on Mozilla Firefox. + - label: I have checked that this issue can be reproduced once I removed all my Mods and Custom CSS. + validations: + required: true - type: textarea id: what-happened attributes: @@ -28,19 +33,12 @@ body: placeholder: Tell us what you see! validations: required: true - - type: checkboxes - id: firefox - attributes: - label: Reproducible? - description: Is this issue reproducible on Firefox? - options: - - label: I have checked that this issue cannot be reproduced on Mozilla Firefox. - type: input id: version attributes: label: Version description: What version of our software are you running? Please do not use "latest" or "newest" as version numbers. Go to `Help -> About Zen` to find the version number. - placeholder: 1.0.0 + placeholder: 1.0.0b validations: required: true - type: dropdown @@ -54,10 +52,40 @@ body: - Linux (Tarball) - macOS - aarch64 - macOS - Intel - - Windows + - Windows - x64 + - Windows - aarch64 - Other validations: required: true + - type: dropdown + id: component + attributes: + label: What component is this issue related to? + options: + - Other + - Compact Mode + - Workspaces + - Mods / Themes + - Glance + - URL Bar + - Tabs + - Split View + - Settings + - Privacy + - Performance + - Media Controler + - Tab unloading + - Tab Folders + - Keyboard Shortcuts + - Security + - Extensions + - Customizable UI / Toolbars + - Localization + - Bookmarks + - Sync + validations: + required: true + - type: textarea id: logs attributes: diff --git a/.github/advanced-issue-labeler.yml b/.github/advanced-issue-labeler.yml new file mode 100644 index 000000000..b5c0c7ef1 --- /dev/null +++ b/.github/advanced-issue-labeler.yml @@ -0,0 +1,58 @@ +policy: + - section: + - id: [component] + label: + # Make sure it's in sync with the dropdown in the issue template + - name: 'component: sync' + keys: ['Sync'] + - name: 'component: compact-mode' + keys: ['Compact Mode'] + - name: 'component: workspaces' + keys: ['Workspaces'] + - name: 'component: mods-themes' + keys: ['Mods / Themes'] + - name: 'component: bookmarks' + keys: ['Bookmarks'] + - name: 'component: glance' + keys: ['Glance'] + - name: 'component: url-bar' + keys: ['URL Bar'] + - name: 'component: tabs' + keys: ['Tabs'] + - name: 'component: settings' + keys: ['Settings'] + - name: 'component: privacy' + keys: ['Privacy'] + - name: 'component: split-view' + keys: ['Split View'] + - name: 'component: performance' + keys: ['Performance'] + - name: 'component: media-controller' + keys: ['Media Controler'] + - name: 'component: tab-unloading' + keys: ['Tab unloading'] + - name: 'component: tab-folders' + keys: ['Tab Folders'] + - name: 'component: keyboard-shortcuts' + keys: ['Keyboard Shortcuts'] + - name: 'component: security' + keys: ['Security'] + - name: 'component: extensions' + keys: ['Extensions'] + - name: 'component: customizable-ui-toolbars' + keys: ['Customizable UI / Toolbars'] + - name: 'component: localization' + keys: ['Localization'] + - name: 'component: other' + keys: ['Other'] + + - id: [platform] + block-list: ['Other'] + label: + # Make sure it's in sync with the dropdown in the issue template + - name: 'platform: linux' + keys: ['Linux (AppImage)', 'Linux (Flatpak)', 'Linux (Tarball)'] + - name: 'platform: macOS' + keys: ['macOS - aarch64', 'macOS - Intel'] + - name: 'platform: windows' + keys: ['Windows - x64', 'Windows - aarch64'] diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 27653b5bb..a3c8132ea 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -51,7 +51,6 @@ jobs: echo "update_branch: ${{ inputs.update_branch }}" echo "GITHUB_REPOSITORY: ${{ github.repository }}" echo "GITHUB_REPOSITORY_OWNER: ${{ github.repository_owner }}" - echo "GITHUB_REPOSITORY_OWNER: ${{ github.repository_owner }}" echo "GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}" buildid: @@ -386,23 +385,23 @@ jobs: set -eux export ARCH=${{ matrix.arch }} UPINFO="gh-releases-zsync|$GITHUB_REPOSITORY_OWNER|desktop|latest|zen-$ARCH.AppImage.zsync" - rm AppDir/.DirIcon || true - cp configs/branding/${{ inputs.update_branch }}/logo128.png AppDir/usr/share/icons/hicolor/128x128/apps/zen.png - cp configs/branding/${{ inputs.update_branch }}/logo128.png AppDir/zen.png && ln -s zen.png AppDir/.DirIcon + rm build/AppDir/.DirIcon || true + cp configs/branding/${{ inputs.update_branch }}/logo128.png build/AppDir/usr/share/icons/hicolor/128x128/apps/zen.png + cp configs/branding/${{ inputs.update_branch }}/logo128.png build/AppDir/zen.png && ln -s zen.png build/AppDir/.DirIcon if [ "${{ inputs.update_branch }}" = "twilight" ]; then - sed -i -e 's/Name=Zen Browser/Name=Zen Twilight/g' AppDir/zen.desktop - sed -i -e 's/StartupWMClass=zen/StartupWMClass=zen-twilight/g' AppDir/zen.desktop + sed -i -e 's/Name=Zen Browser/Name=Zen Twilight/g' build/AppDir/zen.desktop + sed -i -e 's/StartupWMClass=zen/StartupWMClass=zen-twilight/g' build/AppDir/zen.desktop fi - APPDIR=AppDir + APPDIR=build/AppDir tar -xvf *.tar.* && rm -rf *.tar.* mv zen/* $APPDIR/ wget "https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-x86_64.AppImage" wget "https://github.com/VHSgunzo/uruntime/releases/latest/download/uruntime-appimage-squashfs-lite-$ARCH" chmod +x *.AppImage chmod +x ./uruntime-appimage-squashfs-lite-"$ARCH" - chmod +x ./AppDir/AppRun + chmod +x ./build/AppDir/AppRun # keep the uruntime mountpoint (massively speeds up launch time) sed -i 's|URUNTIME_MOUNT=[0-9]|URUNTIME_MOUNT=0|' ./uruntime-appimage-squashfs-lite-"$ARCH" @@ -629,7 +628,7 @@ jobs: pwd ls . ls .. - mv releases.xml ./flatpak/app.zen_browser.zen.metainfo.xml + mv releases.xml ./build/flatpak/app.zen_browser.zen.metainfo.xml # output the version to the file echo -n ${{ needs.build-data.outputs.version }} > ./flatpak/version diff --git a/.github/workflows/clear-cache.yml b/.github/workflows/clear-cache.yml deleted file mode 100644 index 59085df36..000000000 --- a/.github/workflows/clear-cache.yml +++ /dev/null @@ -1,33 +0,0 @@ -name: Clear cache - -on: - workflow_dispatch: - -permissions: - actions: write - -jobs: - clear-cache: - runs-on: ubuntu-latest - - steps: - - name: Clear cache - uses: actions/github-script@v7 - with: - script: | - console.log("About to clear") - const caches = await github.rest.actions.getActionsCacheList({ - owner: context.repo.owner, - repo: context.repo.repo, - }) - - for (const cache of caches.data.actions_caches) { - console.log(cache) - await github.rest.actions.deleteActionsCacheById({ - owner: context.repo.owner, - repo: context.repo.repo, - cache_id: cache.id, - }) - } - - console.log("Clear completed") diff --git a/.github/workflows/issue-labeler.yml b/.github/workflows/issue-labeler.yml new file mode 100644 index 000000000..5a8ed16ba --- /dev/null +++ b/.github/workflows/issue-labeler.yml @@ -0,0 +1,34 @@ +name: Issue labeler +on: + issues: + types: [opened] + +permissions: + contents: read + +jobs: + label-component: + runs-on: ubuntu-latest + + permissions: + # required for all workflows + issues: write + + # only required for workflows in private repositories + actions: read + contents: read + + steps: + - uses: actions/checkout@v4 + + - name: Parse issue form + uses: stefanbuck/github-issue-parser@v3 + id: issue-parser + with: + template-path: .github/ISSUE_TEMPLATE/bug_report.yml + + - name: Set labels based on animals field + uses: redhat-plumbers-in-action/advanced-issue-labeler@v2 + with: + issue-form: ${{ steps.issue-parser.outputs.jsonString }} + token: ${{ secrets.DEPLOY_KEY }} diff --git a/.github/workflows/linux-release-build.yml b/.github/workflows/linux-release-build.yml index 6de6c58d6..a56a81d7d 100644 --- a/.github/workflows/linux-release-build.yml +++ b/.github/workflows/linux-release-build.yml @@ -91,7 +91,7 @@ jobs: - name: Fix Rust version run: | # Install a rust version compatible with LLVM 18 - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain 1.79 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain $(cat .rust-toolchain) source $HOME/.cargo/env if test "${{ matrix.arch }}" = "aarch64"; then diff --git a/.github/workflows/macos-release-build.yml b/.github/workflows/macos-release-build.yml index 13c9b0d13..838c9a3e0 100644 --- a/.github/workflows/macos-release-build.yml +++ b/.github/workflows/macos-release-build.yml @@ -82,7 +82,7 @@ jobs: brew install watchman - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain 1.79 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain $(cat .rust-toolchain) source $HOME/.cargo/env if test "${{ matrix.arch }}" = "aarch64"; then diff --git a/.github/workflows/windows-profile-build.yml b/.github/workflows/windows-profile-build.yml index 4076fcec3..21805ac8c 100644 --- a/.github/workflows/windows-profile-build.yml +++ b/.github/workflows/windows-profile-build.yml @@ -94,11 +94,6 @@ jobs: echo 'LLVM_PROFDATA=/c/Users/runneradmin/.mozbuild/clang/bin/llvm-profdata.exe JARLOG_FILE=en-US.log ./mach python build/pgo/profileserver.py --binary /c/artifact/zen/zen.exe' '' >> mozilla-build-run.sh C:\mozilla-build\start-shell.bat $workspace_dir_current\mozilla-build-run.sh - - name: Debug session - if: ${{ failure() }} - uses: WarpBuilds/action-debugger@v1.3 - timeout-minutes: 15 - - name: Move profile data if: ${{ matrix.arch == 'x86_64' }} run: | diff --git a/.github/workflows/windows-release-build.yml b/.github/workflows/windows-release-build.yml index 602e397a4..e9d95eeec 100644 --- a/.github/workflows/windows-release-build.yml +++ b/.github/workflows/windows-release-build.yml @@ -176,14 +176,14 @@ jobs: - name: Setup Rust if: ${{ !(inputs.generate-gpo && matrix.arch == 'aarch64') }} run: | - cd engine/ - curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain 1.81 + curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y --default-toolchain $(cat .rust-toolchain) source $HOME/.cargo/env if test "${{ matrix.arch }}" = "aarch64"; then rustup target add aarch64-pc-windows-msvc else rustup target add x86_64-pc-windows-msvc fi + cd engine/ cargo install cargo-download --locked cargo download -x windows=0.58.0 export CARGO_INCREMENTAL=0 @@ -249,11 +249,6 @@ jobs: ls ./dist ls . - - name: Debug session - if: ${{ failure() }} - uses: WarpBuilds/action-debugger@v1.3 - timeout-minutes: 15 - - name: Move package for PGO upload if: ${{ inputs.generate-gpo && matrix.arch == 'x86_64' }} run: | diff --git a/.rust-toolchain b/.rust-toolchain new file mode 100644 index 000000000..a92432a8a --- /dev/null +++ b/.rust-toolchain @@ -0,0 +1 @@ +1.82 diff --git a/README.md b/README.md index d1ed17ff0..bd43bbb45 100644 --- a/README.md +++ b/README.md @@ -6,7 +6,7 @@ [](https://crowdin.com/project/zen-browser) [](https://github.com/zen-browser/desktop/actions/workflows/build.yml) -✨ Experience tranquillity while browsing the web without people tracking you! Zen is a privacy-focused browser that blocks trackers, ads, and other unwanted content while offering the best browsing experience! +✨ Experience tranquillity while browsing the internet with Zen! Our mission is to give you a balance between speed, privacy and productivity! <div flex="true"> <a href="https://zen-browser.app/download"> diff --git a/AppDir/AppRun b/build/AppDir/AppRun similarity index 100% rename from AppDir/AppRun rename to build/AppDir/AppRun diff --git a/AppDir/distribution/policies.json b/build/AppDir/distribution/policies.json similarity index 100% rename from AppDir/distribution/policies.json rename to build/AppDir/distribution/policies.json diff --git a/AppDir/usr/share/icons/hicolor/128x128/apps/.gitkeep b/build/AppDir/usr/share/icons/hicolor/128x128/apps/.gitkeep similarity index 100% rename from AppDir/usr/share/icons/hicolor/128x128/apps/.gitkeep rename to build/AppDir/usr/share/icons/hicolor/128x128/apps/.gitkeep diff --git a/AppDir/zen.desktop b/build/AppDir/zen.desktop similarity index 100% rename from AppDir/zen.desktop rename to build/AppDir/zen.desktop diff --git a/build/firefox-cache/l10n-last-commit-hash b/build/firefox-cache/l10n-last-commit-hash new file mode 100644 index 000000000..c00ad2b99 --- /dev/null +++ b/build/firefox-cache/l10n-last-commit-hash @@ -0,0 +1 @@ +6c9732d1c3b969818a320c60f02e8339822ac08e \ No newline at end of file diff --git a/flatpak/app.zen_browser.zen.yml.template b/build/flatpak/app.zen_browser.zen.yml.template similarity index 100% rename from flatpak/app.zen_browser.zen.yml.template rename to build/flatpak/app.zen_browser.zen.yml.template diff --git a/configs/common/mozconfig b/configs/common/mozconfig index 00c55a046..77878848e 100644 --- a/configs/common/mozconfig +++ b/configs/common/mozconfig @@ -8,7 +8,6 @@ ac_add_options --with-l10n-base="${topsrcdir}/browser/locales" export MOZ_USER_DIR="${name}" export MOZ_APP_BASENAME=Zen -export MOZ_APP_PROFILE=${binName} export MOZ_BRANDING_DIRECTORY=${brandingDir} export MOZ_OFFICIAL_BRANDING_DIRECTORY=${brandingDir} @@ -33,7 +32,8 @@ fi if test "$ZEN_RELEASE"; then - ac_add_options --enable-clang-plugin + # TODO: Make this successful in builds + # ac_add_options --enable-clang-plugin ac_add_options --enable-bootstrap=-sccache ac_add_options --enable-release diff --git a/configs/linux/mozconfig b/configs/linux/mozconfig index 82f66fb67..8d5a5082a 100644 --- a/configs/linux/mozconfig +++ b/configs/linux/mozconfig @@ -20,7 +20,7 @@ if test "$SURFER_COMPAT" = "x86_64"; then fi # Optimization flags for SURFER_COMPAT - ac_add_options --enable-optimize="-O3 -w -ftree-vectorize -Qvec -mfpmath=sse -mprfchw -msse3 -mcx16 -msahf" + ac_add_options --enable-optimize="-O3 -w -ftree-vectorize -mfpmath=sse -mprfchw -msse3 -mcx16 -msahf" export LDFLAGS="$LDFLAGS -Wl,-O3" export RUSTFLAGS="$RUSTFLAGS -Clink-args=--icf=safe" diff --git a/configs/macos/mozconfig b/configs/macos/mozconfig index 9c1f488f3..f8093dbdd 100644 --- a/configs/macos/mozconfig +++ b/configs/macos/mozconfig @@ -4,7 +4,6 @@ ac_add_options --disable-dmd ac_add_options --enable-eme=widevine export MOZ_MACBUNDLE_ID=${appId} -export MOZ_MACBUNDLE_NAME="Zen Browser.app" # override LTO settings # TODO: Dont use LTO for now, it's causing a lot of issues @@ -32,6 +31,7 @@ if test "$SURFER_COMPAT" = "x86_64"; then export LDFLAGS="-Wl,-O3 -march=nehalem" export RUSTFLAGS="-Ctarget-cpu=nehalem" else + ac_add_options --enable-clang-plugin ac_add_options --target=aarch64-apple-darwin ac_add_options --enable-optimize="-O3 -mcpu=apple-m1 -march=armv8.3-a+simd" diff --git a/configs/windows/mozconfig b/configs/windows/mozconfig index 9240b043f..255232ce0 100644 --- a/configs/windows/mozconfig +++ b/configs/windows/mozconfig @@ -25,14 +25,14 @@ fi ac_add_options --disable-maintenance-service ac_add_options --disable-bits-download -ac_add_options --disable-clang-plugin - if test "$SURFER_COMPAT" = "x86_64"; then ac_add_options --target=x86_64-pc-windows-msvc ac_add_options --enable-eme=widevine,wmfcdm - ac_add_options --enable-optimize="-O3 -w -ftree-vectorize -Qvec -mfpmath=sse -mprfchw -msse3 -mcx16 -msahf" + ac_add_options --disable-jemalloc + + ac_add_options --enable-optimize="-O3 -w -ftree-vectorize -mfpmath=sse -mprfchw -msse3 -mcx16 -msahf" export LDFLAGS="-Wl,-O3" export RUSTFLAGS="-Clink-args=--icf=safe" diff --git a/docs/issue-metrics/2025_2025-03-01..2025-03-31.md b/docs/issue-metrics/2025_2025-03-01..2025-03-31.md new file mode 100644 index 000000000..2f7ede2af --- /dev/null +++ b/docs/issue-metrics/2025_2025-03-01..2025-03-31.md @@ -0,0 +1,760 @@ +# Issue Metrics + +| Metric | Average | Median | 90th percentile | +| --- | --- | --- | ---: | +| Time to first response | 6 days, 20:41:49 | 2 days, 2:42:34 | 22 days, 1:54:23 | +| Time to close | 10 days, 15:55:03 | 8 days, 17:32:26 | 24 days, 2:11:50 | + +| Metric | Count | +| --- | ---: | +| Number of items that remain open | 17 | +| Number of items closed | 725 | +| Total number of items created | 742 | + +| Title | URL | Time to first response | Time to close | +| --- | --- | --- | --- | +| Mac OS Browser thinks there's one more tab open than there actually is | https://github.com/zen-browser/desktop/issues/6980 | None | None | +| Scroll bar can't be scrolled from the right edge of the window (Windows) | https://github.com/zen-browser/desktop/issues/6979 | None | None | +| Close tab buttons slightly cut off when in compact mode (Windows) | https://github.com/zen-browser/desktop/issues/6978 | None | None | +| "Change theme color" clears previous hex values | https://github.com/zen-browser/desktop/issues/6977 | None | None | +| Mouse does not become pointer on hover | https://github.com/zen-browser/desktop/issues/6976 | None | None | +| Change theme color wipes out previous hex codes | https://github.com/zen-browser/desktop/issues/6975 | None | 0:00:57 | +| Letterboxing adds +1 to width when not in compact mode and sidebar is resized (e.g., 1400 → 1401) | https://github.com/zen-browser/desktop/issues/6974 | None | None | +| Unable to log in to Pocket | https://github.com/zen-browser/desktop/issues/6973 | None | None | +| Failing to drag tab for split window when native sidebar is on the right | https://github.com/zen-browser/desktop/issues/6972 | None | None | +| Windows system theme switching does not work | https://github.com/zen-browser/desktop/issues/6971 | None | None | +| Compact mode sidebar sticking | https://github.com/zen-browser/desktop/issues/6970 | None | None | +| Failing to drag tab for split window when native sidebar is on the right | https://github.com/zen-browser/desktop/issues/6969 | None | 0:05:51 | +| closing tab opened from essentials will leads to blank window | https://github.com/zen-browser/desktop/issues/6968 | None | None | +| Blank dropdown in bookmark manager | https://github.com/zen-browser/desktop/issues/6967 | None | None | +| Split tab groups can break your browser in private windows | https://github.com/zen-browser/desktop/issues/6966 | None | None | +| Theme Color alpha hex functionality broken | https://github.com/zen-browser/desktop/issues/6965 | None | None | +| High GPU/CPU usage on some youtube videos | https://github.com/zen-browser/desktop/issues/6964 | None | None | +| workforcenow.adp.com doesn't prompt for passkey | https://github.com/zen-browser/desktop/issues/6963 | 0:14:47 | 0:14:47 | +| Split tab group favicon missaligned | https://github.com/zen-browser/desktop/issues/6962 | 0:01:05 | None | +| cmd + m doesn’t work anymore on 1.10.3b | https://github.com/zen-browser/desktop/issues/6961 | 0:00:59 | 0:01:00 | +| Windows system theme switching does not work | https://github.com/zen-browser/desktop/issues/6960 | 0:01:11 | 0:01:12 | +| Zen applies themes incorectly | https://github.com/zen-browser/desktop/issues/6959 | 0:01:45 | 0:02:15 | +| test | https://github.com/zen-browser/desktop/issues/6958 | None | 0:04:09 | +| URL in email; click to open browser | https://github.com/zen-browser/desktop/issues/6954 | 1:17:19 | 1:17:20 | +| Google Drive upload limited to 20MBit/s | https://github.com/zen-browser/desktop/issues/6953 | 2:42:08 | 2:42:09 | +| Using File, Edit etc buttons brings up the sidebar | https://github.com/zen-browser/desktop/issues/6952 | 4:37:18 | 4:37:19 | +| cmd + m broke | https://github.com/zen-browser/desktop/issues/6951 | 4:42:17 | 4:42:18 | +| Bug: Search bar breaks UI above tab bar | https://github.com/zen-browser/desktop/issues/6947 | 10:39:20 | 10:39:21 | +| Clicking non functional for some buttons on websites | https://github.com/zen-browser/desktop/issues/6945 | 13:03:39 | 13:03:40 | +| High RAM usage with WhatsApp Web | https://github.com/zen-browser/desktop/issues/6944 | 13:09:03 | 13:09:03 | +| Unloading a Pinned Tab Does Not Correctly Focus the New Tab | https://github.com/zen-browser/desktop/issues/6943 | 13:25:58 | 13:25:59 | +| Media Playback Continues After Unloading a Pinned Tab | https://github.com/zen-browser/desktop/issues/6942 | 13:28:38 | 13:28:38 | +| Essential and Pinned tabs icons not loading on startup | https://github.com/zen-browser/desktop/issues/6941 | 14:53:33 | 14:53:33 | +| Site with Login Popup dialog doesnt work | https://github.com/zen-browser/desktop/issues/6939 | 16:22:37 | 16:22:38 | +| closing tab opened from essentials will leads to blank window | https://github.com/zen-browser/desktop/issues/6938 | 19:53:55 | 19:53:56 | +| Keyboard Shortcut Issue When Switching Languages in Zen | https://github.com/zen-browser/desktop/issues/6936 | 21:30:24 | 21:30:25 | +| Live Stream Performance Issues: Douyu Live Room Loads Slowly and Douyin Live Freezes Every 3 Minutes | https://github.com/zen-browser/desktop/issues/6935 | 22:35:15 | 22:35:15 | +| Any letter opens the control find box(ctrl + f) | https://github.com/zen-browser/desktop/issues/6934 | 0:51:47 | 23:15:00 | +| Tab-box overflows into adjacent workspace | https://github.com/zen-browser/desktop/issues/6933 | 1 day, 1:24:50 | 1 day, 1:24:50 | +| Zen applies themes incorectly | https://github.com/zen-browser/desktop/issues/6931 | 1 day, 2:58:17 | 1 day, 2:59:24 | +| windows onboarding "idle" chewing 30-40% cpu | https://github.com/zen-browser/desktop/issues/6930 | 1 day, 3:04:32 | 1 day, 3:04:32 | +| Add to Essentials - option disappears | https://github.com/zen-browser/desktop/issues/6927 | 1 day, 4:48:22 | 1 day, 4:48:22 | +| Computer overheating | https://github.com/zen-browser/desktop/issues/6926 | 4:14:21 | 1 day, 5:46:28 | +| File Handler Dialog not opening in Archlinux (Hyprland) | https://github.com/zen-browser/desktop/issues/6925 | 0:55:53 | 1 day, 5:58:11 | +| Repeated Screen Sharing Permission Prompt Despite Existing Approval for Google Meet | https://github.com/zen-browser/desktop/issues/6924 | 1 day, 6:17:41 | 1 day, 6:17:41 | +| Bookmark title editing: Left/Right arrows trigger bookmark selection instead of text navigation | https://github.com/zen-browser/desktop/issues/6923 | 1 day, 6:37:50 | 1 day, 6:37:51 | +| Search Bar selection discarded upon floating | https://github.com/zen-browser/desktop/issues/6922 | 1 day, 6:51:59 | 1 day, 6:52:00 | +| A new media player starts playing before actual youtube video starts | https://github.com/zen-browser/desktop/issues/6920 | 3:22:39 | 1 day, 7:47:32 | +| Splitting a non-pinned tab with a pinned tabs pins it | https://github.com/zen-browser/desktop/issues/6918 | 1 day, 8:58:13 | 1 day, 8:58:14 | +| Default Zen Homepage not accessible | https://github.com/zen-browser/desktop/issues/6915 | 5:02:51 | 7:20:33 | +| The toolbar layout gets disrupted when I switch between browser layouts. | https://github.com/zen-browser/desktop/issues/6914 | 1 day, 13:03:34 | 1 day, 13:03:35 | +| Mouse Back button often switches to different workspace | https://github.com/zen-browser/desktop/issues/6913 | 8:00:54 | 1 day, 13:12:41 | +| New tab does not work properly when typing Chinese. | https://github.com/zen-browser/desktop/issues/6912 | 1 day, 13:33:11 | 1 day, 13:33:12 | +| Add-ons Affecting Browser Performance and Behavior | https://github.com/zen-browser/desktop/issues/6911 | 1 day, 13:38:12 | 1 day, 13:38:13 | +| Essentials and pinned tabs go blank (see image) | https://github.com/zen-browser/desktop/issues/6907 | 16:37:51 | 1 day, 15:54:52 | +| Containerized Tabs Disappearing upon Switching Workspaces | https://github.com/zen-browser/desktop/issues/6904 | 0:21:59 | 2:15:45 | +| Split tab breaks when placed in a tab group | https://github.com/zen-browser/desktop/issues/6903 | 1:11:36 | 1 day, 18:12:59 | +| omega long loading times in www.icloud.lt | https://github.com/zen-browser/desktop/issues/6902 | 1 day, 11:09:34 | 12:55:47 | +| whenever i do ctrl + tab to move between different pages while in compact mode ... i got the side bar pop up for 1-2 seconds... which is not helpful or logical | https://github.com/zen-browser/desktop/issues/6901 | 0:33:37 | 1:13:20 | +| autofill just fill password without user and vice versa | https://github.com/zen-browser/desktop/issues/6897 | 1 day, 22:28:43 | 1 day, 22:28:43 | +| Spotify Music Problem | https://github.com/zen-browser/desktop/issues/6895 | 0:28:47 | 2:52:23 | +| [twilight] downloads icon not aligned to webpage border | https://github.com/zen-browser/desktop/issues/6894 | 0:45:03 | 1 day, 23:31:34 | +| Icon Rendering Incorrectly in KDE Plasma 6 Wayland Window Switcher | https://github.com/zen-browser/desktop/issues/6892 | 7:33:56 | 2 days, 0:31:16 | +| Unable to open Zen on an m1 pro | https://github.com/zen-browser/desktop/issues/6890 | 2 days, 2:29:43 | 2 days, 2:29:43 | +| Laggy keyboard Input | https://github.com/zen-browser/desktop/issues/6889 | 2 days, 2:31:48 | 2 days, 2:31:48 | +| Glitch for smaller windows heights | https://github.com/zen-browser/desktop/issues/6887 | 2 days, 3:49:40 | 2 days, 3:49:41 | +| websites not loading ! | https://github.com/zen-browser/desktop/issues/6886 | 1 day, 22:18:25 | 2 days, 4:04:00 | +| This site can’t provide a secure connection zen-browser.app sent an invalid response. ERR_SSL_PROTOCOL_ERROR | https://github.com/zen-browser/desktop/issues/6885 | 0:09:18 | 22:35:10 | +| Muted video playing in a pinned tab prevent MacOS from sleeping | https://github.com/zen-browser/desktop/issues/6884 | 2:58:48 | 4:19:38 | +| [twilight] random redirect to another semi-related website | https://github.com/zen-browser/desktop/issues/6883 | 0:41:41 | 1:20:40 | +| [twilight] Essentials and workspace emoji are translucent and not in full colour | https://github.com/zen-browser/desktop/issues/6882 | 2 days, 4:52:41 | 2 days, 4:52:41 | +| Toolobar Theming doesn't fully apply | https://github.com/zen-browser/desktop/issues/6881 | 7:13:07 | 23:34:52 | +| High GPU/CPU usage on some youtube videos | https://github.com/zen-browser/desktop/issues/6880 | 6:07:33 | 2 days, 6:07:27 | +| cookie related isssue | https://github.com/zen-browser/desktop/issues/6879 | 2 days, 6:24:50 | 2 days, 6:24:50 | +| The "add extension" button does not appear on small screens | https://github.com/zen-browser/desktop/issues/6877 | 2 days, 9:33:17 | 2 days, 9:33:17 | +| Opening new tab in a split tab causes them to disappear. | https://github.com/zen-browser/desktop/issues/6876 | 2 days, 11:09:48 | 2 days, 11:09:48 | +| Super Url Bar | https://github.com/zen-browser/desktop/issues/6874 | 1:33:49 | 2 days, 14:28:38 | +| On launch, will open first tab in tab list (can be inconsistent, not sure of exact trigger) | https://github.com/zen-browser/desktop/issues/6873 | 6:07:49 | 2 days, 16:35:57 | +| Minor uneven UI spacing between essential tabs | https://github.com/zen-browser/desktop/issues/6871 | 2 days, 17:33:23 | 2 days, 17:33:23 | +| Text blurry | https://github.com/zen-browser/desktop/issues/6870 | 2 days, 17:44:41 | 2 days, 17:44:42 | +| Option "Open links in tabs instead of new windows" unchecked after restart browser | https://github.com/zen-browser/desktop/issues/6869 | 2 days, 18:08:58 | 2 days, 18:08:59 | +| KeepassXC is added but i cant link my database | https://github.com/zen-browser/desktop/issues/6868 | 21:32:29 | 1 day, 0:11:31 | +| Extensions do not open when no tabs are open | https://github.com/zen-browser/desktop/issues/6866 | 1:10:21 | 2 days, 22:06:54 | +| Split favicon bug | https://github.com/zen-browser/desktop/issues/6864 | 2 days, 22:37:00 | 2 days, 22:37:01 | +| Icon not visible when playing audio | https://github.com/zen-browser/desktop/issues/6863 | 1 day, 1:04:41 | 2 days, 22:56:26 | +| Increased ram usage fro just 4-5 tabs | https://github.com/zen-browser/desktop/issues/6862 | 2 days, 22:59:53 | 2 days, 22:59:54 | +| Screen sharing is not working on newer Macbook | https://github.com/zen-browser/desktop/issues/6861 | 2 days, 23:15:15 | 2 days, 23:15:15 | +| Screen Sharing Malfunction in Google Meet (Windows) | https://github.com/zen-browser/desktop/issues/6860 | 2 days, 23:36:47 | 2 days, 23:36:47 | +| "Customize Toolbar" Menu breaks when sidebar is at minimum width | https://github.com/zen-browser/desktop/issues/6859 | 3 days, 0:16:52 | 3 days, 0:16:52 | +| Split tabs breaking when opening a glance window | https://github.com/zen-browser/desktop/issues/6858 | 3 days, 0:17:15 | 3 days, 0:17:15 | +| Compact mode adds padding on the left misaligning icons in collapsed sidebar | https://github.com/zen-browser/desktop/issues/6857 | None | 0:08:37 | +| Flickering unusable menus if `widget.wayland.fractional-scale.enabled` is enabled | https://github.com/zen-browser/desktop/issues/6856 | 3 days, 0:24:24 | 3 days, 0:24:24 | +| Sidebar/TabBar too small on `multiple toolbar`, but right size in `single toolbars` mode - 1.10.2b (Firefox 136.0.3) (64-bit) | https://github.com/zen-browser/desktop/issues/6855 | 0:16:27 | 3 days, 1:18:50 | +| extension downloadhelper | https://github.com/zen-browser/desktop/issues/6854 | 3 days, 1:31:24 | 3 days, 1:31:24 | +| Can only interact with 1 tab when split | https://github.com/zen-browser/desktop/issues/6851 | 3 days, 4:17:12 | 3 days, 4:17:13 | +| Cannot share screen on MacOS | https://github.com/zen-browser/desktop/issues/6850 | 12:46:43 | 3 days, 4:22:22 | +| Mouse Cursor doesnt dissapear when watching Fullscreen Youtube Video | https://github.com/zen-browser/desktop/issues/6849 | 3 days, 4:35:46 | 3 days, 4:35:46 | +| "ALT + C" shortcut key bug has not fixed in 1.10.2b | https://github.com/zen-browser/desktop/issues/6847 | 0:19:13 | 2:19:17 | +| Tab bar doesnt hide when all tabs closed | https://github.com/zen-browser/desktop/issues/6846 | 1:11:00 | 3 days, 6:06:22 | +| Issue with hidden sidebar on desktop with margins. | https://github.com/zen-browser/desktop/issues/6845 | 3 days, 6:26:39 | 3 days, 6:26:39 | +| Google meet is not granted permissions for the first few seconds. | https://github.com/zen-browser/desktop/issues/6844 | 2:23:20 | 3 days, 6:55:39 | +| Google meet will kick out of meeting on switching to another tab | https://github.com/zen-browser/desktop/issues/6843 | 2:29:00 | 3 days, 7:00:24 | +| Can't click popup window javascript:setopenerValue | https://github.com/zen-browser/desktop/issues/6842 | 3 days, 8:03:52 | 3 days, 8:03:53 | +| [1.10.1b] Focusing and Unfocusing out of split view has janky window resizing and rendering delays | https://github.com/zen-browser/desktop/issues/6841 | 3 days, 8:37:54 | 3 days, 8:37:54 | +| [Twilight 1.10.2] Brief black flash when switching workspaces. | https://github.com/zen-browser/desktop/issues/6839 | None | 0:55:54 | +| Slow New Window Opening | https://github.com/zen-browser/desktop/issues/6838 | 0:03:51 | 3 days, 9:31:19 | +| Minimizing Full Screen Video Players make the toolbar temp pop up and slide in | https://github.com/zen-browser/desktop/issues/6836 | 3 days, 11:24:59 | 3 days, 11:24:59 | +| window alert is hidden behind other split pane | https://github.com/zen-browser/desktop/issues/6832 | 3 days, 17:35:05 | 3 days, 17:35:06 | +| Compact mode sidebar sticking | https://github.com/zen-browser/desktop/issues/6831 | 3 days, 17:39:13 | 3 days, 17:39:13 | +| Upscayl site does not work properly | https://github.com/zen-browser/desktop/issues/6830 | 3 days, 18:07:45 | 3 days, 18:07:46 | +| Unremovable duplicate workspace icon | https://github.com/zen-browser/desktop/issues/6829 | 3 days, 19:38:34 | 3 days, 19:38:35 | +| Bookmarks Toolbar "Always show" does not work | https://github.com/zen-browser/desktop/issues/6828 | 2 days, 0:52:10 | 3 days, 20:14:50 | +| Pined & Essential Tabs don't unload | https://github.com/zen-browser/desktop/issues/6827 | 3 days, 23:26:09 | 3 days, 23:26:10 | +| Entire zen window transparent | https://github.com/zen-browser/desktop/issues/6825 | None | 20:47:40 | +| Duplicate/duplicating a split tab causes erratic tab movements | https://github.com/zen-browser/desktop/issues/6824 | 3 days, 23:44:29 | 3 days, 23:44:29 | +| "Full screen" item can be interacted with inside "Customise Toolbar..." Menu which breaks it | https://github.com/zen-browser/desktop/issues/6822 | 4 days, 0:54:03 | 4 days, 0:54:04 | +| When Web Panel is open split tab movement indicators do not display correctly | https://github.com/zen-browser/desktop/issues/6819 | 4 days, 1:28:54 | 4 days, 1:28:55 | +| When Web Panel is open Vertical Tab Splits can't be resized | https://github.com/zen-browser/desktop/issues/6817 | 16:18:30 | 4 days, 1:42:11 | +| Anthropic's Claude freezes only on Zen browser | https://github.com/zen-browser/desktop/issues/6816 | 1 day, 6:43:57 | 4 days, 1:48:02 | +| Cursor Auto-Highlight on Ctrl+Tab Disrupts Tab Cycling | https://github.com/zen-browser/desktop/issues/6815 | 4 days, 1:59:18 | 4 days, 1:59:19 | +| Disabling "Use workspace colors as primary color" does nothing | https://github.com/zen-browser/desktop/issues/6812 | 4 days, 2:25:50 | 4 days, 2:25:51 | +| Sites within WebPanel behaves wrong if navigator API is spoofed vie extension | https://github.com/zen-browser/desktop/issues/6811 | 4 days, 2:41:39 | 4 days, 2:41:40 | +| When removing an extension, confirmation message has a mistake | https://github.com/zen-browser/desktop/issues/6810 | 4 days, 3:08:04 | 4 days, 3:08:04 | +| Zen comes pre-installed with an English (United States) dictionary which can't be removed | https://github.com/zen-browser/desktop/issues/6809 | 4 days, 3:29:07 | 4 days, 3:29:07 | +| UI bug: Responsive Design Mode reload notification being obscured by music player | https://github.com/zen-browser/desktop/issues/6808 | 4 days, 4:28:07 | 4 days, 4:28:07 | +| Placing the "Zoom Controls" item in the Top Item Row of the Side Toolbar causes zoom indicator to not appear. | https://github.com/zen-browser/desktop/issues/6807 | 4 days, 4:37:37 | 4 days, 4:37:37 | +| While in the "Customize Toolbar..." Menu the maximise window button is greyed out and not usable | https://github.com/zen-browser/desktop/issues/6806 | 4 days, 5:01:40 | 4 days, 5:01:40 | +| Placing a Large Item as the first item in the Top Item Row of the Side Toolbar breaks entire Side Toolbar when in Collapsed Toolbar Layout | https://github.com/zen-browser/desktop/issues/6805 | 4 days, 5:38:36 | 4 days, 5:38:37 | +| Top item row in Side Toolbar not aligned with items in Top Toolbar when using Collapsed Toolbar | https://github.com/zen-browser/desktop/issues/6804 | 2:30:37 | 4 days, 6:01:27 | +| Toolbar with a lot of items can break single toolbar | https://github.com/zen-browser/desktop/issues/6803 | 4 days, 6:51:09 | 4 days, 6:51:09 | +| Zen Webpanel (Sidebar) does not move | https://github.com/zen-browser/desktop/issues/6802 | 4 days, 6:56:53 | 4 days, 6:56:53 | +| [Twilight 1.10.1t] All tabs are loading after update | https://github.com/zen-browser/desktop/issues/6801 | 0:08:03 | 21:25:15 | +| Side flap bug | https://github.com/zen-browser/desktop/issues/6800 | None | 0:00:08 | +| Pinned tabs glance does not reset | https://github.com/zen-browser/desktop/issues/6799 | 0:06:08 | 4 days, 9:00:07 | +| [Twilight 1.10.1t] Last selected tab not respected if restoring split view group on launch | https://github.com/zen-browser/desktop/issues/6798 | None | 3 days, 5:15:16 | +| [Twilight 1.10.1] Switching workspaces is not as fluid as before with a brief black flash when moving to new workspace. | https://github.com/zen-browser/desktop/issues/6797 | None | 1 day, 2:14:58 | +| Theme not correctly working/resetting when switching workspace | https://github.com/zen-browser/desktop/issues/6796 | 4 days, 11:30:51 | 4 days, 11:30:51 | +| Zen Browser Freeze When Downloading | https://github.com/zen-browser/desktop/issues/6795 | 4 days, 11:54:20 | 4 days, 11:54:21 | +| Default Translucency Not Working - Toolbar and Sidebar Colors Forced to Windows Theme | https://github.com/zen-browser/desktop/issues/6794 | 4 days, 13:11:15 | 4 days, 13:11:16 | +| Invisible Floating Bar | https://github.com/zen-browser/desktop/issues/6792 | None | 22:04:52 | +| Unable to log in to Pocket | https://github.com/zen-browser/desktop/issues/6790 | 4 days, 17:42:50 | 4 days, 17:42:51 | +| Workspaces working as tab groups and not as workspaces | https://github.com/zen-browser/desktop/issues/6789 | 4:18:48 | 4 days, 17:46:34 | +| [Privacy] Unwanted Connections, Transparency and Default Search Engine | https://github.com/zen-browser/desktop/issues/6787 | 4 days, 20:40:43 | 4 days, 20:40:43 | +| glance in Google drive | https://github.com/zen-browser/desktop/issues/6785 | 4 days, 22:23:09 | 4 days, 22:23:10 | +| Winget adds desktop shortcut | https://github.com/zen-browser/desktop/issues/6784 | 0:22:29 | 4 days, 22:41:24 | +| Theme Color alpha hex functionality broken | https://github.com/zen-browser/desktop/issues/6783 | 4 days, 6:08:04 | 5 days, 0:00:15 | +| Kernel panics on macOS | https://github.com/zen-browser/desktop/issues/6781 | 4:00:11 | 5 days, 1:16:46 | +| workforcenow.adp.com doesn't prompt for passkey | https://github.com/zen-browser/desktop/issues/6780 | 5 days, 1:58:56 | 5 days, 1:58:56 | +| macOS Title Bar reg/yellow/green Buttons Are Colorless | https://github.com/zen-browser/desktop/issues/6776 | 0:12:16 | 5:53:54 | +| Cant login to netflix | https://github.com/zen-browser/desktop/issues/6773 | 1:34:11 | 11:31:40 | +| Tab unloader disregards preferences on unsaved tabs | https://github.com/zen-browser/desktop/issues/6770 | 5 days, 17:40:09 | 5 days, 17:40:09 | +| Inconsistent sizes for bottom icons | https://github.com/zen-browser/desktop/issues/6769 | 5 days, 18:00:19 | 5 days, 18:00:20 | +| Blank Screen Insted of Home screen | https://github.com/zen-browser/desktop/issues/6768 | 13:18:07 | 5 days, 18:57:14 | +| Pin syncing on new devices | https://github.com/zen-browser/desktop/issues/6767 | 4 days, 3:54:28 | 5 days, 19:11:28 | +| zen.mediacontrols.enabled doesn't appear in about:config | https://github.com/zen-browser/desktop/issues/6766 | 8:19:56 | 11:30:57 | +| Address bar closes when switching input language with Cmd+Space on Wayland (Ubuntu) | https://github.com/zen-browser/desktop/issues/6765 | 1 day, 6:03:22 | 5 days, 20:53:14 | +| New tab overlay hides when CTRL key is pressed | https://github.com/zen-browser/desktop/issues/6764 | 21:36:14 | 5 days, 21:13:53 | +| New Tab Button | Error | https://github.com/zen-browser/desktop/issues/6762 | 16:35:56 | 21:18:08 | +| Extensions doesn't load automatically | https://github.com/zen-browser/desktop/issues/6760 | 5 days, 22:22:05 | 5 days, 22:22:06 | +| PowerToys Run still not working correctly (web search) | https://github.com/zen-browser/desktop/issues/6759 | 6 days, 0:37:43 | 6 days, 0:37:44 | +| URL which beging with HTTPS Glace does not recognize | https://github.com/zen-browser/desktop/issues/6758 | 6 days, 0:46:54 | 6 days, 0:46:54 | +| opening external files and links | https://github.com/zen-browser/desktop/issues/6757 | 6 days, 1:30:57 | 6 days, 1:30:58 | +| editing pdfs do not export correctly | https://github.com/zen-browser/desktop/issues/6756 | 6 days, 1:32:26 | 6 days, 1:32:27 | +| spotify can't play songs | https://github.com/zen-browser/desktop/issues/6755 | 1:46:04 | 2:43:09 | +| Scrolling seems to be lagging back again in `v1.10.1b` while the browser rounded corner was disabled | https://github.com/zen-browser/desktop/issues/6754 | 6 days, 2:13:52 | 6 days, 2:13:53 | +| Can't install mods | https://github.com/zen-browser/desktop/issues/6752 | 1 day, 10:42:01 | 6 days, 2:50:15 | +| Ctrl-Q closes current tab before exit | https://github.com/zen-browser/desktop/issues/6751 | 6 days, 3:34:38 | 6 days, 3:34:38 | +| Extensions spilling out of the sidebar | https://github.com/zen-browser/desktop/issues/6750 | 5:04:56 | 6 days, 4:23:46 | +| heylogin popup empty | https://github.com/zen-browser/desktop/issues/6749 | None | 1 day, 8:42:50 | +| The pip option often fails after a reboot | https://github.com/zen-browser/desktop/issues/6748 | 6 days, 4:59:02 | 6 days, 4:59:02 | +| Movie Player error 6007-1001-3102: Please use an updated version of your browser or use another device | https://github.com/zen-browser/desktop/issues/6747 | None | 2:09:47 | +| Zen crashes on right click on tab | https://github.com/zen-browser/desktop/issues/6746 | 1:10:39 | 6 days, 5:37:54 | +| It would be useful to have a Restore/Reset icon next to changed keyboard shortcuts. | https://github.com/zen-browser/desktop/issues/6744 | 6 days, 5:49:25 | 6 days, 5:49:26 | +| Opening the settings page not selecting the unloaded tab | https://github.com/zen-browser/desktop/issues/6743 | 6 days, 7:14:48 | 6 days, 7:14:49 | +| Pinned Essentials clipping thorugh Workspace/Tabs area in Compact Mode | https://github.com/zen-browser/desktop/issues/6741 | 6 days, 9:36:36 | 6 days, 9:36:37 | +| split with essentials not working | https://github.com/zen-browser/desktop/issues/6739 | 6 days, 16:29:52 | 6 days, 16:29:53 | +| Media player music animation should respect animation accessibility settings | https://github.com/zen-browser/desktop/issues/6737 | 6 days, 17:23:48 | 6 days, 17:23:49 | +| Unable to swipe through workspaces. | https://github.com/zen-browser/desktop/issues/6735 | 6 days, 19:53:12 | 6 days, 19:53:12 | +| Automatically leaving meetings when expanding a glance tab containing the meeting | https://github.com/zen-browser/desktop/issues/6734 | 1 day, 15:01:01 | 6 days, 21:10:19 | +| Zen crashes my Computer completely | https://github.com/zen-browser/desktop/issues/6732 | 3:56:33 | 6 days, 22:54:38 | +| Tab bar width issues | https://github.com/zen-browser/desktop/issues/6730 | 6 days, 23:26:00 | 6 days, 23:26:01 | +| Transparency no longer works with the 1.10.1b update on Linux | https://github.com/zen-browser/desktop/issues/6729 | 0:00:56 | 7 days, 0:06:00 | +| Issues with css live edit | https://github.com/zen-browser/desktop/issues/6728 | 7 days, 0:43:26 | 7 days, 0:43:27 | +| corner case: Media Player handling long media names | https://github.com/zen-browser/desktop/issues/6727 | 7 days, 0:46:48 | 7 days, 0:46:49 | +| Vimium tab navigation broken since 1.9b | https://github.com/zen-browser/desktop/issues/6726 | 7 days, 0:50:09 | 7 days, 0:50:09 | +| When i open zen it only shows black screen home page | https://github.com/zen-browser/desktop/issues/6725 | 0:22:12 | 7 days, 1:14:36 | +| Shortcuts not working as intended/unclear. i.e: Does X instead of Y as stated in the Keyboard Shortcuts section. | https://github.com/zen-browser/desktop/issues/6724 | 7 days, 1:20:26 | 7 days, 1:20:26 | +| Zen icon not showing in Plasma title bar | https://github.com/zen-browser/desktop/issues/6723 | 7 days, 1:38:55 | 7 days, 1:38:55 | +| Windows system theme switching does not work | https://github.com/zen-browser/desktop/issues/6722 | 7 days, 2:41:59 | 7 days, 2:41:59 | +| All of Essentials suddenly disappearing | https://github.com/zen-browser/desktop/issues/6721 | 4 days, 5:40:42 | 7 days, 2:43:33 | +| New tab shortcut broken | https://github.com/zen-browser/desktop/issues/6719 | 4 days, 4:59:23 | 7 days, 3:40:03 | +| having a lot of workspaces still require from me to have wide sidebar | https://github.com/zen-browser/desktop/issues/6718 | 22:37:20 | 23:25:25 | +| YouTube essential disappear when reopening the browser | https://github.com/zen-browser/desktop/issues/6717 | 7 days, 5:24:03 | 7 days, 5:24:03 | +| Window Control Buttons Misaligned in Compact Mode | https://github.com/zen-browser/desktop/issues/6716 | 0:24:05 | 7 days, 6:18:13 | +| Certificate Manager is mostly broken | https://github.com/zen-browser/desktop/issues/6713 | 9:53:59 | 7 days, 7:51:20 | +| Zen browser's implementation of Content Security Policy | https://github.com/zen-browser/desktop/issues/6712 | 6 days, 22:36:46 | 7 days, 8:01:58 | +| macOS passkeys not working on certain websites | https://github.com/zen-browser/desktop/issues/6709 | 3 days, 0:44:40 | 7 days, 13:20:09 | +| Website Appearance: Automatic broken on macOS | https://github.com/zen-browser/desktop/issues/6708 | 2 days, 20:48:35 | 7 days, 13:22:04 | +| zen new tab process in new window is cpu heavy | https://github.com/zen-browser/desktop/issues/6707 | None | 1:22:09 | +| Stopping YouTube video on Zen forcing Alcove (dynamic island app) to quit and cannot be launched again | https://github.com/zen-browser/desktop/issues/6704 | 0:32:40 | 7 days, 14:46:10 | +| New tabs open on new windows | https://github.com/zen-browser/desktop/issues/6703 | 7 days, 15:11:33 | 7 days, 15:11:34 | +| Query input dialog disappears when changing the language | https://github.com/zen-browser/desktop/issues/6702 | 7 days, 17:44:36 | 7 days, 17:44:36 | +| adding new tab while being on full screen | https://github.com/zen-browser/desktop/issues/6701 | 17:49:38 | 7 days, 18:20:09 | +| Trying to export/share Rice softlocks the browser | https://github.com/zen-browser/desktop/issues/6700 | 7 days, 18:55:49 | 7 days, 18:55:50 | +| Changing tabs scrolls the tab bar to the top | https://github.com/zen-browser/desktop/issues/6699 | None | 1 day, 4:31:48 | +| External Links - Opens the browser, but not the link. (ZenBrowser.x86_64.AppImage + POP!_os 22.04) | https://github.com/zen-browser/desktop/issues/6698 | 2 days, 15:10:42 | 7 days, 20:37:03 | +| Problem with Youtube Music | https://github.com/zen-browser/desktop/issues/6697 | 2:07:46 | 7 days, 21:15:12 | +| some website/graph is not rendered correctly | https://github.com/zen-browser/desktop/issues/6692 | None | 0:10:52 | +| Preference "zen.workspaces.show-icon-strip=false" no-longer hides non-current workspaces. | https://github.com/zen-browser/desktop/issues/6690 | 0:03:14 | 8 days, 0:46:14 | +| some sites wont load properly | https://github.com/zen-browser/desktop/issues/6689 | None | 16:58:42 | +| 如何保证常驻标签页在关闭浏览器后,重新打开浏览器后常驻标签页的URL保持不变,而不是上一次关闭浏览器前最后访问的地址 | https://github.com/zen-browser/desktop/issues/6687 | 0:19:22 | 8 days, 3:16:36 | +| Youtube and Youtube Music seeking in Media player is not synced | https://github.com/zen-browser/desktop/issues/6685 | 0:32:27 | 8 days, 3:18:50 | +| Screen Sharing Bug on Mac | https://github.com/zen-browser/desktop/issues/6683 | 8 days, 3:49:00 | 8 days, 3:49:01 | +| Weird workspace scroll change behaviour with sidebar to the right | https://github.com/zen-browser/desktop/issues/6680 | 8 days, 4:52:43 | 8 days, 4:52:44 | +| Zen not drawing properly when first opened | https://github.com/zen-browser/desktop/issues/6679 | 3 days, 22:17:55 | 8 days, 5:02:06 | +| The browser.tabs.allow_transparent_browser stoped working | https://github.com/zen-browser/desktop/issues/6678 | 0:14:11 | 8 days, 5:49:04 | +| "Reading List" extension: Can't read or change data on this site | https://github.com/zen-browser/desktop/issues/6677 | 8 days, 6:42:58 | 8 days, 6:42:59 | +| Media Control does not respect playback speed | https://github.com/zen-browser/desktop/issues/6675 | None | 3:03:07 | +| Extension install confirm dialog goes offscreen in single toolbar mode | https://github.com/zen-browser/desktop/issues/6674 | 0:29:54 | 8 days, 7:25:57 | +| bug: media player applet doesn't respect current progress when paused | https://github.com/zen-browser/desktop/issues/6672 | 0:18:24 | 8 days, 7:45:39 | +| media playing asks if i want to leave | https://github.com/zen-browser/desktop/issues/6671 | 3:56:03 | 4:27:20 | +| Showing previous version even after Updating | https://github.com/zen-browser/desktop/issues/6669 | 1:54:14 | 8 days, 12:38:12 | +| Pin Tabs & Essential Tabs are Removed | https://github.com/zen-browser/desktop/issues/6668 | 8 days, 13:06:17 | 8 days, 13:06:17 | +| Google Docs breaking | https://github.com/zen-browser/desktop/issues/6664 | 19:28:30 | 8 days, 16:13:47 | +| Media freezes after toggling Zen from different window | https://github.com/zen-browser/desktop/issues/6663 | 8 days, 17:32:25 | 8 days, 17:32:26 | +| CPU | https://github.com/zen-browser/desktop/issues/6662 | 22:12:03 | 8 days, 18:02:57 | +| [ Twilight ] Loosing transparency | https://github.com/zen-browser/desktop/issues/6660 | 18:34:05 | 1 day, 0:27:29 | +| Automaticallty leaving google meets. | https://github.com/zen-browser/desktop/issues/6659 | 0:51:01 | 13:36:13 | +| Cannot reorder tabs or open split view in private browsing | https://github.com/zen-browser/desktop/issues/6658 | 8 days, 20:34:09 | 8 days, 20:34:09 | +| Extension icons overflowing when pinned to toolbar | https://github.com/zen-browser/desktop/issues/6657 | 16:23:15 | 8 days, 20:53:25 | +| Essential tabs frequently exhibit an overlay that obscures their content | https://github.com/zen-browser/desktop/issues/6655 | 8 days, 21:20:37 | 8 days, 21:20:37 | +| Workspaces Icon Strip STILL never scrolls or stops expanding and it makes the browser unusable | https://github.com/zen-browser/desktop/issues/6652 | 16:08:33 | 16:08:33 | +| Roboform extension is not filling logon form fields in Zen browswer | https://github.com/zen-browser/desktop/issues/6650 | None | 5 days, 18:03:32 | +| Media player controller causes youtube music to stop playing after sometime | https://github.com/zen-browser/desktop/issues/6648 | 23:18:57 | 1 day, 0:47:45 | +| Shortcut Override Disables Backspace Input | https://github.com/zen-browser/desktop/issues/6647 | 9 days, 1:23:39 | 9 days, 1:23:39 | +| "leave"message keeps popping-up | https://github.com/zen-browser/desktop/issues/6646 | 0:19:09 | 9 days, 1:27:14 | +| UI Scaling issue on linux desktop | https://github.com/zen-browser/desktop/issues/6644 | 9 days, 1:37:58 | 9 days, 1:37:58 | +| Update 1.10b removes option to toggle displaying workspaces as icon strip | https://github.com/zen-browser/desktop/issues/6643 | 1:56:58 | 20:11:36 | +| Flatpak theming issue with GTK | https://github.com/zen-browser/desktop/issues/6642 | 9 days, 2:15:14 | 9 days, 2:15:14 | +| Some websites doesnt load but others load!!! | https://github.com/zen-browser/desktop/issues/6641 | 3:22:02 | 21:31:59 | +| Problem with Zen In instagram | https://github.com/zen-browser/desktop/issues/6640 | 4 days, 3:24:24 | 9 days, 3:47:22 | +| Media Control Keys Not Working | https://github.com/zen-browser/desktop/issues/6639 | 6:49:55 | 2 days, 1:54:44 | +| DRM content get's paused abruptly | https://github.com/zen-browser/desktop/issues/6638 | 4 days, 5:05:32 | 4 days, 5:05:32 | +| Google Meet disconnects after a few seconds if I switch tabs | https://github.com/zen-browser/desktop/issues/6637 | 0:28:11 | 2:43:39 | +| Problems with Google meet, unusable in call continuos down | https://github.com/zen-browser/desktop/issues/6636 | 0:05:47 | 2:56:40 | +| Deleted workpaces with tabs still exist(?) | https://github.com/zen-browser/desktop/issues/6635 | 9 days, 6:03:15 | 9 days, 6:03:15 | +| Audio shut off after about 25 seconds on some website. | https://github.com/zen-browser/desktop/issues/6634 | 3:41:06 | 3:41:06 | +| Essential and Pinned tabs not opening on startup | https://github.com/zen-browser/desktop/issues/6630 | 9 days, 11:09:25 | 9 days, 11:09:25 | +| Youtube Music randomly switch to tab and showing leave page dialog. | https://github.com/zen-browser/desktop/issues/6627 | 0:27:21 | 10:06:53 | +| Rendering Issues for Startpage, Vercel and other websites | https://github.com/zen-browser/desktop/issues/6626 | 4:36:44 | 9 days, 12:48:07 | +| Few bugs | https://github.com/zen-browser/desktop/issues/6623 | 9 days, 15:23:47 | 9 days, 15:23:47 | +| Dark mode on Google has darker boxes around each result compared to the background | https://github.com/zen-browser/desktop/issues/6622 | 15:46:04 | 9 days, 15:32:25 | +| [1.10b] Focusing back into split windows causes janky resizing of websites along with rendering delay when exiting out of split view into other tabs | https://github.com/zen-browser/desktop/issues/6621 | None | 6 days, 6:36:15 | +| Blur behind new tab isn't centered properly | https://github.com/zen-browser/desktop/issues/6620 | 0:23:52 | 0:43:53 | +| The media animation causes high CPU usage | https://github.com/zen-browser/desktop/issues/6619 | 9 days, 16:13:08 | 9 days, 16:13:08 | +| white streak on left side of window when i fullscreen | https://github.com/zen-browser/desktop/issues/6617 | 1:29:28 | 9 days, 17:18:57 | +| [1.10b] Focusing back into split windows causes janky resizing animation | https://github.com/zen-browser/desktop/issues/6614 | None | 2:09:32 | +| Color is not theme switching on audio widget | https://github.com/zen-browser/desktop/issues/6613 | 9 days, 17:54:09 | 9 days, 17:54:10 | +| Authentication on sites via a certificate (such as a Smart Card) broken on macOS in 1.10b | https://github.com/zen-browser/desktop/issues/6612 | 9 days, 18:33:37 | 9 days, 18:33:37 | +| Pinned tab separator inconsistent width | https://github.com/zen-browser/desktop/issues/6611 | 9 days, 19:23:43 | 9 days, 19:23:44 | +| Sidebar/Tab Bar navigation buttons overflow | https://github.com/zen-browser/desktop/issues/6610 | 9 days, 19:28:07 | 9 days, 19:28:08 | +| Inconsistent spacing in compact modes | https://github.com/zen-browser/desktop/issues/6609 | 9 days, 19:40:12 | 9 days, 19:40:13 | +| No default favicon for sites without Favicon | https://github.com/zen-browser/desktop/issues/6608 | 20:08:49 | 9 days, 19:44:17 | +| Music playback from Jellyfin fails if tab not focused | https://github.com/zen-browser/desktop/issues/6607 | None | 17:48:12 | +| New "Media player controller" autoscrolls to top of tab list | https://github.com/zen-browser/desktop/issues/6605 | 21:45:39 | 2 days, 10:48:27 | +| Autofill does not work in Mac OS | https://github.com/zen-browser/desktop/issues/6604 | 9 days, 20:41:25 | 9 days, 20:41:26 | +| warning pop up randomly | https://github.com/zen-browser/desktop/issues/6603 | 0:20:03 | 18:13:51 | +| Controls not visible in new media player controller | https://github.com/zen-browser/desktop/issues/6601 | 1:42:38 | 9 days, 21:46:37 | +| Unexplained Black Background in full screen mode | https://github.com/zen-browser/desktop/issues/6600 | 9 days, 21:59:10 | 9 days, 21:59:11 | +| can't delete a shortcut | https://github.com/zen-browser/desktop/issues/6599 | 0:02:25 | 19:13:46 | +| With Media Player, pinned tabs playing audio/video do not unload | https://github.com/zen-browser/desktop/issues/6598 | None | 0:09:27 | +| workspaces being displayed in a line made sidebar too wide resulting in multiple visual issues | https://github.com/zen-browser/desktop/issues/6597 | 1:21:34 | 1 day, 17:31:25 | +| Close page alert appears out of nowhere randomly whenever using YouTube Music in the background | https://github.com/zen-browser/desktop/issues/6596 | 0:40:11 | 9 days, 23:14:36 | +| All tabs keep crashing on Windows | https://github.com/zen-browser/desktop/issues/6595 | 9 days, 23:41:59 | 9 days, 23:42:00 | +| Missing Profile Manager in Application Menu | https://github.com/zen-browser/desktop/issues/6594 | 7 days, 20:01:45 | 9 days, 23:51:00 | +| google slides stops | https://github.com/zen-browser/desktop/issues/6592 | 0:18:30 | 10 days, 0:18:42 | +| [1.10b] Google meet auto leaves if tab not in focus | https://github.com/zen-browser/desktop/issues/6591 | 0:51:20 | 21:44:10 | +| Buggy UI when switching from Single toolbar to Collapsed toolbar [1.10b] | https://github.com/zen-browser/desktop/issues/6590 | 10 days, 0:56:02 | 10 days, 0:56:02 | +| [1.10b] Unloaded pinned tab with middle click is still loaded | https://github.com/zen-browser/desktop/issues/6589 | None | 2 days, 18:22:26 | +| Essentials tab with "messages.google.com", after browser restart, is now just an empty essentials window. | https://github.com/zen-browser/desktop/issues/6587 | 10 days, 1:47:23 | 10 days, 1:47:23 | +| Customize toolbar glitch | https://github.com/zen-browser/desktop/issues/6584 | None | 0:07:05 | +| Weird behaviour of media player | https://github.com/zen-browser/desktop/issues/6583 | 0:28:23 | 19:58:25 | +| weird behavior of pinned tab when in unload state. (1.10b) | https://github.com/zen-browser/desktop/issues/6582 | None | 3 days, 4:21:05 | +| Sidebar(Bookmarks) not resizable when on the right | https://github.com/zen-browser/desktop/issues/6581 | 10 days, 3:38:17 | 10 days, 3:38:17 | +| Shortcut key (ALT + C) not working as it shoud | https://github.com/zen-browser/desktop/issues/6580 | 8:01:15 | 10 days, 3:47:52 | +| Extension's options pop-up in the address after switching between single and multiple toolbars | https://github.com/zen-browser/desktop/issues/6579 | 7 days, 23:16:56 | 10 days, 3:48:18 | +| search bar cuts out of screen | https://github.com/zen-browser/desktop/issues/6578 | 7 days, 7:58:30 | 10 days, 4:05:13 | +| new media player controls invisible | https://github.com/zen-browser/desktop/issues/6577 | 2:40:31 | 4 days, 1:29:05 | +| Broke layout when resizing on gnome | https://github.com/zen-browser/desktop/issues/6574 | 10 days, 5:06:32 | 10 days, 5:06:33 | +| Split screen is still unusable | https://github.com/zen-browser/desktop/issues/6573 | 10 days, 5:22:13 | 10 days, 5:22:14 | +| Bookmark toolbar hidden forever, cannot re-enable | https://github.com/zen-browser/desktop/issues/6572 | 4:29:45 | 10 days, 5:30:23 | +| Music player disappears when I enter fullscreen mode. | https://github.com/zen-browser/desktop/issues/6571 | 10 days, 5:46:36 | 10 days, 5:46:37 | +| Shortcut for compact mode not working | https://github.com/zen-browser/desktop/issues/6570 | 23:53:56 | 10 days, 5:48:07 | +| The tab playing music suddenly tries to close | https://github.com/zen-browser/desktop/issues/6569 | 2:34:44 | 1 day, 3:41:49 | +| pages are not loading. | https://github.com/zen-browser/desktop/issues/6568 | 0:36:26 | 6:12:21 | +| [1.10b] Problem reproducing music after new update | https://github.com/zen-browser/desktop/issues/6567 | 4:36:27 | 1 day, 4:05:32 | +| Website for `grok.com` unable to be opened | https://github.com/zen-browser/desktop/issues/6566 | 0:34:25 | 4:23:14 | +| I don't see the new media player | https://github.com/zen-browser/desktop/issues/6565 | 0:01:31 | 0:19:53 | +| Grouping tabs bug | https://github.com/zen-browser/desktop/issues/6564 | 1:25:58 | 10 days, 7:29:16 | +| [1.10b]Music controls not visible in the sidebar media player - light mode | https://github.com/zen-browser/desktop/issues/6562 | 0:57:05 | 4 days, 5:49:17 | +| [1.10b] The default icon for tabs with no favicon is a bit strange, kinda preferred the default globe icon. | https://github.com/zen-browser/desktop/issues/6558 | 9:12:57 | 10 days, 15:57:17 | +| extension icons being cut off | https://github.com/zen-browser/desktop/issues/6556 | 5:21:38 | 10 days, 17:11:42 | +| Cornerradius on websites | https://github.com/zen-browser/desktop/issues/6554 | 10 days, 17:31:17 | 10 days, 17:31:18 | +| Floating tab bar breaks without any shortcuts set | https://github.com/zen-browser/desktop/issues/6552 | 10 days, 23:11:25 | 10 days, 23:11:25 | +| Profiles manage page not open | https://github.com/zen-browser/desktop/issues/6549 | 1 day, 3:51:56 | 11 days, 1:55:12 | +| SImple tab group is locked loading in a new window | https://github.com/zen-browser/desktop/issues/6547 | 11 days, 2:09:36 | 11 days, 2:09:36 | +| Save to Koofr extension not working | https://github.com/zen-browser/desktop/issues/6546 | None | 0:20:09 | +| Buttons not loading in ChatGPT | https://github.com/zen-browser/desktop/issues/6545 | 1 day, 1:59:28 | 11 days, 3:04:35 | +| Multiple toolbars prevents access to window controls | https://github.com/zen-browser/desktop/issues/6544 | 8 days, 2:31:30 | 11 days, 3:12:41 | +| Master Password not recognised | https://github.com/zen-browser/desktop/issues/6543 | None | 0:08:37 | +| The 1.9.1B version of the browser is not compatible with Baidu Input Method, which may cause the page to freeze when text is entered into the search bar. | https://github.com/zen-browser/desktop/issues/6542 | 11 days, 3:44:20 | 11 days, 3:44:21 | +| [ twilight ] Set alternatives languages issues | https://github.com/zen-browser/desktop/issues/6541 | 14:16:10 | 1 day, 3:56:17 | +| Browser takes theme color on websites which don't have any background color #bug | https://github.com/zen-browser/desktop/issues/6539 | 11 days, 7:02:47 | 11 days, 7:02:48 | +| Opening Zen via a keyboard shortcut causes a Open in troubleshoot mode. | https://github.com/zen-browser/desktop/issues/6538 | 8:37:13 | 11 days, 9:21:17 | +| Microsoft Teams fails to init | https://github.com/zen-browser/desktop/issues/6537 | 11 days, 9:52:46 | 11 days, 9:52:46 | +| logs off from every account on restart | https://github.com/zen-browser/desktop/issues/6536 | 13:39:58 | 11 days, 10:19:55 | +| Page screenshot buttons, `about:logins` and `Secure Site Not Available` page [seem to] use default accent color | https://github.com/zen-browser/desktop/issues/6534 | 11 days, 16:25:09 | 11 days, 16:25:09 | +| Enhanced tracking protection ("shield" icon) is gone | https://github.com/zen-browser/desktop/issues/6533 | 11 days, 6:57:39 | 11 days, 15:54:58 | +| Browser does not record history | https://github.com/zen-browser/desktop/issues/6532 | 6:33:00 | 11 days, 18:30:23 | +| White bar at the bottom of the window when having windows "Hide Taskbar" on | https://github.com/zen-browser/desktop/issues/6531 | 0:38:42 | 11 days, 20:09:24 | +| Closing zen not working | https://github.com/zen-browser/desktop/issues/6529 | None | 9:45:39 | +| Closing and reopening essentials results in pinned tab | https://github.com/zen-browser/desktop/issues/6528 | 11 days, 21:21:41 | 11 days, 21:21:42 | +| Zen not opening last used tab when opening new window | https://github.com/zen-browser/desktop/issues/6527 | 11 days, 21:28:58 | 11 days, 21:28:58 | +| Tab Reordering Issue when in Always Private Browsing Mode | https://github.com/zen-browser/desktop/issues/6526 | 11 days, 21:33:54 | 11 days, 21:33:55 | +| Tab close button clickable area smaller than hover-highlighted area | https://github.com/zen-browser/desktop/issues/6525 | 11 days, 22:43:11 | 11 days, 22:43:11 | +| On startup browser does not respect spacers in the tolbar customisation | https://github.com/zen-browser/desktop/issues/6524 | 11 days, 23:06:57 | 11 days, 23:06:57 | +| Issues with opening link in a new tab from Essential tab from a different workspace/container | https://github.com/zen-browser/desktop/issues/6523 | 21:19:50 | 10 days, 7:52:33 | +| pressing any key opens "Find in page..." | https://github.com/zen-browser/desktop/issues/6517 | 2:10:33 | 5:11:26 | +| reopen closed window | https://github.com/zen-browser/desktop/issues/6516 | 12 days, 3:30:16 | 12 days, 3:30:16 | +| Links should open in the Default Workspace (and assigned container, if set) instead of the last used one | https://github.com/zen-browser/desktop/issues/6515 | 12 days, 3:52:21 | 12 days, 3:52:21 | +| Unable to download files from drive.google.com or gmail. | https://github.com/zen-browser/desktop/issues/6514 | 1 day, 10:45:46 | 12 days, 4:36:11 | +| Code signature changed? | https://github.com/zen-browser/desktop/issues/6513 | 1 day, 16:33:41 | 3 days, 19:57:51 | +| Closing mini window tab opened from pinned essential goes to new tab | https://github.com/zen-browser/desktop/issues/6510 | 12 days, 7:04:31 | 12 days, 7:04:32 | +| New Tab -> Back to old tab doesn't work. | https://github.com/zen-browser/desktop/issues/6509 | 12 days, 7:37:46 | 12 days, 7:37:47 | +| Multiple windows reopen on launch despite disabling "Open previous windows and tabs" | https://github.com/zen-browser/desktop/issues/6508 | 12 days, 8:13:19 | 12 days, 8:13:20 | +| Canva Verify Payment Window Not Loading | https://github.com/zen-browser/desktop/issues/6506 | 12 days, 14:36:55 | 12 days, 14:36:56 | +| New zen window / instance is opening by itself | https://github.com/zen-browser/desktop/issues/6504 | 12 days, 18:03:52 | 12 days, 18:03:53 | +| External programs can't open links (Log in) using zen browser. | https://github.com/zen-browser/desktop/issues/6503 | None | 0:09:07 | +| Opens first tab after update | https://github.com/zen-browser/desktop/issues/6502 | 0:16:15 | 0:16:15 | +| Minimize and restore down buttons are not shown in KDE wayland session | https://github.com/zen-browser/desktop/issues/6501 | 12 days, 20:18:10 | 12 days, 20:18:11 | +| Cannot bind certain keys for shortcuts | https://github.com/zen-browser/desktop/issues/6498 | 18:29:44 | 13 days, 1:18:14 | +| Back and Forward Buttons Switch Workspace Instead of Page | https://github.com/zen-browser/desktop/issues/6497 | 11:07:22 | 11 days, 8:39:41 | +| Can't close windows in compact mode (Windows) | https://github.com/zen-browser/desktop/issues/6495 | 13 days, 2:10:59 | 13 days, 2:10:59 | +| URL bar narrow after compact mode | https://github.com/zen-browser/desktop/issues/6493 | 1 day, 12:31:52 | 13 days, 2:31:24 | +| Cant rearrange tabs and splitview when in incogito | https://github.com/zen-browser/desktop/issues/6492 | 13 days, 3:15:56 | 13 days, 3:15:56 | +| Web panels no longer appear when watching a fullscreen video. | https://github.com/zen-browser/desktop/issues/6491 | 13 days, 5:01:16 | 13 days, 5:01:17 | +| Problem watching DRM content (specifically www.crunchyroll.com content) | https://github.com/zen-browser/desktop/issues/6490 | 11:50:38 | 13 days, 6:05:20 | +| When using Baidu to search, the search bar appears blank and it is impossible to input text. If you force an input by using the space bar, the web page will return to the previous one. | https://github.com/zen-browser/desktop/issues/6489 | None | 2 days, 2:54:25 | +| Major contrast/transparency visual background glitch | https://github.com/zen-browser/desktop/issues/6488 | 13 days, 7:25:57 | 13 days, 7:25:58 | +| Tab page jitter in Split View mode | https://github.com/zen-browser/desktop/issues/6487 | 1 day, 13:01:10 | 13 days, 8:17:37 | +| "command + shift + C" doesn't work for inspect element | https://github.com/zen-browser/desktop/issues/6485 | 1 day, 14:44:49 | 13 days, 14:53:24 | +| Top edge of browser scaling on hover | https://github.com/zen-browser/desktop/issues/6484 | 13 days, 15:42:29 | 13 days, 15:42:30 | +| Black screen, after reopen on Win10, than most tabs missing | https://github.com/zen-browser/desktop/issues/6483 | 13 days, 16:57:29 | 13 days, 16:57:29 | +| Favicons not displayed for some websites | https://github.com/zen-browser/desktop/issues/6482 | 13 days, 17:29:54 | 13 days, 17:29:55 | +| Background transparency flickering when OBS is on the background | https://github.com/zen-browser/desktop/issues/6479 | 13 days, 18:50:41 | 13 days, 18:50:42 | +| Only five web panel icons show | https://github.com/zen-browser/desktop/issues/6478 | 1:04:04 | 1:05:50 | +| Zen using too much system resources | https://github.com/zen-browser/desktop/issues/6477 | 12:40:56 | 12:40:58 | +| Caton when playing video full-screen | https://github.com/zen-browser/desktop/issues/6476 | 14 days, 5:46:49 | 14 days, 5:46:49 | +| Minor bug perhaps, click the current workspaces shortcut breaks scroll limit on tab list. | https://github.com/zen-browser/desktop/issues/6475 | 14 days, 5:55:03 | 14 days, 5:55:04 | +| Missing icons in pdf viewer interface | https://github.com/zen-browser/desktop/issues/6471 | 8 days, 16:45:52 | 14 days, 8:31:01 | +| Zen elastic scrolling | https://github.com/zen-browser/desktop/issues/6470 | 8:32:23 | 8:32:30 | +| Slide Graphics Blinking (PowerPoint) | https://github.com/zen-browser/desktop/issues/6469 | 14 days, 13:37:01 | 14 days, 13:37:02 | +| Zen ignores policies.json and keeps update popup | https://github.com/zen-browser/desktop/issues/6468 | 14 days, 13:56:24 | 14 days, 13:56:24 | +| Drag to Split only works for creating new vertical splits | https://github.com/zen-browser/desktop/issues/6463 | 14 days, 21:31:52 | 14 days, 21:31:53 | +| Scroll bar can't be scrolled from the right edge of the window (Windows) | https://github.com/zen-browser/desktop/issues/6461 | 7:04:49 | 15 days, 0:54:05 | +| Discord does not play video on zen | https://github.com/zen-browser/desktop/issues/6459 | 22:26:18 | 12 days, 1:57:02 | +| Close tab buttons slightly cut off when in compact mode (Windows) | https://github.com/zen-browser/desktop/issues/6458 | 6:26:54 | 15 days, 1:11:08 | +| Screen sharing is not working for calls on teams and google meet after the update | https://github.com/zen-browser/desktop/issues/6457 | 4 days, 18:07:16 | 15 days, 1:12:33 | +| The scroll is not smooth as on other browser | https://github.com/zen-browser/desktop/issues/6454 | 1:43:43 | 1 day, 1:36:57 | +| When there are no tabs in the browser, the sidebar gets stuck in the expanded state, blocking the view and not retracting. | https://github.com/zen-browser/desktop/issues/6453 | 1:53:35 | 2:31:06 | +| New window created when 3rd tab is split on the right | https://github.com/zen-browser/desktop/issues/6451 | None | 1 day, 11:40:57 | +| Opening links in other apps open a new Zen window with just a blank page | https://github.com/zen-browser/desktop/issues/6450 | 2 days, 0:05:56 | 15 days, 3:37:39 | +| Bug on pinned tabs | https://github.com/zen-browser/desktop/issues/6447 | 15 days, 5:27:45 | 15 days, 5:27:46 | +| Tabs randomly mix all over the place when you split | https://github.com/zen-browser/desktop/issues/6446 | 15 days, 6:21:12 | 15 days, 6:21:13 | +| The Extensions popup while adding new extensions is going out of the screen | https://github.com/zen-browser/desktop/issues/6445 | 4 days, 8:05:02 | 15 days, 6:25:14 | +| Fullscreen mode shows window border (Linux) | https://github.com/zen-browser/desktop/issues/6443 | 2 days, 4:01:19 | 15 days, 7:41:07 | +| Split view bug | https://github.com/zen-browser/desktop/issues/6442 | 15 days, 9:37:40 | 15 days, 9:37:40 | +| Maxed out all 16 cores, 64GB of RAM and 16GB of swap | https://github.com/zen-browser/desktop/issues/6441 | 4:14:00 | 15 days, 9:40:52 | +| Closing unpinned tabs below an Essential tab leaves the window stuck | https://github.com/zen-browser/desktop/issues/6437 | 7 days, 5:43:28 | 15 days, 12:15:12 | +| Unexpected bottom border when fullscreen on Windows | https://github.com/zen-browser/desktop/issues/6435 | 4:16:15 | 15 days, 13:47:02 | +| Right clicking for pasting new link on the address bar selects the current tab's link and overrides it when trying to open new tab through Ctrl+t | https://github.com/zen-browser/desktop/issues/6434 | 8 days, 6:34:51 | 15 days, 16:34:09 | +| Sidebar UI Problem | https://github.com/zen-browser/desktop/issues/6433 | None | 4 days, 1:48:19 | +| Zen forgets all tabs when the main browser is closed while Private Browsing is open | https://github.com/zen-browser/desktop/issues/6432 | 7 days, 0:32:05 | 15 days, 16:47:13 | +| Websites refuse to work | https://github.com/zen-browser/desktop/issues/6431 | 11:01:23 | 15 days, 17:06:27 | +| Sidebar Dragging Moves Entire Window | https://github.com/zen-browser/desktop/issues/6429 | 1 day, 12:51:50 | 2 days, 4:15:34 | +| Chatbot support disabled by default | https://github.com/zen-browser/desktop/issues/6428 | 0:39:39 | 15 days, 20:17:43 | +| Twitch: FrankerFaceZ extenstion | https://github.com/zen-browser/desktop/issues/6426 | 2:14:12 | 22:59:33 | +| Kagi search page has bad font rendering when using flatpak | https://github.com/zen-browser/desktop/issues/6425 | 8 days, 17:42:46 | 15 days, 22:26:02 | +| Failing to drag tab for split window when native sidebar is on the right | https://github.com/zen-browser/desktop/issues/6424 | 15 days, 23:02:32 | 15 days, 23:02:33 | +| Open any url/tab = nothing happens | https://github.com/zen-browser/desktop/issues/6423 | 15 days, 23:23:46 | 15 days, 23:23:47 | +| I have a problem creating a new tab in the browser. | https://github.com/zen-browser/desktop/issues/6420 | 0:29:25 | 16 days, 0:13:53 | +| Dark theme menu bar glitched | https://github.com/zen-browser/desktop/issues/6419 | 16 days, 0:20:20 | 16 days, 0:20:20 | +| New tab opens black page with only search option | https://github.com/zen-browser/desktop/issues/6418 | 1:30:09 | 1 day, 20:19:37 | +| Black text on dark theme | https://github.com/zen-browser/desktop/issues/6416 | 1 day, 0:41:57 | 16 days, 1:56:48 | +| Login pop-ups instant crashed. | https://github.com/zen-browser/desktop/issues/6414 | None | 3 days, 11:52:50 | +| Only last workspace tabs are synced via firefox account | https://github.com/zen-browser/desktop/issues/6413 | 3:29:46 | 16 days, 2:45:09 | +| Open in split window in split window undefined behaviour | https://github.com/zen-browser/desktop/issues/6412 | 16 days, 2:55:23 | 16 days, 2:55:24 | +| Sidebar Stucked | https://github.com/zen-browser/desktop/issues/6411 | 16 days, 3:17:38 | 16 days, 3:17:39 | +| Keyboard shortcuts not working with non-English layouts (e.g., Turkish) | https://github.com/zen-browser/desktop/issues/6410 | 16 days, 3:27:56 | 16 days, 3:27:56 | +| Chinese input not work in Baidu search engine | https://github.com/zen-browser/desktop/issues/6409 | 4:27:38 | 16 days, 4:36:48 | +| sidebar/toolbar overlap | https://github.com/zen-browser/desktop/issues/6408 | 13 days, 4:37:38 | 16 days, 4:54:10 | +| Sidebar on the right | https://github.com/zen-browser/desktop/issues/6406 | 16 days, 5:57:44 | 16 days, 5:57:45 | +| Floating video player doesn't follow virtual desktops | https://github.com/zen-browser/desktop/issues/6405 | 3 days, 3:21:41 | 16 days, 6:47:00 | +| Opening an external link when browser is closed have a different behavior than when the browser is opened | https://github.com/zen-browser/desktop/issues/6404 | 16 days, 7:01:57 | 16 days, 7:01:57 | +| Zen Browser opens on the last used virtual desktop instead of the current one | https://github.com/zen-browser/desktop/issues/6403 | 3 days, 11:14:01 | 16 days, 7:21:44 | +| Workspace assigned to bookmarks not editable after creation | https://github.com/zen-browser/desktop/issues/6402 | 16 days, 7:27:34 | 16 days, 7:27:34 | +| Split Tabs not Restored upon Hard Computer Reset | https://github.com/zen-browser/desktop/issues/6401 | 16 days, 7:41:46 | 16 days, 7:41:46 | +| (Critical) refresh button broken! | https://github.com/zen-browser/desktop/issues/6399 | 16 days, 8:13:05 | 16 days, 8:13:06 | +| Ai ChatBot unavailable in sidebar | https://github.com/zen-browser/desktop/issues/6398 | 5:17:58 | 1 day, 7:41:37 | +| Browser slow to load on launch on notebook | https://github.com/zen-browser/desktop/issues/6397 | 16 days, 9:22:29 | 16 days, 9:22:29 | +| Zen 1.9.1b auto-update from 1.9b breaks MacOS code-signature | https://github.com/zen-browser/desktop/issues/6394 | 5 days, 23:17:44 | 8 days, 4:56:29 | +| Flexible space bug when placed on either sides of the URL bar in Multiple toolbars in Browser Layout | https://github.com/zen-browser/desktop/issues/6392 | 16 days, 12:08:43 | 16 days, 12:08:43 | +| Pinned tabs aren't restored properly when multiple windows are open | https://github.com/zen-browser/desktop/issues/6391 | 16:40:17 | 16 days, 12:11:56 | +| Compact Mode Toggle Shortcut Not Working | https://github.com/zen-browser/desktop/issues/6389 | 15:23:17 | 16 days, 14:30:44 | +| Split View beyond two tabs fails | https://github.com/zen-browser/desktop/issues/6388 | 16 days, 14:45:49 | 16 days, 14:45:49 | +| Access Violation (0xc0000005) Crash When Running with SentinelOne EDR Active (Windows ARM64) | https://github.com/zen-browser/desktop/issues/6386 | 16 days, 15:59:44 | 16 days, 15:59:44 | +| book.ark toolbar and window controls persists when opening folder | https://github.com/zen-browser/desktop/issues/6385 | 16 days, 16:01:37 | 16 days, 16:01:38 | +| Right click menu to Move tab to other Workspace does not show | https://github.com/zen-browser/desktop/issues/6384 | 0:20:11 | 1 day, 23:55:41 | +| Windows Window Handling Is Problematic | https://github.com/zen-browser/desktop/issues/6382 | 16 days, 18:50:00 | 16 days, 18:50:01 | +| Glance opens on magnet links | https://github.com/zen-browser/desktop/issues/6381 | 0:03:28 | 16 days, 19:56:51 | +| Confirm Closing Feature for Glance does not Work | https://github.com/zen-browser/desktop/issues/6380 | 2:04:46 | 16 days, 19:57:26 | +| Cant open extensions when no tab open. | https://github.com/zen-browser/desktop/issues/6378 | 12 days, 15:43:18 | 16 days, 20:11:00 | +| Weird zooming and window placement issues on Windows | https://github.com/zen-browser/desktop/issues/6374 | 16 days, 22:37:04 | 16 days, 22:37:04 | +| Search Engine Shortcuts Dont work after 1.9b, no mods on | https://github.com/zen-browser/desktop/issues/6373 | 2 days, 16:37:00 | 16 days, 22:41:27 | +| Dragging Tabs to open Split view only works on the left, when the tabs are on the right | https://github.com/zen-browser/desktop/issues/6372 | None | 9 days, 2:10:52 | +| misclick caused by tab context menu | https://github.com/zen-browser/desktop/issues/6371 | 16 days, 23:25:28 | 16 days, 23:25:29 | +| URL Bar only showing up when typing. | https://github.com/zen-browser/desktop/issues/6369 | 1 day, 20:40:08 | 1 day, 23:49:44 | +| why is it grayed out ? | https://github.com/zen-browser/desktop/issues/6368 | 22:27:41 | 22:28:35 | +| SuperPins (v1.4.4) not wrapping to new row | https://github.com/zen-browser/desktop/issues/6365 | 0:36:25 | 17 days, 2:47:47 | +| icons missaligned adress bar | https://github.com/zen-browser/desktop/issues/6364 | None | 1:46:18 | +| Move selected tab(s) to new window opens a new window while CLOSING the (first) selected tab | https://github.com/zen-browser/desktop/issues/6363 | 1:36:57 | 1 day, 2:54:10 | +| Japanese font doesn't work | https://github.com/zen-browser/desktop/issues/6362 | 17 days, 5:34:27 | 17 days, 5:34:27 | +| --zen-sidebar-width not set correctly when opening Zen with compact mode enabled | https://github.com/zen-browser/desktop/issues/6361 | 17 days, 6:23:51 | 17 days, 6:23:52 | +| Change tab from workspace (with default container) to other workspace loses tab | https://github.com/zen-browser/desktop/issues/6360 | 1 day, 7:46:11 | 15 days, 15:16:51 | +| Browser gives no visual indication that a browser window is private | https://github.com/zen-browser/desktop/issues/6358 | 14:08:22 | 17 days, 7:14:46 | +| Windows version eating up too much RAM | https://github.com/zen-browser/desktop/issues/6357 | 1:49:59 | 1 day, 5:24:46 | +| Zen is being updated by another instance | https://github.com/zen-browser/desktop/issues/6355 | 14 days, 21:48:28 | 17 days, 12:00:20 | +| Collapsed and Multiple toolbar does not hide completely (1.9b -> 1.10b still) | https://github.com/zen-browser/desktop/issues/6354 | 0:02:49 | 17 days, 12:07:24 | +| Browser unresponsive after closing large amount of tabs | https://github.com/zen-browser/desktop/issues/6353 | 3 days, 17:13:21 | 17 days, 13:01:01 | +| url bar icon not aligned center | https://github.com/zen-browser/desktop/issues/6352 | 17:24:58 | 17 days, 13:31:25 | +| Incorrect user interface in side panel | https://github.com/zen-browser/desktop/issues/6351 | 5 days, 16:07:57 | 17 days, 14:06:04 | +| Every time opening tabs in Essentials | https://github.com/zen-browser/desktop/issues/6350 | 17 days, 14:18:21 | 17 days, 14:18:21 | +| Link is ignored if there's no active windows AND if Zen remembers history | https://github.com/zen-browser/desktop/issues/6349 | 0:06:18 | 3 days, 9:53:01 | +| Dragging window into a new desktop results in blank zen window | https://github.com/zen-browser/desktop/issues/6348 | 0:26:07 | 1 day, 23:33:25 | +| restoring pinned tabs converts it to blank | https://github.com/zen-browser/desktop/issues/6347 | None | 11 days, 13:47:41 | +| mica broke again | https://github.com/zen-browser/desktop/issues/6346 | 17 days, 16:46:21 | 17 days, 16:46:21 | +| Search engine selector gone | https://github.com/zen-browser/desktop/issues/6345 | 4 days, 20:07:21 | 17 days, 17:17:10 | +| PDF files open to a blank page when Zen is closed | https://github.com/zen-browser/desktop/issues/6343 | 12:43:24 | 17 days, 18:13:02 | +| Tab peek controls overlap firefox ai chat sidebar | https://github.com/zen-browser/desktop/issues/6342 | 17 days, 18:38:25 | 17 days, 18:38:26 | +| Cant open a link with left click. | https://github.com/zen-browser/desktop/issues/6341 | 17 days, 18:56:56 | 17 days, 18:56:57 | +| Distorted UI during first use - fresh install | https://github.com/zen-browser/desktop/issues/6340 | 17 days, 19:04:58 | 17 days, 19:04:59 | +| Ctrl+Tab fails to switch tabs when dragging a file | https://github.com/zen-browser/desktop/issues/6339 | 17 days, 20:59:02 | 17 days, 20:59:03 | +| freeze content when scrolling | https://github.com/zen-browser/desktop/issues/6338 | 1 day, 13:52:29 | 17 days, 20:59:52 | +| Web Panel resets to initial state on tab change | https://github.com/zen-browser/desktop/issues/6336 | 17 days, 23:33:45 | 17 days, 23:33:45 | +| New tab search bar doesn’t open when address bar suggestions are disabled | https://github.com/zen-browser/desktop/issues/6335 | 18 days, 2:21:42 | 18 days, 2:21:42 | +| Sidebar gadient breaks | https://github.com/zen-browser/desktop/issues/6333 | 18 days, 3:30:31 | 18 days, 3:30:31 | +| Show Sidebar is greyed out | https://github.com/zen-browser/desktop/issues/6332 | 7 days, 23:54:34 | 18 days, 3:42:42 | +| Sidebar overlaps with page content in 'multiple toolbar' mode | https://github.com/zen-browser/desktop/issues/6330 | 18 days, 3:57:58 | 18 days, 3:57:58 | +| Search shortcuts are missing in URL and Quick search bar | https://github.com/zen-browser/desktop/issues/6329 | 11 days, 11:42:02 | 18 days, 4:42:24 | +| Tab order disrupted [Bug] | https://github.com/zen-browser/desktop/issues/6328 | None | 7 days, 22:29:09 | +| Extension data being corrupted? (Bitwarden losing accounts) | https://github.com/zen-browser/desktop/issues/6327 | 18 days, 6:51:22 | 18 days, 6:51:22 | +| Hovering over tabs now displays an x to close them | https://github.com/zen-browser/desktop/issues/6325 | 0:46:18 | 18 days, 8:15:53 | +| Cannot split private tabs | https://github.com/zen-browser/desktop/issues/6323 | 0:15:38 | 8 days, 8:41:36 | +| URL Bar is blocked when typing in it | https://github.com/zen-browser/desktop/issues/6322 | None | 6:17:45 | +| Bookmark Bar not Minimizing | https://github.com/zen-browser/desktop/issues/6320 | None | 5:08:00 | +| Buggy behaviour when dragging tab from the bar | https://github.com/zen-browser/desktop/issues/6319 | 0:49:26 | 18 days, 15:48:26 | +| Bookmarks in Toolbar disappearing when entering fullscreen | https://github.com/zen-browser/desktop/issues/6318 | 1 day, 14:07:49 | 18 days, 16:41:09 | +| Alt + Clicking a link to open it in glance mode does not work in http pages | https://github.com/zen-browser/desktop/issues/6317 | 18 days, 17:40:56 | 18 days, 17:40:56 | +| iCloud Passwords extension broken | https://github.com/zen-browser/desktop/issues/6315 | 0:05:10 | 18 days, 19:11:03 | +| High CPU Usage | https://github.com/zen-browser/desktop/issues/6311 | 2:11:38 | 2:11:38 | +| Bookmark bad placement | https://github.com/zen-browser/desktop/issues/6310 | 11:00:26 | 1 day, 4:55:26 | +| Missing top and bottom margins for the URL bar. | https://github.com/zen-browser/desktop/issues/6308 | 1 day, 5:38:11 | 1 day, 5:38:11 | +| The knob for setting grains in theme setter is not circular | https://github.com/zen-browser/desktop/issues/6307 | 0:02:54 | 18 days, 23:12:49 | +| zen.workspaces.natural-scroll. workspace gestures animation are the wrong direction | https://github.com/zen-browser/desktop/issues/6305 | 18 days, 23:51:15 | 18 days, 23:51:15 | +| split screen moves pdfs | https://github.com/zen-browser/desktop/issues/6304 | 0:34:48 | 19 days, 0:38:55 | +| Why are search box icons positioned differently? | https://github.com/zen-browser/desktop/issues/6303 | 0:34:03 | 1 day, 7:25:16 | +| Zen does not get scrolling optimizations | https://github.com/zen-browser/desktop/issues/6302 | 4:31:26 | None | +| Save files do not correctly remember last saving location | https://github.com/zen-browser/desktop/issues/6301 | 19 days, 1:03:38 | 19 days, 1:03:38 | +| Close tab button tiny and at wrong position since update 1.9b | https://github.com/zen-browser/desktop/issues/6300 | 0:00:43 | 0:00:42 | +| New tab (ctrl-t) often replaces current tab as if i pressed (ctrl-l) | https://github.com/zen-browser/desktop/issues/6299 | 2:40:29 | 19 days, 3:40:52 | +| Gradient disappears if the window is unfocused | https://github.com/zen-browser/desktop/issues/6298 | 3:33:50 | 19 days, 3:46:23 | +| New tab in container | https://github.com/zen-browser/desktop/issues/6296 | 4:14:30 | 4:17:52 | +| Toolbar Doesn't Collapse When Hovering Over Tab Preview in Compact Mode | https://github.com/zen-browser/desktop/issues/6295 | 19 days, 4:41:23 | 19 days, 4:41:24 | +| Some website have overlay graphics at the wrong location | https://github.com/zen-browser/desktop/issues/6294 | 4:49:46 | 19 days, 4:48:39 | +| No way to open the sidebar while in compact mode on touchscreen | https://github.com/zen-browser/desktop/issues/6293 | 19 days, 5:01:49 | 19 days, 5:01:50 | +| Copying Problem While Watching Something on YouTube | https://github.com/zen-browser/desktop/issues/6291 | 19 days, 5:25:06 | 19 days, 5:25:07 | +| Zen Browser - Audio Icon Not Visible in "Audio TabIcon Plus" Mode | https://github.com/zen-browser/desktop/issues/6290 | 5:48:29 | 19 days, 5:44:15 | +| when i start zen after 1.9b update it doesn't show anything except the top bar | https://github.com/zen-browser/desktop/issues/6288 | 7:21:54 | 4 days, 14:26:52 | +| Expand sidebar button has no priority when shrunk | https://github.com/zen-browser/desktop/issues/6287 | 19 days, 6:36:54 | 19 days, 6:36:55 | +| Zen stuck on Syncing... on MacOS | https://github.com/zen-browser/desktop/issues/6286 | 19 days, 6:50:36 | 19 days, 6:50:37 | +| I can’t delete the profile. | https://github.com/zen-browser/desktop/issues/6285 | 2 days, 20:28:06 | 19 days, 7:25:46 | +| Split tab shortcut not working in split view and other weird behavior | https://github.com/zen-browser/desktop/issues/6284 | 19 days, 7:35:52 | 19 days, 7:35:53 | +| Split view blocks Zen now | https://github.com/zen-browser/desktop/issues/6280 | 19 days, 10:26:31 | 19 days, 10:26:32 | +| Video Playback Issues | https://github.com/zen-browser/desktop/issues/6279 | 23:01:38 | 19 days, 10:46:34 | +| Tab Sidebar opens due to irrelivent command | https://github.com/zen-browser/desktop/issues/6278 | None | 15 days, 6:43:34 | +| Workspace Selector not working on bookmarks create/edit modal | https://github.com/zen-browser/desktop/issues/6277 | 1 day, 17:07:14 | 7 days, 3:18:48 | +| Home showing blank page | https://github.com/zen-browser/desktop/issues/6275 | 0:09:49 | 4 days, 20:03:39 | +| You can no longer split essentials | https://github.com/zen-browser/desktop/issues/6273 | 11:22:32 | 19 days, 16:19:50 | +| Extensions no longer stay pinned to the toolbar | https://github.com/zen-browser/desktop/issues/6272 | 0:09:02 | 19 days, 17:20:49 | +| Firefox tracker protection, PiP, and bookmark icons bugged | https://github.com/zen-browser/desktop/issues/6271 | 5:23:54 | 2 days, 0:09:16 | +| 2FAS Extension problem - abnormal CPU usage in 1.9b - no problems on Firefox | https://github.com/zen-browser/desktop/issues/6270 | 10:04:32 | 19 days, 17:44:32 | +| Be nice if I didn't have to install it every time I wanted to run it due to some bull sh t 0000000132 error. Pay nothing get nothing I suppose. Nothing ZEN about that. | https://github.com/zen-browser/desktop/issues/6269 | 1:44:24 | 19 days, 17:56:03 | +| New Window action always creates to default newtab page | https://github.com/zen-browser/desktop/issues/6268 | 3:23:22 | 19 days, 18:32:03 | +| Can't open new tab by dragging selected text to sidebar | https://github.com/zen-browser/desktop/issues/6267 | None | 23:14:40 | +| Shortcuts don't work when they conflict with standard character key binds | https://github.com/zen-browser/desktop/issues/6266 | 19 days, 21:18:44 | 19 days, 21:18:44 | +| All profiles Deleted automatically when using zen , can't restore them with about:profiles also | https://github.com/zen-browser/desktop/issues/6265 | 2:59:57 | 19 days, 21:40:08 | +| Windows processes / the entire windows unresponsive when using any kind of AI chats on Zen | https://github.com/zen-browser/desktop/issues/6264 | 19 days, 22:04:11 | 19 days, 22:04:11 | +| New window and tab doesnt work | https://github.com/zen-browser/desktop/issues/6263 | None | 0:12:28 | +| New window and tab doesnt work | https://github.com/zen-browser/desktop/issues/6262 | None | 0:00:07 | +| Spotify jumps through music by itself | https://github.com/zen-browser/desktop/issues/6261 | 10 days, 1:21:21 | 20 days, 0:00:17 | +| refocusing new tab will change to current url instead | https://github.com/zen-browser/desktop/issues/6260 | 12:27:25 | 20 days, 0:08:48 | +| Split view issue | https://github.com/zen-browser/desktop/issues/6255 | 0:50:33 | 20 days, 2:40:30 | +| bookmark toolbar not animating out | https://github.com/zen-browser/desktop/issues/6253 | 8:32:28 | 1 day, 12:54:00 | +| If I pick 3 colors in color picker, I can't set one color on sidebar like before | https://github.com/zen-browser/desktop/issues/6252 | 3:19:01 | 20 days, 3:41:14 | +| Sub-tabs in Account tab have no text | https://github.com/zen-browser/desktop/issues/6250 | 20 days, 4:11:08 | 20 days, 4:11:09 | +| Shield and Bookmark icon in searchbar is not aligned properly after new update 1.9b | https://github.com/zen-browser/desktop/issues/6248 | 4:10:26 | 16:34:35 | +| Bookmarks on the bookmark toolbar duplicates when opening a new window while in fullscreen mode | https://github.com/zen-browser/desktop/issues/6246 | 20 days, 7:00:27 | 20 days, 7:00:27 | +| Pin Tab Unpins When Using New Splitscreen Feature | https://github.com/zen-browser/desktop/issues/6245 | 9:32:04 | 20 days, 8:07:03 | +| AppImage (64 bit) on Nobara Linux 41 fails to launch. | https://github.com/zen-browser/desktop/issues/6241 | 3:04:51 | 14:51:45 | +| Alt+C not working as keybind | https://github.com/zen-browser/desktop/issues/6239 | 13:50:06 | 20 days, 13:12:19 | +| Empty Split View is shown when dragging a tab out into a new window | https://github.com/zen-browser/desktop/issues/6238 | 1 day, 7:08:21 | 5 days, 9:50:49 | +| Sidebar stays open when dragging/moving a tab out when using Compact mode | https://github.com/zen-browser/desktop/issues/6237 | 2:05:00 | 20 days, 13:17:36 | +| Profile switcher button is gone/changed | https://github.com/zen-browser/desktop/issues/6235 | 3:32:55 | 9:09:52 | +| blank tab (that shows when no tabs are open) is a dark grey instead of the theme colour | https://github.com/zen-browser/desktop/issues/6232 | 1:50:18 | 16:17:08 | +| Zen ignores system trusted certs when run in flatpak | https://github.com/zen-browser/desktop/issues/6231 | 11 days, 15:50:17 | 20 days, 15:59:42 | +| Taking a tab out of the window | https://github.com/zen-browser/desktop/issues/6230 | 12:03:30 | 12:03:30 | +| Tabs not displaying correctly when opening second window | https://github.com/zen-browser/desktop/issues/6229 | 12:28:08 | 12:28:08 | +| Tab list still scrolls to top sometimes | https://github.com/zen-browser/desktop/issues/6228 | 15 days, 16:02:36 | 20 days, 17:17:25 | +| New tab opens alongside essentials! [kinda critical] | https://github.com/zen-browser/desktop/issues/6226 | 1 day, 17:57:06 | 20 days, 17:50:03 | +| Cmd + K behaves strangely | https://github.com/zen-browser/desktop/issues/6225 | None | 12:31:04 | +| Zen doesnt load default homepage, nor custom one | https://github.com/zen-browser/desktop/issues/6223 | 13 days, 13:41:38 | 20 days, 18:25:02 | +| url is not centered on linux | https://github.com/zen-browser/desktop/issues/6222 | 8:05:01 | 13:46:11 | +| Clicking on Links in non-zen applications opens Blank Page | https://github.com/zen-browser/desktop/issues/6221 | 15:46:23 | 17:06:20 | +| Zen not working properly with PowerToys Run module | https://github.com/zen-browser/desktop/issues/6220 | 9:21:55 | 14:04:26 | +| Three bugs UI and Functionality Issues in Browser Behavior | https://github.com/zen-browser/desktop/issues/6218 | 20 days, 19:06:04 | 20 days, 19:06:05 | +| Essentials no longer have a highlight around them | https://github.com/zen-browser/desktop/issues/6217 | 20 days, 19:31:42 | 20 days, 19:31:43 | +| right sidebar animation | https://github.com/zen-browser/desktop/issues/6216 | None | 14 days, 16:42:31 | +| Picture in picture icon (URL Bar) | https://github.com/zen-browser/desktop/issues/6214 | 10:04:23 | 15:30:11 | +| Sidebar glitching out and not showing items / having incorrect offset when switching workspaces in collapsed mode | https://github.com/zen-browser/desktop/issues/6213 | 8 days, 11:36:11 | 8 days, 23:24:08 | +| Empty browser window from dragged out tab | https://github.com/zen-browser/desktop/issues/6210 | 4:54:45 | 16:18:40 | +| Zen browser not displaying anything besides the UI | https://github.com/zen-browser/desktop/issues/6209 | 5 days, 13:43:00 | 20 days, 21:04:51 | +| Home page shortcuts became smaller | https://github.com/zen-browser/desktop/issues/6208 | 6:20:48 | 20 days, 21:12:56 | +| Icons at the end of the URL bar are misaligned | https://github.com/zen-browser/desktop/issues/6207 | 5:08:25 | 3 days, 4:04:54 | +| 1.9b: Zen opens as a Blank page | https://github.com/zen-browser/desktop/issues/6205 | 3:41:04 | 20 days, 22:09:55 | +| "change theme colors" cannot be undone and breaks other theming features | https://github.com/zen-browser/desktop/issues/6202 | 18 days, 0:58:38 | 20 days, 22:13:51 | +| ISSUE WITH THE FLOATING URL BAR AND THE SIDEBAR | https://github.com/zen-browser/desktop/issues/6201 | 0:43:32 | 20 days, 23:03:13 | +| "restore previous session" does not work, it opens blank windows without ever restoring the tabs | https://github.com/zen-browser/desktop/issues/6200 | 21:37:27 | 21:37:27 | +| The appimage install command for Linux stops working in 1.9b version | https://github.com/zen-browser/desktop/issues/6199 | 18:11:44 | 5 days, 4:19:07 | +| Homepage looks like this in the new version, could you improve it or return it to how it was before? | https://github.com/zen-browser/desktop/issues/6195 | 21 days, 1:14:05 | 21 days, 1:14:06 | +| Profile switcher not showing in sidebar | https://github.com/zen-browser/desktop/issues/6194 | 0:14:44 | 1:42:41 | +| position browser notifications are broken | https://github.com/zen-browser/desktop/issues/6192 | 19:51:41 | 20:57:09 | +| Can't drag scrollbar because it's too small | https://github.com/zen-browser/desktop/issues/6191 | 13:33:59 | 21 days, 1:54:05 | +| Searcbar not autofocused when zen.urlbar.replace-newtab is set to false | https://github.com/zen-browser/desktop/issues/6189 | 21 days, 2:14:02 | 21 days, 2:14:03 | +| Need to drag a tab to the left half of the screen in tabs on the right mode | https://github.com/zen-browser/desktop/issues/6183 | 1 day, 18:38:34 | 2 days, 10:35:50 | +| Closing private tab re-open non-private tab | https://github.com/zen-browser/desktop/issues/6182 | 4:18:20 | 4:51:14 | +| New Tab Bug After the Update 1.8.1b | https://github.com/zen-browser/desktop/issues/6181 | None | 0:23:37 | +| Previous profiles not showing in updated profiles tab (1.9b) | https://github.com/zen-browser/desktop/issues/6180 | 20:27:53 | 21 days, 4:01:07 | +| Left Corners of Viewport not rounded | https://github.com/zen-browser/desktop/issues/6179 | 13:37:46 | 21 days, 4:06:34 | +| The slider in the homepage settings looks broken | https://github.com/zen-browser/desktop/issues/6178 | 21 days, 4:19:49 | 21 days, 4:19:50 | +| Dragging tab out to new window broken. | https://github.com/zen-browser/desktop/issues/6177 | 0:03:05 | 23:47:11 | +| Opening existing tab in the new window kills it | https://github.com/zen-browser/desktop/issues/6176 | 0:03:18 | 23:48:12 | +| Window Restoring Does not work | https://github.com/zen-browser/desktop/issues/6175 | 1 day, 21:28:01 | 21 days, 4:40:42 | +| Splitscreen by dragging tabs is flickering when changing the size. | https://github.com/zen-browser/desktop/issues/6173 | 21 days, 5:10:19 | 21 days, 5:10:20 | +| Top search input | https://github.com/zen-browser/desktop/issues/6172 | 21 days, 5:18:21 | 21 days, 5:18:21 | +| In a new tab, the search bar appears on the left side of the screen and across the screen. | https://github.com/zen-browser/desktop/issues/6171 | 1:34:32 | 1:34:32 | +| Tabs sometimes change places suddenly | https://github.com/zen-browser/desktop/issues/6170 | 21 days, 6:20:00 | 21 days, 6:20:00 | +| In a new tab, the search bar appears on the left side of the screen and across the screen. | https://github.com/zen-browser/desktop/issues/6168 | 1:55:46 | 1:55:46 | +| Zen browser remains at version 1.8.2b | https://github.com/zen-browser/desktop/issues/6167 | 0:05:28 | 1:57:40 | +| Opening new tabs with CTRL-Enter to quickfill .com domains opens wrong URL | https://github.com/zen-browser/desktop/issues/6166 | 9 days, 8:44:39 | 21 days, 7:57:03 | +| Extension→ Cant import Yomitan dictionaries when using Containers | https://github.com/zen-browser/desktop/issues/6164 | 21 days, 11:45:50 | 21 days, 11:45:50 | +| Compact right tabs has gap | https://github.com/zen-browser/desktop/issues/6163 | 5:20:43 | 21 days, 15:35:02 | +| Tab bar resizing area is tiny | https://github.com/zen-browser/desktop/issues/6162 | None | 5:44:57 | +| Pinned Tabs are invisible | https://github.com/zen-browser/desktop/issues/6161 | 0:11:58 | 1:02:43 | +| Videos wont go fullscreen in split view | https://github.com/zen-browser/desktop/issues/6159 | 21 days, 20:44:47 | 21 days, 20:44:47 | +| YouTube is slow | https://github.com/zen-browser/desktop/issues/6157 | 1 day, 16:27:54 | 21 days, 21:07:26 | +| Remapped picture-in-picture shortcut does not work for closing PIP | https://github.com/zen-browser/desktop/issues/6155 | 21 days, 21:18:40 | 21 days, 21:18:41 | +| Zen mod Cleaned URL bar blur not working outside settings | https://github.com/zen-browser/desktop/issues/6154 | 21 days, 21:23:41 | 21 days, 21:23:42 | +| Animated Dialog Element Does not Appear In Zen | https://github.com/zen-browser/desktop/issues/6153 | 21 days, 21:40:57 | 21 days, 21:40:57 | +| When resizing the window, the buttons on the right don't disappear and stay in front of the URL bar. | https://github.com/zen-browser/desktop/issues/6152 | 21 days, 22:50:00 | 21 days, 22:50:01 | +| Links opened by Thunderbird not recognised | https://github.com/zen-browser/desktop/issues/6150 | 21 days, 23:43:25 | 21 days, 23:43:26 | +| Low contrast text if lighter background colors are chosen | https://github.com/zen-browser/desktop/issues/6149 | None | 5 days, 0:37:32 | +| Color picker is not able to pick light colors, there's effectively no "light mode" | https://github.com/zen-browser/desktop/issues/6148 | 1 day, 7:05:26 | 5 days, 0:46:22 | +| Some essentials missing after moving to a new tab | https://github.com/zen-browser/desktop/issues/6147 | 22 days, 1:10:02 | 22 days, 1:10:03 | +| UI Config Saving issue with Toolbar | https://github.com/zen-browser/desktop/issues/6146 | 22 days, 1:20:51 | 22 days, 1:20:52 | +| Unable to login into youtube with google account | https://github.com/zen-browser/desktop/issues/6144 | 1:24:03 | 22 days, 1:55:36 | +| Close buttons on Mac positioned wrong when sidebar is collapsed | https://github.com/zen-browser/desktop/issues/6143 | 22 days, 1:58:07 | 22 days, 1:58:08 | +| Video bug when entering a Google meeting | https://github.com/zen-browser/desktop/issues/6142 | 22 days, 2:21:19 | 22 days, 2:21:19 | +| Theme colors leak into websites | https://github.com/zen-browser/desktop/issues/6141 | 2:13:26 | 22 days, 2:48:29 | +| Imaginary tab when `zen.urlbar.replace-newtab` set to `false` | https://github.com/zen-browser/desktop/issues/6138 | 4 days, 14:49:34 | 22 days, 3:54:57 | +| [1.9t] Icon sizing and positioning issues across UI | https://github.com/zen-browser/desktop/issues/6137 | 1 day, 1:23:48 | 11 days, 21:11:06 | +| Extension icons hang off the side of the sidebar, and extension addition confirmation window hangs off the screen | https://github.com/zen-browser/desktop/issues/6135 | 18 days, 8:19:50 | 22 days, 6:38:20 | +| Settings show zen-split-view-modifier which is unclear, I think it should be with spaces? | https://github.com/zen-browser/desktop/issues/6134 | 22 days, 7:27:49 | 22 days, 7:27:50 | +| Grayish White Rounded Corners Visible when fullscreen in a video on youtube | https://github.com/zen-browser/desktop/issues/6132 | 8:50:42 | 22 days, 9:35:57 | +| Zen Browser local building and running shows firefox only not zen type visual | https://github.com/zen-browser/desktop/issues/6128 | None | 3 days, 10:31:16 | +| Cannot download files with the flatpak version of Zen | https://github.com/zen-browser/desktop/issues/6127 | 10:53:18 | 22 days, 18:27:20 | +| File Browser doesnt list user home directory files | https://github.com/zen-browser/desktop/issues/6126 | 22 days, 18:35:54 | 22 days, 18:35:55 | +| Dragging sidebar moves the window | https://github.com/zen-browser/desktop/issues/6125 | 19:01:23 | 22 days, 19:16:45 | +| Option to add new tab to the sidebar dissappeared. | https://github.com/zen-browser/desktop/issues/6123 | 22 days, 21:12:43 | 22 days, 21:12:44 | +| The sidebar shrinks too much when switching to compact mode while floating is enabled | https://github.com/zen-browser/desktop/issues/6122 | 22 days, 21:15:20 | 22 days, 21:15:20 | +| Unable to define a Ctrl+Alt+Tab keyboard shortcut | https://github.com/zen-browser/desktop/issues/6121 | 22 days, 22:08:26 | 22 days, 22:08:26 | +| Broken keyboard shortcuts for compact mode | https://github.com/zen-browser/desktop/issues/6120 | 22 days, 22:11:00 | 22 days, 22:11:01 | +| Confusing case-insensitivity in the keyboard shortcuts configuration page | https://github.com/zen-browser/desktop/issues/6119 | 22 days, 22:20:02 | 22 days, 22:20:03 | +| Keyboard shortcuts stop working in the keyboard shortcuts configuration page | https://github.com/zen-browser/desktop/issues/6118 | 22 days, 22:28:25 | 22 days, 22:28:26 | +| "Bookmark this page" and "Show your bookmarks" show the same icon in the tool bar | https://github.com/zen-browser/desktop/issues/6117 | 22 days, 23:37:40 | 22 days, 23:37:41 | +| cmd+t toolbar partly hidden form the viewport | https://github.com/zen-browser/desktop/issues/6115 | 21:52:58 | 23 days, 4:34:42 | +| [1.8.2b] Print dialog invisible/does not appear. | https://github.com/zen-browser/desktop/issues/6113 | 6:55:27 | 9:17:48 | +| Blinking issue when activating window | https://github.com/zen-browser/desktop/issues/6112 | 23 days, 6:09:34 | 23 days, 6:09:35 | +| Workspace bottom indicator is not updated when scrolling the sidebar while another Zen window is focused | https://github.com/zen-browser/desktop/issues/6111 | 23 days, 6:38:54 | 23 days, 6:38:55 | +| 'Restore Window' feature not restoring tabs | https://github.com/zen-browser/desktop/issues/6109 | 5 days, 9:13:22 | 23 days, 9:27:14 | +| Can't open item in history | https://github.com/zen-browser/desktop/issues/6107 | 0:30:19 | 0:30:20 | +| Opening browser changes tab order | https://github.com/zen-browser/desktop/issues/6106 | 12:05:44 | 23 days, 12:02:25 | +| Sidebery box position incorrect for autohide | https://github.com/zen-browser/desktop/issues/6105 | 23 days, 14:15:07 | 23 days, 14:15:08 | +| Tabs on right has an empty margin | https://github.com/zen-browser/desktop/issues/6103 | 23 days, 14:47:19 | 23 days, 14:47:20 | +| Sidebery Mod page incorrect author | https://github.com/zen-browser/desktop/issues/6102 | 4:41:28 | 4:41:51 | +| Top toolbar is shown when hovering the top side of the screen in "single toolbar" layout with "compact mode" | https://github.com/zen-browser/desktop/issues/6101 | 21 days, 17:27:45 | 23 days, 16:12:17 | +| Blank Display when closing all non-pinned and non-essentials tabs | https://github.com/zen-browser/desktop/issues/6100 | 0:32:08 | 0:32:08 | +| Unable to Move Last Tab to Second Last Position | https://github.com/zen-browser/desktop/issues/6099 | 1 day, 14:33:30 | 5 days, 14:21:59 | +| New tab bar popup doesn't open when in full screen mode | https://github.com/zen-browser/desktop/issues/6098 | 23 days, 18:38:04 | 23 days, 18:38:05 | +| research bar not showing text | https://github.com/zen-browser/desktop/issues/6097 | 8:21:53 | 23 days, 18:52:30 | +| Research obscuring the bar | https://github.com/zen-browser/desktop/issues/6096 | 8:22:31 | 23 days, 18:53:34 | +| Browser does not render pages even after minutes of being open | https://github.com/zen-browser/desktop/issues/6095 | 23 days, 19:59:56 | 23 days, 19:59:56 | +| Status bar graphical issue | https://github.com/zen-browser/desktop/issues/6094 | 23 days, 20:00:58 | 23 days, 20:00:59 | +| Can't scroll when cursor is all the way to the right | https://github.com/zen-browser/desktop/issues/6093 | 0:48:37 | 23 days, 20:47:17 | +| Browser Freezes and Fails to Open | https://github.com/zen-browser/desktop/issues/6092 | None | 4 days, 16:43:45 | +| Essential Tabs Are Forgetting the URL | https://github.com/zen-browser/desktop/issues/6090 | 16:29:57 | 17:55:06 | +| Google Flights date picker slowing the browser | https://github.com/zen-browser/desktop/issues/6089 | 23 days, 22:28:19 | 23 days, 22:28:19 | +| URL suggestions cover the URL bar while typing in "multiple toolbars" and "collapsed toolbar" modes | https://github.com/zen-browser/desktop/issues/6088 | 23 days, 22:50:14 | 23 days, 22:50:15 | +| Cross-site cookies being blocked when they are allowed, only appearing with Salesforce | https://github.com/zen-browser/desktop/issues/6087 | 23 days, 22:50:41 | 23 days, 22:50:41 | +| High Memory usage on windows | https://github.com/zen-browser/desktop/issues/6085 | 4:09:52 | 24 days, 0:01:10 | +| Browser not properly filling up entire screen | https://github.com/zen-browser/desktop/issues/6084 | 24 days, 0:17:39 | 24 days, 0:17:40 | +| Cannot Bind Specific Keyboard Shortcuts | https://github.com/zen-browser/desktop/issues/6083 | 24 days, 0:51:36 | 24 days, 0:51:37 | +| Opening previous windows and tabs on start up | https://github.com/zen-browser/desktop/issues/6080 | 20:13:06 | 24 days, 1:31:18 | +| YouTube not opening in theater mode | https://github.com/zen-browser/desktop/issues/6078 | 24 days, 1:55:03 | 24 days, 1:55:03 | +| Cannot Finish Initial Config due to missing Next Button on Color / Accent Chooser | https://github.com/zen-browser/desktop/issues/6076 | 24 days, 2:23:02 | 24 days, 2:23:02 | +| Unable to fully integrate GTK and QT themes | https://github.com/zen-browser/desktop/issues/6074 | 1 day, 4:58:09 | 24 days, 4:44:34 | +| can not install any firefox themes | https://github.com/zen-browser/desktop/issues/6073 | 18:28:31 | 18:28:31 | +| No icon on windows | https://github.com/zen-browser/desktop/issues/6071 | 0:12:31 | 0:23:42 | +| Twilight Browser: Unexpected Blur Transparency After Update | https://github.com/zen-browser/desktop/issues/6069 | 7:36:42 | 24 days, 11:03:57 | +| New tabs open as essentials; essentials do not retain order | https://github.com/zen-browser/desktop/issues/6068 | None | 1 day, 15:21:33 | +| [macOS] Close, minimize, and maximize buttons remain grayed out in active window | https://github.com/zen-browser/desktop/issues/6067 | 2:27:22 | 19:10:27 | +| [Regression 1.8b+] Tab session extensions cannot record across workspaces anymore | https://github.com/zen-browser/desktop/issues/6066 | 24 days, 15:28:29 | 24 days, 15:28:29 | +| Address Bar Shifts Slightly When Clicking to Edit | https://github.com/zen-browser/desktop/issues/6065 | 24 days, 16:38:42 | 24 days, 16:38:43 | +| Drag and Dropping files causes Zen to hang the system literally | https://github.com/zen-browser/desktop/issues/6062 | 24 days, 19:32:45 | 24 days, 19:32:46 | +| Interfering tabs | https://github.com/zen-browser/desktop/issues/6061 | 16:53:50 | 24 days, 21:13:04 | +| crashes on startup | https://github.com/zen-browser/desktop/issues/6060 | None | 5:35:50 | +| Extension icons and buttons are behaving strangely | https://github.com/zen-browser/desktop/issues/6058 | None | 5 days, 2:56:33 | +| Pink Youtube Filter | https://github.com/zen-browser/desktop/issues/6057 | 0:17:06 | 4 days, 17:58:17 | +| Essentials & Pinned tabs icons disappear when browser history is cleared | https://github.com/zen-browser/desktop/issues/6056 | 24 days, 23:31:36 | 24 days, 23:31:37 | +| word processor lag | https://github.com/zen-browser/desktop/issues/6055 | 10:55:49 | 24 days, 23:41:56 | +| Renamed Tabs Not Detected | https://github.com/zen-browser/desktop/issues/6054 | 2:36:44 | 24 days, 23:42:42 | +| Browser Freezes When Expanding Toolbar Options Menu in Shrinked Window State | https://github.com/zen-browser/desktop/issues/6052 | 25 days, 1:06:47 | 25 days, 1:06:47 | +| [Nobara GNOME44] Modal dialog appears almost out of screen | https://github.com/zen-browser/desktop/issues/6051 | 6:11:27 | 8 days, 4:40:40 | +| Zen doesn't follow KDE Plasma accent colors | https://github.com/zen-browser/desktop/issues/6050 | 25 days, 4:07:30 | 25 days, 4:07:30 | +| [Twilight] Cannot get Drag and Drop split view to work. | https://github.com/zen-browser/desktop/issues/6049 | None | 8 days, 8:33:12 | +| Browser lockup when closing tabs on prolonged browser usage | https://github.com/zen-browser/desktop/issues/6048 | 25 days, 4:22:26 | 25 days, 4:22:26 | +| Sidebar icons off-center | https://github.com/zen-browser/desktop/issues/6047 | 25 days, 4:34:30 | 25 days, 4:34:31 | +| Muffled headset after using Google Meet never worked again | https://github.com/zen-browser/desktop/issues/6045 | 8:04:31 | 25 days, 4:58:54 | +| Zen only allows me to save file not open it with anything | https://github.com/zen-browser/desktop/issues/6044 | 25 days, 4:59:47 | 25 days, 4:59:47 | +| Troubleshoot Mode dialog permanently opening | https://github.com/zen-browser/desktop/issues/6043 | 9 days, 0:26:55 | 25 days, 5:09:25 | +| Sidebar greyed out + Error with split view | https://github.com/zen-browser/desktop/issues/6041 | 0:46:52 | 25 days, 6:00:03 | +| Sidebar and toolbar permanently greyed out | https://github.com/zen-browser/desktop/issues/6039 | 8:32:06 | 25 days, 15:50:20 | +| Audio glitches when playback in resource intensive situations | https://github.com/zen-browser/desktop/issues/6038 | 25 days, 16:36:18 | 25 days, 16:36:19 | +| Appears unfocused when focused | https://github.com/zen-browser/desktop/issues/6036 | 25 days, 16:50:21 | 25 days, 16:50:22 | +| Zen browser having blank window before starting ( Have to launch zen two times ) | https://github.com/zen-browser/desktop/issues/6033 | 25 days, 19:11:18 | 25 days, 19:11:19 | +| 'Ask before closing multiple tabs' feature does not work as intended. | https://github.com/zen-browser/desktop/issues/6032 | 2 days, 9:20:00 | 25 days, 21:20:12 | +| Can't focus on Tiktok live comments | https://github.com/zen-browser/desktop/issues/6029 | 25 days, 22:11:33 | 25 days, 22:11:34 | +| can´t see downloads in toolbar | https://github.com/zen-browser/desktop/issues/6028 | 2:33:42 | 25 days, 22:22:07 | +| New Tab popup does not allow right click context menu (for pasting etc) | https://github.com/zen-browser/desktop/issues/6027 | 25 days, 23:06:49 | 25 days, 23:06:50 | +| Tab Resizing Bug on macOS on tab split (16" Integrated Display) | https://github.com/zen-browser/desktop/issues/6025 | 26 days, 1:01:54 | 26 days, 1:01:54 | +| Floating url goes outside of the window | https://github.com/zen-browser/desktop/issues/6024 | 1:04:46 | 5 days, 20:24:46 | +| Private Window - Focus URL bar when the window is opened | https://github.com/zen-browser/desktop/issues/6023 | 26 days, 2:29:05 | 26 days, 2:29:05 | +| "grain" UI effect cause scroll lag | https://github.com/zen-browser/desktop/issues/6022 | 26 days, 2:58:31 | 26 days, 2:58:32 | +| Sidebar buttons are visible on the devtools notification | https://github.com/zen-browser/desktop/issues/6020 | 6 days, 0:38:52 | 26 days, 3:20:13 | +| Tabs from closed workspace appears in other workspace after reopening Zen | https://github.com/zen-browser/desktop/issues/6019 | 4 days, 4:06:04 | 26 days, 3:24:29 | +| Bounce not working properly | https://github.com/zen-browser/desktop/issues/6018 | 4 days, 15:57:50 | 6 days, 18:00:59 | +| [Twilight] Glance not auto opening in external links anymore | https://github.com/zen-browser/desktop/issues/6017 | None | 9 days, 8:55:46 | +| Toolbar customisation doesn't update until window is moved | https://github.com/zen-browser/desktop/issues/6015 | 9 days, 3:38:13 | 26 days, 5:53:48 | +| Websocket application not working. | https://github.com/zen-browser/desktop/issues/6014 | None | 1 day, 1:51:42 | +| Bug when Title bar is turned off | https://github.com/zen-browser/desktop/issues/6013 | 26 days, 6:21:07 | 26 days, 6:21:07 | +| Zen won't follow my system theme | https://github.com/zen-browser/desktop/issues/6011 | 26 days, 9:23:29 | 26 days, 9:23:30 | +| Why WidevineCDM is not present if there is posible to include it for free | https://github.com/zen-browser/desktop/issues/6009 | None | 1 day, 3:10:51 | +| Weird animation with lag in single toolbar | https://github.com/zen-browser/desktop/issues/6007 | 26 days, 11:57:52 | 26 days, 11:57:53 | +| Zen-specific HotKey to forward workspace (Option + Cmd + E) does not work on MacOS | https://github.com/zen-browser/desktop/issues/6006 | 26 days, 12:26:40 | 26 days, 12:26:41 | +| minor DRM popup compact mode bug | https://github.com/zen-browser/desktop/issues/6005 | 26 days, 12:55:13 | 26 days, 12:55:13 | +| Can't skip revamped welcome page | https://github.com/zen-browser/desktop/issues/6004 | 26 days, 13:00:01 | 26 days, 13:00:01 | +| Improve Chiniese translation | https://github.com/zen-browser/desktop/issues/6003 | 26 days, 13:28:27 | 26 days, 13:28:27 | +| Restoring Windows and Tab orders. | https://github.com/zen-browser/desktop/issues/6002 | 26 days, 14:11:17 | 26 days, 14:11:17 | +| Drag & drop images not working in compact mode | https://github.com/zen-browser/desktop/issues/6001 | 26 days, 14:11:20 | 26 days, 14:11:21 | +| New tab is not a new tab, space bar is weird | https://github.com/zen-browser/desktop/issues/5997 | 12:24:08 | 26 days, 16:41:26 | +| Bookmarks Menu Toolbar Keyboard Shortcut Opens Library, not List | https://github.com/zen-browser/desktop/issues/5996 | 26 days, 19:20:52 | 26 days, 19:20:53 | +| Cannot open links in History menu | https://github.com/zen-browser/desktop/issues/5995 | 1:46:38 | 13:52:31 | +| Gnome keeps asking to make it default browser | https://github.com/zen-browser/desktop/issues/5994 | 1:19:34 | 26 days, 20:28:53 | +| Toggle floating sidebar shortcut doesn´t work | https://github.com/zen-browser/desktop/issues/5993 | 26 days, 20:30:19 | 26 days, 20:30:20 | +| Unable to render PDF on Overleaf | https://github.com/zen-browser/desktop/issues/5992 | 26 days, 21:03:38 | 26 days, 21:03:39 | +| half shown url bar when using compact mode | https://github.com/zen-browser/desktop/issues/5991 | 26 days, 21:20:04 | 26 days, 21:20:04 | +| new tab floating bar in wrong location on 16:9 ultrawide display | https://github.com/zen-browser/desktop/issues/5990 | 0:20:32 | 26 days, 22:57:02 | +| Electron has a weird thin white line at the top | https://github.com/zen-browser/desktop/issues/5989 | 26 days, 23:50:00 | 26 days, 23:50:01 | +| Opens a weird tab after closing all tabs | https://github.com/zen-browser/desktop/issues/5985 | 20:00:45 | 27 days, 1:37:50 | +| No option to close active "Essential" tabs | https://github.com/zen-browser/desktop/issues/5984 | None | 7:19:02 | +| Not possible to open links from Bookmark Library Window | https://github.com/zen-browser/desktop/issues/5983 | 1 day, 1:26:26 | 4 days, 21:49:49 | +| Location icon way too small visually | https://github.com/zen-browser/desktop/issues/5982 | 27 days, 2:18:13 | 27 days, 2:18:14 | +| History links cannot be clicked/opened | https://github.com/zen-browser/desktop/issues/5975 | 1:28:47 | 1:33:11 | +| Shows unnecessary scroll bar when maximized | https://github.com/zen-browser/desktop/issues/5974 | 27 days, 5:25:43 | 27 days, 5:25:44 | +| Missing pinned tabs and big empty space in tab bar | https://github.com/zen-browser/desktop/issues/5973 | 3:37:37 | 27 days, 6:18:53 | +| Browser switches to blank page instead of wrapping to the first/last tab when tabs switching is done by an add-on | https://github.com/zen-browser/desktop/issues/5970 | 4:23:43 | 13:37:22 | +| Floating URL bar breaks after clearing browsing history | https://github.com/zen-browser/desktop/issues/5967 | 7:33:33 | 27 days, 15:10:30 | +| taking its sweet time | https://github.com/zen-browser/desktop/issues/5966 | None | 6 days, 1:48:55 | +| keyboard shortcut priority | https://github.com/zen-browser/desktop/issues/5963 | 7 days, 20:54:12 | 27 days, 15:42:11 | +| M365 COPILOT OFFICE | https://github.com/zen-browser/desktop/issues/5962 | 2 days, 15:34:29 | 27 days, 15:43:50 | +| Tab selection panel is visible as transparent after exiting full-screen while watching media on YouTube, Netflix and more.. | https://github.com/zen-browser/desktop/issues/5959 | 20:40:11 | 22:08:11 | +| Moving a tab moves it one tab lower than it's supposed to | https://github.com/zen-browser/desktop/issues/5958 | 2 days, 18:28:41 | 27 days, 19:19:20 | +| Profiles switcher gone | https://github.com/zen-browser/desktop/issues/5957 | 0:03:37 | 0:18:58 | +| [Twilight] More split group issues | https://github.com/zen-browser/desktop/issues/5955 | 5:30:25 | 5:30:25 | +| [Twilight] Split View Tabs Can be Removed From Group | https://github.com/zen-browser/desktop/issues/5954 | None | 6:17:14 | +| ublock functionality is inconsistent in side panel | https://github.com/zen-browser/desktop/issues/5953 | 27 days, 23:14:03 | 27 days, 23:14:04 | +| Unable to install CA certificate | https://github.com/zen-browser/desktop/issues/5951 | 3:31:20 | 28 days, 1:29:01 | +| Glance (alt+click) in split tabs | https://github.com/zen-browser/desktop/issues/5950 | 8 days, 10:42:00 | 28 days, 1:32:54 | +| No such native application org.gnome.chrome_gnome_shell | https://github.com/zen-browser/desktop/issues/5949 | 28 days, 1:33:24 | 28 days, 1:33:24 | +| Solved / iCloud bookmarks extension won't work | https://github.com/zen-browser/desktop/issues/5948 | None | 0:06:26 | +| Telemtry and privacy issues with the browser | https://github.com/zen-browser/desktop/issues/5947 | 10:18:42 | 10:27:06 | +| Scrolling with Pen Tablet Only Works in Pinned Tabs | https://github.com/zen-browser/desktop/issues/5946 | 28 days, 3:05:38 | 28 days, 3:05:38 | +| Scrolling with Pen Tablet Only Works in Pinned Tabs | https://github.com/zen-browser/desktop/issues/5945 | None | 0:00:59 | +| Inconsistent Window Dragging | https://github.com/zen-browser/desktop/issues/5944 | 1 day, 10:40:42 | 28 days, 3:10:15 | +| Inconsistent Window Dragging | https://github.com/zen-browser/desktop/issues/5943 | None | 0:01:24 | +| Unload Tabs not working for pinned and essentials tabs | https://github.com/zen-browser/desktop/issues/5942 | 28 days, 3:40:31 | 28 days, 3:40:31 | +| Randomized tabs | https://github.com/zen-browser/desktop/issues/5940 | 0:39:53 | 28 days, 5:15:03 | +| Certificate Manager | https://github.com/zen-browser/desktop/issues/5936 | None | 2:37:58 | +| Essential tabs keep getting re-arranged after closing zen | https://github.com/zen-browser/desktop/issues/5935 | None | 0:05:14 | +| zen.urlbar.replace-newtab & zen.workspaces.open-new-tab-if-last-unpinned-tab-is-closed - Not working as intended in combination | https://github.com/zen-browser/desktop/issues/5933 | 22:25:28 | 28 days, 8:04:42 | +| Do the new privacy changes to Firefox apply to zen? | https://github.com/zen-browser/desktop/issues/5932 | 2:05:45 | 2:35:47 | +| security key is not being recognized | https://github.com/zen-browser/desktop/issues/5931 | 0:16:40 | 4:43:16 | +| I can't watch anything on netflix | https://github.com/zen-browser/desktop/issues/5930 | 0:05:38 | 4:45:35 | +| External links open in no container | https://github.com/zen-browser/desktop/issues/5929 | 2 days, 2:53:20 | 9 days, 6:53:45 | +| CTRL + Shift + H (History) Is not working | https://github.com/zen-browser/desktop/issues/5928 | 22:03:13 | 2 days, 3:44:26 | +| Automatically opens pinned tabs in the background without user action | https://github.com/zen-browser/desktop/issues/5927 | 2 days, 21:08:37 | 28 days, 10:24:22 | +| Drag and Drop File Causes Browser to Close | https://github.com/zen-browser/desktop/issues/5926 | 25 days, 22:32:51 | 28 days, 10:31:17 | +| App Takes Longer to Open After Update | https://github.com/zen-browser/desktop/issues/5925 | 28 days, 10:35:41 | 28 days, 10:35:42 | +| system extensions don't work | https://github.com/zen-browser/desktop/issues/5923 | 28 days, 11:29:06 | 28 days, 11:29:06 | +| If you pin a tab then try to switch to any other tab, the browser hangs trying to switch tabs. | https://github.com/zen-browser/desktop/issues/5922 | 28 days, 13:43:19 | 28 days, 13:43:19 | +| DuckDuckGo Fills Suggestions & History | https://github.com/zen-browser/desktop/issues/5921 | 28 days, 13:44:28 | 28 days, 13:44:28 | +| Restoring window from "Recently Closed Windows" does not work | https://github.com/zen-browser/desktop/issues/5920 | 2 days, 18:33:35 | 28 days, 14:10:13 | +| [Twilight] Tab groups not persistent through session restart | https://github.com/zen-browser/desktop/issues/5919 | 21:48:30 | 21:48:30 | + +_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-03-01..2025-03-31` diff --git a/firefox-cache/l10n-last-commit-hash b/firefox-cache/l10n-last-commit-hash deleted file mode 100644 index d1765242d..000000000 --- a/firefox-cache/l10n-last-commit-hash +++ /dev/null @@ -1 +0,0 @@ -6013afe489c3d5e19c5f0d0f6c3f94b91f5bd7d1 \ No newline at end of file diff --git a/l10n b/l10n index 778cb128c..4094426d2 160000 --- a/l10n +++ b/l10n @@ -1 +1 @@ -Subproject commit 778cb128c659c7b8f57080e99fbc04f8d93c30a2 +Subproject commit 4094426d24cf3e131b5a07775478ed893112e9da diff --git a/package-lock.json b/package-lock.json index 8dbd35d31..1122f5994 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,15 +1,15 @@ { - "name": "zen-core", + "name": "zen-desktop", "version": "1.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "zen-core", + "name": "zen-desktop", "version": "1.0.0", - "license": "ISC", + "license": "MPL-2.0", "dependencies": { - "@zen-browser/surfer": "^1.10.5" + "@zen-browser/surfer": "^1.11.1" }, "devDependencies": { "husky": "^9.1.7", @@ -288,9 +288,9 @@ "license": "MIT" }, "node_modules/@zen-browser/surfer": { - "version": "1.10.5", - "resolved": "https://registry.npmjs.org/@zen-browser/surfer/-/surfer-1.10.5.tgz", - "integrity": "sha512-jpGArye02C6M65qy0b5kZWzDBO5sh/BY6k2otC1keAjICm9lxELsh5ELRz0tVQ6kwrBUC3yE4uP8jzUgQdCuCg==", + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/@zen-browser/surfer/-/surfer-1.11.1.tgz", + "integrity": "sha512-+eGoSP2mPP/rpxT70g6MhIew5/JBYkoVJSqNMO0FVMMrFCIsKs4j/s4JVL0H9qO3j7S5A/xHOMZnjVQ8LvLfOw==", "dependencies": { "@resvg/resvg-js": "^1.4.0", "async-icns": "^1.0.2", diff --git a/package.json b/package.json index 3c3a548ac..6efb09227 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,5 @@ { - "name": "zen-core", + "name": "zen-desktop", "version": "1.0.0", "description": "", "lint-staged": { @@ -17,7 +17,6 @@ "package": "surfer package", "update-ff": "python3 scripts/update_ff.py", "update-ff:raw": "surfer update", - "update-newtab": "python3 scripts/update_newtab.py", "update-ff:rc": "python3 scripts/update_ff.py --rc", "update-ff:l10n": "python3 scripts/update_ff.py --just-l10n", "pretty": "prettier . --write && autopep8 -r --in-place scripts/ src/", @@ -28,20 +27,20 @@ }, "repository": { "type": "git", - "url": "git+https://github.com/zen-browser/core.git" + "url": "git+https://github.com/zen-browser/desktop.git" }, "hooks": { "pre-commit": "npm run prepare" }, "keywords": [], "author": "", - "license": "ISC", + "license": "MPL-2.0", "bugs": { - "url": "https://github.com/zen-browser/core/issues" + "url": "https://github.com/zen-browser/desktop/issues" }, - "homepage": "https://github.com/zen-browser/core#readme", + "homepage": "https://github.com/zen-browser/desktop#readme", "dependencies": { - "@zen-browser/surfer": "^1.10.5" + "@zen-browser/surfer": "^1.11.1" }, "devDependencies": { "husky": "^9.1.7", diff --git a/scripts/download-language-packs.sh b/scripts/download-language-packs.sh index 4363c6f21..2c4b929d2 100644 --- a/scripts/download-language-packs.sh +++ b/scripts/download-language-packs.sh @@ -7,7 +7,7 @@ git config --global fetch.prune true cd $CURRENT_DIR -LAST_FIREFOX_L10N_COMMIT=$(cat ./firefox-cache/l10n-last-commit-hash) +LAST_FIREFOX_L10N_COMMIT=$(cat ./build/firefox-cache/l10n-last-commit-hash) cd ./l10n rm -rf firefox-l10n diff --git a/scripts/recalculate-patches.sh b/scripts/recalculate-patches.sh new file mode 100644 index 000000000..eb51d2661 --- /dev/null +++ b/scripts/recalculate-patches.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +# Recursively find all .patch files in the current directory and its subdirectories +find src -type f -name "*.patch" | while read -r patch_file; do + # Replace all - with . and remove the .patch extension + new_file="${patch_file%/*}/$(basename "$patch_file" | sed 's/-/./' | sed 's/\.patch$//').patch" + new_file="${new_file%.patch}" + new_file="${new_file#src/}" + + if [[ $new_file == *-mjs ]]; then + new_file="${new_file/-mjs/.mjs}" + fi + if [[ $new_file == *-ftl ]]; then + new_file="${new_file/-ftl/.ftl}" + fi + + # Create the new file with the same content as the original + npm run export ${new_file} & +done + +for job in $(jobs -p); do + echo $job + wait $job || let "FAIL+=1" +done + +echo "All patches have been exported successfully." diff --git a/scripts/remove-failed-jobs.sh b/scripts/remove-failed-jobs.sh index b168405e2..73cd5f621 100644 --- a/scripts/remove-failed-jobs.sh +++ b/scripts/remove-failed-jobs.sh @@ -1,21 +1,21 @@ #!/bin/bash gh_bulk_delete_workflow_runs() { - local repo=$1 + local repo=zen-browser/$1 # Ensure the repo argument is provided if [[ -z "$repo" ]]; then - echo "Usage: gh_bulk_delete_workflow_runs <owner/repo>" + echo "Usage: gh_bulk_delete_workflow_runs <repo>" return 1 fi # Fetch workflow runs that are cancelled, failed, or timed out local runs runs=$(gh api repos/$repo/actions/runs --paginate \ - | jq -r '.workflow_runs[] | - select(.conclusion == "cancelled" or - .conclusion == "failure" or - .conclusion == "timed_out") | + | jq -r '.workflow_runs[] | + select(.conclusion == "cancelled" or + .conclusion == "failure" or + .conclusion == "timed_out") | .id') if [[ -z "$runs" ]]; then diff --git a/scripts/update_ff.py b/scripts/update_ff.py index 0784d2f9b..0acb6e9e0 100644 --- a/scripts/update_ff.py +++ b/scripts/update_ff.py @@ -61,14 +61,14 @@ def update_l10n_last_commit_hash(): L10N_REPO = "https://github.com/mozilla-l10n/firefox-l10n" try: os.system(f"git clone {L10N_REPO} l10n-temp --depth 1") - if not os.path.exists("firefox-cache"): - os.mkdir("firefox-cache") - os.system("cat l10n-temp/.git/refs/heads/main > firefox-cache/l10n-last-commit-hash") + if not os.path.exists("build/firefox-cache"): + os.mkdir("build/firefox-cache") + os.system("cat l10n-temp/.git/refs/heads/main > build/firefox-cache/l10n-last-commit-hash") # Remove new line character data = "" - with open("firefox-cache/l10n-last-commit-hash", "r") as f: + with open("build/firefox-cache/l10n-last-commit-hash", "r") as f: data = f.read() - with open("firefox-cache/l10n-last-commit-hash", "w") as f: + with open("build/firefox-cache/l10n-last-commit-hash", "w") as f: f.write(data.strip()) except KeyboardInterrupt: print("Exiting...") diff --git a/scripts/update_newtab.py b/scripts/update_newtab.py deleted file mode 100644 index 0a8b4aeb1..000000000 --- a/scripts/update_newtab.py +++ /dev/null @@ -1,41 +0,0 @@ -import os -import subprocess -import logging - -# Set up logging -logging.basicConfig(level=logging.INFO) - -# Constants for paths -NEW_TAB_DIR = "./engine/browser/components/newtab" -ENGINE_DIR = "./engine" -NPM_INSTALL_COMMANDS = ["npm install", "npm install meow@9.0.0"] -BUNDLE_COMMAND = "npm run bundle --prefix=browser/components/newtab" - - -def install_dependencies(): - """Install necessary npm packages for the newtab component.""" - for command in NPM_INSTALL_COMMANDS: - logging.info(f"Running command: {command} in {NEW_TAB_DIR}") - subprocess.run(command.split(), cwd=NEW_TAB_DIR, check=True) - - -def bundle_newtab_components(): - """Bundle the newtab components.""" - logging.info(f"Bundling newtab components in {ENGINE_DIR}") - subprocess.run(BUNDLE_COMMAND.split(), cwd=ENGINE_DIR, check=True) - - -def update_newtab(init: bool = True): - """Update the newtab components, optionally initializing dependencies.""" - try: - if init: - install_dependencies() - - bundle_newtab_components() - except subprocess.CalledProcessError as e: - logging.error(f"An error occurred: {e}") - raise - - -if __name__ == "__main__": - update_newtab(init=False) diff --git a/src/Cargo-lock.patch b/src/Cargo-lock.patch index 72aa68fea..42f5a3895 100644 --- a/src/Cargo-lock.patch +++ b/src/Cargo-lock.patch @@ -1,8 +1,8 @@ diff --git a/Cargo.lock b/Cargo.lock -index da2fbe8c40fa40a86c350f8adb33e26915fecc7b..e5a571fc41cd4fa8d2cdffdc15f9ad083e6d36fb 100644 +index c91f39b3afbe712355194593ae39514a83de6605..e6c2b77a69d9274ff1c7578ab4df4f07533f7441 100644 --- a/Cargo.lock +++ b/Cargo.lock -@@ -3912,8 +3912,6 @@ dependencies = [ +@@ -3850,8 +3850,6 @@ dependencies = [ [[package]] name = "mime_guess" version = "2.0.4" diff --git a/src/Cargo-toml.patch b/src/Cargo-toml.patch index b7c23b97e..c101b8190 100644 --- a/src/Cargo-toml.patch +++ b/src/Cargo-toml.patch @@ -1,8 +1,8 @@ diff --git a/Cargo.toml b/Cargo.toml -index 19a470608b7de28a946353d4c09a56b4dd3fd69a..37e9687c86b5725ee5d5071b632b5927ffb6bd27 100644 +index a99b447250d36dd0146e031fa22503bc88eeae39..86829fc7075054f832a04825c98325a925cf5b0f 100644 --- a/Cargo.toml +++ b/Cargo.toml -@@ -201,6 +201,9 @@ rure = { path = "third_party/rust/rure" } +@@ -205,6 +205,9 @@ rure = { path = "third_party/rust/rure" } # Patch `plist` to work with `indexmap` 2.* plist = { path = "third_party/rust/plist" } diff --git a/src/browser/app/profile/firefox-js.patch b/src/browser/app/profile/firefox-js.patch index 679b1e681..ccd07cd6a 100644 --- a/src/browser/app/profile/firefox-js.patch +++ b/src/browser/app/profile/firefox-js.patch @@ -1,8 +1,8 @@ diff --git a/browser/app/profile/firefox.js b/browser/app/profile/firefox.js -index a39a4f287ef843f7e0cdeac8320eeff81318116f..f84cdb85c249221522089667010d547cfab67819 100644 +index 97acbf826f9427b06e0a54679b30269ce7b695f5..aeadcd0c72816612cd5c1ca1199fe2a363c637f4 100644 --- a/browser/app/profile/firefox.js +++ b/browser/app/profile/firefox.js -@@ -3190,3 +3190,5 @@ pref("toolkit.contentRelevancy.enabled", false); +@@ -3362,3 +3362,5 @@ pref("toolkit.contentRelevancy.enabled", false); pref("toolkit.contentRelevancy.ingestEnabled", false); // Pref to enable extra logging for the content relevancy feature pref("toolkit.contentRelevancy.log", false); diff --git a/src/browser/app/profile/zen-browser.js b/src/browser/app/profile/zen-browser.js index 6df26cef6..dd2df31dd 100644 --- a/src/browser/app/profile/zen-browser.js +++ b/src/browser/app/profile/zen-browser.js @@ -61,6 +61,7 @@ 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); @@ -90,7 +91,7 @@ pref('zen.tabs.show-newtab-vertical', true); pref('zen.view.show-newtab-button-border-top', false); pref('zen.view.show-newtab-button-top', true); -perf('zen.mediacontrols.enabled', true); +pref('zen.mediacontrols.enabled', true); #ifdef MOZILLA_OFFICIAL pref('zen.rice.api.url', 'https://share.zen-browser.app', locked); @@ -193,7 +194,6 @@ pref('zen.sidebar.use-google-favicons', true); // Zen Split View pref('zen.splitView.enable-tab-drop', true); pref('zen.splitView.min-resize-width', 7); -pref('zen.splitView.change-on-hover', false); pref('zen.splitView.rearrange-hover-size', 24); // Startup flags @@ -256,7 +256,7 @@ pref('browser.migrate.opera.enabled', true); // pref('network.trr.mode', 5); // security: They must enable this themselves, to avoid people downloading malware -pref('xpinstall.signatures.required', false); +pref('xpinstall.signatures.required', true); // Experimental Zen Features // Strategy to use for bytecode cache (Thanks https://github.com/gunir) diff --git a/src/browser/base/content/ZenUIManager.mjs b/src/browser/base/content/ZenUIManager.mjs index 08f481493..b1283fad6 100644 --- a/src/browser/base/content/ZenUIManager.mjs +++ b/src/browser/base/content/ZenUIManager.mjs @@ -65,7 +65,11 @@ var gZenUIManager = { tabs.style.removeProperty('flex'); tabs.style.maxHeight = height + 'px'; gZenVerticalTabsManager.actualWindowButtons.removeAttribute('zen-has-hover'); - gURLBar.updateLayoutBreakout(); + try { + gURLBar.zenUpdateLayoutBreakout(); + } catch (error) { + console.error('Error updating layout breakout:', error); + } }, get tabsWrapper() { @@ -642,7 +646,11 @@ var gZenVerticalTabsManager = { if (!isSingleToolbar) { document.getElementById('urlbar').style.setProperty('--urlbar-height', '32px'); } else { - gURLBar.updateLayoutBreakout(); + try { + gURLBar.zenUpdateLayoutBreakout(); + } catch (e) { + console.error(e); + } } // Always move the splitter next to the sidebar diff --git a/src/browser/base/content/aboutDialog-js.patch b/src/browser/base/content/aboutDialog-js.patch index 41a6fbe2e..ba8379ec9 100644 --- a/src/browser/base/content/aboutDialog-js.patch +++ b/src/browser/base/content/aboutDialog-js.patch @@ -1,8 +1,8 @@ diff --git a/browser/base/content/aboutDialog.js b/browser/base/content/aboutDialog.js -index 8c5c7768e0e716c196063b4c986dea2631185972..d31f57a176fffc9725b1c31b165fb5cdc55e186e 100644 +index f6e1391baf12abb91c85a95107bb3923118746c0..76c7b75a4e29056110f1631a50047c4ddd8b1f4a 100644 --- a/browser/base/content/aboutDialog.js +++ b/browser/base/content/aboutDialog.js -@@ -51,7 +51,7 @@ function init() { +@@ -52,7 +52,7 @@ function init() { ]); let versionIdKey = "base"; let versionAttributes = { @@ -11,7 +11,7 @@ index 8c5c7768e0e716c196063b4c986dea2631185972..d31f57a176fffc9725b1c31b165fb5cd }; let arch = Services.sysinfo.get("arch"); -@@ -63,7 +63,7 @@ function init() { +@@ -64,7 +64,7 @@ function init() { } let version = Services.appinfo.version; diff --git a/src/browser/base/content/aboutDialog-xhtml.patch b/src/browser/base/content/aboutDialog-xhtml.patch index 38588c58c..ea6c32e21 100644 --- a/src/browser/base/content/aboutDialog-xhtml.patch +++ b/src/browser/base/content/aboutDialog-xhtml.patch @@ -1,8 +1,8 @@ diff --git a/browser/base/content/aboutDialog.xhtml b/browser/base/content/aboutDialog.xhtml -index 53e4616a99b7826453d5b6dea027184d90bc73f7..90c9fe5683411cf3087bebd3d0941decf6d23e89 100644 +index c64980810570fcea84e33fdc2d66ac42a79f4e46..b7198e810a7510fa82cc6801cfd01c88a08d42c1 100644 --- a/browser/base/content/aboutDialog.xhtml +++ b/browser/base/content/aboutDialog.xhtml -@@ -34,6 +34,7 @@ +@@ -35,6 +35,7 @@ <html:link rel="localization" href="branding/brand.ftl"/> <html:link rel="localization" href="browser/aboutDialog.ftl"/> @@ -10,7 +10,7 @@ index 53e4616a99b7826453d5b6dea027184d90bc73f7..90c9fe5683411cf3087bebd3d0941dec </linkset> <html:div id="aboutDialogContainer"> -@@ -124,21 +125,23 @@ +@@ -125,21 +126,23 @@ </description> </vbox> <description class="text-blurb" id="communityDesc" data-l10n-id="community-2"> @@ -30,8 +30,8 @@ index 53e4616a99b7826453d5b6dea027184d90bc73f7..90c9fe5683411cf3087bebd3d0941dec <vbox id="bottomBox"> <hbox pack="center"> <label is="text-link" class="bottom-link" useoriginprincipal="true" href="about:license" data-l10n-id="bottomLinks-license"/> -- <label is="text-link" class="bottom-link" href="https://www.mozilla.org/about/legal/terms/firefox/" data-l10n-id="bottomLinks-rights"/> -- <label is="text-link" class="bottom-link" href="https://www.mozilla.org/privacy/firefox/?utm_source=firefox-browser&utm_medium=firefox-desktop&utm_campaign=about-dialog" data-l10n-id="bottomLinks-privacy"/> +- <label is="text-link" class="bottom-link" href="https://www.mozilla.org/about/legal/terms/firefox/" data-l10n-id="bottom-links-terms"/> +- <label is="text-link" class="bottom-link" href="https://www.mozilla.org/privacy/firefox/?utm_source=firefox-browser&utm_medium=firefox-desktop&utm_campaign=about-dialog" data-l10n-id="bottom-links-privacy"/> + <label is="text-link" class="bottom-link" href="about:rights" data-l10n-id="bottomLinks-rights"/> + <label is="text-link" class="bottom-link" href="https://www.zen-browser.app/privacy-policy/" data-l10n-id="bottomLinks-privacy"/> </hbox> diff --git a/src/browser/base/content/browser-box-inc-xhtml.patch b/src/browser/base/content/browser-box-inc-xhtml.patch index 3728cc0e3..3310c63c3 100644 --- a/src/browser/base/content/browser-box-inc-xhtml.patch +++ b/src/browser/base/content/browser-box-inc-xhtml.patch @@ -1,17 +1,17 @@ diff --git a/browser/base/content/browser-box.inc.xhtml b/browser/base/content/browser-box.inc.xhtml -index 7d7e8697f02f90d4f336c9ab0a73a89848e0c21c..2fd19f3b43db4bdd99e65fecd1481f80d4541a7a 100644 +index 2ca8bdd2674fb4addf3bbf94ff17abc5c93c6293..49c772ae71e6b3793ff806d22197d3028ff4385f 100644 --- a/browser/base/content/browser-box.inc.xhtml +++ b/browser/base/content/browser-box.inc.xhtml -@@ -23,7 +23,14 @@ - <browser id="sidebar" autoscroll="false" disablehistory="true" disablefullscreen="true" tooltip="aHTMLTooltip"/> - </vbox> - <splitter id="sidebar-splitter" class="chromeclass-extrachrome sidebar-splitter" resizebefore="sibling" resizeafter="none" hidden="true"/> +@@ -26,7 +26,14 @@ + <splitter id="sidebar-splitter" class="chromeclass-extrachrome sidebar-splitter" resizebefore="sibling" resizeafter="none" hidden="true"/> + <box id="after-splitter"></box> + </div> +#include zen-sidebar-panel.inc.xhtml +<vbox flex="1" id="zen-appcontent-wrapper"> +<html:div id="zen-appcontent-navbar-container"></html:div> +<hbox id="zen-tabbox-wrapper" flex="1"> <tabbox id="tabbrowser-tabbox" flex="1" tabcontainer="tabbrowser-tabs"> -+ #include zen-tabbrowser-elements.inc.xhtml ++#include zen-tabbrowser-elements.inc.xhtml <tabpanels id="tabbrowser-tabpanels" flex="1" selectedIndex="0"/> </tabbox> </hbox> diff --git a/src/browser/base/content/browser-init-js.patch b/src/browser/base/content/browser-init-js.patch index 9c40e1e09..b768837d8 100644 --- a/src/browser/base/content/browser-init-js.patch +++ b/src/browser/base/content/browser-init-js.patch @@ -1,36 +1,17 @@ diff --git a/browser/base/content/browser-init.js b/browser/base/content/browser-init.js -index 63100defacf66c6b3232b9e0a783a5fd14e3a46a..398d685b142a47a85619dfc55772ea98ccfad445 100644 +index 3d5173315812589c0b79beec5f0419fc37cb8868..c4216db9e414fbbaead6ecd89b40366b0d8a50c1 100644 --- a/browser/base/content/browser-init.js +++ b/browser/base/content/browser-init.js -@@ -162,13 +162,15 @@ var gBrowserInit = { - elem.setAttribute("skipintoolbarset", "true"); - } - } -+ ZenCustomizableUI.init(window); - for (let area of CustomizableUI.areas) { - let type = CustomizableUI.getAreaType(area); -- if (type == CustomizableUI.TYPE_TOOLBAR) { -+ if (type == CustomizableUI.TYPE_TOOLBAR && !area.startsWith("zen-")) { - let node = document.getElementById(area); - CustomizableUI.registerToolbarNode(node); - } - } -+ ZenCustomizableUI.registerToolbarNodes(window); - if (isVerticalTabs) { - // Show the vertical tabs toolbar - setToolbarVisibility( -@@ -287,6 +289,10 @@ var gBrowserInit = { - gPrivateBrowsingUI.init(); - BrowserSearch.init(); - BrowserPageActions.init(); -+ -+Services.scriptloader.loadSubScript("chrome://browser/content/ZenStartup.mjs", window); -+Services.scriptloader.loadSubScript("chrome://browser/content/zenThemeModifier.js", window); -+ - if (gToolbarKeyNavEnabled) { - ToolbarKeyboardNavigator.init(); - } -@@ -365,6 +371,7 @@ var gBrowserInit = { +@@ -175,6 +175,8 @@ var gBrowserInit = { + }, + + onLoad() { ++ Services.scriptloader.loadSubScript("chrome://browser/content/ZenStartup.mjs", window); ++ Services.scriptloader.loadSubScript("chrome://browser/content/zenThemeModifier.js", window); + gBrowser.addEventListener("DOMUpdateBlockedPopups", e => + PopupBlockerObserver.handleEvent(e) + ); +@@ -310,6 +312,7 @@ var gBrowserInit = { TelemetryTimestamps.add("delayedStartupStarted"); this._cancelDelayedStartup(); diff --git a/src/browser/base/content/browser-js.patch b/src/browser/base/content/browser-js.patch index 8d436fe94..97f85112b 100644 --- a/src/browser/base/content/browser-js.patch +++ b/src/browser/base/content/browser-js.patch @@ -1,8 +1,8 @@ diff --git a/browser/base/content/browser.js b/browser/base/content/browser.js -index 019b168c1aeae7e1c97a3ae58c99a48a27f54134..22dcf304591290d7a1b60f01998b6cf4782c0cdc 100644 +index b89846a1103827b7e65c0b6c9197e80761e3f5c0..cc7205765244738743db92bfcafc1f288919ae0d 100644 --- a/browser/base/content/browser.js +++ b/browser/base/content/browser.js -@@ -32,6 +32,7 @@ ChromeUtils.defineESModuleGetters(this, { +@@ -33,6 +33,7 @@ ChromeUtils.defineESModuleGetters(this, { ContextualIdentityService: "resource://gre/modules/ContextualIdentityService.sys.mjs", CustomizableUI: "resource:///modules/CustomizableUI.sys.mjs", @@ -10,7 +10,7 @@ index 019b168c1aeae7e1c97a3ae58c99a48a27f54134..22dcf304591290d7a1b60f01998b6cf4 DevToolsSocketStatus: "resource://devtools/shared/security/DevToolsSocketStatus.sys.mjs", DownloadUtils: "resource://gre/modules/DownloadUtils.sys.mjs", -@@ -3440,6 +3441,11 @@ var XULBrowserWindow = { +@@ -2698,6 +2699,11 @@ var XULBrowserWindow = { AboutReaderParent.updateReaderButton(gBrowser.selectedBrowser); TranslationsParent.onLocationChange(gBrowser.selectedBrowser); @@ -22,27 +22,7 @@ index 019b168c1aeae7e1c97a3ae58c99a48a27f54134..22dcf304591290d7a1b60f01998b6cf4 PictureInPicture.updateUrlbarToggle(gBrowser.selectedBrowser); if (!gMultiProcessBrowser) { -@@ -4435,7 +4441,7 @@ nsBrowserAccess.prototype = { - // Passing a null-URI to only create the content window, - // and pass true for aSkipLoad to prevent loading of - // about:blank -- return this.getContentWindowOrOpenURIInFrame( -+ let res = this.getContentWindowOrOpenURIInFrame( - null, - aParams, - aWhere, -@@ -4443,6 +4449,10 @@ nsBrowserAccess.prototype = { - aName, - true - ); -+ if (typeof window.gZenGlanceManager !== "undefined" && window.toolbar.visible) { -+ window.gZenGlanceManager.onTabOpen(res, aURI); -+ } -+ return res; - }, - - openURIInFrame: function browser_openURIInFrame( -@@ -6351,7 +6361,7 @@ function switchToTabHavingURI( +@@ -5194,7 +5200,7 @@ function switchToTabHavingURI( ignoreQueryString || replaceQueryString, ignoreFragmentWhenComparing ); @@ -51,7 +31,7 @@ index 019b168c1aeae7e1c97a3ae58c99a48a27f54134..22dcf304591290d7a1b60f01998b6cf4 for (let i = 0; i < browsers.length; i++) { let browser = browsers[i]; let browserCompare = cleanURL( -@@ -6392,7 +6402,7 @@ function switchToTabHavingURI( +@@ -5235,7 +5241,7 @@ function switchToTabHavingURI( } if (!doAdopt) { diff --git a/src/browser/base/content/browser-xhtml.patch b/src/browser/base/content/browser-xhtml.patch index fca20413e..9fe640974 100644 --- a/src/browser/base/content/browser-xhtml.patch +++ b/src/browser/base/content/browser-xhtml.patch @@ -1,5 +1,5 @@ diff --git a/browser/base/content/browser.xhtml b/browser/base/content/browser.xhtml -index 68849f5093cd8ab99ab0747d972799eaf3ad7e22..3b4e6a179ab7b71859f832709778c326a39cffda 100644 +index 0d0a559a6473149b50f4bf18d059e86907c4acd3..a5a48ba1d50b3bf74dec3f3d371a76228e246a9e 100644 --- a/browser/base/content/browser.xhtml +++ b/browser/base/content/browser.xhtml @@ -26,6 +26,7 @@ @@ -10,7 +10,7 @@ index 68849f5093cd8ab99ab0747d972799eaf3ad7e22..3b4e6a179ab7b71859f832709778c326 persist="screenX screenY width height sizemode" data-l10n-sync="true"> <head> -@@ -100,6 +101,8 @@ +@@ -104,6 +105,8 @@ <title data-l10n-id="browser-main-window-default-title"></title> @@ -19,15 +19,15 @@ index 68849f5093cd8ab99ab0747d972799eaf3ad7e22..3b4e6a179ab7b71859f832709778c326 # All JS files which are needed by browser.xhtml and other top level windows to # support MacOS specific features *must* go into the global-scripts.inc file so # that they can be shared with macWindow.inc.xhtml. -@@ -169,6 +172,7 @@ - }); - }); +@@ -148,6 +151,7 @@ + window.addEventListener("DOMContentLoaded", + gBrowserInit.onDOMContentLoaded.bind(gBrowserInit), { once: true }); </script> +#include zen-assets.inc.xhtml </head> <html:body xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> # All sets except for popupsets (commands, keys, and stringbundles) -@@ -190,9 +194,13 @@ +@@ -169,9 +173,13 @@ </vbox> </html:template> diff --git a/src/browser/base/content/main-popupset-inc-xhtml.patch b/src/browser/base/content/main-popupset-inc-xhtml.patch index 072fa90a1..9a3003ff5 100644 --- a/src/browser/base/content/main-popupset-inc-xhtml.patch +++ b/src/browser/base/content/main-popupset-inc-xhtml.patch @@ -1,19 +1,19 @@ diff --git a/browser/base/content/main-popupset.inc.xhtml b/browser/base/content/main-popupset.inc.xhtml -index 959c523b21c642f29353b9de37b3ce6b5505b01b..4cd26ea85ad4905bade71dcd470b8678079787bd 100644 +index 198c188e074b7062169764fb7d81c692d3a2bdae..b412a3c1fabdc6470b4ea9e7be34c426cc76aafd 100644 --- a/browser/base/content/main-popupset.inc.xhtml +++ b/browser/base/content/main-popupset.inc.xhtml -@@ -206,6 +206,10 @@ +@@ -201,6 +201,10 @@ hidden="true" tabspecific="true" aria-labelledby="editBookmarkPanelTitle"> -+ <html:div id="zenEditBookmarkPanelFaviconContainer"> -+ <html:img id="zenEditBookmarkPanelFavicon"/> -+ </html:div> -+ <vbox> ++ <html:div id="zenEditBookmarkPanelFaviconContainer"> ++ <html:img id="zenEditBookmarkPanelFavicon"/> ++ </html:div> ++ <vbox> <box class="panel-header"> <html:h1> <html:span id="editBookmarkPanelTitle"/> -@@ -231,6 +235,7 @@ +@@ -226,6 +230,7 @@ class="footer-button"/> </html:moz-button-group> </vbox> @@ -21,21 +21,7 @@ index 959c523b21c642f29353b9de37b3ce6b5505b01b..4cd26ea85ad4905bade71dcd470b8678 </panel> </html:template> -@@ -426,11 +431,13 @@ - observes="cmd_CustomizeToolbars" - class="viewCustomizeToolbar" - data-lazy-l10n-id="toolbar-context-menu-view-customize-toolbar-2"/> -+#if 0 - <menuseparator id="sidebarRevampSeparator"/> - <menuitem id="toolbar-context-toggle-vertical-tabs" - data-lazy-l10n-id="toolbar-context-turn-on-vertical-tabs"/> - <menuitem id="toolbar-context-customize-sidebar" - data-lazy-l10n-id="toolbar-context-customize-sidebar"/> -+#endif - <menuseparator contexttype="fullscreen"/> - <menuitem id="toolbar-context-full-screen-autohide" - class="fullscreen-context-autohide" -@@ -565,6 +572,8 @@ +@@ -567,6 +572,8 @@ #include popup-notifications.inc.xhtml diff --git a/src/browser/base/content/navigator-toolbox-inc-xhtml.patch b/src/browser/base/content/navigator-toolbox-inc-xhtml.patch index f2be3c096..a8a6be2ee 100644 --- a/src/browser/base/content/navigator-toolbox-inc-xhtml.patch +++ b/src/browser/base/content/navigator-toolbox-inc-xhtml.patch @@ -1,5 +1,5 @@ diff --git a/browser/base/content/navigator-toolbox.inc.xhtml b/browser/base/content/navigator-toolbox.inc.xhtml -index a0a382643a2f74b6d789f3641ef300eed202d5e9..a962e155f1452362a2a35df89c8f56e1c0d9968c 100644 +index feb9e4ef7e872b4cfbf0d55f24a34db275951c66..3ce9b9919ff736885b8aa8943bbbce3c5d0f33a6 100644 --- a/browser/base/content/navigator-toolbox.inc.xhtml +++ b/browser/base/content/navigator-toolbox.inc.xhtml @@ -2,7 +2,7 @@ @@ -11,20 +11,18 @@ index a0a382643a2f74b6d789f3641ef300eed202d5e9..a962e155f1452362a2a35df89c8f56e1 <script src="chrome://browser/content/navigator-toolbox.js" /> <!-- Menu --> -@@ -17,9 +17,11 @@ +@@ -17,9 +17,8 @@ #include browser-menubar.inc </toolbaritem> <spacer flex="1" skipintoolbarset="true" style="order: 1000;"/> -+#if 0 - #include titlebar-items.inc.xhtml -+#endif +-#include titlebar-items.inc.xhtml </toolbar> - +<hbox id="titlebar"> <toolbar id="TabsToolbar" class="browser-toolbar browser-titlebar" fullscreentoolbar="true" -@@ -32,7 +34,7 @@ +@@ -32,7 +31,7 @@ <hbox class="titlebar-spacer" type="pre-tabs"/> @@ -33,18 +31,15 @@ index a0a382643a2f74b6d789f3641ef300eed202d5e9..a962e155f1452362a2a35df89c8f56e1 <toolbartabstop/> <hbox id="TabsToolbar-customization-target" flex="1"> <toolbarbutton id="firefox-view-button" -@@ -40,9 +42,9 @@ +@@ -40,6 +39,7 @@ data-l10n-id="toolbar-button-firefox-view-2" role="button" aria-pressed="false" + hidden="true" cui-areatype="toolbar" removable="true"/> -- - <tabs id="tabbrowser-tabs" - is="tabbrowser-tabs" - aria-multiselectable="true" -@@ -50,6 +52,10 @@ + +@@ -50,6 +50,10 @@ tooltip="tabbrowser-tab-tooltip" orient="horizontal" stopwatchid="FX_TAB_CLICK_MS"> @@ -55,16 +50,7 @@ index a0a382643a2f74b6d789f3641ef300eed202d5e9..a962e155f1452362a2a35df89c8f56e1 <hbox class="tab-drop-indicator" hidden="true"/> # If the name (tabbrowser-arrowscrollbox) or structure of this changes # significantly, there is an optimization in -@@ -57,7 +63,7 @@ - # the current structure that we may want to revisit. - <html:div id="vertical-pinned-tabs-container" tabindex="-1"></html:div> - <html:div id="vertical-pinned-tabs-container-separator"></html:div> -- <arrowscrollbox id="tabbrowser-arrowscrollbox" orient="horizontal" flex="1" clicktoscroll="" scrolledtostart="" scrolledtoend=""> -+ <arrowscrollbox id="tabbrowser-arrowscrollbox" orient="vertical" flex="1" clicktoscroll="" scrolledtostart="" scrolledtoend=""> - <tab is="tabbrowser-tab" class="tabbrowser-tab" selected="true" visuallyselected="" fadein=""/> - <hbox id="tabbrowser-arrowscrollbox-periphery"> - <toolbartabstop/> -@@ -75,6 +81,8 @@ +@@ -75,6 +79,8 @@ tooltip="dynamic-shortcut-tooltip" data-l10n-id="tabs-toolbar-new-tab"/> <html:span id="tabbrowser-tab-a11y-desc" hidden="true"/> @@ -73,33 +59,28 @@ index a0a382643a2f74b6d789f3641ef300eed202d5e9..a962e155f1452362a2a35df89c8f56e1 </tabs> <toolbarbutton id="new-tab-button" -@@ -100,11 +108,12 @@ +@@ -100,10 +106,10 @@ #include private-browsing-indicator.inc.xhtml - <toolbarbutton id="content-analysis-indicator" - class="toolbarbutton-1 content-analysis-indicator-icon"/> -- -+#if 0 - #include titlebar-items.inc.xhtml -- -+#endif + <toolbarbutton class="content-analysis-indicator toolbarbutton-1 content-analysis-indicator-icon"/> + +-#include titlebar-items.inc.xhtml +#include zen-sidebar-icons.inc.xhtml + </toolbar> - +</hbox> <toolbar id="nav-bar" class="browser-toolbar chromeclass-location" data-l10n-id="navbar-accessible" -@@ -490,10 +499,12 @@ +@@ -489,10 +495,10 @@ consumeanchor="PanelUI-button" data-l10n-id="appmenu-menu-button-closed2"/> </toolbaritem> +#include titlebar-items.inc.xhtml <hbox class="titlebar-spacer" type="post-tabs"/> #include private-browsing-indicator.inc.xhtml -- -+#if 0 - #include titlebar-items.inc.xhtml -+#endif + <toolbarbutton class="content-analysis-indicator toolbarbutton-1 content-analysis-indicator-icon"/> +-#include titlebar-items.inc.xhtml </toolbar> <toolbar id="PersonalToolbar" diff --git a/src/browser/base/content/nsContextMenu-sys-mjs.patch b/src/browser/base/content/nsContextMenu-sys-mjs.patch index 7bfea43ef..54f4a4af7 100644 --- a/src/browser/base/content/nsContextMenu-sys-mjs.patch +++ b/src/browser/base/content/nsContextMenu-sys-mjs.patch @@ -1,8 +1,8 @@ diff --git a/browser/base/content/nsContextMenu.sys.mjs b/browser/base/content/nsContextMenu.sys.mjs -index 7f3dc585937c5ac96c0d09a786515305afb4fe1a..9216931e7d805743f0b00e74039be042456e63f3 100644 +index 94d3c2bb401c2e4246340a6c2d63c9d3561ff5e1..62c599f78748e708c8f36c05935822e8808996b5 100644 --- a/browser/base/content/nsContextMenu.sys.mjs +++ b/browser/base/content/nsContextMenu.sys.mjs -@@ -1047,6 +1047,13 @@ export class nsContextMenu { +@@ -1109,6 +1109,13 @@ export class nsContextMenu { !this.isSecureAboutPage() ); diff --git a/src/browser/base/content/zen-assets.inc.xhtml b/src/browser/base/content/zen-assets.inc.xhtml index 9895f4093..3f08b0834 100644 --- a/src/browser/base/content/zen-assets.inc.xhtml +++ b/src/browser/base/content/zen-assets.inc.xhtml @@ -30,20 +30,22 @@ </linkset> # Scripts used all over the browser -<script src="chrome://browser/content/zen-components/ZenFolders.mjs" /> -<script src="chrome://browser/content/zen-components/ZenThemesCommon.mjs" /> -<script src="chrome://browser/content/zen-components/ZenThemesImporter.mjs" /> -<script src="chrome://browser/content/zen-components/ZenCompactMode.mjs" /> -<script src="chrome://browser/content/ZenUIManager.mjs" /> -<script src="chrome://browser/content/zen-components/ZenSidebarManager.mjs"/> -<script src="chrome://browser/content/zen-components/ZenTabUnloader.mjs" /> -<script src="chrome://browser/content/zen-components/ZenPinnedTabsStorage.mjs" /> -<script src="chrome://browser/content/zen-components/ZenWorkspacesStorage.mjs" /> -<script src="chrome://browser/content/zen-components/ZenPinnedTabManager.mjs" /> -<script src="chrome://browser/content/zen-components/ZenGradientGenerator.mjs" /> -<script src="chrome://browser/content/zen-components/ZenViewSplitter.mjs"/> -<script src="chrome://browser/content/zen-components/ZenGlanceManager.mjs" /> -<script src="chrome://browser/content/zen-components/ZenMediaController.mjs" /> +<script> +Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenFolders.mjs", this); +Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenThemesCommon.mjs", this); +Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenThemesImporter.mjs", this); +Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenCompactMode.mjs", this); +Services.scriptloader.loadSubScript("chrome://browser/content/ZenUIManager.mjs", this); +Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenSidebarManager.mjs", this); +Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenTabUnloader.mjs", this); +Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenPinnedTabsStorage.mjs", this); +Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenWorkspacesStorage.mjs", this); +Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenPinnedTabManager.mjs", this); +Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenGradientGenerator.mjs", this); +Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenViewSplitter.mjs", this); +Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenGlanceManager.mjs", this); +Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenMediaController.mjs", this); -# Unimportant scripts -<script src="chrome://browser/content/zen-components/ZenRices.mjs" /> +// Unimportant scripts +Services.scriptloader.loadSubScript("chrome://browser/content/zen-components/ZenRices.mjs", this); +</script> diff --git a/src/browser/base/content/zen-styles/zen-browser-container.css b/src/browser/base/content/zen-styles/zen-browser-container.css index 96750285a..61be43c46 100644 --- a/src/browser/base/content/zen-styles/zen-browser-container.css +++ b/src/browser/base/content/zen-styles/zen-browser-container.css @@ -19,7 +19,7 @@ } } - @media (-moz-bool-pref: 'zen.view.experimental-rounded-view') { + @media -moz-pref('zen.view.experimental-rounded-view') { #tabbrowser-tabpanels { mix-blend-mode: multiply; -moz-osx-font-smoothing: grayscale; diff --git a/src/browser/base/content/zen-styles/zen-browser-ui.css b/src/browser/base/content/zen-styles/zen-browser-ui.css index ada3d5667..b9210f0bf 100644 --- a/src/browser/base/content/zen-styles/zen-browser-ui.css +++ b/src/browser/base/content/zen-styles/zen-browser-ui.css @@ -52,7 +52,7 @@ transition: background-color var(--inactive-window-transition); } - @media (-moz-bool-pref: 'zen.theme.gradient') { + @media -moz-pref('zen.theme.gradient') { &[animating='true']::after { background: var(--zen-main-browser-background-old); backdrop-filter: blur(5px); @@ -61,7 +61,7 @@ } } - @media (not (-moz-windows-mica)) and (-moz-bool-pref: 'zen.view.grey-out-inactive-windows') { + @media (not (-moz-windows-mica)) and -moz-pref('zen.view.grey-out-inactive-windows') { transition: color var(--inactive-window-transition); :root:not([zen-welcome-stage]) &:-moz-window-inactive { color: var(--toolbox-textcolor-inactive); @@ -173,7 +173,7 @@ } } - @media (-moz-bool-pref: 'zen.widget.mac.mono-window-controls') { + @media -moz-pref('zen.widget.mac.mono-window-controls') { .titlebar-buttonbox-container { /* Draw 3 dots as background to represent the window controls, all with the same cololr as the titlebar */ diff --git a/src/browser/base/content/zen-styles/zen-compact-mode.css b/src/browser/base/content/zen-styles/zen-compact-mode.css index 7a1e14a72..42b6d576f 100644 --- a/src/browser/base/content/zen-styles/zen-compact-mode.css +++ b/src/browser/base/content/zen-styles/zen-compact-mode.css @@ -8,7 +8,7 @@ :root[zen-compact-mode='true']:not([customizing]):not([inDOMFullscreen='true']) { %include zen-tabs/vertical-tabs-topbuttons-fix.css - @media (-moz-bool-pref: 'zen.view.compact.hide-tabbar') or (-moz-bool-pref: 'zen.view.use-single-toolbar') { + @media -moz-pref('zen.view.compact.hide-tabbar') or -moz-pref('zen.view.use-single-toolbar') { #zen-sidebar-web-panel-wrapper:has(#zen-sidebar-web-panel[pinned='true']) { margin-left: var(--zen-sidebar-web-panel-spacing) !important; } @@ -77,7 +77,7 @@ /* When we have multiple toolbars and the top-toolbar is NOT being hidden, * we need to adjust the top-padding of the toolbox to account for the * extra toolbar height. */ - @media not (-moz-bool-pref: 'zen.view.compact.hide-toolbar') { + @media not -moz-pref('zen.view.compact.hide-toolbar') { &:not([zen-single-toolbar='true']) #navigator-toolbox:not([animate='true']) { margin-top: var(--zen-toolbar-height) !important; } @@ -121,7 +121,7 @@ margin-left: 0 !important; } - @media (-moz-bool-pref: 'zen.view.compact.color-sidebar') { + @media -moz-pref('zen.view.compact.color-sidebar') { background: var(--zen-main-browser-background-toolbar) !important; background-attachment: fixed !important; background-size: 2000px !important; /* Dont ask me why */ @@ -285,7 +285,7 @@ } } - @media (-moz-bool-pref: 'zen.view.compact.hide-toolbar') { + @media -moz-pref('zen.view.compact.hide-toolbar') { &:not([zen-single-toolbar='true']) { & #navigator-toolbox { top: 0; @@ -337,7 +337,7 @@ opacity: 0; } - @media (-moz-bool-pref: 'zen.view.compact.color-toolbar') { + @media -moz-pref('zen.view.compact.color-toolbar') { background-attachment: fixed; background: var(--zen-main-browser-background-toolbar); background-size: 100% 2000px; diff --git a/src/browser/base/content/zen-styles/zen-decks.css b/src/browser/base/content/zen-styles/zen-decks.css index 8b39b2a47..c92fa6216 100644 --- a/src/browser/base/content/zen-styles/zen-decks.css +++ b/src/browser/base/content/zen-styles/zen-decks.css @@ -44,7 +44,14 @@ } #tabbrowser-tabpanels[zen-split-view='true'] .browserSidebarContainer.deck-selected { - outline: 1px solid var(--zen-primary-color) !important; + &:not(.zen-glance-overlay) { + outline: 1px solid var(--zen-primary-color) !important; + } + + &.zen-glance-overlay { + flex: 1; + margin-top: calc(var(--zen-element-separation) / 2); + } } #tabbrowser-tabbox:has(#tabbrowser-tabpanels[zen-split-view='true']) { @@ -56,7 +63,7 @@ #tabbrowser-tabpanels:has(> [zen-split='true']), #zen-splitview-overlay { :root:not([zen-compact-mode='true']):not([customizing]) & { - @media (-moz-bool-pref: 'zen.view.compact.hide-toolbar') { + @media -moz-pref('zen.view.compact.hide-toolbar') { & { margin-top: calc(var(--zen-split-column-gap) * -1); } diff --git a/src/browser/base/content/zen-styles/zen-folders.css b/src/browser/base/content/zen-styles/zen-folders.css index a9f162cab..22c7c13fc 100644 --- a/src/browser/base/content/zen-styles/zen-folders.css +++ b/src/browser/base/content/zen-styles/zen-folders.css @@ -58,6 +58,13 @@ tab-group[split-view-group] { right: 50%; transform: translateX(50%); } + + & .tab-content { + min-width: 0; + :root[zen-sidebar-expanded='true'] & { + justify-content: unset !important; + } + } } &:has(> tab:is([visuallyselected], [multiselected])) { @@ -115,8 +122,7 @@ tab-group[split-view-group] .tabbrowser-tab { } tab-group[split-view-group] .tab-group-label-container { - display: none; - width: 100%; + visibility: collapse; } tab-group[split-view-group] .tab-close-button { diff --git a/src/browser/base/content/zen-styles/zen-gradient-generator.css b/src/browser/base/content/zen-styles/zen-gradient-generator.css index 998fa95b8..634a84e95 100644 --- a/src/browser/base/content/zen-styles/zen-gradient-generator.css +++ b/src/browser/base/content/zen-styles/zen-gradient-generator.css @@ -296,7 +296,7 @@ } } -@media not (-moz-bool-pref: 'zen.theme.gradient.show-custom-colors') { +@media not -moz-pref('zen.theme.gradient.show-custom-colors') { #PanelUI-zen-gradient-generator-custom-colors { display: none !important; } diff --git a/src/browser/base/content/zen-styles/zen-media-controls.css b/src/browser/base/content/zen-styles/zen-media-controls.css index 3532afffb..fabf87999 100644 --- a/src/browser/base/content/zen-styles/zen-media-controls.css +++ b/src/browser/base/content/zen-styles/zen-media-controls.css @@ -141,7 +141,6 @@ background-color: var(--zen-media-control-bg); backdrop-filter: saturate(3) contrast(2) blur(10px); width: 100%; - will-change: transform; } .show-on-hover { diff --git a/src/browser/base/content/zen-styles/zen-panels/dialog.css b/src/browser/base/content/zen-styles/zen-panels/dialog.css index 3c8799ee9..5fe371f03 100644 --- a/src/browser/base/content/zen-styles/zen-panels/dialog.css +++ b/src/browser/base/content/zen-styles/zen-panels/dialog.css @@ -3,9 +3,12 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -/* Zen Welcome idalog override */ +/* Zen Welcome dialog override */ @media (prefers-color-scheme: dark) { .dialogBox:not(.spotlightBox) { border: 1px solid var(--zen-colors-border); } } +.dialogBox:not(.spotlightBox) { + min-width: min(80vw, 376px); +} diff --git a/src/browser/base/content/zen-styles/zen-popup.css b/src/browser/base/content/zen-styles/zen-popup.css index 63fc98beb..49fd937d7 100644 --- a/src/browser/base/content/zen-styles/zen-popup.css +++ b/src/browser/base/content/zen-styles/zen-popup.css @@ -351,14 +351,21 @@ menuitem { #zen-toast-container { position: fixed; top: calc(var(--zen-element-separation) * 2); - right: calc(var(--zen-element-separation) * 2); z-index: 1000; gap: 1rem; display: flex; align-items: end; + :root:not([zen-right-side='true']) & { + right: calc(var(--zen-element-separation) * 2); + } + + :root[zen-right-side='true'] & { + left: calc(var(--zen-element-separation) * 2); + } + & .zen-toast { - padding: 0.9rem 0.8rem; + padding: 0.5rem 0.6rem; border-radius: 12px; background: linear-gradient( 170deg, diff --git a/src/browser/base/content/zen-styles/zen-tabs.css b/src/browser/base/content/zen-styles/zen-tabs.css index 055ba613e..49905b837 100644 --- a/src/browser/base/content/zen-styles/zen-tabs.css +++ b/src/browser/base/content/zen-styles/zen-tabs.css @@ -12,7 +12,7 @@ z-index: 0; } -@media (-moz-bool-pref: 'zen.workspaces.hide-default-container-indicator') { +@media -moz-pref('zen.workspaces.hide-default-container-indicator') { .tabbrowser-tab[zenDefaultUserContextId='true'] .tab-context-line { display: none !important; } diff --git a/src/browser/base/content/zen-styles/zen-tabs/horizontal-tabs.css b/src/browser/base/content/zen-styles/zen-tabs/horizontal-tabs.css index 200eaee1e..ecaedd0dd 100644 --- a/src/browser/base/content/zen-styles/zen-tabs/horizontal-tabs.css +++ b/src/browser/base/content/zen-styles/zen-tabs/horizontal-tabs.css @@ -3,7 +3,7 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -@media not (-moz-bool-pref: 'zen.tabs.vertical') { +@media not -moz-pref('zen.tabs.vertical') { :root #browser { display: flex !important; flex-direction: column !important; diff --git a/src/browser/base/content/zen-styles/zen-tabs/vertical-tabs-topbar.inc.css b/src/browser/base/content/zen-styles/zen-tabs/vertical-tabs-topbar.inc.css index a14afcac7..1e0517c5b 100644 --- a/src/browser/base/content/zen-styles/zen-tabs/vertical-tabs-topbar.inc.css +++ b/src/browser/base/content/zen-styles/zen-tabs/vertical-tabs-topbar.inc.css @@ -1,6 +1,6 @@ height: var(--zen-toolbar-height); -@media (-moz-bool-pref: 'zen.view.hide-window-controls') { +@media -moz-pref('zen.view.hide-window-controls') { & { transition: height 0.15s ease, @@ -24,7 +24,7 @@ height: var(--zen-toolbar-height); } } - @media (-moz-bool-pref: 'zen.view.experimental-no-window-controls') { + @media -moz-pref('zen.view.experimental-no-window-controls') { &:has(#PersonalToolbar[collapsed='true']) { max-height: 0 !important; overflow: hidden; diff --git a/src/browser/base/content/zen-styles/zen-tabs/vertical-tabs.css b/src/browser/base/content/zen-styles/zen-tabs/vertical-tabs.css index 65473b89e..d7b79b8ab 100644 --- a/src/browser/base/content/zen-styles/zen-tabs/vertical-tabs.css +++ b/src/browser/base/content/zen-styles/zen-tabs/vertical-tabs.css @@ -19,7 +19,7 @@ height: var(--zen-toolbar-height); } - @media (-moz-platform: macos) and (not (-moz-bool-pref: 'zen.view.mac.show-three-dot-menu')) { + @media (-moz-platform: macos) and (not -moz-pref('zen.view.mac.show-three-dot-menu')) { &:not([customizing]) #PanelUI-button:not([open]):not([panelopen]) { position: absolute; opacity: 0; @@ -38,7 +38,7 @@ } } -@media (-moz-bool-pref: 'zen.tabs.vertical') { +@media -moz-pref('zen.tabs.vertical') { :root:not([zen-window-buttons-reversed='true']) { & .titlebar-buttonbox-container { margin-left: auto; @@ -294,7 +294,7 @@ } } - @media (-moz-bool-pref: 'zen.tabs.dim-pending') { + @media -moz-pref('zen.tabs.dim-pending') { &[pending='true'] .tab-icon-image { opacity: 0.5; } @@ -734,7 +734,7 @@ } } } - @media (-moz-bool-pref: 'zen.view.sidebar-collapsed.hide-mute-button') { + @media -moz-pref('zen.view.sidebar-collapsed.hide-mute-button') { & .tab-icon-overlay:is([soundplaying], [muted]):not([selected]) { display: none !important; :is( @@ -992,7 +992,7 @@ opacity: 0.5; } -@media (-moz-bool-pref: 'zen.tabs.show-newtab-vertical') { +@media -moz-pref('zen.tabs.show-newtab-vertical') { #tabs-newtab-button { display: flex !important; transition: scale 0.1s ease; @@ -1018,11 +1018,11 @@ --zen-colors-border: var(--zen-colors-tertiary); } - @media (-moz-bool-pref: 'zen.view.show-newtab-button-top') { + @media -moz-pref('zen.view.show-newtab-button-top') { order: -1; } - @media (-moz-bool-pref: 'zen.view.show-newtab-button-border-top') and (not (-moz-bool-pref: 'zen.view.show-newtab-button-top')) { + @media -moz-pref('zen.view.show-newtab-button-border-top') and (not -moz-pref('zen.view.show-newtab-button-top')) { #tabbrowser-arrowscrollbox:has(tab:not([hidden])) & { margin-top: 15px; position: relative; @@ -1101,12 +1101,12 @@ background: var(--tab-selected-bgcolor); } - @media (-moz-bool-pref: 'zen.theme.essentials-favicon-bg') { + @media -moz-pref('zen.theme.essentials-favicon-bg') { &[visuallyselected] > .tab-stack > .tab-background { &::after { content: ""; inset: -50%; - filter: blur(15px) brightness(1.2); + filter: blur(20px); position: absolute; background-size: 100% 100%; background-clip: padding-box; diff --git a/src/browser/base/content/zen-styles/zen-theme.css b/src/browser/base/content/zen-styles/zen-theme.css index f47f42089..0a914baa0 100644 --- a/src/browser/base/content/zen-styles/zen-theme.css +++ b/src/browser/base/content/zen-styles/zen-theme.css @@ -163,7 +163,7 @@ @media (-moz-windows-mica) or (-moz-platform: macos) { background: transparent; --zen-themed-toolbar-bg-transparent: transparent; - @media (-moz-bool-pref: 'zen.widget.windows.acrylic') { + @media -moz-pref('zen.widget.windows.acrylic') { --zen-themed-toolbar-bg-transparent: color-mix(in srgb, var(--zen-themed-toolbar-bg) 35%, transparent 65%); } } diff --git a/src/browser/base/content/zen-styles/zen-urlbar.css b/src/browser/base/content/zen-styles/zen-urlbar.css index 064bfb6b0..17bff9762 100644 --- a/src/browser/base/content/zen-styles/zen-urlbar.css +++ b/src/browser/base/content/zen-styles/zen-urlbar.css @@ -464,7 +464,7 @@ button.popup-notification-dropmarker { } } -@media not (-moz-bool-pref: 'zen.urlbar.show-protections-icon') { +@media not -moz-pref('zen.urlbar.show-protections-icon') { #tracking-protection-icon-container { display: none !important; } diff --git a/src/browser/base/content/zen-styles/zen-workspaces.css b/src/browser/base/content/zen-styles/zen-workspaces.css index ab55b1a59..af6d57541 100644 --- a/src/browser/base/content/zen-styles/zen-workspaces.css +++ b/src/browser/base/content/zen-styles/zen-workspaces.css @@ -130,6 +130,9 @@ overflow: hidden; display: flex; gap: 0.5ch; + overflow-x: auto; + scrollbar-width: none; + scroll-behavior: smooth; } } @@ -480,7 +483,7 @@ } } -@media not (-moz-bool-pref: 'zen.workspaces.show-workspace-indicator') { +@media not -moz-pref('zen.workspaces.show-workspace-indicator') { #zen-current-workspace-indicator-container { display: none !important; } diff --git a/src/browser/base/zen-components/ZenCompactMode.mjs b/src/browser/base/zen-components/ZenCompactMode.mjs index 03c7e8c7b..d444ac9fa 100644 --- a/src/browser/base/zen-components/ZenCompactMode.mjs +++ b/src/browser/base/zen-components/ZenCompactMode.mjs @@ -394,9 +394,10 @@ var gZenCompactModeManager = { // When moving the cursor between the url bar and bookmarks, or in-between bookmarks in the bookmark bar, the // mouseLeave event is triggered without a relatedTarget. - if (event.relatedTarget == null) { - return; - } + // TODO: Experiment with this for some time, see if people still have issues with the hover state + //if (event.relatedTarget == null) { + // return; + //} // If it's a child element but not the target, ignore the event if (target.contains(event.explicitOriginalTarget) && event.explicitOriginalTarget !== target) { diff --git a/src/browser/base/zen-components/ZenFolders.mjs b/src/browser/base/zen-components/ZenFolders.mjs index 976598bef..a4c499854 100644 --- a/src/browser/base/zen-components/ZenFolders.mjs +++ b/src/browser/base/zen-components/ZenFolders.mjs @@ -9,6 +9,8 @@ document.addEventListener('TabUngrouped', this.#onTabUngrouped.bind(this)); document.addEventListener('TabGroupRemoved', this.#onTabGroupRemoved.bind(this)); document.addEventListener('TabGroupCreate', this.#onTabGroupCreate.bind(this)); + document.addEventListener('TabPinned', this.#onTabPinned.bind(this)); + document.addEventListener('TabUnpinned', this.#onTabUnpinned.bind(this)); } #onTabGrouped(event) { @@ -49,6 +51,22 @@ #onTabGroupRemoved(event) {} + #onTabPinned(event) { + const tab = event.target; + const group = tab.group; + if (group && group.hasAttribute('split-view-group')) { + group.pinned = true; + } + } + + #onTabUnpinned(event) { + const tab = event.target; + const group = tab.group; + if (group && group.hasAttribute('split-view-group')) { + group.pinned = false; + } + } + expandGroupTabs(group) { for (const tab of group.tabs.reverse()) { gBrowser.ungroupTab(tab); diff --git a/src/browser/base/zen-components/ZenGlanceManager.mjs b/src/browser/base/zen-components/ZenGlanceManager.mjs index f6865c5dd..80947e1a8 100644 --- a/src/browser/base/zen-components/ZenGlanceManager.mjs +++ b/src/browser/base/zen-components/ZenGlanceManager.mjs @@ -206,6 +206,14 @@ }); } + _clearContainerStyles(container) { + const inset = container.style.inset; + window.requestAnimationFrame(() => { + container.removeAttribute('style'); + container.style.inset = inset; + }); + } + closeGlance({ noAnimation = false, onTabClose = false, setNewID = null, isDifferent = false, hasFocused = false } = {}) { if (this._animating || !this.#currentBrowser || this.animatingOpen || this._duringOpening) { return; @@ -228,7 +236,7 @@ this.browserWrapper.removeAttribute('has-finished-animation'); if (noAnimation) { - this.#currentParentTab.linkedBrowser.closest('.browserSidebarContainer').removeAttribute('style'); + this._clearContainerStyles(this.#currentParentTab.linkedBrowser.closest('.browserSidebarContainer')); this.quickCloseGlance({ closeCurrentTab: false }); return; } @@ -270,7 +278,7 @@ } ) .then(() => { - this.#currentParentTab.linkedBrowser.closest('.browserSidebarContainer').removeAttribute('style'); + this._clearContainerStyles(this.#currentParentTab.linkedBrowser.closest('.browserSidebarContainer')); }); this.browserWrapper.style.opacity = 1; gZenUIManager.motion @@ -510,7 +518,7 @@ ZenWorkspaces.updateTabsContainers(); this.browserWrapper.removeAttribute('animate-full'); this.overlay.classList.remove('zen-glance-overlay'); - this.browserWrapper.removeAttribute('style'); + this._clearContainerStyles(this.browserWrapper); this.animatingFullOpen = false; this.closeGlance({ noAnimation: true }); this.#glances.delete(this.#currentGlanceID); @@ -522,7 +530,7 @@ index: this.getTabPosition(this.#currentTab), }); - this.browserWrapper.removeAttribute('style'); + this._clearContainerStyles(this.browserWrapper); this.browserWrapper.removeAttribute('has-finished-animation'); this.browserWrapper.setAttribute('animate-full', true); this.#currentTab.removeAttribute('zen-glance-tab'); diff --git a/src/browser/base/zen-components/ZenMediaController.mjs b/src/browser/base/zen-components/ZenMediaController.mjs index 067451a36..57bc92cdb 100644 --- a/src/browser/base/zen-components/ZenMediaController.mjs +++ b/src/browser/base/zen-components/ZenMediaController.mjs @@ -192,15 +192,6 @@ class ZenMediaController { this._currentBrowser = browser; this.updatePipButton(); - - const positionState = mediaController.getPositionState(); - this.mediaControllersMap.set(mediaController.id, { - controller: mediaController, - browser, - position: positionState.position, - duration: positionState.duration, - lastUpdated: Date.now(), - }); } setupMediaControlUI(metadata, positionState) { @@ -244,6 +235,7 @@ class ZenMediaController { browser, position: positionState.position, duration: positionState.duration, + playbackRate: positionState.playbackRate, lastUpdated: Date.now(), }); @@ -292,6 +284,7 @@ class ZenMediaController { ...mediaController, position: event.position, duration: event.duration, + playbackRate: event.playbackRate, lastUpdated: Date.now(), }); @@ -333,6 +326,7 @@ class ZenMediaController { this.setupMediaControlUI(nextController.controller.getMetadata(), { position: nextController.position + (nextController.controller.isPlaying ? elapsedTime : 0), duration: nextController.duration, + playbackRate: nextController.playbackRate, }); this.showMediaControls(); @@ -396,6 +390,13 @@ class ZenMediaController { const metadata = event.target.getMetadata(); this.mediaTitle.textContent = metadata.title || ''; this.mediaArtist.textContent = metadata.artist || ''; + + const mediaInfoElements = [this.mediaTitle, this.mediaArtist]; + for (const element of mediaInfoElements) { + element.removeAttribute('overflow'); + } + + this.addLabelOverflows(mediaInfoElements); } _onPictureInPictureModeChange(event) { diff --git a/src/browser/base/zen-components/ZenViewSplitter.mjs b/src/browser/base/zen-components/ZenViewSplitter.mjs index b50a6f4f0..dd6634747 100644 --- a/src/browser/base/zen-components/ZenViewSplitter.mjs +++ b/src/browser/base/zen-components/ZenViewSplitter.mjs @@ -61,7 +61,6 @@ class SplitNode extends SplitLeafNode { class ZenViewSplitter extends ZenDOMOperatedFeature { currentView = -1; - canChangeTabOnHover = false; _data = []; _tabBrowserPanel = null; __modifierElement = null; @@ -78,7 +77,8 @@ class ZenViewSplitter extends ZenDOMOperatedFeature { MAX_TABS = 4; init() { - XPCOMUtils.defineLazyPreferenceGetter(this, 'canChangeTabOnHover', 'zen.splitView.change-on-hover', false); + this.handleTabEvent = this._handleTabEvent.bind(this); + XPCOMUtils.defineLazyPreferenceGetter(this, 'minResizeWidth', 'zen.splitView.min-resize-width', 7); XPCOMUtils.defineLazyPreferenceGetter(this, '_edgeHoverSize', 'zen.splitView.rearrange-edge-hover-size', 24); @@ -225,6 +225,14 @@ class ZenViewSplitter extends ZenDOMOperatedFeature { this._hasAnimated = true; for (const tab of gBrowser.tabs) { tab.style.removeProperty('transform'); + if (tab.group) { + tab.group.style.removeProperty('transform'); + } + } + // Add a min width to all the browser elements to prevent them from resizing + for (const browser of gBrowser.browsers) { + const width = browser.getBoundingClientRect().width; + browser.style.minWidth = `${width}px`; } const panelsWidth = gBrowser.tabbox.getBoundingClientRect().width; const halfWidth = panelsWidth / 2; @@ -769,7 +777,6 @@ class ZenViewSplitter extends ZenDOMOperatedFeature { this._removeHeader(container); this.resetContainerStyle(container); container.removeEventListener('mousedown', this.handleTabEvent); - container.removeEventListener('mouseover', this.handleTabEvent); if (!forUnsplit) { tab.linkedBrowser.docShellIsActive = false; } @@ -907,7 +914,12 @@ class ZenViewSplitter extends ZenDOMOperatedFeature { */ async onLocationChange(browser) { this.disableTabRearrangeView(); - const tab = window.gBrowser.getTabForBrowser(browser); + let tab = window.gBrowser.getTabForBrowser(browser); + if (tab.hasAttribute('zen-glance-tab')) { + // Extract from parent node so we are not selecting the wrong (current) tab + tab = tab.parentNode.closest('.tabbrowser-tab'); + console.assert(tab, 'Tab not found for zen-glance-tab'); + } this.updateSplitViewButton(!tab?.splitView); if (tab) { this.updateSplitView(tab); @@ -981,7 +993,9 @@ class ZenViewSplitter extends ZenDOMOperatedFeature { layoutTree: this.calculateLayoutTree(tabs, gridType), }; this._data.push(splitData); - window.gBrowser.selectedTab = tabs[0]; + if (!this._sessionRestoring) { + window.gBrowser.selectedTab = tabs[0]; + } // Add tabs to the split view group let splitGroup = this._getSplitViewGroup(tabs); @@ -992,6 +1006,10 @@ class ZenViewSplitter extends ZenDOMOperatedFeature { } } } + + if (this._sessionRestoring) { + return; + } this.activateSplitView(splitData); } @@ -1024,13 +1042,13 @@ class ZenViewSplitter extends ZenDOMOperatedFeature { * Deactivates the split view. */ deactivateCurrentSplitView() { + this.setTabsDocShellState(this._data[this.currentView].tabs, false); for (const tab of this._data[this.currentView].tabs) { const container = tab.linkedBrowser.closest('.browserSidebarContainer'); this.resetContainerStyle(container); } this.removeSplitters(); this.tabBrowserPanel.removeAttribute('zen-split-view'); - this.setTabsDocShellState(this._data[this.currentView].tabs, false); this.updateSplitViewButton(true); this.currentView = -1; this.toggleWrapperDisplay(false); @@ -1055,10 +1073,10 @@ class ZenViewSplitter extends ZenDOMOperatedFeature { this.tabBrowserPanel.setAttribute('zen-split-view', 'true'); - this.setTabsDocShellState(splitData.tabs, true); this.updateSplitViewButton(false); this.applyGridToTabs(splitData.tabs); this.applyGridLayout(splitData.layoutTree); + this.setTabsDocShellState(splitData.tabs, true); this.toggleWrapperDisplay(true); } @@ -1150,7 +1168,9 @@ class ZenViewSplitter extends ZenDOMOperatedFeature { const nodeRootPosition = splitNode.positionToRoot; if (!splitNode.children) { const browserContainer = splitNode.tab.linkedBrowser.closest('.browserSidebarContainer'); - browserContainer.style.inset = `${nodeRootPosition.top}% ${nodeRootPosition.right}% ${nodeRootPosition.bottom}% ${nodeRootPosition.left}%`; + window.requestAnimationFrame(() => { + browserContainer.style.inset = `${nodeRootPosition.top}% ${nodeRootPosition.right}% ${nodeRootPosition.bottom}% ${nodeRootPosition.left}%`; + }); this._tabToSplitNode.set(splitNode.tab, splitNode); return; } @@ -1181,11 +1201,13 @@ class ZenViewSplitter extends ZenDOMOperatedFeature { if (i < splittersNeeded) { const splitter = currentSplitters[i]; - if (splitNode.direction === 'column') { - splitter.style.inset = `${100 - childRootPosition.bottom}% ${childRootPosition.right}% 0% ${childRootPosition.left}%`; - } else { - splitter.style.inset = `${childRootPosition.top}% 0% ${childRootPosition.bottom}% ${100 - childRootPosition.right}%`; - } + window.requestAnimationFrame(() => { + if (splitNode.direction === 'column') { + splitter.style.inset = `${100 - childRootPosition.bottom}% ${childRootPosition.right}% 0% ${childRootPosition.left}%`; + } else { + splitter.style.inset = `${childRootPosition.top}% 0% ${childRootPosition.bottom}% ${100 - childRootPosition.right}%`; + } + }); } }); } @@ -1245,9 +1267,7 @@ class ZenViewSplitter extends ZenDOMOperatedFeature { * @param {Element} container - The container element. */ styleContainer(container) { - container.setAttribute('zen-split-anim', 'true'); container.addEventListener('mousedown', this.handleTabEvent); - container.addEventListener('mouseover', this.handleTabEvent); } /** @@ -1255,8 +1275,8 @@ class ZenViewSplitter extends ZenDOMOperatedFeature { * * @param {Event} event - The event. */ - handleTabEvent = (event) => { - if (this.rearrangeViewEnabled || (event.type === 'mouseover' && !this.canChangeTabOnHover)) { + _handleTabEvent = (event) => { + if (this.rearrangeViewEnabled) { return; } const container = event.currentTarget.closest('.browserSidebarContainer'); @@ -1344,8 +1364,8 @@ class ZenViewSplitter extends ZenDOMOperatedFeature { browser.addEventListener('dragstart', this.onBrowserDragStart); browser.addEventListener('dragend', this.onBrowserDragEnd); } else { - browser.removeAttribute('zen-split'); - browser.removeAttribute('style'); + // browser.removeAttribute('zen-split'); + // browser.removeAttribute('style'); browser.removeEventListener('dragstart', this.onBrowserDragStart); browser.removeEventListener('dragend', this.onBrowserDragEnd); @@ -1535,6 +1555,9 @@ class ZenViewSplitter extends ZenDOMOperatedFeature { gBrowser.selectedTab = this._draggingTab; this._draggingTab = null; } + for (const browser of gBrowser.browsers) { + browser.removeAttribute('style'); + } } } @@ -1722,6 +1745,43 @@ class ZenViewSplitter extends ZenDOMOperatedFeature { return null; } + + storeDataForSessionStore() { + // We cant store any tab or browser elements in the session store + // so we need to store the tab indexes and group indexes + const data = this._data.map((group) => { + return { + groupId: group.tabs[0].group?.id, + gridType: group.gridType, + }; + }); + return data; + } + + restoreDataFromSessionStore(data) { + if (!data) { + return; + } + this._sessionRestoring = true; + // We can just get the tab group with document.getElementById(group.groupId) + // and add the tabs to it + for (const group of data) { + const groupElement = document.getElementById(group.groupId); + if (groupElement) { + const tabs = groupElement.querySelectorAll('tab'); + this.splitTabs([...tabs], group.gridType); + } + } + delete this._sessionRestoring; + } + + onAfterWorkspaceSessionRestore() { + if (this.currentView >= 0 && !gBrowser.selectedTab.pinned) { + // Activate all browsers in the split view + this.currentView = -1; + this.onLocationChange(gBrowser.selectedTab.linkedBrowser); + } + } } window.gZenViewSplitter = new ZenViewSplitter(); diff --git a/src/browser/base/zen-components/ZenWorkspaces.mjs b/src/browser/base/zen-components/ZenWorkspaces.mjs index cc2d497aa..a1afd5155 100644 --- a/src/browser/base/zen-components/ZenWorkspaces.mjs +++ b/src/browser/base/zen-components/ZenWorkspaces.mjs @@ -263,12 +263,13 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature { _organizeTabsToWorkspaceSections(workspace, section, pinnedSection, tabs) { const workspaceTabs = Array.from(tabs).filter((tab) => tab.getAttribute('zen-workspace-id') === workspace.uuid); let firstNormalTab = null; - for (const tab of workspaceTabs) { + for (let tab of workspaceTabs) { if (tab.hasAttribute('zen-essential')) { continue; // Ignore essentials as they need to be in their own section } // remove tab from list tabs.splice(tabs.indexOf(tab), 1); + tab = tab.group ?? tab; if (tab.pinned) { pinnedSection.insertBefore(tab, pinnedSection.nextSibling); } else { @@ -404,6 +405,7 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature { _handleSwipeMayStart(event) { if (!this.workspaceEnabled) return; + if (event.target.closest('#zen-sidebar-bottom-buttons')) return; // Only handle horizontal swipes if (event.direction === event.DIRECTION_LEFT || event.direction === event.DIRECTION_RIGHT) { @@ -647,6 +649,7 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature { if (gZenVerticalTabsManager._canReplaceNewTab && showed) { BrowserCommands.openTab(); } + gZenViewSplitter.onAfterWorkspaceSessionRestore(); } handleInitialTab(tab, isEmpty) { @@ -2291,7 +2294,11 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature { if (!this._hasInitializedTabsStrip) { const children = this.tabboxChildren; children.pop(); // Remove the last child which is the new tab button - return children; + return [ + ...document.querySelectorAll('#zen-essentials-container tab'), + ...document.querySelectorAll('#vertical-pinned-tabs-container tab'), + ...children, + ]; } if (this._allStoredTabs) { @@ -2323,6 +2330,23 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature { return this._allStoredTabs; } + get allTabGroups() { + if (!this._hasInitializedTabsStrip) { + let children = this.tabboxChildren; + return children.filter((node) => node.tagName == 'tab-group'); + } + const pinnedContainers = document.querySelectorAll('#vertical-pinned-tabs-container .zen-workspace-tabs-section'); + const normalContainers = document.querySelectorAll('#tabbrowser-arrowscrollbox .zen-workspace-tabs-section'); + const containers = [...pinnedContainers, ...normalContainers]; + const tabGroups = []; + for (const container of containers) { + for (const tabGroup of container.querySelectorAll('tab-group')) { + tabGroups.push(tabGroup); + } + } + return tabGroups; + } + get allUsedBrowsers() { if (!this._hasInitializedTabsStrip) { return gBrowser.browsers; @@ -2393,6 +2417,17 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature { const maxWidth = 100 / numButtons; parent.style.setProperty('--zen-overflowed-workspace-button-width', `${maxWidth}%`); this._processingResize = false; + + // Scroll to the active workspace button if it's not visible + const activeButton = parent.querySelector('.zen-workspace-button.active'); + if (!activeButton) { + return; + } + const parentRect = parent.getBoundingClientRect(); + const activeRect = activeButton.getBoundingClientRect(); + if (activeRect.left < parentRect.left || activeRect.right > parentRect.right) { + parent.scrollLeft = activeButton.offsetLeft; + } }); } })(); diff --git a/src/browser/base/zen-components/actors/ZenThemeMarketplaceChild.sys.mjs b/src/browser/base/zen-components/actors/ZenThemeMarketplaceChild.sys.mjs index d48c69f05..98422f214 100644 --- a/src/browser/base/zen-components/actors/ZenThemeMarketplaceChild.sys.mjs +++ b/src/browser/base/zen-components/actors/ZenThemeMarketplaceChild.sys.mjs @@ -50,7 +50,7 @@ export class ZenThemeMarketplaceChild extends JSWindowActorChild { initiateThemeMarketplace() { this.contentWindow.setTimeout(() => { - this.addIntallButtons(); + this.addInstallButtons(); this.injectMarkplaceAPI(); }, 0); } @@ -111,7 +111,7 @@ export class ZenThemeMarketplaceChild extends JSWindowActorChild { }); } - async addIntallButtons() { + async addInstallButtons() { const actionButton = this.actionButton; const actionButtonUnnstall = this.actionButtonUninstall; const errorMessage = this.contentWindow.document.getElementById('install-theme-error'); diff --git a/src/browser/components/BrowserContentHandler-sys-mjs.patch b/src/browser/components/BrowserContentHandler-sys-mjs.patch index b69095199..1f61d29a8 100644 --- a/src/browser/components/BrowserContentHandler-sys-mjs.patch +++ b/src/browser/components/BrowserContentHandler-sys-mjs.patch @@ -1,8 +1,8 @@ diff --git a/browser/components/BrowserContentHandler.sys.mjs b/browser/components/BrowserContentHandler.sys.mjs -index 7aef091c0be1cb0ea0be52268949db17032f96d9..5e9105fa671d1b1979f204fc8d3be22771998ad7 100644 +index 7747d90981aea9437bf2d9cf46ec17be0b9ad64c..656d640da0efeb59a4037bb450e0cb1f69dda0ba 100644 --- a/browser/components/BrowserContentHandler.sys.mjs +++ b/browser/components/BrowserContentHandler.sys.mjs -@@ -1278,6 +1278,7 @@ function maybeRecordToHandleTelemetry(uri, isLaunch) { +@@ -1270,6 +1270,7 @@ function maybeRecordToHandleTelemetry(uri, isLaunch) { ".avif", ".htm", ".html", diff --git a/src/browser/components/BrowserGlue-sys-mjs.patch b/src/browser/components/BrowserGlue-sys-mjs.patch index f2a09f011..62a09fd01 100644 --- a/src/browser/components/BrowserGlue-sys-mjs.patch +++ b/src/browser/components/BrowserGlue-sys-mjs.patch @@ -1,19 +1,20 @@ diff --git a/browser/components/BrowserGlue.sys.mjs b/browser/components/BrowserGlue.sys.mjs -index b888a753a7f23a9800fe04da51a4e6b898314ff2..a6a01cf035253b05ea7b20b434cf2002ff115d96 100644 +index b8b6d30f0b3c968a8615ca601e06e50261d0dae6..5c2b718b902aed2ef8d7a4b622ba882ee937c655 100644 --- a/browser/components/BrowserGlue.sys.mjs +++ b/browser/components/BrowserGlue.sys.mjs -@@ -121,6 +121,7 @@ ChromeUtils.defineESModuleGetters(lazy, { +@@ -106,6 +106,7 @@ ChromeUtils.defineESModuleGetters(lazy, { WindowsGPOParser: "resource://gre/modules/policies/WindowsGPOParser.sys.mjs", clearTimeout: "resource://gre/modules/Timer.sys.mjs", setTimeout: "resource://gre/modules/Timer.sys.mjs", + gZenUIMigration: "chrome://browser/content/zen-components/ZenUIMigration.mjs", }); - if (AppConstants.MOZ_UPDATER) { -@@ -1951,6 +1952,7 @@ BrowserGlue.prototype = { - - lazy.UrlbarPrefs.updateFirefoxSuggestScenario(); + XPCOMUtils.defineLazyServiceGetters(lazy, { +@@ -1896,7 +1897,7 @@ BrowserGlue.prototype = { + lazy.TabCrashHandler.init(); + lazy.ProcessHangMonitor.init(); +- + lazy.gZenUIMigration.init(this._isNewProfile, aWindow); // A channel for "remote troubleshooting" code... let channel = new lazy.WebChannel( diff --git a/src/browser/components/aboutlogins/content/aboutLogins-html.patch b/src/browser/components/aboutlogins/content/aboutLogins-html.patch index e65fb9541..eaa43f4ea 100644 --- a/src/browser/components/aboutlogins/content/aboutLogins-html.patch +++ b/src/browser/components/aboutlogins/content/aboutLogins-html.patch @@ -1,5 +1,5 @@ diff --git a/browser/components/aboutlogins/content/aboutLogins.html b/browser/components/aboutlogins/content/aboutLogins.html -index 67712c8f296ba8a916ff4c6ecf9179ad733b2df8..0bad556640afd48a6738e2955a93c4e8faa68823 100644 +index a2b9a3c3bd60b7c679fc4babf2cc085f79ba84f5..3acd8da43d31cf8e9eb25d74421f522fdbd41094 100644 --- a/browser/components/aboutlogins/content/aboutLogins.html +++ b/browser/components/aboutlogins/content/aboutLogins.html @@ -6,7 +6,7 @@ diff --git a/src/browser/components/customizableui/CustomizableUI-sys-mjs.patch b/src/browser/components/customizableui/CustomizableUI-sys-mjs.patch index 20662d9f1..271267661 100644 --- a/src/browser/components/customizableui/CustomizableUI-sys-mjs.patch +++ b/src/browser/components/customizableui/CustomizableUI-sys-mjs.patch @@ -1,5 +1,5 @@ diff --git a/browser/components/customizableui/CustomizableUI.sys.mjs b/browser/components/customizableui/CustomizableUI.sys.mjs -index 8eab0f9181c19c68a0a2daf0f819b3ae82ed92bc..092107b377ec4f7bc9ae86c817cded349732ffc6 100644 +index 9392b42a1de7310719a6cc8aaf11bd857e8fa69a..24dc9acd733ae401f8cdfb2351a7275d16ee46c8 100644 --- a/browser/components/customizableui/CustomizableUI.sys.mjs +++ b/browser/components/customizableui/CustomizableUI.sys.mjs @@ -13,6 +13,7 @@ ChromeUtils.defineESModuleGetters(lazy, { @@ -90,7 +90,38 @@ index 8eab0f9181c19c68a0a2daf0f819b3ae82ed92bc..092107b377ec4f7bc9ae86c817cded34 } else { window.gNavToolbox.palette.appendChild(widgetNode); } -@@ -2678,7 +2677,6 @@ var CustomizableUIInternal = { +@@ -1704,16 +1703,16 @@ var CustomizableUIInternal = { + elem.setAttribute("skipintoolbarset", "true"); + } + } +- ++ lazy.ZenCustomizableUI.init(aWindow); + // Now register all the toolbars + for (let area of CustomizableUI.areas) { + let type = CustomizableUI.getAreaType(area); +- if (type == CustomizableUI.TYPE_TOOLBAR) { ++ if (type == CustomizableUI.TYPE_TOOLBAR && !area.startsWith("zen-")) { + let node = document.getElementById(area); + this.registerToolbarNode(node); + } + } +- ++ lazy.ZenCustomizableUI.registerToolbarNodes(aWindow); + // Handle initial state of vertical tabs. + if (isVerticalTabs) { + // Show the vertical tabs toolbar +@@ -1873,6 +1872,10 @@ var CustomizableUIInternal = { + }, + + insertWidgetBefore(aNode, aNextNode, aContainer, aArea) { ++ if (aArea === CustomizableUI.AREA_NAVBAR && aNode.ownerGlobal.gZenVerticalTabsManager._hasSetSingleToolbar) { ++ aContainer = aNode.ownerDocument.getElementById("zen-sidebar-top-buttons-customization-target"); ++ aArea = "zen-sidebar-top-buttons"; ++ } + this.notifyDOMChange(aNode, aNextNode, aContainer, false, () => { + this.setLocationAttributes(aNode, aArea); + aContainer.insertBefore(aNode, aNextNode); +@@ -2744,7 +2747,6 @@ var CustomizableUIInternal = { if (!this.isWidgetRemovable(aWidgetId)) { return; } @@ -98,7 +129,7 @@ index 8eab0f9181c19c68a0a2daf0f819b3ae82ed92bc..092107b377ec4f7bc9ae86c817cded34 let placements = gPlacements.get(oldPlacement.area); let position = placements.indexOf(aWidgetId); if (position != -1) { -@@ -3669,7 +3667,7 @@ var CustomizableUIInternal = { +@@ -3735,7 +3737,7 @@ var CustomizableUIInternal = { } }, @@ -107,7 +138,7 @@ index 8eab0f9181c19c68a0a2daf0f819b3ae82ed92bc..092107b377ec4f7bc9ae86c817cded34 for (let [areaId, areaNodes] of gBuildAreas) { let placements = gPlacements.get(areaId); let isFirstChangedToolbar = true; -@@ -3680,7 +3678,7 @@ var CustomizableUIInternal = { +@@ -3746,7 +3748,7 @@ var CustomizableUIInternal = { if (area.get("type") == CustomizableUI.TYPE_TOOLBAR) { let defaultCollapsed = area.get("defaultCollapsed"); let win = areaNode.ownerGlobal; @@ -116,7 +147,7 @@ index 8eab0f9181c19c68a0a2daf0f819b3ae82ed92bc..092107b377ec4f7bc9ae86c817cded34 win.setToolbarVisibility( areaNode, typeof defaultCollapsed == "string" -@@ -4857,6 +4855,7 @@ export var CustomizableUI = { +@@ -4923,6 +4925,7 @@ export var CustomizableUI = { unregisterArea(aName, aDestroyPlacements) { CustomizableUIInternal.unregisterArea(aName, aDestroyPlacements); }, @@ -124,7 +155,7 @@ index 8eab0f9181c19c68a0a2daf0f819b3ae82ed92bc..092107b377ec4f7bc9ae86c817cded34 /** * Add a widget to an area. * If the area to which you try to add is not known to CustomizableUI, -@@ -6840,11 +6839,11 @@ class OverflowableToolbar { +@@ -6916,11 +6919,11 @@ class OverflowableToolbar { parseFloat(style.paddingLeft) - parseFloat(style.paddingRight) - toolbarChildrenWidth; @@ -138,7 +169,7 @@ index 8eab0f9181c19c68a0a2daf0f819b3ae82ed92bc..092107b377ec4f7bc9ae86c817cded34 }); lazy.log.debug( -@@ -6854,7 +6853,8 @@ class OverflowableToolbar { +@@ -6930,7 +6933,8 @@ class OverflowableToolbar { // If the target has min-width: 0, their children might actually overflow // it, so check for both cases explicitly. let targetContentWidth = Math.max(targetWidth, targetChildrenWidth); @@ -148,7 +179,7 @@ index 8eab0f9181c19c68a0a2daf0f819b3ae82ed92bc..092107b377ec4f7bc9ae86c817cded34 return { isOverflowing, targetContentWidth, totalAvailWidth }; } -@@ -6948,7 +6948,7 @@ class OverflowableToolbar { +@@ -7024,7 +7028,7 @@ class OverflowableToolbar { } } if (!inserted) { @@ -157,7 +188,7 @@ index 8eab0f9181c19c68a0a2daf0f819b3ae82ed92bc..092107b377ec4f7bc9ae86c817cded34 } child.removeAttribute("cui-anchorid"); child.removeAttribute("overflowedItem"); -@@ -7110,6 +7110,9 @@ class OverflowableToolbar { +@@ -7186,6 +7190,9 @@ class OverflowableToolbar { * @param {MouseEvent} aEvent the click event. */ #onClickDefaultListButton(aEvent) { diff --git a/src/browser/components/customizableui/CustomizeMode-sys-mjs.patch b/src/browser/components/customizableui/CustomizeMode-sys-mjs.patch index 6affb2d5a..63acbae92 100644 --- a/src/browser/components/customizableui/CustomizeMode-sys-mjs.patch +++ b/src/browser/components/customizableui/CustomizeMode-sys-mjs.patch @@ -1,8 +1,8 @@ diff --git a/browser/components/customizableui/CustomizeMode.sys.mjs b/browser/components/customizableui/CustomizeMode.sys.mjs -index 41f347130e754ad0ee3416c1a3881211c4d2f777..9f906fd5f11731025abdf55eb5e60a824f8dd81f 100644 +index c9bdc165ff9afc8c3e43ed2cda0612b32a55450f..34f8af56753e2a898f49247036d47973c70543a9 100644 --- a/browser/components/customizableui/CustomizeMode.sys.mjs +++ b/browser/components/customizableui/CustomizeMode.sys.mjs -@@ -354,7 +354,7 @@ CustomizeMode.prototype = { +@@ -357,7 +357,7 @@ CustomizeMode.prototype = { this._transitioning = true; let customizer = document.getElementById("customization-container"); @@ -11,7 +11,7 @@ index 41f347130e754ad0ee3416c1a3881211c4d2f777..9f906fd5f11731025abdf55eb5e60a82 browser.hidden = true; customizer.hidden = false; -@@ -485,7 +485,7 @@ CustomizeMode.prototype = { +@@ -488,7 +488,7 @@ CustomizeMode.prototype = { } let customizer = document.getElementById("customization-container"); @@ -20,7 +20,7 @@ index 41f347130e754ad0ee3416c1a3881211c4d2f777..9f906fd5f11731025abdf55eb5e60a82 customizer.hidden = true; browser.hidden = false; -@@ -2276,6 +2276,20 @@ CustomizeMode.prototype = { +@@ -2397,6 +2397,20 @@ CustomizeMode.prototype = { if (makeSpaceImmediately) { aItem.setAttribute("notransition", "true"); } diff --git a/src/browser/components/customizableui/ToolbarContextMenu-sys-mjs.patch b/src/browser/components/customizableui/ToolbarContextMenu-sys-mjs.patch index 6a690a496..05a35d59b 100644 --- a/src/browser/components/customizableui/ToolbarContextMenu-sys-mjs.patch +++ b/src/browser/components/customizableui/ToolbarContextMenu-sys-mjs.patch @@ -1,22 +1,13 @@ diff --git a/browser/components/customizableui/ToolbarContextMenu.sys.mjs b/browser/components/customizableui/ToolbarContextMenu.sys.mjs -index 9879487f9ed9ddf825f5fb5c1467ddbd7fbe7a32..9e2565fafe0f5f9afa6065c9f4f522fec745db2a 100644 +index af22f766a052372a68faca139161cccbf0d768f0..ceff0576321f880c71ce301e537f4d03ccca8a73 100644 --- a/browser/components/customizableui/ToolbarContextMenu.sys.mjs +++ b/browser/components/customizableui/ToolbarContextMenu.sys.mjs -@@ -237,17 +237,6 @@ export var ToolbarContextMenu = { - // autohide item's checked state to mirror the autohide pref. - showFullScreenViewContextMenuItems(popup); - -- let toggleVerticalTabsItem = document.getElementById( -- "toolbar-context-toggle-vertical-tabs" -- ); -- document.l10n.setAttributes( -- toggleVerticalTabsItem, -- gBrowser.tabContainer?.verticalMode -- ? "toolbar-context-turn-off-vertical-tabs" -- : "toolbar-context-turn-on-vertical-tabs" -- ); -- document.getElementById("toolbar-context-customize-sidebar").hidden = -- !gBrowser.tabContainer?.verticalMode; - - // View -> Toolbars menu doesn't have the moveToPanel or removeFromToolbar items. - if (!moveToPanel || !removeFromToolbar) { +@@ -241,7 +241,7 @@ export var ToolbarContextMenu = { + let sidebarRevampEnabled = Services.prefs.getBoolPref("sidebar.revamp"); + let showSidebarActions = + ["tabbrowser-tabs", "sidebar-button"].includes(toolbarItem?.id) || +- toolbarItem?.localName == "toolbarspring"; ++ toolbarItem?.localName == "toolbarspring" && false; + let toggleVerticalTabsItem = document.getElementById( + "toolbar-context-toggle-vertical-tabs" + ); diff --git a/src/browser/components/customizableui/content/panelUI-js.patch b/src/browser/components/customizableui/content/panelUI-js.patch index d73fba27b..651f80f9d 100644 --- a/src/browser/components/customizableui/content/panelUI-js.patch +++ b/src/browser/components/customizableui/content/panelUI-js.patch @@ -1,5 +1,5 @@ diff --git a/browser/components/customizableui/content/panelUI.js b/browser/components/customizableui/content/panelUI.js -index 7583473ee73538b2fa54337bfd844f03f261be49..559b593a6874296bd5894c5985f8eeb680cd3886 100644 +index 010d0813557efd6d5a3a84ea589989f6e9ff195a..e26cc1be1f56919e6ec5f2432854b284837671ac 100644 --- a/browser/components/customizableui/content/panelUI.js +++ b/browser/components/customizableui/content/panelUI.js @@ -515,8 +515,7 @@ const PanelUI = { diff --git a/src/browser/components/extensions/parent/ext-browser-js.patch b/src/browser/components/extensions/parent/ext-browser-js.patch index 6e7d15fb3..407aa465e 100644 --- a/src/browser/components/extensions/parent/ext-browser-js.patch +++ b/src/browser/components/extensions/parent/ext-browser-js.patch @@ -1,8 +1,24 @@ diff --git a/browser/components/extensions/parent/ext-browser.js b/browser/components/extensions/parent/ext-browser.js -index 179816fa96ccf26604d52f71232296398dd9bdbd..c35814bae4eab774892af1f6df7465601d4f87ac 100644 +index 179816fa96ccf26604d52f71232296398dd9bdbd..1d77da215d89acf0697b70cf6272e700c455c088 100644 --- a/browser/components/extensions/parent/ext-browser.js +++ b/browser/components/extensions/parent/ext-browser.js -@@ -1218,6 +1218,10 @@ class TabManager extends TabManagerBase { +@@ -308,6 +308,7 @@ class TabTracker extends TabTrackerBase { + } + + getId(nativeTab) { ++ if (nativeTab.hasAttribute("zen-empty-tab")) return -1; + let id = this._tabs.get(nativeTab); + if (id) { + return id; +@@ -342,6 +343,7 @@ class TabTracker extends TabTrackerBase { + if (nativeTab.ownerGlobal.closed) { + throw new Error("Cannot attach ID to a tab in a closed window."); + } ++ if (nativeTab.hasAttribute("zen-empty-tab")) return; + + this._tabs.set(nativeTab, id); + if (nativeTab.linkedBrowser) { +@@ -1218,6 +1220,10 @@ class TabManager extends TabManagerBase { } canAccessTab(nativeTab) { diff --git a/src/browser/components/newtab/content-src/components/CustomizeMenu/ContentSection/ContentSection-jsx.patch b/src/browser/components/newtab/content-src/components/CustomizeMenu/ContentSection/ContentSection-jsx.patch deleted file mode 100644 index 077ed2d81..000000000 --- a/src/browser/components/newtab/content-src/components/CustomizeMenu/ContentSection/ContentSection-jsx.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/browser/components/newtab/content-src/components/CustomizeMenu/ContentSection/ContentSection.jsx b/browser/components/newtab/content-src/components/CustomizeMenu/ContentSection/ContentSection.jsx -index 57ed935e93198bb50555d119080552934c49e428..21e8fb35501091d448502dbd0c53ee01ce8b7bc0 100644 ---- a/browser/components/newtab/content-src/components/CustomizeMenu/ContentSection/ContentSection.jsx -+++ b/browser/components/newtab/content-src/components/CustomizeMenu/ContentSection/ContentSection.jsx -@@ -153,7 +153,7 @@ export class ContentSection extends React.PureComponent { - data-l10n-args='{"num": 4}' - /> - </select> -- {mayHaveSponsoredTopSites && ( -+ {false && ( - <div className="check-wrapper" role="presentation"> - <input - id="sponsored-shortcuts" diff --git a/src/browser/components/newtab/data/content/abouthomecache/page-html-template.patch b/src/browser/components/newtab/data/content/abouthomecache/page-html-template.patch deleted file mode 100644 index cb95ca6a1..000000000 --- a/src/browser/components/newtab/data/content/abouthomecache/page-html-template.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/browser/components/newtab/data/content/abouthomecache/page.html.template b/browser/components/newtab/data/content/abouthomecache/page.html.template -index 60898ed6b82ec298198cb9529387f4efd8561cc1..fbd93ccc7ee3619415192164a55f5fcbfd387a51 100644 ---- a/browser/components/newtab/data/content/abouthomecache/page.html.template -+++ b/browser/components/newtab/data/content/abouthomecache/page.html.template -@@ -32,6 +32,7 @@ - <link rel="stylesheet" href="chrome://global/skin/design-system/tokens-brand.css"> - <link rel="stylesheet" href="chrome://browser/content/contentSearchUI.css" /> - <link rel="stylesheet" href="chrome://activity-stream/content/css/activity-stream.css" /> -+ <script src="chrome://browser/content/zenThemeModifier.js"></script> - </head> - <!-- Cached: {{ CACHE_TIME }} --> - <body class="activity-stream"> diff --git a/src/browser/components/newtab/lib/ActivityStream-sys-mjs.patch b/src/browser/components/newtab/lib/ActivityStream-sys-mjs.patch deleted file mode 100644 index 02c52af35..000000000 --- a/src/browser/components/newtab/lib/ActivityStream-sys-mjs.patch +++ /dev/null @@ -1,13 +0,0 @@ -diff --git a/browser/components/newtab/lib/ActivityStream.sys.mjs b/browser/components/newtab/lib/ActivityStream.sys.mjs -index f46e8aadf053c1a567642cda5f728534c81c8223..9ba13e5988a1fbcbc0502bba46fe6cfa3c647d85 100644 ---- a/browser/components/newtab/lib/ActivityStream.sys.mjs -+++ b/browser/components/newtab/lib/ActivityStream.sys.mjs -@@ -127,7 +127,7 @@ export const PREFS_CONFIG = new Map([ - "showSponsoredTopSites", - { - title: "Show sponsored top sites", -- value: true, -+ value: false, - }, - ], - [ diff --git a/src/browser/components/places/content/bookmarkProperties-xhtml.patch b/src/browser/components/places/content/bookmarkProperties-xhtml.patch index 6a12369c1..3721631b6 100644 --- a/src/browser/components/places/content/bookmarkProperties-xhtml.patch +++ b/src/browser/components/places/content/bookmarkProperties-xhtml.patch @@ -1,8 +1,8 @@ diff --git a/browser/components/places/content/bookmarkProperties.xhtml b/browser/components/places/content/bookmarkProperties.xhtml -index 047652a52e705d49f870399992873fce536c07b9..37ea726fe427a31db8fae97c99fd38c8669fa0f9 100644 +index 4aad4e4fb4139aa3d81e00eefa82e26b697df973..a2bfac11322f3679af9b51ebc7478323aa8e4adb 100644 --- a/browser/components/places/content/bookmarkProperties.xhtml +++ b/browser/components/places/content/bookmarkProperties.xhtml -@@ -37,6 +37,8 @@ +@@ -38,6 +38,8 @@ /> <html:link rel="localization" href="browser/editBookmarkOverlay.ftl"/> @@ -11,7 +11,7 @@ index 047652a52e705d49f870399992873fce536c07b9..37ea726fe427a31db8fae97c99fd38c8 </linkset> <stringbundleset id="stringbundleset"> -@@ -44,6 +46,8 @@ +@@ -45,6 +47,8 @@ src="chrome://browser/locale/places/bookmarkProperties.properties"/> </stringbundleset> diff --git a/src/browser/components/places/content/browserPlacesViews-js.patch b/src/browser/components/places/content/browserPlacesViews-js.patch index 8937d6b2c..8d055b9a4 100644 --- a/src/browser/components/places/content/browserPlacesViews-js.patch +++ b/src/browser/components/places/content/browserPlacesViews-js.patch @@ -1,5 +1,5 @@ diff --git a/browser/components/places/content/browserPlacesViews.js b/browser/components/places/content/browserPlacesViews.js -index 1bfa0af16178c9b42172bc1b1e0249d28ff8e9e6..6744a37b7183ab9e3ac5bced7ded715879063eb5 100644 +index ad138a38340e8e8510d395f46c30ec4121d731bb..9294f05633acbe560df003333b7ef7d9a12a2a11 100644 --- a/browser/components/places/content/browserPlacesViews.js +++ b/browser/components/places/content/browserPlacesViews.js @@ -330,12 +330,23 @@ class PlacesViewBase { @@ -37,7 +37,7 @@ index 1bfa0af16178c9b42172bc1b1e0249d28ff8e9e6..6744a37b7183ab9e3ac5bced7ded7158 } else if (PlacesUtils.containerTypes.includes(type)) { element = document.createXULElement("menu"); element.setAttribute("container", "true"); -@@ -981,25 +993,33 @@ class PlacesToolbar extends PlacesViewBase { +@@ -980,25 +992,33 @@ class PlacesToolbar extends PlacesViewBase { this._rootElt.firstChild.remove(); } @@ -82,7 +82,7 @@ index 1bfa0af16178c9b42172bc1b1e0249d28ff8e9e6..6744a37b7183ab9e3ac5bced7ded7158 ); ++startIndex; if (elt.localName != "toolbarseparator") { -@@ -1007,15 +1027,12 @@ class PlacesToolbar extends PlacesViewBase { +@@ -1006,15 +1026,12 @@ class PlacesToolbar extends PlacesViewBase { } } if (!elt) { @@ -101,7 +101,7 @@ index 1bfa0af16178c9b42172bc1b1e0249d28ff8e9e6..6744a37b7183ab9e3ac5bced7ded7158 }); }); -@@ -1025,7 +1042,7 @@ class PlacesToolbar extends PlacesViewBase { +@@ -1024,7 +1041,7 @@ class PlacesToolbar extends PlacesViewBase { let fragment = document.createDocumentFragment(); for (let i = startIndex; i < limit; ++i) { @@ -110,7 +110,7 @@ index 1bfa0af16178c9b42172bc1b1e0249d28ff8e9e6..6744a37b7183ab9e3ac5bced7ded7158 } await new Promise(resolve => window.requestAnimationFrame(resolve)); if (!this._isAlive) { -@@ -1087,6 +1104,8 @@ class PlacesToolbar extends PlacesViewBase { +@@ -1086,6 +1103,8 @@ class PlacesToolbar extends PlacesViewBase { "scheme", PlacesUIUtils.guessUrlSchemeForUI(aChild.uri) ); @@ -119,7 +119,7 @@ index 1bfa0af16178c9b42172bc1b1e0249d28ff8e9e6..6744a37b7183ab9e3ac5bced7ded7158 } } -@@ -2235,7 +2254,7 @@ this.PlacesPanelview = class PlacesPanelview extends PlacesViewBase { +@@ -2234,7 +2253,7 @@ this.PlacesPanelview = class PlacesPanelview extends PlacesViewBase { PlacesUIUtils.guessUrlSchemeForUI(placesNode.uri) ); element.setAttribute("label", PlacesUIUtils.getBestTitle(placesNode)); diff --git a/src/browser/components/places/jar-mn.patch b/src/browser/components/places/jar-mn.patch index c30c06cf2..446ce0cd4 100644 --- a/src/browser/components/places/jar-mn.patch +++ b/src/browser/components/places/jar-mn.patch @@ -1,10 +1,10 @@ diff --git a/browser/components/places/jar.mn b/browser/components/places/jar.mn -index 7334914664484267ccf80eeeb2917c2001a1acaf..e0636a13798d6fbf41cbf69e51e460822b00ab1a 100644 +index e12c6bbf449f062fd22ef260909b539857f52c6a..2dcc143109de015e4c9d486b83119ae1122d2e71 100644 --- a/browser/components/places/jar.mn +++ b/browser/components/places/jar.mn @@ -25,3 +25,5 @@ browser.jar: + content/browser/places/interactionsViewer.css (metadataViewer/interactionsViewer.css) content/browser/places/interactionsViewer.html (metadataViewer/interactionsViewer.html) content/browser/places/interactionsViewer.js (metadataViewer/interactionsViewer.js) - #endif + content/browser/places/zenNewWebPanel.xhtml (content/zenNewWebPanel.xhtml) + content/browser/places/zenNewWebPanel.js (content/zenNewWebPanel.js) diff --git a/src/browser/components/preferences/dialogs/syncChooseWhatToSync-js.patch b/src/browser/components/preferences/dialogs/syncChooseWhatToSync-js.patch index a50c94c65..7b65eb7eb 100644 --- a/src/browser/components/preferences/dialogs/syncChooseWhatToSync-js.patch +++ b/src/browser/components/preferences/dialogs/syncChooseWhatToSync-js.patch @@ -1,5 +1,5 @@ diff --git a/browser/components/preferences/dialogs/syncChooseWhatToSync.js b/browser/components/preferences/dialogs/syncChooseWhatToSync.js -index 2cc965b4e1b20e1ae422bfb5c90a237dcd31fcf6..cfed9dfa67c7c34cd812885a72d66dd37ba414fc 100644 +index a38c2a235971f2fe470f9bee92fc9c1a6d9b8b15..564be3dabe01621a621ca586421cdb77e0220f8b 100644 --- a/browser/components/preferences/dialogs/syncChooseWhatToSync.js +++ b/browser/components/preferences/dialogs/syncChooseWhatToSync.js @@ -13,6 +13,7 @@ Preferences.addAll([ diff --git a/src/browser/components/preferences/dialogs/syncChooseWhatToSync-xhtml.patch b/src/browser/components/preferences/dialogs/syncChooseWhatToSync-xhtml.patch index 53a2ce219..efdeece47 100644 --- a/src/browser/components/preferences/dialogs/syncChooseWhatToSync-xhtml.patch +++ b/src/browser/components/preferences/dialogs/syncChooseWhatToSync-xhtml.patch @@ -1,8 +1,8 @@ diff --git a/browser/components/preferences/dialogs/syncChooseWhatToSync.xhtml b/browser/components/preferences/dialogs/syncChooseWhatToSync.xhtml -index 83bd09c0c3f8fd5febf1721e6b462ca90e54327b..5d0ca4265e7b57178f1fe45068449e0355ba80e0 100644 +index 6e74bbce9096179d38db422879349013f3954fa9..859f8b9640ef49411164f8e5160d4d9b8db11e54 100644 --- a/browser/components/preferences/dialogs/syncChooseWhatToSync.xhtml +++ b/browser/components/preferences/dialogs/syncChooseWhatToSync.xhtml -@@ -26,6 +26,10 @@ +@@ -27,6 +27,10 @@ rel="localization" href="browser/preferences/preferences.ftl" /> @@ -13,7 +13,7 @@ index 83bd09c0c3f8fd5febf1721e6b462ca90e54327b..5d0ca4265e7b57178f1fe45068449e03 </linkset> <script src="chrome://global/content/preferencesBindings.js" /> <script src="chrome://browser/content/preferences/dialogs/syncChooseWhatToSync.js" /> -@@ -82,6 +86,12 @@ +@@ -79,6 +83,12 @@ preference="services.sync.engine.prefs" /> </html:div> diff --git a/src/browser/components/preferences/main-js.patch b/src/browser/components/preferences/main-js.patch index cbda82bef..9676a3104 100644 --- a/src/browser/components/preferences/main-js.patch +++ b/src/browser/components/preferences/main-js.patch @@ -1,8 +1,8 @@ diff --git a/browser/components/preferences/main.js b/browser/components/preferences/main.js -index b9487ece26cfe21a32199a7e36f29b3aa3b8d700..ce02f54cab85d4da8cb306f0d5f3378c9e30df37 100644 +index 8f6f78419a0876ebe6d0967a88ef03e464dbbd23..9339085014b797033c4ee1ed2e40f2506d1e9797 100644 --- a/browser/components/preferences/main.js +++ b/browser/components/preferences/main.js -@@ -212,7 +212,7 @@ function getBundleForLocales(newLocales) { +@@ -218,7 +218,7 @@ function getBundleForLocales(newLocales) { ]) ); return new Localization( diff --git a/src/browser/components/preferences/preferences-js.patch b/src/browser/components/preferences/preferences-js.patch index 42529b788..e4336e5c2 100644 --- a/src/browser/components/preferences/preferences-js.patch +++ b/src/browser/components/preferences/preferences-js.patch @@ -1,5 +1,5 @@ diff --git a/browser/components/preferences/preferences.js b/browser/components/preferences/preferences.js -index 78b70a99b00198402c357ead363dec7e534be456..90e10509fdff67144f5cbcf42c743e617df604e0 100644 +index 6386773b287ca6d06a0abe928850c5bb465828ed..b3459a2abcac5f21a5b24189ec1dc88e24626687 100644 --- a/browser/components/preferences/preferences.js +++ b/browser/components/preferences/preferences.js @@ -118,6 +118,7 @@ ChromeUtils.defineLazyGetter(this, "gSubDialog", function () { diff --git a/src/browser/components/preferences/preferences-xhtml.patch b/src/browser/components/preferences/preferences-xhtml.patch index d95516c19..6db544ffd 100644 --- a/src/browser/components/preferences/preferences-xhtml.patch +++ b/src/browser/components/preferences/preferences-xhtml.patch @@ -1,5 +1,5 @@ diff --git a/browser/components/preferences/preferences.xhtml b/browser/components/preferences/preferences.xhtml -index 53bdc9c912a6cd0c787dbcf41f2a82b7169d5aa7..e47c4b36b6e469b0cc8b95bde0508dc6cb0b49ae 100644 +index 951af951598c3edc9bc431dd106e68d006ec4316..eb420d6c5ea346639eee531805aabbe7726c7769 100644 --- a/browser/components/preferences/preferences.xhtml +++ b/browser/components/preferences/preferences.xhtml @@ -43,6 +43,8 @@ @@ -11,7 +11,7 @@ index 53bdc9c912a6cd0c787dbcf41f2a82b7169d5aa7..e47c4b36b6e469b0cc8b95bde0508dc6 <link rel="localization" href="branding/brand.ftl"/> <link rel="localization" href="browser/browser.ftl"/> <!-- Used by fontbuilder.js --> -@@ -97,6 +99,12 @@ +@@ -98,6 +100,12 @@ <hbox flex="1"> <vbox class="navigation"> @@ -24,7 +24,7 @@ index 53bdc9c912a6cd0c787dbcf41f2a82b7169d5aa7..e47c4b36b6e469b0cc8b95bde0508dc6 <!-- category list --> <richlistbox id="categories" data-l10n-id="category-list" data-l10n-attrs="aria-label"> <richlistitem id="category-general" -@@ -110,6 +118,50 @@ +@@ -111,6 +119,50 @@ <label class="category-name" flex="1" data-l10n-id="pane-general-title"></label> </richlistitem> @@ -75,7 +75,7 @@ index 53bdc9c912a6cd0c787dbcf41f2a82b7169d5aa7..e47c4b36b6e469b0cc8b95bde0508dc6 <richlistitem id="category-home" class="category" value="paneHome" -@@ -228,11 +280,13 @@ +@@ -229,11 +281,13 @@ <html:a href="about:policies" target="_blank" data-l10n-id="managed-notice"/> </hbox> </hbox> @@ -89,7 +89,7 @@ index 53bdc9c912a6cd0c787dbcf41f2a82b7169d5aa7..e47c4b36b6e469b0cc8b95bde0508dc6 </hbox> </hbox> <vbox id="mainPrefPane"> -@@ -246,6 +300,10 @@ +@@ -247,6 +301,10 @@ #include sync.inc.xhtml #include experimental.inc.xhtml #include moreFromMozilla.inc.xhtml diff --git a/src/browser/components/preferences/zen-settings.js b/src/browser/components/preferences/zen-settings.js index 1c9f283ec..ad1903850 100644 --- a/src/browser/components/preferences/zen-settings.js +++ b/src/browser/components/preferences/zen-settings.js @@ -949,11 +949,6 @@ Preferences.addAll([ type: 'bool', default: true, }, - { - id: 'zen.splitView.change-on-hover', - type: 'bool', - default: true, - }, { id: 'zen.tab-unloader.timeout-minutes', type: 'int', diff --git a/src/browser/components/preferences/zenLooksAndFeel.inc.xhtml b/src/browser/components/preferences/zenLooksAndFeel.inc.xhtml index b6e72e8b1..e9f5fe73a 100644 --- a/src/browser/components/preferences/zenLooksAndFeel.inc.xhtml +++ b/src/browser/components/preferences/zenLooksAndFeel.inc.xhtml @@ -208,20 +208,4 @@ </hbox> </groupbox> -<hbox id="zenSplitViewCategory" - class="subcategory" - hidden="true" - data-category="paneZenLooks"> -<html:h1 data-l10n-id="zen-split-view-title"/> -</hbox> - -<groupbox id="zenSplitViewGroup" data-category="paneZenLooks" hidden="true" class="highlighting-group"> - <label><html:h2 data-l10n-id="zen-split-view-header"/></label> - <description class="description-deemphasized" data-l10n-id="zen-split-view-description" /> - - <checkbox id="zenLooksAndFeelSplitViewChangeOnHover" - data-l10n-id="zen-split-view-change-on-hover" - preference="zen.splitView.change-on-hover"/> -</groupbox> - </html:template> diff --git a/src/browser/components/search/SearchOneOffs-sys-mjs.patch b/src/browser/components/search/SearchOneOffs-sys-mjs.patch index 2ec4565cb..b6c19086a 100644 --- a/src/browser/components/search/SearchOneOffs-sys-mjs.patch +++ b/src/browser/components/search/SearchOneOffs-sys-mjs.patch @@ -1,8 +1,8 @@ diff --git a/browser/components/search/SearchOneOffs.sys.mjs b/browser/components/search/SearchOneOffs.sys.mjs -index 6dcd68f7ec4da72f9510ac3c8ff1cecffbd70e92..f712b95d03be46f7d81bad4113f533f0515a92b9 100644 +index 4810eca0825f9a6f07f242e804de2edb7bd697d8..fd4e7661c93be528c2766e27fe22403d3d495292 100644 --- a/browser/components/search/SearchOneOffs.sys.mjs +++ b/browser/components/search/SearchOneOffs.sys.mjs -@@ -446,7 +446,7 @@ export class SearchOneOffs { +@@ -443,7 +443,7 @@ export class SearchOneOffs { // For the search-bar, always show the one-off buttons where there is an // option to add an engine. let addEngineNeeded = isSearchBar && addEngines.length; diff --git a/src/browser/components/sessionstore/SessionStore-sys-mjs.patch b/src/browser/components/sessionstore/SessionStore-sys-mjs.patch index a22222c10..918bf27ea 100644 --- a/src/browser/components/sessionstore/SessionStore-sys-mjs.patch +++ b/src/browser/components/sessionstore/SessionStore-sys-mjs.patch @@ -1,8 +1,8 @@ diff --git a/browser/components/sessionstore/SessionStore.sys.mjs b/browser/components/sessionstore/SessionStore.sys.mjs -index f814772114948f87cbb3c3a7231c95ea1f68d776..ae35daa518ca25f4fc95ef983519c390bf088a68 100644 +index 6e2973abf428b110bfc553522723f327ee84c028..668cc147a1bf158bc42a7baf2a5549049d060899 100644 --- a/browser/components/sessionstore/SessionStore.sys.mjs +++ b/browser/components/sessionstore/SessionStore.sys.mjs -@@ -3171,7 +3171,7 @@ var SessionStoreInternal = { +@@ -3186,7 +3186,7 @@ var SessionStoreInternal = { if (!isPrivateWindow && tabState.isPrivate) { return; } @@ -11,7 +11,7 @@ index f814772114948f87cbb3c3a7231c95ea1f68d776..ae35daa518ca25f4fc95ef983519c390 return; } -@@ -3876,6 +3876,7 @@ var SessionStoreInternal = { +@@ -3895,6 +3895,7 @@ var SessionStoreInternal = { Math.min(tabState.index, tabState.entries.length) ); tabState.pinned = false; @@ -19,7 +19,7 @@ index f814772114948f87cbb3c3a7231c95ea1f68d776..ae35daa518ca25f4fc95ef983519c390 if (inBackground === false) { aWindow.gBrowser.selectedTab = newTab; -@@ -5355,14 +5356,14 @@ var SessionStoreInternal = { +@@ -5399,14 +5400,15 @@ var SessionStoreInternal = { } let tabbrowser = aWindow.gBrowser; @@ -29,6 +29,7 @@ index f814772114948f87cbb3c3a7231c95ea1f68d776..ae35daa518ca25f4fc95ef983519c390 let winData = this._windows[aWindow.__SSi]; let tabsData = (winData.tabs = []); ++ winData.splitViewData = aWindow.gZenViewSplitter?.storeDataForSessionStore(); // update the internal state data for this window for (let tab of tabs) { - if (tab == aWindow.FirefoxViewHandler.tab) { @@ -36,7 +37,7 @@ index f814772114948f87cbb3c3a7231c95ea1f68d776..ae35daa518ca25f4fc95ef983519c390 continue; } let tabData = lazy.TabState.collect(tab, TAB_CUSTOM_VALUES.get(tab)); -@@ -5381,7 +5382,7 @@ var SessionStoreInternal = { +@@ -5425,7 +5427,7 @@ var SessionStoreInternal = { // We don't store the Firefox View tab in Session Store, so if it was the last selected "tab" when // a window is closed, point to the first item in the tab strip instead (it will never be the Firefox View tab, // since it's only inserted into the tab strip after it's selected). @@ -45,7 +46,15 @@ index f814772114948f87cbb3c3a7231c95ea1f68d776..ae35daa518ca25f4fc95ef983519c390 selectedIndex = 1; winData.title = tabbrowser.tabs[0].label; } -@@ -6086,8 +6087,23 @@ var SessionStoreInternal = { +@@ -5582,6 +5584,7 @@ var SessionStoreInternal = { + winData.tabs, + winData.groups ?? [] + ); ++ aWindow.gZenViewSplitter?.restoreDataFromSessionStore(winData.splitViewData); + this._log.debug( + `restoreWindow, createTabsForSessionRestore returned ${tabs.length} tabs` + ); +@@ -6130,8 +6133,23 @@ var SessionStoreInternal = { // Most of tabData has been restored, now continue with restoring // attributes that may trigger external events. diff --git a/src/browser/components/sessionstore/TabGroupState-sys-mjs.patch b/src/browser/components/sessionstore/TabGroupState-sys-mjs.patch new file mode 100644 index 000000000..034fc32d3 --- /dev/null +++ b/src/browser/components/sessionstore/TabGroupState-sys-mjs.patch @@ -0,0 +1,14 @@ +diff --git a/browser/components/sessionstore/TabGroupState.sys.mjs b/browser/components/sessionstore/TabGroupState.sys.mjs +index 934326aefc80479a2ca2ee9e376375f117512b4d..db840ead9ab53849f8f1f33864972347d43f9398 100644 +--- a/browser/components/sessionstore/TabGroupState.sys.mjs ++++ b/browser/components/sessionstore/TabGroupState.sys.mjs +@@ -62,6 +62,9 @@ class _TabGroupState { + */ + collect(tabGroup) { + return { ++ pinned: tabGroup.pinned, ++ essential: tabGroup.essential, ++ splitView: tabGroup.hasAttribute("split-view-group"), + id: tabGroup.id, + name: tabGroup.label, + color: tabGroup.color, diff --git a/src/browser/components/sessionstore/TabState-sys-mjs.patch b/src/browser/components/sessionstore/TabState-sys-mjs.patch index 91b9a309b..c3c77e19f 100644 --- a/src/browser/components/sessionstore/TabState-sys-mjs.patch +++ b/src/browser/components/sessionstore/TabState-sys-mjs.patch @@ -1,13 +1,8 @@ diff --git a/browser/components/sessionstore/TabState.sys.mjs b/browser/components/sessionstore/TabState.sys.mjs -index 8f7ed557e6aa61e7e16ed4a8d785ad5fe651b3d8..aff63696d198055886960072a6130318e099ae42 100644 +index 8f7ed557e6aa61e7e16ed4a8d785ad5fe651b3d8..254849e13f7566029dc780c45e376e0f0d427cb5 100644 --- a/browser/components/sessionstore/TabState.sys.mjs +++ b/browser/components/sessionstore/TabState.sys.mjs -@@ -80,10 +80,20 @@ class _TabState { - tabData.muteReason = tab.muteReason; - } - -- if (tab.group) { -+ if (tab.group && !tab.group.hasAttribute("split-view-group")) { +@@ -84,6 +84,16 @@ class _TabState { tabData.groupId = tab.group.id; } diff --git a/src/browser/components/sidebar/browser-sidebar-js.patch b/src/browser/components/sidebar/browser-sidebar-js.patch index 4bd9fb764..1166bc15a 100644 --- a/src/browser/components/sidebar/browser-sidebar-js.patch +++ b/src/browser/components/sidebar/browser-sidebar-js.patch @@ -1,22 +1,13 @@ diff --git a/browser/components/sidebar/browser-sidebar.js b/browser/components/sidebar/browser-sidebar.js -index 1937a01b9940c79782cc2ad002b09ea5938b89e0..a702e8c520fad651a98615215f94657b7e1c58eb 100644 +index 371190c058fa1eed91dc91b58608c934100e3a1b..440fe6fb403c3e78b3bfe68fb747d000b4a27521 100644 --- a/browser/components/sidebar/browser-sidebar.js +++ b/browser/components/sidebar/browser-sidebar.js -@@ -671,7 +671,7 @@ var SidebarController = { - */ - setPosition() { - // First reset all ordinals to match DOM ordering. -- let browser = document.getElementById("browser"); -+ let browser = document.getElementById("tabbrowser-tabbox"); - [...browser.children].forEach((node, i) => { - node.style.order = i + 1; - }); -@@ -681,7 +681,7 @@ var SidebarController = { - // DOM ordering is: sidebar-main | launcher-splitter | sidebar-box | splitter | tabbrowser-tabbox | - // Want to display as: | tabbrowser-tabbox | splitter | sidebar-box | launcher-splitter | sidebar-main - // So we just swap box and tabbrowser-tabbox ordering and move sidebar-main to the end -- let tabbox = document.getElementById("tabbrowser-tabbox"); -+ let tabbox = document.getElementById("tabbrowser-tabpanels"); - let boxOrdinal = this._box.style.order; - this._box.style.order = tabbox.style.order; - +@@ -718,7 +718,7 @@ var SidebarController = { + } + }); + } else { +- let browser = document.getElementById("browser"); ++ let browser = document.getElementById("tabbrowser-tabbox"); + [...browser.children].forEach((node, i) => { + node.style.order = i + 1; + }); diff --git a/src/browser/components/tabbrowser/content/tab-js.patch b/src/browser/components/tabbrowser/content/tab-js.patch index 2fa672220..77004183f 100644 --- a/src/browser/components/tabbrowser/content/tab-js.patch +++ b/src/browser/components/tabbrowser/content/tab-js.patch @@ -1,5 +1,5 @@ diff --git a/browser/components/tabbrowser/content/tab.js b/browser/components/tabbrowser/content/tab.js -index 777eabb7524f2b021a03b3f54d69faee49b7381d..192d2fa058f7d9f043532c0ae6e4c08129d16b8e 100644 +index fc3a9730b394341843cfa9f559a792acb34c7d29..18d5fdb6e3368e21c68269c48cf22ac96fd868da 100644 --- a/browser/components/tabbrowser/content/tab.js +++ b/browser/components/tabbrowser/content/tab.js @@ -16,6 +16,7 @@ @@ -21,7 +21,7 @@ index 777eabb7524f2b021a03b3f54d69faee49b7381d..192d2fa058f7d9f043532c0ae6e4c081 </hbox> </stack> `; -@@ -168,7 +171,7 @@ +@@ -167,7 +170,7 @@ } set _visuallySelected(val) { @@ -30,7 +30,7 @@ index 777eabb7524f2b021a03b3f54d69faee49b7381d..192d2fa058f7d9f043532c0ae6e4c081 return; } -@@ -204,7 +207,7 @@ +@@ -203,7 +206,7 @@ } get visible() { @@ -39,7 +39,7 @@ index 777eabb7524f2b021a03b3f54d69faee49b7381d..192d2fa058f7d9f043532c0ae6e4c081 } get hidden() { -@@ -266,7 +269,7 @@ +@@ -274,7 +277,7 @@ return false; } @@ -48,7 +48,7 @@ index 777eabb7524f2b021a03b3f54d69faee49b7381d..192d2fa058f7d9f043532c0ae6e4c081 } get lastAccessed() { -@@ -438,6 +441,8 @@ +@@ -446,6 +449,8 @@ this.style.MozUserFocus = "ignore"; } else if ( event.target.classList.contains("tab-close-button") || @@ -57,7 +57,7 @@ index 777eabb7524f2b021a03b3f54d69faee49b7381d..192d2fa058f7d9f043532c0ae6e4c081 event.target.classList.contains("tab-icon-overlay") || event.target.classList.contains("tab-audio-button") ) { -@@ -536,6 +541,7 @@ +@@ -544,6 +549,7 @@ if (this.multiselected) { gBrowser.removeMultiSelectedTabs(); } else { @@ -65,7 +65,7 @@ index 777eabb7524f2b021a03b3f54d69faee49b7381d..192d2fa058f7d9f043532c0ae6e4c081 gBrowser.removeTab(this, { animate: true, triggeringEvent: event, -@@ -545,6 +551,14 @@ +@@ -553,6 +559,14 @@ // (see tabbrowser-tabs 'click' handler). gBrowser.tabContainer._blockDblClick = true; } @@ -80,7 +80,7 @@ index 777eabb7524f2b021a03b3f54d69faee49b7381d..192d2fa058f7d9f043532c0ae6e4c081 } on_dblclick(event) { -@@ -568,6 +582,8 @@ +@@ -576,6 +590,8 @@ animate: true, triggeringEvent: event, }); diff --git a/src/browser/components/tabbrowser/content/tabbrowser-js.patch b/src/browser/components/tabbrowser/content/tabbrowser-js.patch index 9faa921ef..c00eedd9a 100644 --- a/src/browser/components/tabbrowser/content/tabbrowser-js.patch +++ b/src/browser/components/tabbrowser/content/tabbrowser-js.patch @@ -1,8 +1,8 @@ diff --git a/browser/components/tabbrowser/content/tabbrowser.js b/browser/components/tabbrowser/content/tabbrowser.js -index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63af1fa8a3 100644 +index 5f406ea5d09273c9b70b84eee24c6267f88692f8..82926278b2f71b8251b06bde6f62bcdc885cb760 100644 --- a/browser/components/tabbrowser/content/tabbrowser.js +++ b/browser/components/tabbrowser/content/tabbrowser.js -@@ -412,11 +412,50 @@ +@@ -424,11 +424,67 @@ return this.tabContainer.visibleTabs; } @@ -19,6 +19,23 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 + return i; + } + ++ get _numVisiblePinTabsWithoutCollapsed() { ++ let i = 0; ++ for (let item of this.tabContainer.ariaFocusableItems) { ++ if (!!item?.classList?.contains("tab-group-label") && item.closest("tab-group").pinned) { ++ i += 1; ++ continue; ++ } ++ if (!item.pinned && !item.hasAttribute("zen-glance-tab")) { ++ break; ++ } ++ if ((!item.group?.hasAttribute("split-view-group") && !item.group?.collapsed) && !item.hidden) { ++ i += !item.hasAttribute("zen-glance-tab"); ++ } ++ } ++ return i; ++ } ++ + get _numZenEssentials() { + let i = 0; + for (let tab of this.tabs) { @@ -55,7 +72,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 } return i; } -@@ -546,6 +585,7 @@ +@@ -558,6 +614,7 @@ this.tabpanels.appendChild(panel); let tab = this.tabs[0]; @@ -63,16 +80,15 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 tab.linkedPanel = uniqueId; this._selectedTab = tab; this._selectedBrowser = browser; -@@ -811,12 +851,13 @@ +@@ -823,11 +880,13 @@ } this.showTab(aTab); -- this.ungroupTab(aTab); - if (this.tabContainer.verticalMode) { + const handled = gZenFolders.handleTabPin(aTab); + if (!handled) this.ungroupTab(aTab); + if (this.tabContainer.verticalMode && !handled) { - this._handleTabMove(aTab, () => + this.#handleTabMove(aTab, () => - this.verticalPinnedTabsContainer.appendChild(aTab) + aTab.hasAttribute("zen-essential") ? document.getElementById("zen-essentials-container").appendChild(aTab) : this.verticalPinnedTabsContainer.insertBefore(aTab, this.verticalPinnedTabsContainer.lastChild) ); @@ -81,12 +97,12 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 this.moveTabTo(aTab, this.pinnedTabCount, { forceStandaloneTab: true }); } aTab.setAttribute("pinned", "true"); -@@ -830,12 +871,15 @@ +@@ -841,12 +900,15 @@ } if (this.tabContainer.verticalMode) { + const handled = gZenFolders.handleTabUnpin(aTab); - this._handleTabMove(aTab, () => { + this.#handleTabMove(aTab, () => { // we remove this attribute first, so that allTabs represents // the moving of a tab from the vertical pinned tabs container // and back into arrowscrollbox. @@ -98,7 +114,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 }); } else { this.moveTabTo(aTab, this.pinnedTabCount - 1, { -@@ -1018,6 +1062,8 @@ +@@ -1029,6 +1091,8 @@ let LOCAL_PROTOCOLS = ["chrome:", "about:", "resource:", "data:"]; @@ -107,7 +123,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 if ( aIconURL && !aLoadingPrincipal && -@@ -1028,6 +1074,9 @@ +@@ -1039,6 +1103,9 @@ ); return; } @@ -117,7 +133,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 let browser = this.getBrowserForTab(aTab); browser.mIconURL = aIconURL; -@@ -1273,6 +1322,7 @@ +@@ -1287,6 +1354,7 @@ if (!this._previewMode) { newTab.recordTimeFromUnloadToReload(); newTab.updateLastAccessed(); @@ -125,7 +141,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 oldTab.updateLastAccessed(); // if this is the foreground window, update the last-seen timestamps. if (this.ownerGlobal == BrowserWindowTracker.getTopWindow()) { -@@ -1425,6 +1475,9 @@ +@@ -1439,6 +1507,9 @@ } let activeEl = document.activeElement; @@ -135,7 +151,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 // If focus is on the old tab, move it to the new tab. if (activeEl == oldTab) { newTab.focus(); -@@ -1748,7 +1801,7 @@ +@@ -1762,7 +1833,7 @@ } _setTabLabel(aTab, aLabel, { beforeTabOpen, isContentTitle, isURL } = {}) { @@ -144,7 +160,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 return false; } -@@ -1851,7 +1904,7 @@ +@@ -1865,7 +1936,7 @@ newIndex = this.selectedTab._tPos + 1; } @@ -153,7 +169,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 let browser; if (targetTab) { browser = this.getBrowserForTab(targetTab); -@@ -2108,6 +2161,7 @@ +@@ -2122,6 +2193,7 @@ uriIsAboutBlank, userContextId, skipLoad, @@ -161,7 +177,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 } = {}) { let b = document.createXULElement("browser"); // Use the JSM global to create the permanentKey, so that if the -@@ -2181,8 +2235,7 @@ +@@ -2195,8 +2267,7 @@ // we use a different attribute name for this? b.setAttribute("name", name); } @@ -171,7 +187,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 b.setAttribute("transparent", "true"); } -@@ -2347,7 +2400,7 @@ +@@ -2373,7 +2444,7 @@ let panel = this.getPanel(browser); let uniqueId = this._generateUniquePanelID(); @@ -180,7 +196,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 aTab.linkedPanel = uniqueId; // Inject the <browser> into the DOM if necessary. -@@ -2406,8 +2459,8 @@ +@@ -2432,8 +2503,8 @@ // If we transitioned from one browser to two browsers, we need to set // hasSiblings=false on both the existing browser and the new browser. if (this.tabs.length == 2) { @@ -191,7 +207,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 } else { aTab.linkedBrowser.browsingContext.hasSiblings = this.tabs.length > 1; } -@@ -2629,6 +2682,7 @@ +@@ -2655,6 +2726,7 @@ schemelessInput, hasValidUserGestureActivation = false, textDirectiveUserActivation = false, @@ -199,7 +215,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 } = {} ) { // all callers of addTab that pass a params object need to pass -@@ -2639,6 +2693,12 @@ +@@ -2665,6 +2737,12 @@ ); } @@ -212,7 +228,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 if (!UserInteraction.running("browser.tabs.opening", window)) { UserInteraction.start("browser.tabs.opening", "initting", window); } -@@ -2702,6 +2762,15 @@ +@@ -2728,6 +2806,15 @@ noInitialLabel, skipBackgroundNotify, }); @@ -228,7 +244,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 if (insertTab) { // insert the tab into the tab container in the correct position this._insertTabAtIndex(t, { -@@ -2726,6 +2795,7 @@ +@@ -2752,6 +2839,7 @@ initialBrowsingContextGroupId, openWindowInfo, skipLoad, @@ -236,7 +252,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 })); if (focusUrlBar) { -@@ -2845,6 +2915,9 @@ +@@ -2871,6 +2959,9 @@ } } @@ -246,15 +262,32 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 // Additionally send pinned tab events if (pinned) { this._notifyPinnedStatus(t); -@@ -2904,6 +2977,7 @@ - label = "", +@@ -2891,12 +2982,15 @@ + * @param {string} [label=] + * @returns {MozTabbrowserTabGroup} + */ +- _createTabGroup(id, color, collapsed, label = "") { ++ _createTabGroup(id, color, collapsed, label = "", pinned = false, essential = false, splitViewGroup = false) { + let group = document.createXULElement("tab-group", { is: "tab-group" }); + group.id = id; + group.collapsed = collapsed; + group.color = color; + group.label = label; ++ group.pinned = pinned; ++ group.essential = essential; ++ if (splitViewGroup) group.setAttribute('split-view-group', true); + return group; + } + +@@ -2937,6 +3031,7 @@ insertBefore = null, - showCreateUI = false, + isUserCreated = false, + telemetryUserCreateSource = "unknown", + forSplitView = false, } = {} ) { if (!tabs?.length) { -@@ -2918,7 +2992,12 @@ +@@ -2951,7 +3046,12 @@ id = `${Date.now()}-${Math.round(Math.random() * 100)}`; } let group = this._createTabGroup(id, color, false, label); @@ -264,11 +297,11 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 + } + group.essential = tabs.some(tab => tab.hasAttribute("essential")); + group.pinned = group.essential || tabs.some(tab => tab.pinned); -+ (group.essential ? document.getElementById("zen-essentials-container") : (group.pinned ? this.verticalPinnedTabsContainer : this.tabContainer)).insertBefore( ++ ((insertBefore?.group ?? insertBefore).parentNode).insertBefore( group, insertBefore?.group ?? insertBefore ); -@@ -3126,6 +3205,7 @@ +@@ -3268,6 +3368,7 @@ initialBrowsingContextGroupId, openWindowInfo, skipLoad, @@ -276,7 +309,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 } ) { // If we don't have a preferred remote type, and we have a remote -@@ -3189,6 +3269,7 @@ +@@ -3331,6 +3432,7 @@ openWindowInfo, name, skipLoad, @@ -284,7 +317,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 }); } -@@ -3367,6 +3448,27 @@ +@@ -3509,6 +3611,27 @@ ) { tabWasReused = true; tab = this.selectedTab; @@ -312,7 +345,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 if (!tabData.pinned) { this.unpinTab(tab); } else { -@@ -3380,6 +3482,7 @@ +@@ -3522,6 +3645,7 @@ restoreTabsLazily && !select && !tabData.pinned; let url = "about:blank"; @@ -320,7 +353,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 if (tabData.entries?.length) { let activeIndex = (tabData.index || tabData.entries.length) - 1; // Ensure the index is in bounds. -@@ -3415,7 +3518,27 @@ +@@ -3557,7 +3681,27 @@ skipLoad: true, preferredRemoteType, }); @@ -349,7 +382,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 if (select) { tabToSelect = tab; } -@@ -3428,8 +3551,8 @@ +@@ -3570,8 +3714,8 @@ // inserted in the DOM. If the tab is not yet in the DOM, // just insert it in the right place from the start. if (!tab.parentNode) { @@ -360,7 +393,29 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 tab.toggleAttribute("pinned", true); this.tabContainer._invalidateCachedTabs(); // Then ensure all the tab open/pinning information is sent. -@@ -3504,6 +3627,9 @@ +@@ -3581,7 +3725,8 @@ + // needs calling: + shouldUpdateForPinnedTabs = true; + } +- } else if (tabData.groupId) { ++ } ++ if (tabData.groupId) { + let { groupId } = tabData; + const tabGroup = tabGroupWorkingData.get(groupId); + // if a tab refers to a tab group we don't know, skip any group +@@ -3595,7 +3740,10 @@ + tabGroup.stateData.id, + tabGroup.stateData.color, + tabGroup.stateData.collapsed, +- tabGroup.stateData.name ++ tabGroup.stateData.name, ++ tabGroup.stateData.pinned, ++ tabGroup.stateData.essential, ++ tabGroup.stateData.splitView, + ); + tabsFragment.appendChild(tabGroup.node); + } +@@ -3646,6 +3794,9 @@ this.selectedTab = tabToSelect; this.removeTab(leftoverTab); } @@ -370,7 +425,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 if (tabs.length > 1 || !tabs[0].selected) { this._updateTabsAfterInsert(); -@@ -3693,7 +3819,7 @@ +@@ -3830,7 +3981,7 @@ // Ensure we have an index if one was not provided. if (typeof index != "number") { // Move the new tab after another tab if needed, to the end otherwise. @@ -379,7 +434,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 if ( !bulkOrderedOpen && ((openerTab && -@@ -3736,18 +3862,18 @@ +@@ -3876,18 +4027,18 @@ // Ensure index is within bounds. if (tab.pinned) { @@ -402,7 +457,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 if (tabAfter && tabAfter.group == tabGroup) { // Place at the front of, or between tabs in, the same tab group this.tabContainer.insertBefore(tab, tabAfter); -@@ -4059,6 +4185,9 @@ +@@ -4199,6 +4350,9 @@ return; } @@ -412,7 +467,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 this.removeTabs(selectedTabs); } -@@ -4391,6 +4520,7 @@ +@@ -4556,6 +4710,7 @@ skipSessionStore, } = {} ) { @@ -420,7 +475,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 if (UserInteraction.running("browser.tabs.opening", window)) { UserInteraction.finish("browser.tabs.opening", window); } -@@ -4407,6 +4537,12 @@ +@@ -4572,6 +4727,12 @@ TelemetryStopwatch.start("FX_TAB_CLOSE_TIME_NO_ANIM_MS", aTab); } @@ -433,7 +488,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 // Handle requests for synchronously removing an already // asynchronously closing tab. if (!animate && aTab.closing) { -@@ -4421,7 +4557,9 @@ +@@ -4586,7 +4747,9 @@ // frame created for it (for example, by updating the visually selected // state). let tabWidth = window.windowUtils.getBoundsWithoutFlushing(aTab).width; @@ -444,7 +499,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 if ( !this._beginRemoveTab(aTab, { closeWindowFastpath: true, -@@ -4435,7 +4573,6 @@ +@@ -4600,7 +4763,6 @@ TelemetryStopwatch.cancel("FX_TAB_CLOSE_TIME_NO_ANIM_MS", aTab); return; } @@ -452,7 +507,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 let lockTabSizing = !this.tabContainer.verticalMode && !aTab.pinned && -@@ -4574,14 +4711,14 @@ +@@ -4739,14 +4901,14 @@ !!this.tabsInCollapsedTabGroups.length; if ( aTab.visible && @@ -469,7 +524,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 if (closeWindow) { // We've already called beforeunload on all the relevant tabs if we get here, -@@ -4605,6 +4742,7 @@ +@@ -4770,6 +4932,7 @@ newTab = true; } @@ -477,7 +532,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 aTab._endRemoveArgs = [closeWindow, newTab]; // swapBrowsersAndCloseOther will take care of closing the window without animation. -@@ -4645,9 +4783,7 @@ +@@ -4810,9 +4973,7 @@ aTab._mouseleave(); if (newTab) { @@ -488,7 +543,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 } else { TabBarVisibility.update(); } -@@ -4776,6 +4912,8 @@ +@@ -4941,6 +5102,8 @@ this.tabs[i]._tPos = i; } @@ -497,7 +552,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 if (!this._windowIsClosing) { if (wasPinned) { this.tabContainer._positionPinnedTabs(); -@@ -4994,7 +5132,7 @@ +@@ -5159,7 +5322,7 @@ !excludeTabs.has(aTab.owner) && Services.prefs.getBoolPref("browser.tabs.selectOwnerOnClose") ) { @@ -506,7 +561,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 } // Try to find a remaining tab that comes after the given tab -@@ -5016,7 +5154,7 @@ +@@ -5181,7 +5344,7 @@ } if (tab) { @@ -515,7 +570,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 } // If no qualifying visible tab was found, see if there is a tab in -@@ -5434,10 +5572,10 @@ +@@ -5599,10 +5762,10 @@ SessionStore.deleteCustomTabValue(aTab, "hiddenBy"); } @@ -528,8 +583,8 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 aTab.selected || aTab.closing || // Tabs that are sharing the screen, microphone or camera cannot be hidden. -@@ -5675,7 +5813,7 @@ - +@@ -5838,7 +6001,7 @@ + moveTabTo(aTab, aIndex, { forceStandaloneTab = false } = {}) { // Don't allow mixing pinned and unpinned tabs. if (aTab.pinned) { - aIndex = Math.min(aIndex, this.pinnedTabCount - 1); @@ -537,16 +592,16 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 } else { aIndex = Math.max(aIndex, this.pinnedTabCount); } -@@ -5685,10 +5823,17 @@ +@@ -5848,10 +6011,17 @@ - this._handleTabMove(aTab, () => { + this.#handleTabMove(aTab, () => { let neighbor = this.tabs[aIndex]; - if (forceStandaloneTab && neighbor.group) { + const _tPos = aTab._tPos; + if ((forceStandaloneTab && neighbor.group) || neighbor.group?.hasAttribute("split-view-group")) { neighbor = neighbor.group; } -- if (neighbor && aIndex >= aTab._tPos) { +- if (neighbor && aIndex > aTab._tPos) { + if (aTab.group?.hasAttribute("split-view-group")) { + aTab = aTab.group; + } @@ -557,7 +612,31 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 neighbor.after(aTab); } else { this.tabContainer.insertBefore(aTab, neighbor); -@@ -5697,7 +5842,7 @@ +@@ -5901,13 +6071,22 @@ + * Bug 1955388 - prevent pinned tabs from commingling with non-pinned tabs + * when there are hidden tabs present + */ ++ if (tab.group?.hasAttribute("split-view-group")) { ++ tab = tab.group; ++ } ++ + if (tab.pinned && !targetElement?.pinned) { + // prevent pinned tab from being dragged past a non-pinned tab + targetElement = this.tabs[this.pinnedTabCount - 1]; + moveBefore = false; + } +- ++ if (targetElement?.group?.hasAttribute("split-view-group")) { ++ targetElement = targetElement.group; ++ } + let getContainer = () => { ++ if (tab.hasAttribute("zen-essential")) { ++ return document.getElementById("zen-essentials-container"); ++ } + if (tab.pinned && this.tabContainer.verticalMode) { + return this.tabContainer.verticalPinnedTabsContainer; + } +@@ -5937,7 +6116,7 @@ } moveTabToGroup(aTab, aGroup) { @@ -566,7 +645,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 return; } if (aTab.group && aTab.group.id === aGroup.id) { -@@ -5721,6 +5866,10 @@ +@@ -5961,6 +6140,10 @@ moveActionCallback(); @@ -577,7 +656,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 // Clear tabs cache after moving nodes because the order of tabs may have // changed. this.tabContainer._invalidateCachedTabs(); -@@ -5771,7 +5920,7 @@ +@@ -6015,7 +6198,7 @@ createLazyBrowser, }; @@ -586,7 +665,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 if (aIndex < numPinned || (aTab.pinned && aIndex == numPinned)) { params.pinned = true; } -@@ -6513,7 +6662,7 @@ +@@ -6765,7 +6948,7 @@ // preventDefault(). It will still raise the window if appropriate. break; } @@ -595,7 +674,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 window.focus(); aEvent.preventDefault(); break; -@@ -7415,6 +7564,7 @@ +@@ -7671,6 +7854,7 @@ aWebProgress.isTopLevel ) { this.mTab.setAttribute("busy", "true"); @@ -603,25 +682,25 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..06a4aae50ebe8a42d08d4689d8e80a63 gBrowser._tabAttrModified(this.mTab, ["busy"]); this.mTab._notselectedsinceload = !this.mTab.selected; } -@@ -8381,7 +8531,7 @@ var TabContextMenu = { +@@ -8640,7 +8824,7 @@ var TabContextMenu = { ); contextUnpinSelectedTabs.hidden = - !this.contextTab.pinned || !multiselectionContext; + !this.contextTab.pinned || !this.multiselected; - + gZenPinnedTabManager.updatePinnedTabContextMenu(this.contextTab); // Move Tab items let contextMoveTabOptions = document.getElementById( "context_moveTabOptions" -@@ -8414,7 +8564,7 @@ var TabContextMenu = { - let contextMoveTabToStart = document.getElementById("context_moveToStart"); +@@ -8674,7 +8858,7 @@ var TabContextMenu = { let isFirstTab = - tabsToMove[0] == visibleTabs[0] || -- tabsToMove[0] == visibleTabs[gBrowser.pinnedTabCount]; -+ tabsToMove[0] == visibleTabs[gBrowser._numVisiblePinTabs]; + !this.contextTabs[0].group && + (this.contextTabs[0] == visibleTabs[0] || +- this.contextTabs[0] == visibleTabs[gBrowser.pinnedTabCount]); ++ this.contextTabs[0] == visibleTabs[gBrowser._numVisiblePinTabs]); contextMoveTabToStart.disabled = isFirstTab && allSelectedTabsAdjacent; document.getElementById("context_openTabInWindow").disabled = -@@ -8647,6 +8797,7 @@ var TabContextMenu = { +@@ -8904,6 +9088,7 @@ var TabContextMenu = { if (this.contextTab.multiselected) { gBrowser.removeMultiSelectedTabs(); } else { diff --git a/src/browser/components/tabbrowser/content/tabs-js.patch b/src/browser/components/tabbrowser/content/tabs-js.patch index 5c93bcbc1..7418cf6fc 100644 --- a/src/browser/components/tabbrowser/content/tabs-js.patch +++ b/src/browser/components/tabbrowser/content/tabs-js.patch @@ -1,8 +1,8 @@ diff --git a/browser/components/tabbrowser/content/tabs.js b/browser/components/tabbrowser/content/tabs.js -index fa96568d366fd3608f9bd583fa793150bd815c8b..1c940a3b162919256ca73fa867c5c261a3395e25 100644 +index 0fbdbf3aefc467880e6b0bae2615cb145735cb0f..99a84a1cae6c18f3a80b7490dfc61712b38f6909 100644 --- a/browser/components/tabbrowser/content/tabs.js +++ b/browser/components/tabbrowser/content/tabs.js -@@ -94,7 +94,7 @@ +@@ -93,7 +93,7 @@ }; this.arrowScrollbox._canScrollToElement = element => { if (isTab(element)) { @@ -11,7 +11,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..1c940a3b162919256ca73fa867c5c261 } return true; }; -@@ -339,7 +339,7 @@ +@@ -347,7 +347,7 @@ // and we're not hitting the scroll buttons. if ( event.button != 0 || @@ -20,7 +20,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..1c940a3b162919256ca73fa867c5c261 event.composedTarget.localName == "toolbarbutton" ) { return; -@@ -388,6 +388,7 @@ +@@ -396,6 +396,7 @@ // Reset the "ignored click" flag target._ignoredCloseButtonClicks = false; } @@ -28,7 +28,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..1c940a3b162919256ca73fa867c5c261 } /* Protects from close-tab-button errant doubleclick: -@@ -683,7 +684,7 @@ +@@ -693,7 +694,7 @@ if (this.#isContainerVerticalPinnedExpanded(tab)) { // In expanded vertical mode, the max number of pinned tabs per row is dynamic // Set this before adjusting dragged tab's position @@ -37,7 +37,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..1c940a3b162919256ca73fa867c5c261 let tabsPerRow = 0; let position = 0; for (let pinnedTab of pinnedTabs) { -@@ -883,6 +884,10 @@ +@@ -899,6 +900,10 @@ } let draggedTab = event.dataTransfer.mozGetDataAt(TAB_DROP_TYPE, 0); @@ -48,7 +48,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..1c940a3b162919256ca73fa867c5c261 if ( (effects == "move" || effects == "copy") && this == draggedTab.container && -@@ -996,6 +1001,18 @@ +@@ -1012,6 +1017,18 @@ this._tabDropIndicator.hidden = true; event.stopPropagation(); @@ -67,41 +67,32 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..1c940a3b162919256ca73fa867c5c261 if (draggedTab && dropEffect == "copy") { // copy the dropped tab (wherever it's from) let newIndex = this._getDropIndex(event); -@@ -1034,10 +1051,11 @@ +@@ -1050,10 +1067,11 @@ } } else { - let pinned = draggedTab.pinned; + let isPinned = draggedTab.pinned; - let numPinned = gBrowser.pinnedTabCount; -- let tabs = this.visibleTabs.slice( -- pinned ? 0 : numPinned, -- pinned ? numPinned : undefined -+ let numPinned = gBrowser._numVisiblePinTabs; +- let tabs = this.ariaFocusableItems.slice( +- isPinned ? 0 : numPinned, +- isPinned ? numPinned : undefined ++ let numPinned = gBrowser._numVisiblePinTabsWithoutCollapsed; + let essential = draggedTab.hasAttribute("zen-essential"); -+ let tabs = this.visibleTabs.filter(tab => !tab.hasAttribute("zen-glance-tab")).slice( -+ pinned ? (essential ? 0 : gBrowser._numZenVisibleEssentials) : numPinned, -+ pinned ? (essential ? gBrowser._numZenVisibleEssentials : numPinned) : undefined ++ 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 screenAxis = this.verticalMode ? "screenY" : "screenX"; -@@ -1114,7 +1132,7 @@ - let postTransitionCleanup = () => { +@@ -1129,7 +1147,7 @@ tab.removeAttribute("tabdrop-samewindow"); - -- this._finishAnimateTabMove(); -+ this._finishAnimateTabMove(true); - if (dropIndex !== false) { - gBrowser.moveTabTo(tab, dropIndex); - if (!directionForward) { -@@ -1122,7 +1140,7 @@ - } - } + resolve(); }; - if (gReduceMotion) { + if (true || gReduceMotion) { postTransitionCleanup(); } else { let onTransitionEnd = transitionendEvent => { -@@ -1249,7 +1267,7 @@ +@@ -1246,7 +1264,7 @@ return; } } @@ -110,7 +101,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..1c940a3b162919256ca73fa867c5c261 gBrowser.loadTabs(urls, { inBackground, replace, -@@ -1279,13 +1297,23 @@ +@@ -1276,13 +1294,23 @@ return; } @@ -136,7 +127,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..1c940a3b162919256ca73fa867c5c261 ) { delete draggedTab._dragData; return; -@@ -1517,7 +1545,7 @@ +@@ -1504,7 +1532,7 @@ } get newTabButton() { @@ -145,7 +136,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..1c940a3b162919256ca73fa867c5c261 } get verticalMode() { -@@ -1537,28 +1565,40 @@ +@@ -1524,29 +1552,41 @@ if (this.#allTabs) { return this.#allTabs; } @@ -189,12 +180,13 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..1c940a3b162919256ca73fa867c5c261 } get allGroups() { -- let children = Array.from(this.arrowScrollbox.children); -+ let children = ZenWorkspaces.tabboxChildren; - return children.filter(node => node.tagName == "tab-group"); + let children = Array.from(this.arrowScrollbox.children); +- return children.filter(node => node.tagName == "tab-group"); ++ return ZenWorkspaces.allTabGroups; } -@@ -1579,7 +1619,7 @@ + /** +@@ -1566,7 +1606,7 @@ */ get visibleTabs() { if (!this.#visibleTabs) { @@ -203,28 +195,47 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..1c940a3b162919256ca73fa867c5c261 } return this.#visibleTabs; } -@@ -1613,10 +1653,8 @@ - return this.#focusableItems; +@@ -1601,23 +1641,18 @@ } + let elementIndex = 0; - let verticalPinnedTabsContainer = document.getElementById( - "vertical-pinned-tabs-container" - ); +- for (let i = 0; i < verticalPinnedTabsContainer.childElementCount; i++) { +- verticalPinnedTabsContainer.children[i].elementIndex = elementIndex++; +- } - let children = Array.from(this.arrowScrollbox.children); -+ let verticalPinnedTabsContainer = this.verticalPinnedTabsContainer; ++ let verticalPinnedTabsContainer = this.verticalPinnedTabsContainer + let children = ZenWorkspaces.tabboxChildrenWithoutEmpty; let focusableItems = []; - for (let child of children) { -@@ -1632,6 +1670,7 @@ +- for (let child of children) { ++ for (let child of [...document.getElementById("zen-essentials-container").children, ...verticalPinnedTabsContainer.children, ...children]) { + if (isTab(child) && child.visible) { + child.elementIndex = elementIndex++; + focusableItems.push(child); + } else if (isTabGroup(child)) { + child.labelElement.elementIndex = elementIndex++; + focusableItems.push(child.labelElement); +- if (!child.collapsed) { ++ if (!child.collapsed && !child.hasAttribute("split-view-group")) { + let visibleTabsInGroup = child.tabs.filter(tab => tab.visible); + visibleTabsInGroup.forEach(tab => { + tab.elementIndex = elementIndex++; +@@ -1627,10 +1662,7 @@ + } } - this.#focusableItems = [ -+ ...document.getElementById("zen-essentials-container").children, - ...verticalPinnedTabsContainer.children, - ...focusableItems, - ]; -@@ -1642,6 +1681,7 @@ +- this.#focusableItems = [ +- ...verticalPinnedTabsContainer.children, +- ...focusableItems, +- ]; ++ this.#focusableItems = focusableItems; + + return this.#focusableItems; + } +@@ -1638,6 +1670,7 @@ _invalidateCachedTabs() { this.#allTabs = null; this._invalidateCachedVisibleTabs(); @@ -232,7 +243,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..1c940a3b162919256ca73fa867c5c261 } _invalidateCachedVisibleTabs() { -@@ -1656,8 +1696,8 @@ +@@ -1652,8 +1685,8 @@ #isContainerVerticalPinnedExpanded(tab) { return ( this.verticalMode && @@ -243,7 +254,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..1c940a3b162919256ca73fa867c5c261 ); } -@@ -1672,7 +1712,7 @@ +@@ -1668,7 +1701,7 @@ if (node == null) { // We have a container for non-tab elements at the end of the scrollbox. @@ -252,7 +263,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..1c940a3b162919256ca73fa867c5c261 } node.before(tab); -@@ -1772,7 +1812,7 @@ +@@ -1763,7 +1796,7 @@ // There are separate "new tab" buttons for horizontal tabs toolbar, vertical tabs and // for when the tab strip is overflowed (which is shared by vertical and horizontal tabs); // Attach the long click popup to all of them. @@ -261,7 +272,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..1c940a3b162919256ca73fa867c5c261 const newTab2 = this.newTabButton; const newTabVertical = document.getElementById( "vertical-tabs-newtab-button" -@@ -1855,7 +1895,7 @@ +@@ -1846,7 +1879,7 @@ let rect = ele => { return window.windowUtils.getBoundsWithoutFlushing(ele); }; @@ -270,7 +281,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..1c940a3b162919256ca73fa867c5c261 if (tab && rect(tab).width <= this._tabClipWidth) { this.setAttribute("closebuttons", "activetab"); } else { -@@ -1867,10 +1907,12 @@ +@@ -1858,10 +1891,12 @@ _handleTabSelect(aInstant) { let selectedTab = this.selectedItem; @@ -283,7 +294,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..1c940a3b162919256ca73fa867c5c261 selectedTab._notselectedsinceload = false; } -@@ -1882,7 +1924,7 @@ +@@ -1873,7 +1908,7 @@ return; } @@ -292,7 +303,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..1c940a3b162919256ca73fa867c5c261 if (!tabs.length) { return; } -@@ -1918,7 +1960,7 @@ +@@ -1909,7 +1944,7 @@ if (isEndTab && !this._hasTabTempMaxWidth) { return; } @@ -301,7 +312,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..1c940a3b162919256ca73fa867c5c261 // Force tabs to stay the same width, unless we're closing the last tab, // which case we need to let them expand just enough so that the overall // tabbar width is the same. -@@ -1933,7 +1975,7 @@ +@@ -1924,7 +1959,7 @@ let tabsToReset = []; for (let i = numPinned; i < tabs.length; i++) { let tab = tabs[i]; @@ -310,7 +321,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..1c940a3b162919256ca73fa867c5c261 if (!isEndTab) { // keep tabs the same width tab.style.transition = "none"; -@@ -1999,16 +2041,15 @@ +@@ -1990,16 +2025,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. @@ -333,7 +344,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..1c940a3b162919256ca73fa867c5c261 } } -@@ -2016,9 +2057,7 @@ +@@ -2007,9 +2041,7 @@ } _resetVerticalPinnedTabs() { @@ -344,7 +355,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..1c940a3b162919256ca73fa867c5c261 if (!verticalTabsContainer.children.length) { return; -@@ -2031,8 +2070,8 @@ +@@ -2022,8 +2054,8 @@ } _positionPinnedTabs() { @@ -355,7 +366,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..1c940a3b162919256ca73fa867c5c261 let absPositionHorizontalTabs = this.overflowing && tabs.length > numPinned && numPinned > 0; -@@ -2041,7 +2080,7 @@ +@@ -2032,7 +2064,7 @@ if (this.verticalMode) { this._updateVerticalPinnedTabs(); @@ -364,7 +375,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..1c940a3b162919256ca73fa867c5c261 let layoutData = this._pinnedTabsLayoutCache; let uiDensity = document.documentElement.getAttribute("uidensity"); if (!layoutData || layoutData.uiDensity != uiDensity) { -@@ -2113,7 +2152,7 @@ +@@ -2104,7 +2136,7 @@ return; } @@ -373,7 +384,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..1c940a3b162919256ca73fa867c5c261 let directionX = screenX > dragData.animLastScreenX; let directionY = screenY > dragData.animLastScreenY; -@@ -2121,7 +2160,7 @@ +@@ -2112,7 +2144,7 @@ dragData.animLastScreenX = screenX; let { width: tabWidth, height: tabHeight } = @@ -382,23 +393,40 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..1c940a3b162919256ca73fa867c5c261 let shiftSizeX = tabWidth * movingTabs.length; let shiftSizeY = tabHeight; dragData.tabWidth = tabWidth; -@@ -2296,10 +2335,11 @@ - } +@@ -2296,11 +2328,15 @@ + this.#clearDragOverCreateGroupTimer(); - let pinned = draggedTab.pinned; + let isPinned = draggedTab.pinned; - let numPinned = gBrowser.pinnedTabCount; -- let tabs = this.visibleTabs.slice( -- pinned ? 0 : numPinned, -- pinned ? numPinned : undefined -+ let numPinned = gBrowser._numVisiblePinTabs; +- let tabs = this.ariaFocusableItems.slice( +- isPinned ? 0 : numPinned, +- isPinned ? numPinned : undefined ++ let numPinned = gBrowser._numVisiblePinTabsWithoutCollapsed; + let essential = draggedTab.hasAttribute("zen-essential"); -+ let tabs = this.visibleTabs.filter(tab => !tab.hasAttribute("zen-glance-tab")).slice( -+ pinned ? (essential ? 0 : gBrowser._numZenVisibleEssentials) : numPinned, -+ pinned ? (essential ? gBrowser._numZenVisibleEssentials : numPinned) : undefined ++ let tabs = this.ariaFocusableItems.filter(tab => !tab.hasAttribute("zen-glance-tab")).slice( ++ isPinned ? (essential ? 0 : gBrowser._numZenVisibleEssentials) : numPinned, ++ isPinned ? (essential ? gBrowser._numZenVisibleEssentials : numPinned) : undefined ); ++ if (draggedTab.group?.hasAttribute("split-view-group")) { ++ draggedTab = draggedTab.group.labelElement; ++ } if (this.#rtlMode) { -@@ -2348,7 +2388,11 @@ + tabs.reverse(); +@@ -2328,6 +2364,12 @@ + let lastTab = tabs.at(-1); + let lastMovingTab = movingTabs.at(-1); + let firstMovingTab = movingTabs[0]; ++ if (lastMovingTab.group?.hasAttribute("split-view-group")) { ++ lastMovingTab = lastMovingTab.group; ++ } ++ if (firstMovingTab.group?.hasAttribute("split-view-group")) { ++ firstMovingTab = firstMovingTab.group; ++ } + let endEdge = ele => ele[screenAxis] + bounds(ele)[size]; + let lastMovingTabScreen = endEdge(lastMovingTab); + let firstMovingTabScreen = firstMovingTab[screenAxis]; +@@ -2348,7 +2390,11 @@ translate = Math.min(Math.max(translate, firstBound), lastBound); for (let tab of movingTabs) { @@ -411,25 +439,71 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..1c940a3b162919256ca73fa867c5c261 } dragData.translatePos = translate; -@@ -2484,12 +2528,16 @@ +@@ -2485,6 +2531,9 @@ + break; + } + let element = tabs[mid]; ++ if (element?.group?.hasAttribute("split-view-group")) { ++ element = element.group.labelElement; ++ } + let elementForSize = isTabGroupLabel(element) + ? element.parentElement + : element; +@@ -2507,6 +2556,10 @@ + if (!dropElement) { + dropElement = this.ariaFocusableItems[oldDropElementIndex]; + } ++ if (dropElement?.group?.hasAttribute("split-view-group")) { ++ // We focus the group label element, not the group itself. ++ dropElement = dropElement.group.labelElement; ++ } + let newDropElementIndex = dropElement + ? dropElement.elementIndex + : oldDropElementIndex; +@@ -2515,7 +2568,7 @@ + let shouldCreateGroupOnDrop; + let dropBefore; + if (dropElement) { +- let dropElementForOverlap = isTabGroupLabel(dropElement) ++ let dropElementForOverlap = isTabGroupLabel(dropElement) && !dropElement.closest("tab-group")?.hasAttribute("split-view-group") + ? dropElement.parentElement + : dropElement; + +@@ -2566,12 +2619,12 @@ + } + } + +- if (gBrowser._tabGroupsEnabled && !isPinned) { ++ if (true) { + let dragOverGroupingThreshold = 1 - moveOverThreshold; + + // When dragging tab(s) over an ungrouped tab, signal to the user + // that dropping the tab(s) will create a new tab group. +- shouldCreateGroupOnDrop = ++ shouldCreateGroupOnDrop = false && + dropElement != draggedTab && + isTab(dropElement) && + !dropElement?.group && +@@ -2639,7 +2692,7 @@ // Shift background tabs to leave a gap where the dragged tab // would currently be dropped. - for (let tab of tabs) { -- if (tab == draggedTab) { -+ if (tab == draggedTab || (tab.group?.hasAttribute("split-view-group") && tab.group == draggedTab.group)) { + for (let item of tabs) { +- if (item == draggedTab) { ++ if (item == draggedTab || (item.group?.hasAttribute("split-view-group") && item.group == draggedTab.group)) { continue; } - let shift = getTabShift(tab, newIndex); - let transform = shift ? `${translateAxis}(${shift}px)` : ""; -+ if (tab.group?.hasAttribute("split-view-group")) { -+ tab.group.style.transform = transform; -+ } else { - tab.style.transform = transform; -+ } - if (tab.group?.tabs[0] == tab) { - tab.group.style.setProperty( - "--tabgroup-dragover-transform", -@@ -2541,8 +2589,9 @@ + +@@ -2648,6 +2701,9 @@ + if (isTabGroupLabel(item)) { + // Shift the `.tab-group-label-container` to shift the label element. + item = item.parentElement; ++ if (item.parentElement?.hasAttribute("split-view-group")) { ++ item = item.parentElement; ++ } + } + item.style.transform = transform; + } +@@ -2697,8 +2753,9 @@ ); } @@ -441,16 +515,21 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..1c940a3b162919256ca73fa867c5c261 return; } -@@ -2553,6 +2602,7 @@ - tab.style.transform = ""; - if (tab.group) { - tab.group.style.removeProperty("--tabgroup-dragover-transform"); -+ tab.group.style.transform = ""; +@@ -2711,6 +2768,12 @@ + item = item.parentElement; } - tab.removeAttribute("dragover-createGroup"); + item.style.transform = ""; ++ if (item.closest("tab-group")?.hasAttribute("split-view-group")) item.closest("tab-group").style.transform = ""; ++ if (item.closest("tab-group")?.hasAttribute("split-view-group")) { ++ for (let tab of item.closest("tab-group").tabs) { ++ tab.style.transform = ""; ++ } ++ } + item.removeAttribute("dragover-createGroup"); } -@@ -2604,7 +2654,7 @@ - movingTab._moveTogetherSelectedTabsData.newIndex = movingTabNewIndex; + this.removeAttribute("movingtab-createGroup"); +@@ -2754,7 +2817,7 @@ + let postTransitionCleanup = () => { movingTab._moveTogetherSelectedTabsData.animate = false; }; - if (gReduceMotion) { @@ -458,19 +537,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..1c940a3b162919256ca73fa867c5c261 postTransitionCleanup(); } else { let onTransitionEnd = transitionendEvent => { -@@ -2707,9 +2757,9 @@ - function newIndex(aTab, index) { - // Don't allow mixing pinned and unpinned tabs. - if (aTab.pinned) { -- return Math.min(index, gBrowser.pinnedTabCount - 1); -+ return Math.min(index, gBrowser._numVisiblePinTabs - 1); - } -- return Math.max(index, gBrowser.pinnedTabCount); -+ return Math.max(index, gBrowser._numVisiblePinTabs); - } - } - -@@ -2793,7 +2843,7 @@ +@@ -2924,7 +2987,7 @@ } _notifyBackgroundTab(aTab) { diff --git a/src/browser/components/urlbar/UrlbarInput-sys-mjs.patch b/src/browser/components/urlbar/UrlbarInput-sys-mjs.patch index ced98537b..d5883a485 100644 --- a/src/browser/components/urlbar/UrlbarInput-sys-mjs.patch +++ b/src/browser/components/urlbar/UrlbarInput-sys-mjs.patch @@ -1,5 +1,5 @@ diff --git a/browser/components/urlbar/UrlbarInput.sys.mjs b/browser/components/urlbar/UrlbarInput.sys.mjs -index 02c328f0d0724b0cf95c820fe49a43e94a97b3c2..79b9161544633d319d7e550dd95334b62e85eed4 100644 +index 6de4c2ac873b1424abee118a143ac377f26beb80..3b41d52c8e00860ce9913a334f15f70e1db08a7c 100644 --- a/browser/components/urlbar/UrlbarInput.sys.mjs +++ b/browser/components/urlbar/UrlbarInput.sys.mjs @@ -67,6 +67,13 @@ XPCOMUtils.defineLazyPreferenceGetter( @@ -16,7 +16,7 @@ index 02c328f0d0724b0cf95c820fe49a43e94a97b3c2..79b9161544633d319d7e550dd95334b6 const DEFAULT_FORM_HISTORY_NAME = "searchbar-history"; const SEARCH_BUTTON_CLASS = "urlbar-search-button"; -@@ -349,7 +356,11 @@ export class UrlbarInput { +@@ -348,7 +355,11 @@ export class UrlbarInput { // See _on_select(). HTMLInputElement.select() dispatches a "select" // event but does not set the primary selection. this._suppressPrimaryAdjustment = true; @@ -28,7 +28,7 @@ index 02c328f0d0724b0cf95c820fe49a43e94a97b3c2..79b9161544633d319d7e550dd95334b6 this._suppressPrimaryAdjustment = false; } -@@ -425,6 +436,10 @@ export class UrlbarInput { +@@ -424,6 +435,10 @@ export class UrlbarInput { hideSearchTerms = false, isSameDocument = false ) { @@ -39,7 +39,7 @@ index 02c328f0d0724b0cf95c820fe49a43e94a97b3c2..79b9161544633d319d7e550dd95334b6 // We only need to update the searchModeUI on tab switch conditionally // as we only persist searchMode with ScotchBonnet enabled. if ( -@@ -698,8 +713,11 @@ export class UrlbarInput { +@@ -697,8 +712,11 @@ export class UrlbarInput { return; } } @@ -52,7 +52,7 @@ index 02c328f0d0724b0cf95c820fe49a43e94a97b3c2..79b9161544633d319d7e550dd95334b6 } /** -@@ -943,6 +961,10 @@ export class UrlbarInput { +@@ -937,6 +955,10 @@ export class UrlbarInput { // Nullify search mode before setURI so it won't try to restore it. this.searchMode = null; this.setURI(null, true, false, true); @@ -63,7 +63,7 @@ index 02c328f0d0724b0cf95c820fe49a43e94a97b3c2..79b9161544633d319d7e550dd95334b6 if (this.value && this.focused) { this.select(); } -@@ -1098,7 +1120,11 @@ export class UrlbarInput { +@@ -1092,7 +1114,11 @@ export class UrlbarInput { } if (!this.#providesSearchMode(result)) { @@ -76,7 +76,18 @@ index 02c328f0d0724b0cf95c820fe49a43e94a97b3c2..79b9161544633d319d7e550dd95334b6 } this.controller.recordSelectedResult(event, result); -@@ -2157,6 +2183,11 @@ export class UrlbarInput { +@@ -2124,6 +2150,10 @@ export class UrlbarInput { + await this.#updateLayoutBreakoutDimensions(); + } + ++ async zenUpdateLayoutBreakout() { ++ await this.#updateLayoutBreakout(); ++ } ++ + startLayoutExtend() { + if (!this.#allowBreakout || this.hasAttribute("breakout-extend")) { + // Do not expand if the Urlbar does not support being expanded or it is +@@ -2146,6 +2176,11 @@ export class UrlbarInput { this.setAttribute("breakout-extend", "true"); @@ -88,7 +99,7 @@ index 02c328f0d0724b0cf95c820fe49a43e94a97b3c2..79b9161544633d319d7e550dd95334b6 // Enable the animation only after the first extend call to ensure it // doesn't run when opening a new window. if (!this.hasAttribute("breakout-extend-animate")) { -@@ -2176,6 +2207,11 @@ export class UrlbarInput { +@@ -2165,6 +2200,11 @@ export class UrlbarInput { return; } @@ -100,7 +111,7 @@ index 02c328f0d0724b0cf95c820fe49a43e94a97b3c2..79b9161544633d319d7e550dd95334b6 this.removeAttribute("breakout-extend"); this.#updateTextboxPosition(); } -@@ -2998,7 +3034,7 @@ export class UrlbarInput { +@@ -2997,7 +3037,7 @@ export class UrlbarInput { */ _trimValue(val) { let trimmedValue = lazy.UrlbarPrefs.get("trimURLs") @@ -109,7 +120,7 @@ index 02c328f0d0724b0cf95c820fe49a43e94a97b3c2..79b9161544633d319d7e550dd95334b6 : val; // Only trim value if the directionality doesn't change to RTL and we're not // showing a strikeout https protocol. -@@ -3365,7 +3401,7 @@ export class UrlbarInput { +@@ -3359,7 +3399,7 @@ export class UrlbarInput { } else { where = lazy.BrowserUtils.whereToOpenLink(event, false, false); } @@ -118,7 +129,7 @@ index 02c328f0d0724b0cf95c820fe49a43e94a97b3c2..79b9161544633d319d7e550dd95334b6 if (where == "current") { where = "tab"; } else if (where == "tab") { -@@ -3380,6 +3416,9 @@ export class UrlbarInput { +@@ -3374,6 +3414,9 @@ export class UrlbarInput { ) { where = "current"; } @@ -128,7 +139,7 @@ index 02c328f0d0724b0cf95c820fe49a43e94a97b3c2..79b9161544633d319d7e550dd95334b6 return where; } -@@ -3921,6 +3960,11 @@ export class UrlbarInput { +@@ -4048,6 +4091,11 @@ export class UrlbarInput { } _on_click(event) { @@ -140,7 +151,7 @@ index 02c328f0d0724b0cf95c820fe49a43e94a97b3c2..79b9161544633d319d7e550dd95334b6 if ( event.target == this.inputField || event.target == this._inputContainer || -@@ -3992,7 +4036,7 @@ export class UrlbarInput { +@@ -4119,7 +4167,7 @@ export class UrlbarInput { } } @@ -149,7 +160,7 @@ index 02c328f0d0724b0cf95c820fe49a43e94a97b3c2..79b9161544633d319d7e550dd95334b6 this.view.autoOpen({ event }); } else { if (this._untrimOnFocusAfterKeydown) { -@@ -4032,9 +4076,12 @@ export class UrlbarInput { +@@ -4159,9 +4207,12 @@ export class UrlbarInput { } _on_mousedown(event) { @@ -163,7 +174,7 @@ index 02c328f0d0724b0cf95c820fe49a43e94a97b3c2..79b9161544633d319d7e550dd95334b6 if ( event.target != this.inputField && -@@ -4044,8 +4091,8 @@ export class UrlbarInput { +@@ -4171,8 +4222,8 @@ export class UrlbarInput { break; } diff --git a/src/browser/components/urlbar/UrlbarView-sys-mjs.patch b/src/browser/components/urlbar/UrlbarView-sys-mjs.patch index 046c8d571..4dc2dbf40 100644 --- a/src/browser/components/urlbar/UrlbarView-sys-mjs.patch +++ b/src/browser/components/urlbar/UrlbarView-sys-mjs.patch @@ -1,8 +1,8 @@ diff --git a/browser/components/urlbar/UrlbarView.sys.mjs b/browser/components/urlbar/UrlbarView.sys.mjs -index 197e0a1c3030b6346c49a010338130797c1e5f4b..333d38aea2116c5407ffc242b805db633df12968 100644 +index 0e6724f590490354cc4d4bde5176556f7e4b4a7c..bffc52488443d62de46abe5cbdac4504831c4a09 100644 --- a/browser/components/urlbar/UrlbarView.sys.mjs +++ b/browser/components/urlbar/UrlbarView.sys.mjs -@@ -628,7 +628,7 @@ export class UrlbarView { +@@ -610,7 +610,7 @@ export class UrlbarView { !this.input.value || this.input.getAttribute("pageproxystate") == "valid" ) { diff --git a/src/browser/extensions/newtab/content-src/components/CustomizeMenu/ContentSection/ContentSection-jsx.patch b/src/browser/extensions/newtab/content-src/components/CustomizeMenu/ContentSection/ContentSection-jsx.patch new file mode 100644 index 000000000..f92d7c824 --- /dev/null +++ b/src/browser/extensions/newtab/content-src/components/CustomizeMenu/ContentSection/ContentSection-jsx.patch @@ -0,0 +1,13 @@ +diff --git a/browser/extensions/newtab/content-src/components/CustomizeMenu/ContentSection/ContentSection.jsx b/browser/extensions/newtab/content-src/components/CustomizeMenu/ContentSection/ContentSection.jsx +index dcf192d0ab7323d69f1bf505971e57c98ad4397d..a4d88304786af35030391f71bc99eee6cf7c1a64 100644 +--- a/browser/extensions/newtab/content-src/components/CustomizeMenu/ContentSection/ContentSection.jsx ++++ b/browser/extensions/newtab/content-src/components/CustomizeMenu/ContentSection/ContentSection.jsx +@@ -188,7 +188,7 @@ export class ContentSection extends React.PureComponent { + data-l10n-args='{"num": 4}' + /> + </select> +- {mayHaveSponsoredTopSites && ( ++ {false && ( + <div className="check-wrapper" role="presentation"> + <input + id="sponsored-shortcuts" diff --git a/src/browser/components/newtab/lib/AboutPreferences-sys-mjs.patch b/src/browser/extensions/newtab/lib/AboutPreferences-sys-mjs.patch similarity index 56% rename from src/browser/components/newtab/lib/AboutPreferences-sys-mjs.patch rename to src/browser/extensions/newtab/lib/AboutPreferences-sys-mjs.patch index 8284caa02..20ee3686a 100644 --- a/src/browser/components/newtab/lib/AboutPreferences-sys-mjs.patch +++ b/src/browser/extensions/newtab/lib/AboutPreferences-sys-mjs.patch @@ -1,7 +1,7 @@ -diff --git a/browser/components/newtab/lib/AboutPreferences.sys.mjs b/browser/components/newtab/lib/AboutPreferences.sys.mjs -index 33f7ecdaeb7074c7633dd229a4446f2a8ed4b247..f422a9bfb9694b190e84e81a430a509b4ab8c986 100644 ---- a/browser/components/newtab/lib/AboutPreferences.sys.mjs -+++ b/browser/components/newtab/lib/AboutPreferences.sys.mjs +diff --git a/browser/extensions/newtab/lib/AboutPreferences.sys.mjs b/browser/extensions/newtab/lib/AboutPreferences.sys.mjs +index df9d63c2713b4237d8acca93f108d5c788caed8d..a80cc02fdec6e1056d26a6b5a1cdc1a602e5cf2a 100644 +--- a/browser/extensions/newtab/lib/AboutPreferences.sys.mjs ++++ b/browser/extensions/newtab/lib/AboutPreferences.sys.mjs @@ -34,7 +34,7 @@ const PREFS_BEFORE_SECTIONS = () => [ titleString: "home-prefs-shortcuts-header", descString: "home-prefs-shortcuts-description", diff --git a/src/browser/extensions/newtab/lib/ActivityStream-sys-mjs.patch b/src/browser/extensions/newtab/lib/ActivityStream-sys-mjs.patch new file mode 100644 index 000000000..123516148 --- /dev/null +++ b/src/browser/extensions/newtab/lib/ActivityStream-sys-mjs.patch @@ -0,0 +1,13 @@ +diff --git a/browser/extensions/newtab/lib/ActivityStream.sys.mjs b/browser/extensions/newtab/lib/ActivityStream.sys.mjs +index b3d89213ec27151f05e9990d5a55c6e81ce3655f..3c485f616fa2daba62aacbdde2dfb3122e244821 100644 +--- a/browser/extensions/newtab/lib/ActivityStream.sys.mjs ++++ b/browser/extensions/newtab/lib/ActivityStream.sys.mjs +@@ -214,7 +214,7 @@ export const PREFS_CONFIG = new Map([ + "showSponsoredTopSites", + { + title: "Show sponsored top sites", +- value: true, ++ value: false, + }, + ], + [ diff --git a/src/browser/installer/windows/nsis/shared-nsh.patch b/src/browser/installer/windows/nsis/shared-nsh.patch index f8da06cfe..09a2396f0 100644 --- a/src/browser/installer/windows/nsis/shared-nsh.patch +++ b/src/browser/installer/windows/nsis/shared-nsh.patch @@ -1,5 +1,7 @@ diff --git a/browser/installer/windows/nsis/shared.nsh b/browser/installer/windows/nsis/shared.nsh -index b7f8e1453089ab5f1945e1a65f038e17b5273571..5297f5ed70fe3446e55be37df486fb4ad791a446 100644 +old mode 100755 +new mode 100644 +index bc8f5775785e08a0cc1c8a6ad1f0e19e980c607d..bf11d30d10fb38855f6a0e8d5346be271042769e --- a/browser/installer/windows/nsis/shared.nsh +++ b/browser/installer/windows/nsis/shared.nsh @@ -513,6 +513,7 @@ ${RemoveDefaultBrowserAgentShortcut} @@ -26,7 +28,7 @@ index b7f8e1453089ab5f1945e1a65f038e17b5273571..5297f5ed70fe3446e55be37df486fb4a ${WriteApplicationsSupportedType} ${RegKey} ".xht" ${WriteApplicationsSupportedType} ${RegKey} ".xhtml" ${WriteApplicationsSupportedType} ${RegKey} ".xml" -@@ -1728,6 +1731,8 @@ Function SetAsDefaultAppUserHKCU +@@ -1727,6 +1730,8 @@ Function SetAsDefaultAppUserHKCU Pop $0 AppAssocReg::SetAppAsDefault "$R9" ".avif" "file" Pop $0 @@ -35,7 +37,7 @@ index b7f8e1453089ab5f1945e1a65f038e17b5273571..5297f5ed70fe3446e55be37df486fb4a AppAssocReg::SetAppAsDefault "$R9" ".xht" "file" Pop $0 AppAssocReg::SetAppAsDefault "$R9" ".xhtml" "file" -@@ -1857,7 +1862,7 @@ FunctionEnd +@@ -1856,7 +1861,7 @@ FunctionEnd ; uninstalled. ; Do all of that twice, once for the local machine and once for the current user diff --git a/src/browser/installer/windows/nsis/uninstaller-nsi.patch b/src/browser/installer/windows/nsis/uninstaller-nsi.patch index b2de9cb9a..efc934a82 100644 --- a/src/browser/installer/windows/nsis/uninstaller-nsi.patch +++ b/src/browser/installer/windows/nsis/uninstaller-nsi.patch @@ -1,5 +1,7 @@ diff --git a/browser/installer/windows/nsis/uninstaller.nsi b/browser/installer/windows/nsis/uninstaller.nsi -index 559c8b46ee06bc42c91da49b5d9e397fe8ff6126..62094a5d98712a41a607ba01ca2adfa1e4f51ccd 100644 +old mode 100755 +new mode 100644 +index 559c8b46ee06bc42c91da49b5d9e397fe8ff6126..62094a5d98712a41a607ba01ca2adfa1e4f51ccd --- a/browser/installer/windows/nsis/uninstaller.nsi +++ b/browser/installer/windows/nsis/uninstaller.nsi @@ -507,6 +507,7 @@ Section "Uninstall" diff --git a/src/browser/modules/BrowserDOMWindow-sys-mjs.patch b/src/browser/modules/BrowserDOMWindow-sys-mjs.patch new file mode 100644 index 000000000..0b909dad0 --- /dev/null +++ b/src/browser/modules/BrowserDOMWindow-sys-mjs.patch @@ -0,0 +1,24 @@ +diff --git a/browser/modules/BrowserDOMWindow.sys.mjs b/browser/modules/BrowserDOMWindow.sys.mjs +index 2bc4918c15b5ea80e486db66d20bb9668b9e29c0..3800a3807f11c5f65ce0d602a775f95037f5dcf8 100644 +--- a/browser/modules/BrowserDOMWindow.sys.mjs ++++ b/browser/modules/BrowserDOMWindow.sys.mjs +@@ -362,7 +362,7 @@ export class BrowserDOMWindow { + // Passing a null-URI to only create the content window, + // and pass true for aSkipLoad to prevent loading of + // about:blank +- return this.getContentWindowOrOpenURIInFrame( ++ let res = this.getContentWindowOrOpenURIInFrame( + null, + aParams, + aWhere, +@@ -370,6 +370,10 @@ export class BrowserDOMWindow { + aName, + true + ); ++ if (typeof this.win?.gZenGlanceManager !== "undefined" && this.win.toolbar.visible) { ++ this.win.gZenGlanceManager.onTabOpen(res, aURI); ++ } ++ return res; + } + + openURIInFrame(aURI, aParams, aWhere, aFlags, aName) { diff --git a/src/browser/modules/URILoadingHelper-sys-mjs.patch b/src/browser/modules/URILoadingHelper-sys-mjs.patch index ed966ee28..f3f4be2db 100644 --- a/src/browser/modules/URILoadingHelper-sys-mjs.patch +++ b/src/browser/modules/URILoadingHelper-sys-mjs.patch @@ -1,8 +1,8 @@ diff --git a/browser/modules/URILoadingHelper.sys.mjs b/browser/modules/URILoadingHelper.sys.mjs -index 313e895980c502d79f64f5a6ab838f6a96c83835..8a1a853567aeae2c368005d3757815799457212a 100644 +index c4428df9e1c43ba7a1dfefa2d55316023325d2db..191bc513862d5247e338c683b11ae891ab914479 100644 --- a/browser/modules/URILoadingHelper.sys.mjs +++ b/browser/modules/URILoadingHelper.sys.mjs -@@ -512,7 +512,7 @@ export const URILoadingHelper = { +@@ -510,7 +510,7 @@ export const URILoadingHelper = { // page. If a load request bounces off for the currently selected tab, // we'll open a new tab instead. let tab = w.gBrowser.getTabForBrowser(targetBrowser); diff --git a/src/browser/themes/BuiltInThemes-sys-mjs.patch b/src/browser/themes/BuiltInThemes-sys-mjs.patch index a21089d29..21c9c514d 100644 --- a/src/browser/themes/BuiltInThemes-sys-mjs.patch +++ b/src/browser/themes/BuiltInThemes-sys-mjs.patch @@ -1,5 +1,5 @@ diff --git a/browser/themes/BuiltInThemes.sys.mjs b/browser/themes/BuiltInThemes.sys.mjs -index c2d5dd7a18895ae8b4afbf386f122e7899c48cda..377d904bbf5adc92bf7cb0aa4c4c641794d828f3 100644 +index cc7f6cf93e04d339fb79a028b1e5ac6e79eae9c3..85e0d653f9a6d577bdea2a1c9d53018dd45684fa 100644 --- a/browser/themes/BuiltInThemes.sys.mjs +++ b/browser/themes/BuiltInThemes.sys.mjs @@ -74,7 +74,7 @@ class _BuiltInThemes { diff --git a/src/browser/themes/addons/dark/manifest-json.patch b/src/browser/themes/addons/dark/manifest-json.patch deleted file mode 100644 index afacba08f..000000000 --- a/src/browser/themes/addons/dark/manifest-json.patch +++ /dev/null @@ -1,37 +0,0 @@ -diff --git a/browser/themes/addons/dark/manifest.json b/browser/themes/addons/dark/manifest.json -index bfebde683d00b0acf26509139a0f662029d37c72..976b553f49e40b7ed02743d79ccc102fccffcf6f 100644 ---- a/browser/themes/addons/dark/manifest.json -+++ b/browser/themes/addons/dark/manifest.json -@@ -7,10 +7,10 @@ - } - }, - -- "name": "Dark", -+ "name": "Zen Dark", - "description": "A theme with a dark color scheme.", -- "author": "Mozilla", -+ "author": "Zen", - "version": "1.3.2", - - "icons": { "32": "icon.svg" }, - -@@ -58,7 +58,8 @@ - "color_scheme": "dark", - "panel_active": "color-mix(in srgb, currentColor 14%, transparent)", - "toolbar_field_icon_opacity": "1", -- "zap_gradient": "linear-gradient(90deg, #9059FF 0%, #FF4AA2 52.08%, #FFBD4F 100%)" -+ "zap_gradient": "linear-gradient(90deg, #9059FF 0%, #FF4AA2 52.08%, #FFBD4F 100%)", -+ "zen_main_browser_background": "var(--zen-themed-toolbar-bg)" - } - }, - -@@ -82,7 +83,8 @@ - "properties": { - "panel_active": "--arrowpanel-dimmed-further", - "toolbar_field_icon_opacity": "--urlbar-icon-fill-opacity", -- "zap_gradient": "--panel-separator-zap-gradient" -+ "zap_gradient": "--panel-separator-zap-gradient", -+ "zen_main_browser_background": "--zen-main-browser-background" - } - } - } diff --git a/src/browser/themes/addons/light/manifest-json.patch b/src/browser/themes/addons/light/manifest-json.patch deleted file mode 100644 index 5be9c4707..000000000 --- a/src/browser/themes/addons/light/manifest-json.patch +++ /dev/null @@ -1,37 +0,0 @@ -diff --git a/browser/themes/addons/light/manifest.json b/browser/themes/addons/light/manifest.json -index d490f8f08d203ded55b65fe1a19be105b61ee6c0..eb4349e939b979b3a4d7c525ee0c0f9a53079d4a 100644 ---- a/browser/themes/addons/light/manifest.json -+++ b/browser/themes/addons/light/manifest.json -@@ -7,10 +7,10 @@ - } - }, - -- "name": "Light", -+ "name": "Zen Light", - "description": "A theme with a light color scheme.", -- "author": "Mozilla", -+ "author": "Zen", - "version": "1.3", - - "icons": { "32": "icon.svg" }, - -@@ -59,7 +59,8 @@ - "panel_active": "color-mix(in srgb, currentColor 20%, transparent)", - "panel_active_darker": "color-mix(in srgb, currentColor 27%, transparent)", - "toolbar_field_icon_opacity": "0.72", -- "zap_gradient": "linear-gradient(90deg, #9059FF 0%, #FF4AA2 52.08%, #FFBD4F 100%)" -+ "zap_gradient": "linear-gradient(90deg, #9059FF 0%, #FF4AA2 52.08%, #FFBD4F 100%)", -+ "zen_main_browser_background": "var(--zen-themed-toolbar-bg)" - } - }, - -@@ -86,7 +87,8 @@ - "panel_active": "--arrowpanel-dimmed-further", - "panel_active_darker": "--panel-item-active-bgcolor", - "toolbar_field_icon_opacity": "--urlbar-icon-fill-opacity", -- "zap_gradient": "--panel-separator-zap-gradient" -+ "zap_gradient": "--panel-separator-zap-gradient", -+ "zen_main_browser_background": "--zen-main-browser-background" - } - } - } diff --git a/src/browser/themes/linux/browser-css.patch b/src/browser/themes/linux/browser-css.patch index 433a109c0..324f8abe9 100644 --- a/src/browser/themes/linux/browser-css.patch +++ b/src/browser/themes/linux/browser-css.patch @@ -1,5 +1,5 @@ diff --git a/browser/themes/linux/browser.css b/browser/themes/linux/browser.css -index dc95772553ef7130c27c1122178ff99028b601f2..81f7dbb40c35168376ca84eebfa9fba8d314cb90 100644 +index 5c9891e5ed4b865ed4ecc98d794a239b0f96a8f9..e13bf7277edeb49ebbb12cf9359ac6193bb47ebd 100644 --- a/browser/themes/linux/browser.css +++ b/browser/themes/linux/browser.css @@ -42,21 +42,25 @@ @@ -17,7 +17,7 @@ index dc95772553ef7130c27c1122178ff99028b601f2..81f7dbb40c35168376ca84eebfa9fba8 } /* stylelint-disable-next-line media-query-no-invalid */ - @media (-moz-bool-pref: "widget.gtk.rounded-bottom-corners.enabled") { + @media -moz-pref("widget.gtk.rounded-bottom-corners.enabled") { - #navigator-toolbox { + #zen-main-app-wrapper { /* The body clip below covers this. */ diff --git a/src/browser/themes/osx/browser-css.patch b/src/browser/themes/osx/browser-css.patch index defcca347..740607be6 100644 --- a/src/browser/themes/osx/browser-css.patch +++ b/src/browser/themes/osx/browser-css.patch @@ -1,8 +1,8 @@ diff --git a/browser/themes/osx/browser.css b/browser/themes/osx/browser.css -index 5f40300c553dd416f01502bc0cfa17dea7a779a0..6910f90a578a0f1b728722a7c928afad8a07fd1b 100644 +index 7fc76bc82bd5d6311442b85a76d885dcfb6d753d..61b1b3ac8241c4f12e4ca8966a7ac1fae0eb41ee 100644 --- a/browser/themes/osx/browser.css +++ b/browser/themes/osx/browser.css -@@ -61,7 +61,7 @@ +@@ -38,7 +38,7 @@ .titlebar-buttonbox { &:-moz-locale-dir(ltr) { diff --git a/src/browser/themes/shared/controlcenter/panel-css.patch b/src/browser/themes/shared/controlcenter/panel-css.patch index 3347b99a3..4c6017253 100644 --- a/src/browser/themes/shared/controlcenter/panel-css.patch +++ b/src/browser/themes/shared/controlcenter/panel-css.patch @@ -1,5 +1,5 @@ diff --git a/browser/themes/shared/controlcenter/panel.css b/browser/themes/shared/controlcenter/panel.css -index d7685cdc694267f21258dcb958fda377c56866c8..3b26da23dba9809aaec5b5391a1938a0455515d7 100644 +index 6c3e1d47648165b4994f3face2df48c87ff48a53..dd1791790356d4dd3c3256e2603cf3287c1b89fc 100644 --- a/browser/themes/shared/controlcenter/panel.css +++ b/browser/themes/shared/controlcenter/panel.css @@ -10,11 +10,11 @@ diff --git a/src/browser/themes/shared/jar-inc-mn.patch b/src/browser/themes/shared/jar-inc-mn.patch index 1d7cd13fd..9814e8e95 100644 --- a/src/browser/themes/shared/jar-inc-mn.patch +++ b/src/browser/themes/shared/jar-inc-mn.patch @@ -1,8 +1,8 @@ diff --git a/browser/themes/shared/jar.inc.mn b/browser/themes/shared/jar.inc.mn -index 37b5f04cddde9a3769d31c6e3a93b43da76f44e5..3bd987f7c164a6258d56029b305123b92f6b845d 100644 +index c2bebf7e96a1d7a36c5e3168cf65504361da821b..5f55741b2a467341f93f648c5f084f863a6de32c 100644 --- a/browser/themes/shared/jar.inc.mn +++ b/browser/themes/shared/jar.inc.mn -@@ -285,3 +285,5 @@ +@@ -290,3 +290,5 @@ skin/classic/browser/weather/night-partly-cloudy-with-showers.svg (../shared/weather/night-partly-cloudy-with-showers.svg) skin/classic/browser/weather/night-partly-cloudy-with-thunderstorms.svg (../shared/weather/night-partly-cloudy-with-thunderstorms.svg) skin/classic/browser/weather/night-mostly-cloudy-with-flurries.svg (../shared/weather/night-mostly-cloudy-with-flurries.svg) diff --git a/src/browser/themes/shared/preferences/zen-preferences.css b/src/browser/themes/shared/preferences/zen-preferences.css index 1d3579462..93bf84d83 100644 --- a/src/browser/themes/shared/preferences/zen-preferences.css +++ b/src/browser/themes/shared/preferences/zen-preferences.css @@ -181,7 +181,7 @@ groupbox h2 { } } -@media (-moz-bool-pref: 'zen.view.use-single-toolbar') { +@media -moz-pref('zen.view.use-single-toolbar') { #zen-compact-mode-styles-form { display: none; } diff --git a/src/browser/themes/shared/tabbrowser/tabs-css.patch b/src/browser/themes/shared/tabbrowser/tabs-css.patch index 3d8dd533e..e84a8ef9a 100644 --- a/src/browser/themes/shared/tabbrowser/tabs-css.patch +++ b/src/browser/themes/shared/tabbrowser/tabs-css.patch @@ -1,8 +1,8 @@ diff --git a/browser/themes/shared/tabbrowser/tabs.css b/browser/themes/shared/tabbrowser/tabs.css -index 01815c2114a627e5cac183c702bd82f1bd4f58f8..f47bd9c8490cd8fc4bb686ad0012ce70ab4bac8f 100644 +index bafbb39aac37843e3b6dceb0e81304af51e186cc..92b4fd725118150634ab2ae0a24efb52c16c5227 100644 --- a/browser/themes/shared/tabbrowser/tabs.css +++ b/browser/themes/shared/tabbrowser/tabs.css -@@ -31,7 +31,7 @@ +@@ -32,7 +32,7 @@ --tab-block-margin: 4px; --tab-icon-end-margin: 5.5px; --tab-label-line-height: 1.7; @@ -11,7 +11,7 @@ index 01815c2114a627e5cac183c702bd82f1bd4f58f8..f47bd9c8490cd8fc4bb686ad0012ce70 --tab-hover-background-color: color-mix(in srgb, currentColor 11%, transparent); --tab-selected-textcolor: var(--toolbar-color); --tab-selected-bgcolor: var(--toolbar-bgcolor); -@@ -209,8 +209,7 @@ +@@ -214,8 +214,7 @@ } #tabbrowser-tabs[positionpinnedtabs] > #tabbrowser-arrowscrollbox > &[pinned] { @@ -21,7 +21,7 @@ index 01815c2114a627e5cac183c702bd82f1bd4f58f8..f47bd9c8490cd8fc4bb686ad0012ce70 } #tabbrowser-tabs[movingtab] &:is([selected], [multiselected]) { -@@ -249,7 +248,6 @@ +@@ -254,7 +253,6 @@ } :root:not([uidensity=compact]) &[pinned] { @@ -29,7 +29,7 @@ index 01815c2114a627e5cac183c702bd82f1bd4f58f8..f47bd9c8490cd8fc4bb686ad0012ce70 } &:is([selected], [multiselected]) { -@@ -263,6 +261,7 @@ +@@ -268,6 +266,7 @@ border-radius: inherit; position: relative; overflow: hidden; @@ -37,7 +37,7 @@ index 01815c2114a627e5cac183c702bd82f1bd4f58f8..f47bd9c8490cd8fc4bb686ad0012ce70 &::before { position: absolute; -@@ -437,6 +436,7 @@ +@@ -442,6 +441,7 @@ .tab-icon-image { -moz-context-properties: fill, stroke; fill: currentColor; @@ -45,7 +45,7 @@ index 01815c2114a627e5cac183c702bd82f1bd4f58f8..f47bd9c8490cd8fc4bb686ad0012ce70 /* Apply crisp rendering for favicons at exactly 2dppx resolution */ @media (resolution: 2dppx) { -@@ -502,7 +502,7 @@ +@@ -523,7 +523,7 @@ z-index: 1; /* Overlay tab title */ #tabbrowser-tabs[orient=vertical] & { @@ -54,7 +54,7 @@ index 01815c2114a627e5cac183c702bd82f1bd4f58f8..f47bd9c8490cd8fc4bb686ad0012ce70 } &[crashed] { -@@ -510,7 +510,7 @@ +@@ -531,7 +531,7 @@ } #tabbrowser-tabs[orient="vertical"]:not([expanded]) &:not([crashed]), @@ -63,7 +63,7 @@ index 01815c2114a627e5cac183c702bd82f1bd4f58f8..f47bd9c8490cd8fc4bb686ad0012ce70 &[soundplaying] { list-style-image: url("chrome://browser/skin/tabbrowser/tab-audio-playing-small.svg"); } -@@ -540,7 +540,7 @@ +@@ -561,7 +561,7 @@ background-image: linear-gradient(var(--audio-overlay-extra-background)), linear-gradient(var(--toolbox-bgcolor)); -moz-context-properties: fill; @@ -72,7 +72,7 @@ index 01815c2114a627e5cac183c702bd82f1bd4f58f8..f47bd9c8490cd8fc4bb686ad0012ce70 color-scheme: var(--tab-selected-color-scheme); border-radius: var(--border-radius-circle); -@@ -572,7 +572,7 @@ +@@ -593,7 +593,7 @@ } #tabbrowser-tabs[orient="vertical"]:not([expanded]) &:is([soundplaying], [muted], [activemedia-blocked]), @@ -81,7 +81,7 @@ index 01815c2114a627e5cac183c702bd82f1bd4f58f8..f47bd9c8490cd8fc4bb686ad0012ce70 &[crashed] { display: revert; } -@@ -586,7 +586,7 @@ +@@ -607,7 +607,7 @@ --button-min-height-small: 24px; --button-border-radius: var(--border-radius-small); @@ -90,7 +90,7 @@ index 01815c2114a627e5cac183c702bd82f1bd4f58f8..f47bd9c8490cd8fc4bb686ad0012ce70 &:is([soundplaying], [muted], [activemedia-blocked]) { display: block; } -@@ -617,14 +617,14 @@ +@@ -638,14 +638,14 @@ } &[textoverflow] { @@ -109,7 +109,7 @@ index 01815c2114a627e5cac183c702bd82f1bd4f58f8..f47bd9c8490cd8fc4bb686ad0012ce70 direction: rtl; mask-image: linear-gradient(to right, transparent, black var(--tab-label-mask-size)); } -@@ -1170,7 +1170,7 @@ +@@ -1201,7 +1201,7 @@ } } @@ -118,7 +118,7 @@ index 01815c2114a627e5cac183c702bd82f1bd4f58f8..f47bd9c8490cd8fc4bb686ad0012ce70 #vertical-tabs-newtab-button { appearance: none; min-height: var(--tab-min-height); -@@ -1181,7 +1181,7 @@ +@@ -1212,7 +1212,7 @@ margin-inline: var(--tab-inner-inline-margin); #tabbrowser-tabs[orient="vertical"]:not([expanded]) & > .toolbarbutton-text { @@ -127,7 +127,7 @@ index 01815c2114a627e5cac183c702bd82f1bd4f58f8..f47bd9c8490cd8fc4bb686ad0012ce70 } &:hover { -@@ -1205,7 +1205,7 @@ +@@ -1236,7 +1236,7 @@ * flex container. #tabs-newtab-button is a child of the arrowscrollbox where * we don't want a gap (between tabs), so we have to add some margin. */ @@ -136,7 +136,7 @@ index 01815c2114a627e5cac183c702bd82f1bd4f58f8..f47bd9c8490cd8fc4bb686ad0012ce70 margin-block: var(--tab-block-margin); } -@@ -1229,7 +1229,6 @@ +@@ -1260,7 +1260,6 @@ } #vertical-pinned-tabs-container { @@ -144,7 +144,7 @@ index 01815c2114a627e5cac183c702bd82f1bd4f58f8..f47bd9c8490cd8fc4bb686ad0012ce70 display: none; grid-template-columns: repeat(auto-fit, minmax(var(--tab-pinned-min-width-expanded), auto)); overflow-y: auto; -@@ -1439,7 +1438,7 @@ +@@ -1480,7 +1479,7 @@ toolbarbutton:not(#firefox-view-button), toolbarpaletteitem:not(#wrapper-firefox-view-button) ) ~ #tabbrowser-tabs { @@ -153,7 +153,7 @@ index 01815c2114a627e5cac183c702bd82f1bd4f58f8..f47bd9c8490cd8fc4bb686ad0012ce70 padding-inline-start: calc(var(--tab-overflow-pinned-tabs-width) + 2px); margin-inline-start: 2px; } -@@ -1473,7 +1472,6 @@ toolbar:not(#TabsToolbar) #firefox-view-button { +@@ -1514,7 +1513,6 @@ toolbar:not(#TabsToolbar) #firefox-view-button { list-style-image: url(chrome://global/skin/icons/plus.svg); } diff --git a/src/browser/themes/shared/toolbarbuttons-css.patch b/src/browser/themes/shared/toolbarbuttons-css.patch index 53a4ae182..3205424c2 100644 --- a/src/browser/themes/shared/toolbarbuttons-css.patch +++ b/src/browser/themes/shared/toolbarbuttons-css.patch @@ -1,8 +1,8 @@ diff --git a/browser/themes/shared/toolbarbuttons.css b/browser/themes/shared/toolbarbuttons.css -index ca1d70b515f17922c3625e38e2110368ad0de652..3ac05678b10f054d16093a225eb93bb8ed26a116 100644 +index 26b58ee104a432a359ba2667d2e49a9231e81fef..7cb950e7b3fcb6f599e9cb645ea24a515e2cc491 100644 --- a/browser/themes/shared/toolbarbuttons.css +++ b/browser/themes/shared/toolbarbuttons.css -@@ -210,7 +210,7 @@ toolbar[brighttext] .toolbaritem-combined-buttons > separator { +@@ -218,7 +218,7 @@ toolbar[brighttext] .toolbaritem-combined-buttons > separator { #nav-bar-overflow-button { list-style-image: url("chrome://global/skin/icons/chevron.svg"); @@ -11,7 +11,7 @@ index ca1d70b515f17922c3625e38e2110368ad0de652..3ac05678b10f054d16093a225eb93bb8 display: none; } -@@ -420,7 +420,7 @@ toolbarbutton.bookmark-item:not(.subviewbutton) { +@@ -428,7 +428,7 @@ toolbarbutton.bookmark-item:not(.subviewbutton) { */ align-items: stretch; > .toolbarbutton-icon { diff --git a/src/browser/themes/shared/urlbarView-css.patch b/src/browser/themes/shared/urlbarView-css.patch index 2e7241a17..1389d88db 100644 --- a/src/browser/themes/shared/urlbarView-css.patch +++ b/src/browser/themes/shared/urlbarView-css.patch @@ -1,5 +1,5 @@ diff --git a/browser/themes/shared/urlbarView.css b/browser/themes/shared/urlbarView.css -index 1c654e053ca8a014d7c2a9fc076cf15afba9c903..f2f63809d0a36db2774755db2b782f41a9bbe82b 100644 +index 203d2de2c89f32ffb911ab0b9aba5285173ba177..a5ba67a02d93a8258202894a2ea20f4d350ccbb5 100644 --- a/browser/themes/shared/urlbarView.css +++ b/browser/themes/shared/urlbarView.css @@ -20,7 +20,7 @@ diff --git a/src/browser/themes/windows/browser-css.patch b/src/browser/themes/windows/browser-css.patch index 146262177..f7251386e 100644 --- a/src/browser/themes/windows/browser-css.patch +++ b/src/browser/themes/windows/browser-css.patch @@ -1,5 +1,5 @@ diff --git a/browser/themes/windows/browser.css b/browser/themes/windows/browser.css -index f49604e53780763b9aa19897458c45f0be6cbc9b..5ea9098a9b689470ef4ddfea91069cd23391d020 100644 +index 9af78803f0005a2b89e1c73f52153ed4d9e3154a..b63dc3d050144f048ac6a326acd57cc85fa8a3a7 100644 --- a/browser/themes/windows/browser.css +++ b/browser/themes/windows/browser.css @@ -40,14 +40,13 @@ diff --git a/src/build/moz-build.patch b/src/build/moz-build.patch index c6b981eae..46aee904f 100644 --- a/src/build/moz-build.patch +++ b/src/build/moz-build.patch @@ -1,8 +1,8 @@ diff --git a/build/moz.build b/build/moz.build -index 7bf9c501db06d38f924c26372d4243d448af8d81..90b02a99af90c40cea7d90c20ce1bac3d8c109a8 100644 +index ad78395c33bba4f6a7bd73bae2a3b6e0658ed59e..a3ba1001a60b764c9ef1c824917fe4d5b81ed0b2 100644 --- a/build/moz.build +++ b/build/moz.build -@@ -91,7 +91,7 @@ if CONFIG["MOZ_APP_BASENAME"]: +@@ -90,7 +90,7 @@ if CONFIG["MOZ_APP_BASENAME"]: if CONFIG[var]: appini_defines[var] = True diff --git a/src/build/moz-configure/init-configure.patch b/src/build/moz-configure/init-configure.patch index 27635506e..78e92b18d 100644 --- a/src/build/moz-configure/init-configure.patch +++ b/src/build/moz-configure/init-configure.patch @@ -1,5 +1,5 @@ diff --git a/build/moz.configure/init.configure b/build/moz.configure/init.configure -index de6ff563b1241c91af2d0f9a31291c4c3b557a17..869480aebf6c4f4e2c81096f9320fcce99d493da 100644 +index 9bf4bb29a40045da21909dc1a2a49dbca5d6ac3e..e45bb12cabd7fb8a77b29e7e1e03ed3e92cd3625 100644 --- a/build/moz.configure/init.configure +++ b/build/moz.configure/init.configure @@ -1101,7 +1101,7 @@ def milestone(build_env, build_project, version_path, as_milestone, _): diff --git a/src/build/pgo/profileserver-py.patch b/src/build/pgo/profileserver-py.patch index cf162035a..410baf650 100644 --- a/src/build/pgo/profileserver-py.patch +++ b/src/build/pgo/profileserver-py.patch @@ -1,5 +1,5 @@ diff --git a/build/pgo/profileserver.py b/build/pgo/profileserver.py -index 31556cc9ae1a44a04e300083f7be4dc908cc3794..23ef1d8f5b30068ffdddc3c9cb6cd45e64d93071 100755 +index c59efbdc5382da897dcac31da7039cdc92e1d7dc..9b14add5b0c5afec5b7efc7f9df7d04d3169fc80 100755 --- a/build/pgo/profileserver.py +++ b/build/pgo/profileserver.py @@ -18,7 +18,13 @@ from mozprofile import FirefoxProfile, Preferences diff --git a/src/devtools/startup/DevToolsStartup-sys-mjs.patch b/src/devtools/startup/DevToolsStartup-sys-mjs.patch index 2f8609caa..e48f57e2b 100644 --- a/src/devtools/startup/DevToolsStartup-sys-mjs.patch +++ b/src/devtools/startup/DevToolsStartup-sys-mjs.patch @@ -1,5 +1,5 @@ diff --git a/devtools/startup/DevToolsStartup.sys.mjs b/devtools/startup/DevToolsStartup.sys.mjs -index 0c9db6cb85c491a9f0fc216071afc66e553dcd51..25648d72f45ce016e3a498cab5a6f24e37c35296 100644 +index de5cd910c85a195496eddf38d85b78fb97694ef1..d10d6dfeb25bf01e86d84d3843c5a42551cac3bd 100644 --- a/devtools/startup/DevToolsStartup.sys.mjs +++ b/devtools/startup/DevToolsStartup.sys.mjs @@ -806,6 +806,7 @@ DevToolsStartup.prototype = { diff --git a/src/docshell/base/nsAboutRedirector-cpp.patch b/src/docshell/base/nsAboutRedirector-cpp.patch index aa998306b..0445eae4a 100644 --- a/src/docshell/base/nsAboutRedirector-cpp.patch +++ b/src/docshell/base/nsAboutRedirector-cpp.patch @@ -1,8 +1,8 @@ diff --git a/docshell/base/nsAboutRedirector.cpp b/docshell/base/nsAboutRedirector.cpp -index b21078b00b14cdf2b66985e0caabebcf4884f291..c7ede52aaedd8eb698761fd09e792ce2f4573dd2 100644 +index e95ff966b34576439c745aa206ff534a835c956f..5691cb2baa76b7cd543bb030b7c8d3028359bc4c 100644 --- a/docshell/base/nsAboutRedirector.cpp +++ b/docshell/base/nsAboutRedirector.cpp -@@ -105,7 +105,7 @@ static const RedirEntry kRedirMap[] = { +@@ -108,7 +108,7 @@ static const RedirEntry kRedirMap[] = { {"crashes", "chrome://global/content/crashes.html", nsIAboutModule::IS_SECURE_CHROME_UI}, #endif diff --git a/src/dom/html/HTMLMediaElement-cpp.patch b/src/dom/html/HTMLMediaElement-cpp.patch index 412aab2ef..28fd4c3af 100644 --- a/src/dom/html/HTMLMediaElement-cpp.patch +++ b/src/dom/html/HTMLMediaElement-cpp.patch @@ -1,5 +1,5 @@ diff --git a/dom/html/HTMLMediaElement.cpp b/dom/html/HTMLMediaElement.cpp -index 0b8dee1ca22b1f0ddcf7e6a976f606990104b56e..a3a5a7cfcaa8a4719e56988bc917183fa3cc9d10 100644 +index 677a2f25b16f4cf724b57d86a2b83acf40ec6164..e06f85366866c1cc99d27bc10cbebf2cb986e5cb 100644 --- a/dom/html/HTMLMediaElement.cpp +++ b/dom/html/HTMLMediaElement.cpp @@ -455,6 +455,7 @@ class HTMLMediaElement::MediaControlKeyListener final @@ -10,3 +10,13 @@ index 0b8dee1ca22b1f0ddcf7e6a976f606990104b56e..a3a5a7cfcaa8a4719e56988bc917183f NotifyAudibleStateChanged(mIsOwnerAudible ? MediaAudibleState::eAudible : MediaAudibleState::eInaudible); +@@ -6967,6 +6968,9 @@ void HTMLMediaElement::FireTimeUpdate(TimeupdateType aType) { + DispatchAsyncEvent(std::move(runner)); + mQueueTimeUpdateRunnerTime = TimeStamp::Now(); + mLastCurrentTime = CurrentTime(); ++ if (aType == TimeupdateType::eMandatory) { ++ mMediaControlKeyListener->NotifyMediaPositionState(); ++ } + } + if (mFragmentEnd >= 0.0 && CurrentTime() >= mFragmentEnd) { + Pause(); diff --git a/src/dom/script/ScriptLoader-cpp.patch b/src/dom/script/ScriptLoader-cpp.patch index db493e115..aa276a3b6 100644 --- a/src/dom/script/ScriptLoader-cpp.patch +++ b/src/dom/script/ScriptLoader-cpp.patch @@ -1,8 +1,8 @@ diff --git a/dom/script/ScriptLoader.cpp b/dom/script/ScriptLoader.cpp -index e65533af04ea5f42c10477314c594c2c7bbc67b3..df4d63dafb838b67e64a91f26487106a77494516 100644 +index 6276dcdb031a0325c481a1ea058d513f5c153944..4aee4acd681d3337cce7799d90db0fa0d777762d 100644 --- a/dom/script/ScriptLoader.cpp +++ b/dom/script/ScriptLoader.cpp -@@ -2401,6 +2401,36 @@ void ScriptLoader::CalculateBytecodeCacheFlag(ScriptLoadRequest* aRequest) { +@@ -2626,6 +2626,36 @@ void ScriptLoader::CalculateBytecodeCacheFlag(ScriptLoadRequest* aRequest) { hasFetchCountMin = false; break; } diff --git a/src/gfx/wr/webrender/src/picture-rs.patch b/src/gfx/wr/webrender/src/picture-rs.patch index fc5e22ff7..01081c9ac 100644 --- a/src/gfx/wr/webrender/src/picture-rs.patch +++ b/src/gfx/wr/webrender/src/picture-rs.patch @@ -1,8 +1,8 @@ diff --git a/gfx/wr/webrender/src/picture.rs b/gfx/wr/webrender/src/picture.rs -index f22bcadd0624d9a22f5c3fa318d7795e102b890f..68d1eb55abde2a9b5779b1d07c5f111f46f177a8 100644 +index 7a811bc074959e0f0e7e25603acc4bf50edce4dc..4954cd9b2b3c9efdbe32343152c877186751ec26 100644 --- a/gfx/wr/webrender/src/picture.rs +++ b/gfx/wr/webrender/src/picture.rs -@@ -7449,7 +7449,12 @@ fn get_relative_scale_offset( +@@ -7957,7 +7957,12 @@ fn get_relative_scale_offset( CoordinateSpaceMapping::Local => ScaleOffset::identity(), CoordinateSpaceMapping::ScaleOffset(scale_offset) => scale_offset, CoordinateSpaceMapping::Transform(m) => { diff --git a/src/image/DecoderFactory-cpp.patch b/src/image/DecoderFactory-cpp.patch index 8d3df598e..c77c28b54 100644 --- a/src/image/DecoderFactory-cpp.patch +++ b/src/image/DecoderFactory-cpp.patch @@ -1,5 +1,5 @@ diff --git a/image/DecoderFactory.cpp b/image/DecoderFactory.cpp -index f36f03c7f2..d2cdd79f70 100644 +index f36f03c7f2622f0fc54c04f5278ee83cbf03e9e8..d2cdd79f70056af8dc1304d3a2f5307986aeda49 100644 --- a/image/DecoderFactory.cpp +++ b/image/DecoderFactory.cpp @@ -244,7 +244,12 @@ nsresult DecoderFactory::CreateAnimationDecoder( diff --git a/src/modules/libpref/init/StaticPrefList-yaml.patch b/src/modules/libpref/init/StaticPrefList-yaml.patch index 07280d491..f45fcb94d 100644 --- a/src/modules/libpref/init/StaticPrefList-yaml.patch +++ b/src/modules/libpref/init/StaticPrefList-yaml.patch @@ -1,17 +1,24 @@ diff --git a/modules/libpref/init/StaticPrefList.yaml b/modules/libpref/init/StaticPrefList.yaml -index a9863858f9a28b2c633edd9689d4379203eef1e6..7ac24baf70727a2a9be428c6f98763f312a0969b 100644 +index 85974462e5ce2b7dbf85bd5c79f09b3db5c25915..428a245cdf58d959256aa3c975687f31aed16b05 100644 --- a/modules/libpref/init/StaticPrefList.yaml +++ b/modules/libpref/init/StaticPrefList.yaml -@@ -18305,7 +18305,7 @@ +@@ -18462,13 +18462,13 @@ # Whether we use the mica backdrop. Off by default for now. - name: widget.windows.mica type: bool - value: false + value: true - mirror: once - #endif + mirror: always + + # Whether we use the mica backdrop for popups. Off by default for now. + - name: widget.windows.mica.popups + type: RelaxedAtomicBool +- value: false ++ value: true + mirror: always -@@ -18418,6 +18418,26 @@ + # Whether we expand the client area into the taskbar hidden edge on maximized +@@ -18594,6 +18594,26 @@ mirror: always #endif diff --git a/src/mozglue/misc/PreXULSkeletonUI-h.patch b/src/mozglue/misc/PreXULSkeletonUI-h.patch deleted file mode 100644 index 58bb15187..000000000 --- a/src/mozglue/misc/PreXULSkeletonUI-h.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/mozglue/misc/PreXULSkeletonUI.h b/mozglue/misc/PreXULSkeletonUI.h -index 3e91eac21adce6d1a38d92ad36459c04cc1cbe1d..8f0c9b1a65bca1c35a4f6c042712715d872b0852 100644 ---- a/mozglue/misc/PreXULSkeletonUI.h -+++ b/mozglue/misc/PreXULSkeletonUI.h -@@ -21,8 +21,8 @@ namespace mozilla { - // to not vary based off of any user settings for the initial toplevel window, - // so we're safe here for now. - static const DWORD kPreXULSkeletonUIWindowStyle = -- WS_CLIPCHILDREN | WS_DLGFRAME | WS_BORDER | WS_MAXIMIZEBOX | -- WS_MINIMIZEBOX | WS_SIZEBOX | WS_SYSMENU; -+ WS_OVERLAPPED | WS_CLIPCHILDREN | WS_DLGFRAME | WS_BORDER | WS_THICKFRAME | -+ WS_MAXIMIZEBOX | WS_MINIMIZEBOX | WS_SYSMENU; - static const DWORD kPreXULSkeletonUIWindowStyleEx = WS_EX_WINDOWEDGE; - - struct CSSPixelSpan { diff --git a/src/netwerk/protocol/http/moz-build.patch b/src/netwerk/protocol/http/moz-build.patch index 6e4ee8edf..933d7ca65 100644 --- a/src/netwerk/protocol/http/moz-build.patch +++ b/src/netwerk/protocol/http/moz-build.patch @@ -1,8 +1,8 @@ diff --git a/netwerk/protocol/http/moz.build b/netwerk/protocol/http/moz.build -index 49d78020bc3f193d6ba7cf7bd81756f8393039dd..94c48ce0f6d59d4906c33f44c4a6ae44e11261ba 100644 +index 9a737b89b791866a522100eac99d981a06524b82..2933072d0e8390ca584d0654920b749a180f41ef 100644 --- a/netwerk/protocol/http/moz.build +++ b/netwerk/protocol/http/moz.build -@@ -206,7 +206,7 @@ LOCAL_INCLUDES += [ +@@ -218,7 +218,7 @@ LOCAL_INCLUDES += [ "/netwerk/url-classifier", ] diff --git a/src/toolkit/actors/SelectParent-sys-mjs.patch b/src/toolkit/actors/SelectParent-sys-mjs.patch index d4bb214a2..7b508e364 100644 --- a/src/toolkit/actors/SelectParent-sys-mjs.patch +++ b/src/toolkit/actors/SelectParent-sys-mjs.patch @@ -1,5 +1,5 @@ diff --git a/toolkit/actors/SelectParent.sys.mjs b/toolkit/actors/SelectParent.sys.mjs -index fa8ce002f0cd64395d04bcd1f93f6f8a89417a62..c7d2865e8e78015e253f0ef1a82f1ec57a4fe255 100644 +index 3e1d4b73b3d84a550222827230917c10ce9b8448..1d2ada14a8ca2ee45a2abdc118068a708816365c 100644 --- a/toolkit/actors/SelectParent.sys.mjs +++ b/toolkit/actors/SelectParent.sys.mjs @@ -103,7 +103,7 @@ export var SelectParentHelper = { diff --git a/src/toolkit/components/aboutconfig/content/aboutconfig-html.patch b/src/toolkit/components/aboutconfig/content/aboutconfig-html.patch index a54a94475..fbcd20305 100644 --- a/src/toolkit/components/aboutconfig/content/aboutconfig-html.patch +++ b/src/toolkit/components/aboutconfig/content/aboutconfig-html.patch @@ -1,5 +1,5 @@ diff --git a/toolkit/components/aboutconfig/content/aboutconfig.html b/toolkit/components/aboutconfig/content/aboutconfig.html -index 8962cdd86d802f536dbef9cad8928d3e7a4eebf6..b99119d95cd575abead5d3d3f720244f5fe45b3b 100644 +index 853fd8f82bd10854c7fb17a73fd10eab0a9eef52..6f5e6606ebfa95a600037b995e5c743dd5aacba5 100644 --- a/toolkit/components/aboutconfig/content/aboutconfig.html +++ b/toolkit/components/aboutconfig/content/aboutconfig.html @@ -34,6 +34,7 @@ diff --git a/src/toolkit/components/aboutprocesses/content/aboutProcesses-html.patch b/src/toolkit/components/aboutprocesses/content/aboutProcesses-html.patch index 3a041706e..9e3e5641e 100644 --- a/src/toolkit/components/aboutprocesses/content/aboutProcesses-html.patch +++ b/src/toolkit/components/aboutprocesses/content/aboutProcesses-html.patch @@ -1,5 +1,5 @@ diff --git a/toolkit/components/aboutprocesses/content/aboutProcesses.html b/toolkit/components/aboutprocesses/content/aboutProcesses.html -index 76a672cdc24759121bd5d7ac9c9d6f273f36403d..915fbf5cbdea9b33b3cfb1a03fb43aff177f56fb 100644 +index 3d7085f487eb8eb3fb94dcc89e390dee525d8375..94298c2cb237edce7bb344797c054ba61b9f4d24 100644 --- a/toolkit/components/aboutprocesses/content/aboutProcesses.html +++ b/toolkit/components/aboutprocesses/content/aboutProcesses.html @@ -20,6 +20,7 @@ diff --git a/src/toolkit/components/pictureinpicture/content/player-js.patch b/src/toolkit/components/pictureinpicture/content/player-js.patch index ac2f0f4eb..8797e8939 100644 --- a/src/toolkit/components/pictureinpicture/content/player-js.patch +++ b/src/toolkit/components/pictureinpicture/content/player-js.patch @@ -1,8 +1,8 @@ diff --git a/toolkit/components/pictureinpicture/content/player.js b/toolkit/components/pictureinpicture/content/player.js -index 9a4971d5d24dba6e543be8ea321c6be8c43ad859..b0788967e51736b1ec95daf96a1504bfd7c1dea7 100644 +index a23e4a3ef87dfe7ca74cc20abd53e5fa1b2664dd..afc9ade19441bf9e23ee91d87ee2644e952543d9 100644 --- a/toolkit/components/pictureinpicture/content/player.js +++ b/toolkit/components/pictureinpicture/content/player.js -@@ -722,6 +722,11 @@ let Player = { +@@ -734,6 +734,11 @@ let Player = { document.getElementById("large").click(); break; } diff --git a/src/toolkit/components/pictureinpicture/content/player-xhtml.patch b/src/toolkit/components/pictureinpicture/content/player-xhtml.patch index 92d9b9543..ef89eff98 100644 --- a/src/toolkit/components/pictureinpicture/content/player-xhtml.patch +++ b/src/toolkit/components/pictureinpicture/content/player-xhtml.patch @@ -1,8 +1,16 @@ diff --git a/toolkit/components/pictureinpicture/content/player.xhtml b/toolkit/components/pictureinpicture/content/player.xhtml -index 440ce51e8e67e4d3a7bdcb78f38f2fb6684c9848..6b48a3178f9de460dd3b08728f5638ef2751de21 100644 +index b38789882149c97a3263c405b783999bc60a5c71..009b7b7aa2ded0d88247c62171bfff59222a8e28 100644 --- a/toolkit/components/pictureinpicture/content/player.xhtml +++ b/toolkit/components/pictureinpicture/content/player.xhtml -@@ -52,13 +52,22 @@ +@@ -18,6 +18,7 @@ + <link rel="localization" href="browser/browserSets.ftl"/> + <script src="chrome://global/content/pictureinpicture/player.js"></script> + <title data-l10n-id="pictureinpicture-player-title"></title> ++ <link rel="localization" href="browser/zen-general.ftl"/> + </head> + + <body> +@@ -53,13 +54,22 @@ tabindex="10" #endif /> diff --git a/src/toolkit/components/printing/content/print-html.patch b/src/toolkit/components/printing/content/print-html.patch index ab5d5abb1..30cc88543 100644 --- a/src/toolkit/components/printing/content/print-html.patch +++ b/src/toolkit/components/printing/content/print-html.patch @@ -1,5 +1,5 @@ diff --git a/toolkit/components/printing/content/print.html b/toolkit/components/printing/content/print.html -index 62d214608c24191fea013db23e96b4ae2a4042e6..59b146a594f0f882435f2d29795a65020db01f48 100644 +index 72ccab596c2f090d188f1d27278f68373e5b06be..541271c71a3df749826b7f5adbd55e76450bba8f 100644 --- a/toolkit/components/printing/content/print.html +++ b/toolkit/components/printing/content/print.html @@ -21,6 +21,7 @@ diff --git a/src/toolkit/components/prompts/content/commonDialog-xhtml.patch b/src/toolkit/components/prompts/content/commonDialog-xhtml.patch index 65621ae30..82eba8cc7 100644 --- a/src/toolkit/components/prompts/content/commonDialog-xhtml.patch +++ b/src/toolkit/components/prompts/content/commonDialog-xhtml.patch @@ -1,8 +1,8 @@ diff --git a/toolkit/components/prompts/content/commonDialog.xhtml b/toolkit/components/prompts/content/commonDialog.xhtml -index def3b93956ea9b9bfab5791b06040769dbda4645..ab9c61a5d816d17fb3f09c88514aca5ec0d2f193 100644 +index c47761ec958a11870e55294fe9c6de8f3afbda2f..5e0313864c67a774874c215fd043b9b8af39d8cb 100644 --- a/toolkit/components/prompts/content/commonDialog.xhtml +++ b/toolkit/components/prompts/content/commonDialog.xhtml -@@ -28,6 +28,7 @@ +@@ -30,6 +30,7 @@ <html:link rel="localization" href="branding/brand.ftl" /> <html:link rel="localization" href="toolkit/global/commonDialog.ftl" /> diff --git a/src/toolkit/content/aboutAbout-html.patch b/src/toolkit/content/aboutAbout-html.patch index c474081d4..1ef1c1c94 100644 --- a/src/toolkit/content/aboutAbout-html.patch +++ b/src/toolkit/content/aboutAbout-html.patch @@ -1,5 +1,5 @@ diff --git a/toolkit/content/aboutAbout.html b/toolkit/content/aboutAbout.html -index ab955bc27bf8a0bf1f28d12d92be80991e743d17..5e23f51f458344d9704ad390c8e1aa98745c7012 100644 +index 74702381dd1bed2d4bb47c464ae0ca309c10e45b..f1e6b34bbf29d787bd62d625707dead024cf6011 100644 --- a/toolkit/content/aboutAbout.html +++ b/toolkit/content/aboutAbout.html @@ -24,6 +24,7 @@ diff --git a/src/toolkit/content/widgets/findbar-js.patch b/src/toolkit/content/widgets/findbar-js.patch new file mode 100644 index 000000000..967c891d8 --- /dev/null +++ b/src/toolkit/content/widgets/findbar-js.patch @@ -0,0 +1,12 @@ +diff --git a/toolkit/content/widgets/findbar.js b/toolkit/content/widgets/findbar.js +index 8ca512e0b212bb6e25ed37e7edb4f8e2587d5bb0..5abfff92b3a8df5d138082af96419668a2c8a9bb 100644 +--- a/toolkit/content/widgets/findbar.js ++++ b/toolkit/content/widgets/findbar.js +@@ -1188,6 +1188,7 @@ + * e.g. <command name="cmd_find" oncommand="gFindBar.onFindCommand();"/> + */ + onFindCommand() { ++ if (gBrowser?.selectedTab?.hasAttribute("zen-empty-tab")) return; + return this.startFind(this.FIND_NORMAL); + } + diff --git a/src/toolkit/content/widgets/infobar-css.patch b/src/toolkit/content/widgets/infobar-css.patch index dae6de4cd..e9ea31ab6 100644 --- a/src/toolkit/content/widgets/infobar-css.patch +++ b/src/toolkit/content/widgets/infobar-css.patch @@ -1,8 +1,8 @@ diff --git a/toolkit/content/widgets/infobar.css b/toolkit/content/widgets/infobar.css -index ee811818b524d41af2c89ac034083592dac333fb..c943f2a5a168120666132a34e71b86d608b1045e 100644 +index 7818f1ef1dcc62e184bd5e3e8d6d936acf77d2ea..4803c07a183e2df70e8fdc9769bb4bb15a73f39b 100644 --- a/toolkit/content/widgets/infobar.css +++ b/toolkit/content/widgets/infobar.css -@@ -97,3 +97,18 @@ strong { +@@ -94,3 +94,18 @@ strong { :host([type=system]) .content { margin-inline-start: 0; } diff --git a/src/toolkit/content/widgets/tabbox-js.patch b/src/toolkit/content/widgets/tabbox-js.patch index 7fe9df1f1..b58fca86d 100644 --- a/src/toolkit/content/widgets/tabbox-js.patch +++ b/src/toolkit/content/widgets/tabbox-js.patch @@ -1,8 +1,8 @@ diff --git a/toolkit/content/widgets/tabbox.js b/toolkit/content/widgets/tabbox.js -index 033582a3badb65d50f58a11f8a259e28eaa04ef3..ef634d76549f0fa4d5789e2bbfb9409f44767683 100644 +index 717f0583f224be2d09a7966ee5627ebab83cc07f..af809ad8f189a11c1ab9383033483db5dcd7cf96 100644 --- a/toolkit/content/widgets/tabbox.js +++ b/toolkit/content/widgets/tabbox.js -@@ -210,7 +210,7 @@ +@@ -213,7 +213,7 @@ ) { this._inAsyncOperation = false; if (oldPanel != this._selectedPanel) { @@ -11,7 +11,7 @@ index 033582a3badb65d50f58a11f8a259e28eaa04ef3..ef634d76549f0fa4d5789e2bbfb9409f this._selectedPanel?.classList.add("deck-selected"); } this.setAttribute("selectedIndex", val); -@@ -537,7 +537,7 @@ +@@ -609,7 +609,7 @@ if (!tab) { return; } @@ -20,7 +20,7 @@ index 033582a3badb65d50f58a11f8a259e28eaa04ef3..ef634d76549f0fa4d5789e2bbfb9409f if (otherTab != tab && otherTab.selected) { otherTab._selected = false; } -@@ -820,7 +820,7 @@ +@@ -822,7 +822,7 @@ if (tab == startTab) { return null; } @@ -29,7 +29,7 @@ index 033582a3badb65d50f58a11f8a259e28eaa04ef3..ef634d76549f0fa4d5789e2bbfb9409f return tab; } } -@@ -883,7 +883,7 @@ +@@ -887,7 +887,7 @@ let { ariaFocusedItem } = this; let startTab = ariaFocusedItem; if (!ariaFocusedItem || !this.allTabs.includes(ariaFocusedItem)) { diff --git a/src/toolkit/content/xul-css.patch b/src/toolkit/content/xul-css.patch index fb5fd2e4a..2a6d7beb1 100644 --- a/src/toolkit/content/xul-css.patch +++ b/src/toolkit/content/xul-css.patch @@ -1,8 +1,8 @@ diff --git a/toolkit/content/xul.css b/toolkit/content/xul.css -index 26c11188d3edcc9806fab7144aa0e22540a32a57..df3dbca06ede3eda1854febe314c38779f754c03 100644 +index 134acec351c818eb824e2c98fa380d99ebaf8fac..3774893d98617634150f1f85568e212d98f9404c 100644 --- a/toolkit/content/xul.css +++ b/toolkit/content/xul.css -@@ -485,7 +485,8 @@ deck > *|*:not(:-moz-native-anonymous) { +@@ -468,7 +468,8 @@ deck > *|*:not(:-moz-native-anonymous) { } tabpanels > .deck-selected, diff --git a/src/toolkit/modules/AppConstants-sys-mjs.patch b/src/toolkit/modules/AppConstants-sys-mjs.patch index 5ab1dfcfa..509134e10 100644 --- a/src/toolkit/modules/AppConstants-sys-mjs.patch +++ b/src/toolkit/modules/AppConstants-sys-mjs.patch @@ -1,8 +1,8 @@ diff --git a/toolkit/modules/AppConstants.sys.mjs b/toolkit/modules/AppConstants.sys.mjs -index a20e45c6135d24e42594700fe57184a560facd0f..7650dd88dc67d774c3af05704f2539ff92e21be2 100644 +index bf7a0ec9570a8657d192fd28c9b4852aa8869225..59f5466582757320ab1f70ec26d76fc589e0a335 100644 --- a/toolkit/modules/AppConstants.sys.mjs +++ b/toolkit/modules/AppConstants.sys.mjs -@@ -338,6 +338,8 @@ export var AppConstants = Object.freeze({ +@@ -174,6 +174,8 @@ export var AppConstants = Object.freeze({ MOZ_UPDATE_CHANNEL: "@MOZ_UPDATE_CHANNEL@", MOZ_WIDGET_TOOLKIT: "@MOZ_WIDGET_TOOLKIT@", diff --git a/src/toolkit/modules/LightweightThemeConsumer-sys-mjs.patch b/src/toolkit/modules/LightweightThemeConsumer-sys-mjs.patch index 637df8c41..548e1d00e 100644 --- a/src/toolkit/modules/LightweightThemeConsumer-sys-mjs.patch +++ b/src/toolkit/modules/LightweightThemeConsumer-sys-mjs.patch @@ -1,8 +1,8 @@ diff --git a/toolkit/modules/LightweightThemeConsumer.sys.mjs b/toolkit/modules/LightweightThemeConsumer.sys.mjs -index 0d3993370b4ecbdfaf87cfd3145617343c29dc39..8587f7286476ca0dcce1bb02ef02ce0dae9c4df7 100644 +index d8c79cbae4de3ebfc5dc62f3597c7be4965a5429..ba1a44a0be5b5837467cfc84074d4869aee6aa62 100644 --- a/toolkit/modules/LightweightThemeConsumer.sys.mjs +++ b/toolkit/modules/LightweightThemeConsumer.sys.mjs -@@ -32,7 +32,7 @@ const toolkitVariableMap = [ +@@ -31,7 +31,7 @@ const toolkitVariableMap = [ lwtProperty: "accentcolor", processColor(rgbaChannels) { if (!rgbaChannels || rgbaChannels.a == 0) { @@ -11,7 +11,7 @@ index 0d3993370b4ecbdfaf87cfd3145617343c29dc39..8587f7286476ca0dcce1bb02ef02ce0d } // Remove the alpha channel const { r, g, b } = rgbaChannels; -@@ -334,6 +334,7 @@ LightweightThemeConsumer.prototype = { +@@ -339,6 +339,7 @@ LightweightThemeConsumer.prototype = { theme.additionalBackgrounds ); let _processedColors = _setProperties(root, hasTheme, theme); @@ -19,7 +19,7 @@ index 0d3993370b4ecbdfaf87cfd3145617343c29dc39..8587f7286476ca0dcce1bb02ef02ce0d if (hasTheme) { if (updateGlobalThemeData) { -@@ -425,6 +426,14 @@ LightweightThemeConsumer.prototype = { +@@ -431,6 +432,14 @@ LightweightThemeConsumer.prototype = { this._lastExperimentData.stylesheet = stylesheet; } }, diff --git a/src/toolkit/modules/UpdateUtils-sys-mjs.patch b/src/toolkit/modules/UpdateUtils-sys-mjs.patch index 501a3d7e5..0dc62554e 100644 --- a/src/toolkit/modules/UpdateUtils-sys-mjs.patch +++ b/src/toolkit/modules/UpdateUtils-sys-mjs.patch @@ -1,5 +1,5 @@ diff --git a/toolkit/modules/UpdateUtils.sys.mjs b/toolkit/modules/UpdateUtils.sys.mjs -index be9ce9d5402c30bf4a9712f1ce9026503c191a53..230882363b3e1bbe7f0977567db61f72494a19ea 100644 +index 2c8a093013d40623aa16864eca18945887add7c8..592f8a77665f8e8b4c2f64fe6ae44f3f1f3935e1 100644 --- a/toolkit/modules/UpdateUtils.sys.mjs +++ b/toolkit/modules/UpdateUtils.sys.mjs @@ -81,7 +81,7 @@ export var UpdateUtils = { diff --git a/src/toolkit/modules/moz-build.patch b/src/toolkit/modules/moz-build.patch index 822947a0a..3daf800f9 100644 --- a/src/toolkit/modules/moz-build.patch +++ b/src/toolkit/modules/moz-build.patch @@ -1,8 +1,8 @@ diff --git a/toolkit/modules/moz.build b/toolkit/modules/moz.build -index 6ba1e92026f6f1618ce3a477f74bb6d0fa20f7c1..ccf3fa076771da7c9a5cb2bb732558cb73d810af 100644 +index dd8d6498f5b7244726274c0588dae68f8261cbc0..ac1e25707a1d2ebf191f04f9e38e092cb3f4aa27 100644 --- a/toolkit/modules/moz.build +++ b/toolkit/modules/moz.build -@@ -281,6 +281,7 @@ for var in ( +@@ -286,6 +286,7 @@ for var in ( "DLL_SUFFIX", "DEBUG_JS_MODULES", "OMNIJAR_NAME", diff --git a/src/toolkit/moz-configure.patch b/src/toolkit/moz-configure.patch index f3cd4394e..ffc5d8d46 100644 --- a/src/toolkit/moz-configure.patch +++ b/src/toolkit/moz-configure.patch @@ -1,8 +1,24 @@ diff --git a/toolkit/moz.configure b/toolkit/moz.configure -index 9c3bb513537f1efc44788fc3efb9f7561eca9c0e..dcada8742c5ea147d2378357c86c9a8b7dc639db 100644 +index e5e517635d639f43de064fdc81a33090c28ca786..67ce7a27d93c3c6f9c8045c2d5796b85bf059113 100644 --- a/toolkit/moz.configure +++ b/toolkit/moz.configure -@@ -81,10 +81,13 @@ option( +@@ -22,6 +22,7 @@ def check_moz_app_id(moz_app_id, build_project): + + project_flag( + env="MOZ_APP_VENDOR", ++ default="Zen Team", + nargs=1, + help='Used for application.ini\'s "Vendor" field, which also impacts profile location and user-visible fields', + ) +@@ -35,6 +36,7 @@ project_flag( + + project_flag( + "MOZ_APP_PROFILE", ++ default="zen", + nargs=1, + help='Used for application.ini\'s "Profile" field, which controls profile location', + ) +@@ -87,10 +89,13 @@ option( ) set_config("MOZ_INCLUDE_SOURCE_INFO", True, when="MOZ_INCLUDE_SOURCE_INFO") @@ -17,7 +33,7 @@ index 9c3bb513537f1efc44788fc3efb9f7561eca9c0e..dcada8742c5ea147d2378357c86c9a8b help="Set distribution-specific id", ) set_config("MOZ_DISTRIBUTION_ID", depends("--with-distribution-id")(lambda v: v[0])) -@@ -869,9 +872,9 @@ set_define("MOZ_AV1", av1) +@@ -881,9 +886,9 @@ set_config("MOZ_SYSTEM_AV1", True, when="--with-system-av1") option("--disable-jxl", help="Disable jxl image support") @@ -30,7 +46,7 @@ index 9c3bb513537f1efc44788fc3efb9f7561eca9c0e..dcada8742c5ea147d2378357c86c9a8b return True -@@ -2012,7 +2015,7 @@ set_define("A11Y_LOG", True, when=a11y_log) +@@ -2019,7 +2024,7 @@ set_define("A11Y_LOG", True, when=a11y_log) # ============================================================== @depends(milestone) def require_signing(milestone): diff --git a/src/toolkit/mozapps/extensions/AddonManager-sys-mjs.patch b/src/toolkit/mozapps/extensions/AddonManager-sys-mjs.patch index c0112ca2e..6884109a0 100644 --- a/src/toolkit/mozapps/extensions/AddonManager-sys-mjs.patch +++ b/src/toolkit/mozapps/extensions/AddonManager-sys-mjs.patch @@ -1,8 +1,8 @@ diff --git a/toolkit/mozapps/extensions/AddonManager.sys.mjs b/toolkit/mozapps/extensions/AddonManager.sys.mjs -index 2f855e6e48f420e3782d3be31cfdfa6c40db479b..de55b4c7ff7517169ac56693b4cb3c46b3c20736 100644 +index 044e2960be887b9272509ceff2fc1a2952fd997c..326ddbc0f10fb4134f8b6116c788bef24bb2d3e8 100644 --- a/toolkit/mozapps/extensions/AddonManager.sys.mjs +++ b/toolkit/mozapps/extensions/AddonManager.sys.mjs -@@ -1214,12 +1214,12 @@ var AddonManagerInternal = { +@@ -1221,12 +1221,12 @@ var AddonManagerInternal = { ITEM_VERSION: aAddon.version, ITEM_STATUS: addonStatus, APP_ID: Services.appinfo.ID, diff --git a/src/toolkit/mozapps/extensions/content/aboutaddons-html.patch b/src/toolkit/mozapps/extensions/content/aboutaddons-html.patch index 2c6b4f5c5..26673d0f7 100644 --- a/src/toolkit/mozapps/extensions/content/aboutaddons-html.patch +++ b/src/toolkit/mozapps/extensions/content/aboutaddons-html.patch @@ -1,8 +1,8 @@ diff --git a/toolkit/mozapps/extensions/content/aboutaddons.html b/toolkit/mozapps/extensions/content/aboutaddons.html -index 55d6625c0847b9ae9d4f847ad978e8dc62f98c70..4d3179c3eb04fc5d2e5e34e646aba029a7118ebc 100644 +index a075350abd62ffa34874dbd8d5a9a3f9aec3560d..5cad47c50518eeb41b4d9657fa805d8fa1dba470 100644 --- a/toolkit/mozapps/extensions/content/aboutaddons.html +++ b/toolkit/mozapps/extensions/content/aboutaddons.html -@@ -76,6 +76,7 @@ +@@ -73,6 +73,7 @@ type="module" src="chrome://global/content/elements/moz-five-star.mjs" ></script> diff --git a/src/toolkit/mozapps/extensions/internal/XPIDatabase-sys-mjs.patch b/src/toolkit/mozapps/extensions/internal/XPIDatabase-sys-mjs.patch index 24f2f2c61..0739270f6 100644 --- a/src/toolkit/mozapps/extensions/internal/XPIDatabase-sys-mjs.patch +++ b/src/toolkit/mozapps/extensions/internal/XPIDatabase-sys-mjs.patch @@ -1,5 +1,5 @@ diff --git a/toolkit/mozapps/extensions/internal/XPIDatabase.sys.mjs b/toolkit/mozapps/extensions/internal/XPIDatabase.sys.mjs -index 17219a88b42b0954f7bd7f7ea7ae8dcad55cc77c..a059e2af3851cdfc697f7f2584bcfc2124b996a9 100644 +index f6333f54da4cd0e81ef0cdf5720d54480a9c865e..2d098b0675e3efdfd6fa1ac0fed0e293b5367b1e 100644 --- a/toolkit/mozapps/extensions/internal/XPIDatabase.sys.mjs +++ b/toolkit/mozapps/extensions/internal/XPIDatabase.sys.mjs @@ -138,7 +138,7 @@ const KEY_APP_GLOBAL = "app-global"; @@ -11,7 +11,7 @@ index 17219a88b42b0954f7bd7f7ea7ae8dcad55cc77c..a059e2af3851cdfc697f7f2584bcfc21 // Properties to cache and reload when an addon installation is pending const PENDING_INSTALL_METADATA = [ -@@ -1720,8 +1720,11 @@ const updatedAddonFluentIds = new Map([ +@@ -1771,8 +1771,11 @@ const updatedAddonFluentIds = new Map([ updatedAddonFluentIds.get(defaultFluentId) || defaultFluentId; [formattedMessage] = l10n.formatMessagesSync([{ id: fluentId }]); } diff --git a/src/toolkit/mozapps/extensions/internal/XPIProvider-sys-mjs.patch b/src/toolkit/mozapps/extensions/internal/XPIProvider-sys-mjs.patch index 870533b32..8bb6cf4ce 100644 --- a/src/toolkit/mozapps/extensions/internal/XPIProvider-sys-mjs.patch +++ b/src/toolkit/mozapps/extensions/internal/XPIProvider-sys-mjs.patch @@ -1,8 +1,8 @@ diff --git a/toolkit/mozapps/extensions/internal/XPIProvider.sys.mjs b/toolkit/mozapps/extensions/internal/XPIProvider.sys.mjs -index 6aeb6a6dc7fd46eefac6a0cd56fadaee11efc6c0..abbd17afaadfadb3f97a0553764ac35aab67116c 100644 +index 3af9a7779dd43a6ded906ceaf6768c56d53c8605..c0b597fa3f8073b9bfb4118d5352246a5b54c2d7 100644 --- a/toolkit/mozapps/extensions/internal/XPIProvider.sys.mjs +++ b/toolkit/mozapps/extensions/internal/XPIProvider.sys.mjs -@@ -2535,8 +2535,8 @@ export var XPIProvider = { +@@ -2556,8 +2556,8 @@ export var XPIProvider = { } // Keep version in sync with toolkit/mozapps/extensions/default-theme/manifest.json this.maybeInstallBuiltinAddon( diff --git a/src/toolkit/profile/nsToolkitProfileService-cpp.patch b/src/toolkit/profile/nsToolkitProfileService-cpp.patch index d1818fca3..cb275eb4c 100644 --- a/src/toolkit/profile/nsToolkitProfileService-cpp.patch +++ b/src/toolkit/profile/nsToolkitProfileService-cpp.patch @@ -1,5 +1,5 @@ diff --git a/toolkit/profile/nsToolkitProfileService.cpp b/toolkit/profile/nsToolkitProfileService.cpp -index b5510497e20b6d989c9dd8fff0c04b585bdc75bd..25fd837240fd849fd26b4cb8b8172423f6f7d8fc 100644 +index c1b7a4a3c9d01e660ec85cf114a6b1513d8fb7ce..df199875663b2b7aba6a5da33987b759e4e0d41b 100644 --- a/toolkit/profile/nsToolkitProfileService.cpp +++ b/toolkit/profile/nsToolkitProfileService.cpp @@ -82,6 +82,8 @@ using namespace mozilla; diff --git a/src/toolkit/themes/shared/aboutReader-css.patch b/src/toolkit/themes/shared/aboutReader-css.patch index 650277f29..9813bea19 100644 --- a/src/toolkit/themes/shared/aboutReader-css.patch +++ b/src/toolkit/themes/shared/aboutReader-css.patch @@ -1,8 +1,8 @@ diff --git a/toolkit/themes/shared/aboutReader.css b/toolkit/themes/shared/aboutReader.css -index 6e4206e2939f04639ca20f8985d2ab97b571e857..27b6dbcf9cc77d7454461e056ca91ba5055aff19 100644 +index e91ae235726ec4edfbbdfebca159622a757640e9..21f761c5706c4747f5a990fc61b5f95e2eb63b5d 100644 --- a/toolkit/themes/shared/aboutReader.css +++ b/toolkit/themes/shared/aboutReader.css -@@ -912,3 +912,43 @@ pre code { +@@ -1190,3 +1190,43 @@ pre code { display: block; overflow: auto; } diff --git a/src/toolkit/themes/shared/popup-css.patch b/src/toolkit/themes/shared/popup-css.patch index ae49f318a..4879a9cb4 100644 --- a/src/toolkit/themes/shared/popup-css.patch +++ b/src/toolkit/themes/shared/popup-css.patch @@ -1,5 +1,5 @@ diff --git a/toolkit/themes/shared/popup.css b/toolkit/themes/shared/popup.css -index 648c65a9c21dc0e670b50c82cbfb237a68a951d9..ba20bfdd8e6b9cc985977d06e166147e458f2640 100644 +index ed0caa97db5726a7d1bc1cd0aa7af3fdf99690dc..730fd3a9dd90343c97ecb8a3d7891242256de0da 100644 --- a/toolkit/themes/shared/popup.css +++ b/toolkit/themes/shared/popup.css @@ -21,8 +21,8 @@ panel { @@ -22,26 +22,7 @@ index 648c65a9c21dc0e670b50c82cbfb237a68a951d9..ba20bfdd8e6b9cc985977d06e166147e @media (prefers-contrast) { --panel-border-color: color-mix(in srgb, currentColor 60%, transparent); -@@ -49,18 +47,6 @@ panel { - --panel-border-radius: 0px !important; - } - -- @media (-moz-platform: macos) { -- appearance: auto; -- -moz-default-appearance: menupopup; -- /* We set the default background here, rather than on ::part(content), -- * because otherwise it'd interfere with the native look. Non-native-looking -- * popups should get their background via --panel-background */ -- background-color: Menu; -- --panel-background: none; -- --panel-border-color: transparent; -- /* This should be kept in sync with GetMenuMaskImage() */ -- --panel-border-radius: 6px; -- } - - &::part(content) { - display: flex; -@@ -198,7 +184,6 @@ panel:where([type="arrow"]) { +@@ -208,7 +206,6 @@ panel:where([type="arrow"]) { } &[animating] { diff --git a/src/widget/cocoa/VibrancyManager-mm.patch b/src/widget/cocoa/VibrancyManager-mm.patch index 28fe7f476..1270745ca 100644 --- a/src/widget/cocoa/VibrancyManager-mm.patch +++ b/src/widget/cocoa/VibrancyManager-mm.patch @@ -35,7 +35,7 @@ index 849b62c9976a7bc5fee35e074e54c8f556ed9c38..a9742c7ff30d417a18f41f9c12025919 } } -@@ -78,6 +95,7 @@ - (NSView*)hitTest:(NSPoint)aPoint { +@@ -78,6 +95,7 @@ static NSVisualEffectBlendingMode VisualEffectBlendingModeForVibrancyType( - (void)prefChanged { self.blendingMode = VisualEffectBlendingModeForVibrancyType(mType); diff --git a/src/widget/windows/WinUtils-cpp.patch b/src/widget/windows/WinUtils-cpp.patch new file mode 100644 index 000000000..2d3854274 --- /dev/null +++ b/src/widget/windows/WinUtils-cpp.patch @@ -0,0 +1,12 @@ +diff --git a/widget/windows/WinUtils.cpp b/widget/windows/WinUtils.cpp +index 598c96cbb5cd06a986a5793ebe9c5438d419d4a9..de1317749e6a6dd7df644818970d7706a51e6c14 100644 +--- a/widget/windows/WinUtils.cpp ++++ b/widget/windows/WinUtils.cpp +@@ -2007,6 +2007,7 @@ bool WinUtils::GetTimezoneName(wchar_t* aBuffer) { + static constexpr nsLiteralCString kMicaPrefs[] = { + "widget.windows.mica"_ns, + "widget.windows.mica.popups"_ns, ++ "zen.widget.windows.acrylic"_ns, + }; + + static BOOL CALLBACK UpdateMicaInHwnd(HWND aHwnd, LPARAM aLParam) { diff --git a/src/widget/windows/nsWindow-cpp.patch b/src/widget/windows/nsWindow-cpp.patch index 30aefc18b..2c1d4f797 100644 --- a/src/widget/windows/nsWindow-cpp.patch +++ b/src/widget/windows/nsWindow-cpp.patch @@ -1,5 +1,5 @@ diff --git a/widget/windows/nsWindow.cpp b/widget/windows/nsWindow.cpp -index 209fa7536df662e24bc6739b7ac9f911fba70ff0..321bb19cf7996a4632110e0099585d7e4ca4ca8a 100644 +index d2863d5fd9ce5cedc88253a07cb061a660d42e61..28e63f8bb0b6c8d3b5655b285ea1040ea426616d 100644 --- a/widget/windows/nsWindow.cpp +++ b/widget/windows/nsWindow.cpp @@ -165,6 +165,7 @@ @@ -10,12 +10,12 @@ index 209fa7536df662e24bc6739b7ac9f911fba70ff0..321bb19cf7996a4632110e0099585d7e #include "nsNativeAppSupportWin.h" #include "nsIGfxInfo.h" -@@ -2535,7 +2536,7 @@ void nsWindow::SetMicaBackdrop(bool aEnabled) { - - // Enable Mica Alt Material if available. - const DWM_SYSTEMBACKDROP_TYPE type = -- aEnabled ? DWMSBT_TABBEDWINDOW : DWMSBT_AUTO; -+ aEnabled ? (StaticPrefs::zen_widget_windows_acrylic_AtStartup() ? DWMSBT_TRANSIENTWINDOW : DWMSBT_TABBEDWINDOW) : DWMSBT_AUTO; - DwmSetWindowAttribute(mWnd, DWMWA_SYSTEMBACKDROP_TYPE, &type, sizeof type); - } - +@@ -2546,7 +2547,7 @@ void nsWindow::UpdateMicaBackdrop(bool aForce) { + if (!useBackdrop) { + return DWMSBT_AUTO; + } +- return IsPopup() ? DWMSBT_TRANSIENTWINDOW : DWMSBT_TABBEDWINDOW; ++ return IsPopup() ? DWMSBT_TRANSIENTWINDOW : (StaticPrefs::zen_widget_windows_acrylic_AtStartup() ? DWMSBT_TRANSIENTWINDOW : DWMSBT_TABBEDWINDOW); + }(); + ::DwmSetWindowAttribute(mWnd, DWMWA_SYSTEMBACKDROP_TYPE, &backdrop, + sizeof backdrop); diff --git a/src/xpfe/appshell/AppWindow-cpp.patch b/src/xpfe/appshell/AppWindow-cpp.patch index a8328336e..0f5525701 100644 --- a/src/xpfe/appshell/AppWindow-cpp.patch +++ b/src/xpfe/appshell/AppWindow-cpp.patch @@ -1,8 +1,8 @@ diff --git a/xpfe/appshell/AppWindow.cpp b/xpfe/appshell/AppWindow.cpp -index 69157dd642fe2f20bd77fb9e39fe3ae0c2806176..d4d0aa69ae6e3fd995255f22e1088eca0e58e959 100644 +index a5e57d3086c57c4307b2c93b2814064d752d08ed..d0a83dd574ed03028ad3e79f8f0fba868bb5bec1 100644 --- a/xpfe/appshell/AppWindow.cpp +++ b/xpfe/appshell/AppWindow.cpp -@@ -1845,7 +1845,7 @@ nsresult AppWindow::MaybeSaveEarlyWindowPersistentValues( +@@ -1866,7 +1866,7 @@ nsresult AppWindow::MaybeSaveEarlyWindowPersistentValues( } } diff --git a/surfer.json b/surfer.json index c821cdef9..7de600ee4 100644 --- a/surfer.json +++ b/surfer.json @@ -5,8 +5,8 @@ "binaryName": "zen", "version": { "product": "firefox", - "version": "136.0.2", - "candidate": "136.0.2" + "version": "136.0.4", + "candidate": "137.0" }, "buildOptions": { "generateBranding": true @@ -19,7 +19,7 @@ "brandShortName": "Zen", "brandFullName": "Zen Browser", "release": { - "displayVersion": "1.10.1b", + "displayVersion": "1.10.3b", "github": { "repo": "zen-browser/desktop" }, @@ -39,7 +39,7 @@ "brandShortName": "Twilight", "brandFullName": "Zen Twilight", "release": { - "displayVersion": "1.10.1t", + "displayVersion": "1.10.3t", "github": { "repo": "zen-browser/desktop" }