This commit is contained in:
mr. m
2025-04-25 15:21:32 +02:00
22 changed files with 7329 additions and 69 deletions

View File

@@ -15,7 +15,7 @@ on:
jobs:
mac-build:
name: Unify macOS (Universal)
runs-on: 'macos-14'
runs-on: 'macos-15'
strategy:
fail-fast: false
@@ -83,7 +83,7 @@ jobs:
cd engine
export SURFER_PLATFORM="darwin"
export PATH="$(python3 -m site --user-base)/bin":$PATH
./mach --no-interactive bootstrap --application-choice browser --no-system-changes
./mach --no-interactive bootstrap --application-choice browser --no-system-changes || true
cd ..
- name: Import

View File

@@ -114,7 +114,7 @@ To upgrade the browser to a newer version, use the embedded update functionality
## 👨‍💻 Development and Contributing
Some components used by @zen-browser as an attempt to make firefox forks a better place, and for other to enjoy the beauty of OSS. You can find them [here](https://github.com/zen-browser/desktop/tree/dev/src/zen).
Some components used by @zen-browser as an attempt to make Firefox forks a better place, and for other to enjoy the beauty of OSS. You can find them [here](https://github.com/zen-browser/desktop/tree/dev/src/zen).
#### `Run Locally`

View File

@@ -24,7 +24,7 @@ Start-Job -Name "DownloadGitl10n" -ScriptBlock {
cd $PWD
$env:ZEN_L10N_CURR_DIR=[regex]::replace($PWD, "^([A-Z]):", { "/" + $args.value.Substring(0, 1).toLower() }) -replace "\\", "/"
C:\mozilla-build\start-shell.bat $PWD\scripts\download-language-packs.sh
echo "Fetched l10n and firefox's one"
echo "Fetched l10n and Firefox's one"
} -Verbose -ArgumentList $PWD -Debug
Start-Job -Name "SurferInit" -ScriptBlock {
@@ -84,7 +84,7 @@ function DownloadArtifacts($name) {
echo "Downloading artifact to $tempFile"
DownloadFile $artifactUrl $tempFile
Start-Job -Name "UnzipArtifact$name" -ScriptBlock {
param($tempFile, $outputPath)
echo "Unzipping artifact to $outputPath"
@@ -128,13 +128,13 @@ function SignAndPackage($name) {
echo "Removing old obj dir"
rmdir engine\obj-$objName-pc-windows-msvc\ -Recurse -ErrorAction SilentlyContinue
echo "Creating new obj dir"
cp windsign-temp\windows-x64-obj-$name engine\obj-$objName-pc-windows-msvc\ -Recurse
echo "Copying setup.exe into obj dir"
$env:ZEN_SETUP_EXE_PATH="$PWD\windsign-temp\windows-x64-obj-$name\browser\installer\windows\instgen\setup.exe"
if ($name -eq "arm64") {
$env:WIN32_REDIST_DIR="$PWD\win-cross\vs2022\VC\Redist\MSVC\14.38.33135\arm64\Microsoft.VC143.CRT"
} else {

View File

@@ -20,7 +20,7 @@
| video playing windows go blank for split second | https://github.com/zen-browser/desktop/issues/3313 | None | None |
| Light mode makes some buttons look disabled | https://github.com/zen-browser/desktop/issues/3312 | 0:40:59 | 20 days, 19:57:32 |
| Tabs unloading with the feature disabled | https://github.com/zen-browser/desktop/issues/3311 | None | None |
| Default browser settings changes to firefox when i close the Zen | https://github.com/zen-browser/desktop/issues/3310 | None | None |
| Default browser settings changes to Firefox when i close the Zen | https://github.com/zen-browser/desktop/issues/3310 | None | None |
| zen.source.tar.gz is incorrectly named, should be .tar.zst instead | https://github.com/zen-browser/desktop/issues/3308 | None | None |
| Tab temporarely is compacted to the width of my sidebar before loading in when switching from a split-view | https://github.com/zen-browser/desktop/issues/3307 | None | None |
| Pre-assigned url to a container, and associate a container to a workspace, but that chain is broken | https://github.com/zen-browser/desktop/issues/3306 | None | 9 days, 21:18:59 |

View File

@@ -251,7 +251,7 @@
| "Show all tabs" keyboard shortcut not working | https://github.com/zen-browser/desktop/issues/3765 | 4:43:13 | None |
| URL bar missing on windows of different workspaces | https://github.com/zen-browser/desktop/issues/3764 | 1 day, 12:20:03 | 9 days, 9:18:05 |
| The tab pane shakes in compact mode when hovering on the buttons | https://github.com/zen-browser/desktop/issues/3763 | None | 9 days, 3:05:22 |
| this last update is GARBAGE!!! why would you do that to the address bar when you click once it moves to the center. and the new logo sucks. im probably going back to firefox | https://github.com/zen-browser/desktop/issues/3762 | 2:15:10 | 17:24:07 |
| this last update is GARBAGE!!! why would you do that to the address bar when you click once it moves to the center. and the new logo sucks. im probably going back to Firefox | https://github.com/zen-browser/desktop/issues/3762 | 2:15:10 | 17:24:07 |
| Floating Web Panel Disappears When Clicking elsewhere on the Screen | https://github.com/zen-browser/desktop/issues/3759 | 18:57:22 | 18:57:22 |
| Visual problems occur when playing embedded videos on websites presented in picture-in-picture mode in zen browser using it under GNU/Linux. | https://github.com/zen-browser/desktop/issues/3758 | 21:40:26 | 1 day, 0:38:06 |
| URL Bar weird behaviour on compact mode and shortcuts | https://github.com/zen-browser/desktop/issues/3757 | 14:46:59 | 4 days, 21:05:40 |

View File

@@ -111,7 +111,7 @@
| Compact mode won't disable after changing which toolbars are hidden | https://github.com/zen-browser/desktop/issues/4649 | 16:26:34 | None |
| Problem with tab bar and top bar | https://github.com/zen-browser/desktop/issues/4648 | 7:28:57 | None |
| Excessive margin between bookmark sidebar and center pane | https://github.com/zen-browser/desktop/issues/4647 | 7:37:12 | None |
| I am not able to save my bookmarks of zen with the autoExportHTML flag, this works fine on firefox though. | https://github.com/zen-browser/desktop/issues/4646 | None | None |
| I am not able to save my bookmarks of zen with the autoExportHTML flag, this works fine on Firefox though. | https://github.com/zen-browser/desktop/issues/4646 | None | None |
| Dropdown input is not selected | https://github.com/zen-browser/desktop/issues/4645 | None | None |
| Toolbar becomes big after customizing the bookmarks placement | https://github.com/zen-browser/desktop/issues/4641 | None | None |
| Zen Mods are not properly installing | https://github.com/zen-browser/desktop/issues/4640 | None | None |
@@ -349,7 +349,7 @@
| Page refresh | https://github.com/zen-browser/desktop/issues/4338 | 11:57:25 | None |
| Expand Side's bar changes position of forward and backward buttons | https://github.com/zen-browser/desktop/issues/4336 | 12:19:39 | None |
| breaks after using rectify11 and mica for everyone | https://github.com/zen-browser/desktop/issues/4335 | None | 3:03:08 |
| Link "Zen support site" redirects to firefox support site | https://github.com/zen-browser/desktop/issues/4333 | 16:39:30 | 16:39:30 |
| Link "Zen support site" redirects to Firefox support site | https://github.com/zen-browser/desktop/issues/4333 | 16:39:30 | 16:39:30 |
| Opening discord keeps crashing the tab | https://github.com/zen-browser/desktop/issues/4332 | 0:24:48 | 0:24:48 |
| space between essentials/tabs and the workspace title is different for default vs others | https://github.com/zen-browser/desktop/issues/4329 | None | 1 day, 0:42:55 |
| Essential disappears, but it's still there | https://github.com/zen-browser/desktop/issues/4328 | 17:21:42 | 2 days, 3:52:35 |
@@ -362,7 +362,7 @@
| Slow scrolling speed on the vertical tab bar in 1.6b | https://github.com/zen-browser/desktop/issues/4321 | 1:18:21 | 1 day, 5:19:47 |
| browser.urlbar.suggest.topsites set to false make url cannot be edited | https://github.com/zen-browser/desktop/issues/4319 | 1 day, 3:38:03 | 2 days, 9:54:46 |
| Tab volume icon not showing in collapsed toolbar unless tab is active | https://github.com/zen-browser/desktop/issues/4316 | None | 0:08:41 |
| Profile avatar picture flashes and is overridden by firefox account avatar | https://github.com/zen-browser/desktop/issues/4315 | 8:16:31 | 8:16:31 |
| Profile avatar picture flashes and is overridden by Firefox account avatar | https://github.com/zen-browser/desktop/issues/4315 | 8:16:31 | 8:16:31 |
| Zen Browser Turn Light At Lost Focus | https://github.com/zen-browser/desktop/issues/4314 | 2 days, 4:11:22 | 5 days, 16:04:18 |
| "Log-in to this network" modal & button not interactible | https://github.com/zen-browser/desktop/issues/4313 | None | None |
| Sudden Crashes on Arch Linux with Multiple Tabs Opened | https://github.com/zen-browser/desktop/issues/4309 | 2:56:11 | None |

View File

@@ -516,7 +516,7 @@
| icon is in not visible in the toolbar | https://github.com/zen-browser/desktop/issues/5215 | 4 days, 19:21:15 | None |
| Issue: New Tab Not Opening When Searching in Korean | https://github.com/zen-browser/desktop/issues/5213 | 0:14:43 | 6 days, 13:05:20 |
| Right-Click Context Menu: Keyboard Shortcuts Require Enter to Activate | https://github.com/zen-browser/desktop/issues/5212 | None | None |
| Support daily.dev extension in zen browser. firefox doesn't. | https://github.com/zen-browser/desktop/issues/5211 | 0:05:56 | 0:05:56 |
| Support daily.dev extension in zen browser. Firefox doesn't. | https://github.com/zen-browser/desktop/issues/5211 | 0:05:56 | 0:05:56 |
| Error at the bottom right when opening a tab | https://github.com/zen-browser/desktop/issues/5210 | 0:28:59 | 0:28:59 |
| Pen Tablet Scrolling Not Working in Sidebar | https://github.com/zen-browser/desktop/issues/5209 | None | None |
| Essentials icons are off center | https://github.com/zen-browser/desktop/issues/5207 | 19:44:34 | 22:48:36 |

View File

@@ -83,7 +83,7 @@
| Some browser dialogs appear off-screen | https://github.com/zen-browser/desktop/issues/7076 | 1 day, 1:32:55 | None |
| Mouse over floating sidebar prevents hide | https://github.com/zen-browser/desktop/issues/7075 | None | None |
| CRX Installer Not working in Zen Browser. | https://github.com/zen-browser/desktop/issues/7074 | 2 days, 23:32:33 | 3 days, 2:39:52 |
| Cannot resize native firefox sidebar when positioned on the right after restarting the browser | https://github.com/zen-browser/desktop/issues/7073 | None | None |
| Cannot resize native Firefox sidebar when positioned on the right after restarting the browser | https://github.com/zen-browser/desktop/issues/7073 | None | None |
| compact mode color bug | https://github.com/zen-browser/desktop/issues/7068 | 0:19:56 | 2:12:33 |
| Unable to assign Cmd+Z for undo | https://github.com/zen-browser/desktop/issues/7067 | None | None |
| "change theme colors" cannot be undone and breaks other theming features | https://github.com/zen-browser/desktop/issues/7066 | None | None |
@@ -560,7 +560,7 @@
| 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 |
| 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 |
@@ -613,7 +613,7 @@
| 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 |
| 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 |
@@ -758,7 +758,7 @@
| 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 |
| 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 |
@@ -800,7 +800,7 @@
| 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 |
| 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 |

View File

@@ -16,4 +16,4 @@
To save the tabs and identity them, they will contain a `zen-workspace-uuid` attribute with the workspace uuid.
We will make use of firefox's builtin session restore feature to save the tabs and windows after the user closes the browser.
We will make use of Firefox's builtin session restore feature to save the tabs and windows after the user closes the browser.

View File

@@ -339,7 +339,7 @@ pref("network.http.rcwn.enabled", false);
pref("devtools.debugger.remote-enabled", false);
pref("devtools.chrome.enabled", true);
// Disable firefox's revamp
// Disable Firefox's revamp
pref("sidebar.revamp", false, locked);
pref("sidebar.verticalTabs", false, locked);

View File

@@ -170,7 +170,6 @@ var gZenMarketplaceManager = {
for (const theme of Object.values(themes).sort((a, b) => a.name.localeCompare(b.name))) {
const sanitizedName = `theme-${theme.name?.replaceAll(/\s/g, '-')?.replaceAll(/[^A-z_-]+/g, '')}`;
const isThemeEnabled = theme.enabled === undefined || theme.enabled;
const fragment = window.MozXULElement.parseXULToFragment(`
<vbox class="zenThemeMarketplaceItem">
<vbox class="zenThemeMarketplaceItemContent">
@@ -181,6 +180,7 @@ var gZenMarketplaceManager = {
</vbox>
<hbox class="zenThemeMarketplaceItemActions">
${theme.preferences ? `<button id="zenThemeMarketplaceItemConfigureButton-${sanitizedName}" class="zenThemeMarketplaceItemConfigureButton" hidden="true"></button>` : ''}
${theme.homepage ? `<button id="zenThemeMarketplaceItemHomePageLink-${sanitizedName}" class="zenThemeMarketplaceItemHomepageButton" zen-theme-id="${theme.id}"></button>` : ''}
<button class="zenThemeMarketplaceItemUninstallButton" data-l10n-id="zen-theme-marketplace-remove-button" zen-theme-id="${theme.id}"></button>
</hbox>
</vbox>
@@ -274,6 +274,16 @@ var gZenMarketplaceManager = {
await this.removeTheme(event.target.getAttribute('zen-theme-id'));
});
if (theme.homepage) {
const homepageButton = fragment.querySelector('.zenThemeMarketplaceItemHomepageButton');
homepageButton.addEventListener('click', () => {
// open the homepage url in a new tab
const url = theme.homepage;
window.open(url, '_blank');
});
}
if (theme.preferences) {
fragment.querySelector('.zenThemeMarketplaceItemConfigureButton').addEventListener('click', () => {
dialog.showModal();

View File

@@ -1,5 +1,5 @@
diff --git a/browser/components/tabbrowser/content/tabs.js b/browser/components/tabbrowser/content/tabs.js
index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..691c5435cd27236f6374ab702be1ab66a0a26543 100644
index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..2885d896c4026278dfcb309f12230d6f86275ada 100644
--- a/browser/components/tabbrowser/content/tabs.js
+++ b/browser/components/tabbrowser/content/tabs.js
@@ -83,7 +83,7 @@
@@ -223,8 +223,15 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..691c5435cd27236f6374ab702be1ab66
let visibleTabsInGroup = child.tabs.filter(tab => tab.visible);
visibleTabsInGroup.forEach(tab => {
tab.elementIndex = elementIndex++;
@@ -1709,10 +1746,7 @@
@@ -1707,12 +1744,14 @@
focusableItems.push(...visibleTabsInGroup);
}
}
+ let glanceTab = child.querySelector("tab[zen-glance-tab]");
+ if (isTab(child) && glanceTab) {
+ glanceTab.elementIndex = elementIndex++;
+ focusableItems.push(glanceTab);
+ }
}
- this.#focusableItems = [
@@ -235,7 +242,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..691c5435cd27236f6374ab702be1ab66
return this.#focusableItems;
}
@@ -1720,6 +1754,7 @@
@@ -1720,6 +1759,7 @@
_invalidateCachedTabs() {
this.#allTabs = null;
this._invalidateCachedVisibleTabs();
@@ -243,7 +250,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..691c5435cd27236f6374ab702be1ab66
}
_invalidateCachedVisibleTabs() {
@@ -1734,8 +1769,8 @@
@@ -1734,8 +1774,8 @@
#isContainerVerticalPinnedGrid(tab) {
return (
this.verticalMode &&
@@ -254,7 +261,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..691c5435cd27236f6374ab702be1ab66
!this.expandOnHover
);
}
@@ -1751,7 +1786,7 @@
@@ -1751,7 +1791,7 @@
if (node == null) {
// We have a container for non-tab elements at the end of the scrollbox.
@@ -263,7 +270,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..691c5435cd27236f6374ab702be1ab66
}
node.before(tab);
@@ -1846,7 +1881,7 @@
@@ -1846,7 +1886,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.
@@ -272,7 +279,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..691c5435cd27236f6374ab702be1ab66
const newTab2 = this.newTabButton;
const newTabVertical = document.getElementById(
"vertical-tabs-newtab-button"
@@ -1941,10 +1976,12 @@
@@ -1941,10 +1981,12 @@
_handleTabSelect(aInstant) {
let selectedTab = this.selectedItem;
@@ -285,7 +292,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..691c5435cd27236f6374ab702be1ab66
selectedTab._notselectedsinceload = false;
}
@@ -2085,16 +2122,15 @@
@@ -2085,16 +2127,15 @@
// Move pinned tabs to another container when the tabstrip is toggled to vertical
// and when session restore code calls _positionPinnedTabs; update styling whenever
// the number of pinned tabs changes.
@@ -308,7 +315,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..691c5435cd27236f6374ab702be1ab66
}
}
@@ -2102,9 +2138,7 @@
@@ -2102,9 +2143,7 @@
}
_resetVerticalPinnedTabs() {
@@ -319,7 +326,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..691c5435cd27236f6374ab702be1ab66
if (!verticalTabsContainer.children.length) {
return;
@@ -2117,7 +2151,7 @@
@@ -2117,7 +2156,7 @@
}
_positionPinnedTabs() {
@@ -328,7 +335,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..691c5435cd27236f6374ab702be1ab66
let numPinned = gBrowser.pinnedTabCount;
let absPositionHorizontalTabs =
this.overflowing && tabs.length > numPinned && numPinned > 0;
@@ -2127,7 +2161,7 @@
@@ -2127,7 +2166,7 @@
if (this.verticalMode) {
this._updateVerticalPinnedTabs();
@@ -337,7 +344,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..691c5435cd27236f6374ab702be1ab66
let layoutData = this._pinnedTabsLayoutCache;
let uiDensity = document.documentElement.getAttribute("uidensity");
if (!layoutData || layoutData.uiDensity != uiDensity) {
@@ -2191,7 +2225,7 @@
@@ -2191,7 +2230,7 @@
return;
}
@@ -346,7 +353,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..691c5435cd27236f6374ab702be1ab66
let directionX = screenX > dragData.animLastScreenX;
let directionY = screenY > dragData.animLastScreenY;
@@ -2199,7 +2233,7 @@
@@ -2199,7 +2238,7 @@
dragData.animLastScreenX = screenX;
let { width: tabWidth, height: tabHeight } =
@@ -355,7 +362,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..691c5435cd27236f6374ab702be1ab66
let shiftSizeX = tabWidth * movingTabs.length;
let shiftSizeY = tabHeight;
dragData.tabWidth = tabWidth;
@@ -2374,12 +2408,16 @@
@@ -2374,12 +2413,16 @@
this.#clearDragOverCreateGroupTimer();
@@ -377,7 +384,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..691c5435cd27236f6374ab702be1ab66
if (this.#rtlMode) {
tabs.reverse();
@@ -2393,7 +2431,7 @@
@@ -2393,7 +2436,7 @@
let size = this.verticalMode ? "height" : "width";
let translateAxis = this.verticalMode ? "translateY" : "translateX";
let scrollDirection = this.verticalMode ? "scrollTop" : "scrollLeft";
@@ -386,7 +393,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..691c5435cd27236f6374ab702be1ab66
let translateX = event.screenX - dragData.screenX;
let translateY = event.screenY - dragData.screenY;
@@ -2407,10 +2445,19 @@
@@ -2407,10 +2450,19 @@
let lastTab = tabs.at(-1);
let lastMovingTab = movingTabs.at(-1);
let firstMovingTab = movingTabs[0];
@@ -406,7 +413,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..691c5435cd27236f6374ab702be1ab66
let translate = screen - dragData[screenAxis];
if (!isPinned) {
translate +=
@@ -2431,6 +2478,9 @@
@@ -2431,6 +2483,9 @@
// Shift the `.tab-group-label-container` to shift the label element.
item = item.parentElement;
}
@@ -416,7 +423,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..691c5435cd27236f6374ab702be1ab66
item.style.transform = `${translateAxis}(${translate}px)`;
}
@@ -2568,6 +2618,9 @@
@@ -2568,6 +2623,9 @@
break;
}
let element = tabs[mid];
@@ -426,7 +433,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..691c5435cd27236f6374ab702be1ab66
let elementForSize = isTabGroupLabel(element)
? element.parentElement
: element;
@@ -2590,6 +2643,10 @@
@@ -2590,6 +2648,10 @@
if (!dropElement) {
dropElement = this.ariaFocusableItems[oldDropElementIndex];
}
@@ -437,7 +444,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..691c5435cd27236f6374ab702be1ab66
let newDropElementIndex = dropElement
? dropElement.elementIndex
: oldDropElementIndex;
@@ -2598,7 +2655,7 @@
@@ -2598,7 +2660,7 @@
let shouldCreateGroupOnDrop;
let dropBefore;
if (dropElement) {
@@ -446,7 +453,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..691c5435cd27236f6374ab702be1ab66
? dropElement.parentElement
: dropElement;
@@ -2660,12 +2717,12 @@
@@ -2660,12 +2722,12 @@
}
}
@@ -461,7 +468,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..691c5435cd27236f6374ab702be1ab66
dropElement != draggedTab &&
isTab(dropElement) &&
!dropElement?.group &&
@@ -2735,7 +2792,7 @@
@@ -2735,7 +2797,7 @@
// Shift background tabs to leave a gap where the dragged tab
// would currently be dropped.
for (let item of tabs) {
@@ -470,7 +477,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..691c5435cd27236f6374ab702be1ab66
continue;
}
@@ -2744,6 +2801,9 @@
@@ -2744,6 +2806,9 @@
if (isTabGroupLabel(item)) {
// Shift the `.tab-group-label-container` to shift the label element.
item = item.parentElement;
@@ -480,7 +487,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..691c5435cd27236f6374ab702be1ab66
}
item.style.transform = transform;
}
@@ -2796,8 +2856,9 @@
@@ -2796,8 +2861,9 @@
);
}
@@ -492,7 +499,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..691c5435cd27236f6374ab702be1ab66
return;
}
@@ -2809,6 +2870,12 @@
@@ -2809,6 +2875,12 @@
item = item.parentElement;
}
item.style.transform = "";
@@ -505,7 +512,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..691c5435cd27236f6374ab702be1ab66
item.removeAttribute("dragover-createGroup");
}
this.removeAttribute("movingtab-createGroup");
@@ -2855,7 +2922,7 @@
@@ -2855,7 +2927,7 @@
let postTransitionCleanup = () => {
movingTab._moveTogetherSelectedTabsData.animate = false;
};
@@ -514,7 +521,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..691c5435cd27236f6374ab702be1ab66
postTransitionCleanup();
} else {
let onTransitionEnd = transitionendEvent => {
@@ -3028,7 +3095,7 @@
@@ -3028,7 +3100,7 @@
}
_notifyBackgroundTab(aTab) {
@@ -523,7 +530,7 @@ index ef9c0389ec926e6bc01c0dc3b883beceaf1f7d43..691c5435cd27236f6374ab702be1ab66
return;
}
@@ -3154,6 +3221,9 @@
@@ -3154,6 +3226,9 @@
return null;
}
}

View File

@@ -470,10 +470,33 @@ groupbox h2 {
align-items: center;
}
.zenThemeMarketplaceItemHomepageButton {
width: 30px;
min-width: 0;
position: relative;
cursor: pointer;
&::before {
content: '';
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
width: 18px;
height: 18px;
background-image: url('chrome://browser/skin/home.svg');
background-repeat: no-repeat;
background-size: cover;
fill: currentColor;
-moz-context-properties: fill, fill-opacity;
}
}
.zenThemeMarketplaceItemConfigureButton {
width: 30px;
min-width: 0;
position: relative;
cursor: pointer;
&::before {
content: '';

View File

@@ -1,3 +1,3 @@
# Temporal patches done to firefox
# Temporal patches done to Firefox
**IMPORTANT**: Once they start failing (on new firefox reelases), they should be removed as these patches are imported from future versions of firefox as termporary solutions while we wait.
**IMPORTANT**: Once they start failing (on new Firefox releases), they should be removed as these patches are imported from future versions of Firefox as temporary solutions while we wait.

View File

@@ -70,9 +70,12 @@ var gZenUIManager = {
} catch (error) {
console.error('Error updating layout breakout:', error);
}
setTimeout(() => {
ZenWorkspaces.updateTabsContainers();
}, 0);
if (!this._preventToolbarRebuild) {
setTimeout(() => {
ZenWorkspaces.updateTabsContainers();
}, 0);
}
delete this._preventToolbarRebuild;
},
get tabsWrapper() {

View File

@@ -104,7 +104,7 @@
}
#nav-bar {
/* For some reason, firefox adds a really small border to the top of the nav-bar */
/* For some reason, Firefox adds a really small border to the top of the nav-bar */
border-top: none !important;
}

View File

@@ -74,7 +74,7 @@ panel {
padding-inline-start: calc(16px + var(--uc-arrowpanel-menuicon-margin-inline));
}
/* firefox profile avatar in appmenu */
/* Firefox profile avatar in appmenu */
#appMenu-fxa-label2::before {
content: '';
display: -moz-box;

View File

@@ -19,7 +19,7 @@ const kZenMaxElementSeparation = 12;
* because we need a way to apply the accent color without having to worry about
* shadow roots not inheriting the accent color.
*
* note: It must be a firefox builtin page with access to the browser's configuration
* note: It must be a Firefox builtin page with access to the browser's configuration
* and services.
*/
var ZenThemeModifier = {

View File

@@ -394,7 +394,7 @@ class KeyShortcut {
}
key.setAttribute('group', this.#group);
// note to "mr. macos": We add the `zen-` prefix because firefox hasnt been built with the
// note to "mr. macos": We add the `zen-` prefix because Firefox hasnt been built with the
// shortcuts in mind, it will simply just override the shortcuts with whatever the default is.
// note that this l10n id is not used for actually translating the key's label, but rather to
// identify the default keybinds.

View File

@@ -586,12 +586,10 @@
}
onMediaMute() {
if (!this.mediaControlBar.hasAttribute('muted')) {
this._currentBrowser.mute();
this.mediaControlBar.setAttribute('muted', '');
} else {
this._currentBrowser.unmute();
this.mediaControlBar.removeAttribute('muted');
const tab = window.gBrowser.getTabForBrowser(this._currentBrowser);
if (tab) {
tab.toggleMuteAudio();
this.updateMuteState();
}
}
@@ -639,7 +637,7 @@
updateMuteState() {
if (!this._currentBrowser) return;
this.mediaControlBar.toggleAttribute('muted', this._currentBrowser._audioMuted);
this.mediaControlBar.toggleAttribute('muted', this._currentBrowser.audioMuted);
}
updatePipButton() {

View File

@@ -380,7 +380,7 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
}
getCurrentEssentialsContainer() {
const currentWorkspace = this.activeWorkspace;
const currentWorkspace = this.getActiveWorkspaceFromCache();
return this.getEssentialsSection(currentWorkspace?.containerTabId);
}
@@ -956,7 +956,7 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
}
handleContextMenuCommand(event) {
const target = event.target.closest('toolbarbutton');
const target = event.target.closest('menuitem');
if (!target) {
return;
}
@@ -1974,7 +1974,8 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
const newTransform = `translateX(${offset}%)`;
if (shouldAnimate) {
if (element.classList.contains('zen-workspace-pinned-tabs-section') && this.containerSpecificEssentials) {
await this.updateTabsContainers(element, true);
// Note: Do not call with await on purpose, for better timing on animations
this.updateTabsContainers(element, true);
}
element.removeAttribute('hidden');
animations.push(
@@ -2103,6 +2104,7 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
}
}
if (shouldAnimate) {
gZenUIManager._preventToolbarRebuild = true;
gZenUIManager.updateTabsToolbar();
}
await Promise.all(animations);
@@ -2297,7 +2299,7 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
}
async updateTabsContainers(target = undefined, forAnimation = false) {
if (target && !(target instanceof HTMLElement)) {
if (target && !target.parentNode) {
target = null;
}
await this.onPinnedTabsResize([{ target: target ?? this.pinnedTabsContainer }], forAnimation);

7217
test.txt Normal file

File diff suppressed because one or more lines are too long