Compare commits
42 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
110d4e10bb | ||
|
|
6d458d3b16 | ||
|
|
40ce0b714e | ||
|
|
8a5b0928c5 | ||
|
|
7e55497e20 | ||
|
|
2d333a23a4 | ||
|
|
0a32810f36 | ||
|
|
c6cbf7941c | ||
|
|
33d8103335 | ||
|
|
3df1973ac9 | ||
|
|
d51391bb9b | ||
|
|
94714e4f39 | ||
|
|
12266179d6 | ||
|
|
a9f2bf2d54 | ||
|
|
3972a181e6 | ||
|
|
986661b6e8 | ||
|
|
99faa45d94 | ||
|
|
daad62d939 | ||
|
|
f775a12de9 | ||
|
|
ebc33723b0 | ||
|
|
2c8d2babdc | ||
|
|
7771b5af2d | ||
|
|
1729b553a4 | ||
|
|
4f10a12869 | ||
|
|
a0b372e7d9 | ||
|
|
daded49ce8 | ||
|
|
d5d101d3f8 | ||
|
|
e83b698df4 | ||
|
|
712cba1398 | ||
|
|
b954efe624 | ||
|
|
163d2c8d8f | ||
|
|
cf807ea93e | ||
|
|
0a9942d01f | ||
|
|
6d164511b4 | ||
|
|
441ea2000b | ||
|
|
64281776f4 | ||
|
|
a93fdf5a17 | ||
|
|
050ed71c00 | ||
|
|
7b029cc7bc | ||
|
|
07afc4810a | ||
|
|
9a27b66661 | ||
|
|
ee91ea86ff |
21
.github/workflows/build.yml
vendored
21
.github/workflows/build.yml
vendored
@@ -516,11 +516,31 @@ jobs:
|
||||
commit_user_email: zen-browser-auto@users.noreply.github.com
|
||||
repository: ./updates-server
|
||||
|
||||
- name: Build release README
|
||||
run: |
|
||||
echo "# Zen Stable Release" > README.md
|
||||
echo "This is the stable release of Zen Browser." >> README.md
|
||||
echo "## Sha256 checksums" >> README.md
|
||||
echo "```" >> README.md
|
||||
sha256sum ./zen.source.tar.zst/* >> README.md
|
||||
sha256sum ./zen.linux-x86_64.tar.xz/* >> README.md
|
||||
sha256sum ./zen.linux-aarch64.tar.xz/* >> README.md
|
||||
sha256sum ./zen-x86_64.AppImage/* >> README.md
|
||||
sha256sum ./zen-x86_64.AppImage.zsync/* >> README.md
|
||||
sha256sum ./zen-aarch64.AppImage/* >> README.md
|
||||
sha256sum ./zen-aarch64.AppImage.zsync/* >> README.md
|
||||
sha256sum ./linux-aarch64.mar/* >> README.md
|
||||
sha256sum ./.github/workflows/object/windows-x64-signed-x86_64/zen.installer.exe >> README.md
|
||||
sha256sum ./.github/workflows/object/windows-x64-signed-arm64/zen.installer-arm64.exe >> README.md
|
||||
sha256sum ./zen.macos-universal.dmg/* >> README.md
|
||||
echo "```" >> README.md
|
||||
|
||||
# If we are on Twilight, we want to just update the Twilight tag's release
|
||||
- name: Update Twilight tag
|
||||
if: ${{ inputs.update_branch == 'twilight' }}
|
||||
uses: softprops/action-gh-release@v2
|
||||
with:
|
||||
body_path: README.md
|
||||
files: |
|
||||
./zen.source.tar.zst/*
|
||||
./zen.linux-x86_64.tar.xz/*
|
||||
@@ -559,6 +579,7 @@ jobs:
|
||||
fail_on_unmatched_files: false
|
||||
generate_release_notes: false
|
||||
name: 'Release build - ${{ needs.build-data.outputs.version }} (${{ needs.build-data.outputs.build_date }})'
|
||||
body_path: README.md
|
||||
files: |
|
||||
./zen.source.tar.zst/*
|
||||
./zen.linux-x86_64.tar.xz/*
|
||||
|
||||
@@ -1,15 +1,6 @@
|
||||
#!/bin/sh
|
||||
SELF=$(readlink -f "$0")
|
||||
HERE=${SELF%/*}
|
||||
export PATH="${HERE}:${HERE}/usr/bin/:${HERE}/usr/sbin/:${HERE}/usr/games/:${HERE}/bin/:${HERE}/sbin/${PATH:+:$PATH}"
|
||||
export LD_LIBRARY_PATH="${HERE}/usr/lib/:${HERE}/usr/lib/i386-linux-gnu/:${HERE}/usr/lib/x86_64-linux-gnu/:${HERE}/usr/lib32/:${HERE}/usr/lib64/:${HERE}/lib/:${HERE}/lib/i386-linux-gnu/:${HERE}/lib/x86_64-linux-gnu/:${HERE}/lib32/:${HERE}/lib64/${LD_LIBRARY_PATH:+:$LD_LIBRARY_PATH}"
|
||||
export PYTHONPATH="${HERE}/usr/share/pyshared/${PYTHONPATH:+:$PYTHONPATH}"
|
||||
export MOZ_LEGACY_PROFILES=1 # Prevent per installation profiles
|
||||
DEFAULT_XDG_DATA_DIRS='./share/:/usr/share/gnome:/usr/local/share/:/usr/share/'
|
||||
export XDG_DATA_DIRS="${HERE}/usr/share/:${XDG_DATA_DIRS:-$DEFAULT_XDG_DATA_DIRS}"
|
||||
export PERLLIB="${HERE}/usr/share/perl5/:${HERE}/usr/lib/perl5/${PERLLIB:+:$PERLLIB}"
|
||||
export GSETTINGS_SCHEMA_DIR="${HERE}/usr/share/glib-2.0/schemas/${GSETTINGS_SCHEMA_DIR:+:$GSETTINGS_SCHEMA_DIR}"
|
||||
export MOZ_APP_LAUNCHER="${APPIMAGE}"
|
||||
export QT_PLUGIN_PATH="${HERE}/usr/lib/qt4/plugins/:${HERE}/usr/lib/i386-linux-gnu/qt4/plugins/:${HERE}/usr/lib/x86_64-linux-gnu/qt4/plugins/:${HERE}/usr/lib32/qt4/plugins/:${HERE}/usr/lib64/qt4/plugins/:${HERE}/usr/lib/qt5/plugins/:${HERE}/usr/lib/i386-linux-gnu/qt5/plugins/:${HERE}/usr/lib/x86_64-linux-gnu/qt5/plugins/:${HERE}/usr/lib32/qt5/plugins/:${HERE}/usr/lib64/qt5/plugins/${QT_PLUGIN_PATH:+:$QT_PLUGIN_PATH}"
|
||||
EXEC=$(grep -e '^Exec=.*' "${HERE}"/*.desktop | head -n 1 | cut -d "=" -f 2 | cut -d " " -f 1)
|
||||
exec "${EXEC}" "$@"
|
||||
CURRENTDIR="$(dirname "$(readlink -f "$0")")"
|
||||
export PATH="${CURRENTDIR}:${PATH}"
|
||||
export MOZ_LEGACY_PROFILES=1 # Prevent per installation profiles
|
||||
export MOZ_APP_LAUNCHER="${APPIMAGE}" # Allows setting as default browser
|
||||
exec "${CURRENTDIR}/zen" "$@"
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
|
||||
## 🖥️ Compatibility
|
||||
|
||||
Zen is currently built using Firefox version `136.0`! 🚀
|
||||
Zen is currently built using Firefox version `136.0.1`! 🚀
|
||||
|
||||
- [`Zen Twilight`](https://zen-browser.app/download?twilight) - Is currently built using Firefox version `RC 136.0`!
|
||||
- Check out the latest [release notes](https://zen-browser.app/release-notes)!
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
6ad0ab3c43a6208d8bcd997b40e802fccd48ba0a
|
||||
2
l10n
2
l10n
Submodule l10n updated: 1a15769b8d...1db9cb464e
@@ -118,6 +118,7 @@ pref('zen.view.compact.animate-sidebar', true);
|
||||
pref('zen.view.compact.show-sidebar-and-toolbar-on-hover', true);
|
||||
|
||||
pref('zen.urlbar.replace-newtab', true);
|
||||
pref('zen.urlbar.show-protections-icon', false);
|
||||
pref('zen.urlbar.behavior', 'floating-on-type'); // default, floating-on-type, float
|
||||
pref('zen.urlbar.wait-to-clear', 45000); // in ms (default 45s)
|
||||
pref('zen.urlbar.show-domain-only-in-sidebar', true);
|
||||
@@ -178,7 +179,7 @@ pref('zen.pinned-tab-manager.restore-pinned-tabs-to-pinned-url', false);
|
||||
pref('zen.pinned-tab-manager.close-shortcut-behavior', 'reset-unload-switch');
|
||||
|
||||
// TODO: Check this out!
|
||||
pref("browser.profiles.enabled", true);
|
||||
pref("browser.profiles.enabled", false);
|
||||
|
||||
// Zen webpanels (calling it sidebar due to legacy reasons)
|
||||
pref('zen.sidebar.data', "{\"data\":\n {\"p1\":{\n \"url\":\"https://www.wikipedia.org/\"\n },\n\"p2\":{\n \"url\":\"https://m.twitter.com/\",\n\"ua\": true\n },\n\"p3\": {\n \"url\": \"https://www.youtube.com/\",\n\"ua\": true\n},\n\"p4\": {\n \"url\": \"https://translate.google.com/\",\n\"ua\": true\n},\n\"p5\": {\n \"url\": \"https://todoist.com/\",\n\"ua\": true\n}},\n\"index\":[\"p1\",\"p2\",\"p3\",\"p4\",\"p5\"]}");
|
||||
@@ -187,6 +188,7 @@ pref('zen.sidebar.close-on-blur', true);
|
||||
pref('zen.sidebar.max-webpanels', 8);
|
||||
|
||||
// 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);
|
||||
@@ -437,6 +439,13 @@ pref("browser.newtabpage.activity-stream.asrouter.userprefs.cfr.features", false
|
||||
pref("browser.preferences.moreFromMozilla", false, locked);
|
||||
pref("browser.aboutwelcome.enabled", false);
|
||||
|
||||
// AI/ML stuff
|
||||
pref("browser.ml.chat.enabled", false);
|
||||
pref("browser.ml.chat.shortcuts", false);
|
||||
pref("browser.ml.chat.shortcuts.custom", false);
|
||||
pref("browser.ml.chat.sidebar", false);
|
||||
pref("browser.ml.enable", false);
|
||||
|
||||
// ---- Experimental settings to try make zen faster
|
||||
pref("gfx.canvas.accelerated.cache-items", 32768);
|
||||
pref("gfx.canvas.accelerated.cache-size", 256);
|
||||
|
||||
@@ -347,33 +347,37 @@ var gZenVerticalTabsManager = {
|
||||
return visibleTabs[visibleTabs.length - 1] === aTab;
|
||||
};
|
||||
|
||||
const tabSize = aTab.getBoundingClientRect().height;
|
||||
const transform = `-${tabSize}px`;
|
||||
gZenUIManager.motion
|
||||
.animate(
|
||||
aTab,
|
||||
{
|
||||
opacity: [0, 1],
|
||||
transform: ['scale(0.95)', 'scale(1)'],
|
||||
marginBottom: isLastTab() ? [] : [transform, '0px'],
|
||||
},
|
||||
{
|
||||
duration: 0.2,
|
||||
easing: 'ease-out',
|
||||
}
|
||||
)
|
||||
.then(() => {
|
||||
aTab.style.removeProperty('margin-bottom');
|
||||
aTab.style.removeProperty('transform');
|
||||
aTab.style.removeProperty('opacity');
|
||||
});
|
||||
gZenUIManager.motion
|
||||
.animate(aTab.querySelector('.tab-content'), {
|
||||
filter: ['blur(1px)', 'blur(0px)'],
|
||||
})
|
||||
.then(() => {
|
||||
aTab.querySelector('.tab-stack').style.removeProperty('filter');
|
||||
});
|
||||
try {
|
||||
const tabSize = aTab.getBoundingClientRect().height;
|
||||
const transform = `-${tabSize}px`;
|
||||
gZenUIManager.motion
|
||||
.animate(
|
||||
aTab,
|
||||
{
|
||||
opacity: [0, 1],
|
||||
transform: ['scale(0.95)', 'scale(1)'],
|
||||
marginBottom: isLastTab() ? [] : [transform, '0px'],
|
||||
},
|
||||
{
|
||||
duration: 0.2,
|
||||
easing: 'ease-out',
|
||||
}
|
||||
)
|
||||
.then(() => {
|
||||
aTab.style.removeProperty('margin-bottom');
|
||||
aTab.style.removeProperty('transform');
|
||||
aTab.style.removeProperty('opacity');
|
||||
});
|
||||
gZenUIManager.motion
|
||||
.animate(aTab.querySelector('.tab-content'), {
|
||||
filter: ['blur(1px)', 'blur(0px)'],
|
||||
})
|
||||
.then(() => {
|
||||
aTab.querySelector('.tab-stack').style.removeProperty('filter');
|
||||
});
|
||||
} catch (e) {
|
||||
console.error(e);
|
||||
}
|
||||
},
|
||||
|
||||
get actualWindowButtons() {
|
||||
@@ -620,6 +624,12 @@ var gZenVerticalTabsManager = {
|
||||
}
|
||||
|
||||
gZenCompactModeManager.updateCompactModeContext(isSingleToolbar);
|
||||
document.getElementById('urlbar').removeAttribute('--urlbar-height');
|
||||
if (!isSingleToolbar) {
|
||||
document.getElementById('urlbar').style.setProperty('--urlbar-height', '32px');
|
||||
} else {
|
||||
gURLBar.updateLayoutBreakout();
|
||||
}
|
||||
|
||||
// Always move the splitter next to the sidebar
|
||||
this.navigatorToolbox.after(document.getElementById('zen-sidebar-splitter'));
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
<vbox id="zen-glance-sidebar-container" hidden="true">
|
||||
<toolbarbutton id="zen-glance-sidebar-close" class="toolbarbutton-1" oncommand="gZenGlanceManager.closeGlance({ onTabClose: true })"/>
|
||||
<toolbarbutton id="zen-glance-sidebar-close" data-l10n-id="zen-general-confrim" class="toolbarbutton-1" oncommand="gZenGlanceManager.closeGlance({ onTabClose: true })"/>
|
||||
<toolbarbutton id="zen-glance-sidebar-open" class="toolbarbutton-1" oncommand="gZenGlanceManager.fullyOpenGlance()"/>
|
||||
</vbox>
|
||||
|
||||
@@ -276,6 +276,10 @@
|
||||
box-shadow: var(--zen-big-shadow);
|
||||
overflow: hidden;
|
||||
|
||||
&[side='right'] {
|
||||
right: 0;
|
||||
}
|
||||
|
||||
&::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
appearance: none;
|
||||
box-shadow: 0 0 12px 1px rgba(0, 0, 0, 0.07);
|
||||
opacity: 0;
|
||||
padding: 8px;
|
||||
|
||||
&:hover {
|
||||
background: light-dark(rgb(41, 41, 41), rgb(204, 204, 204));
|
||||
@@ -54,6 +55,33 @@
|
||||
filter: invert(1);
|
||||
}
|
||||
}
|
||||
|
||||
& #zen-glance-sidebar-close {
|
||||
width: fit-content;
|
||||
& label {
|
||||
display: block;
|
||||
max-width: 0px;
|
||||
margin: 0;
|
||||
overflow: hidden;
|
||||
transition:
|
||||
max-width 0.2s ease,
|
||||
margin-left 0.2s ease;
|
||||
}
|
||||
|
||||
&[waitconfirmation] {
|
||||
background: rgb(220, 53, 69);
|
||||
color: white;
|
||||
fill: white;
|
||||
& label {
|
||||
max-width: 100px;
|
||||
margin-left: 8px;
|
||||
}
|
||||
|
||||
& image {
|
||||
filter: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.browserSidebarContainer.zen-glance-overlay {
|
||||
|
||||
@@ -870,6 +870,7 @@
|
||||
pointer-events: none;
|
||||
width: 16px;
|
||||
height: 16px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
&::after {
|
||||
|
||||
@@ -16,6 +16,10 @@
|
||||
--urlbarView-highlight-background: var(--toolbarbutton-hover-background);
|
||||
border-radius: var(--toolbarbutton-border-radius);
|
||||
padding: 1px;
|
||||
|
||||
:root:not([zen-single-toolbar='true']) &[zen-floating-urlbar='true'] {
|
||||
--urlbar-container-padding: 2px !important;
|
||||
}
|
||||
}
|
||||
|
||||
.urlbar-input::placeholder {
|
||||
@@ -90,6 +94,12 @@
|
||||
justify-content: center !important;
|
||||
align-items: center !important;
|
||||
margin: 0;
|
||||
|
||||
:root[zen-single-toolbar='true'] & {
|
||||
padding: 6px !important;
|
||||
width: unset !important;
|
||||
height: unset !important;
|
||||
}
|
||||
}
|
||||
|
||||
#tracking-protection-icon-container {
|
||||
@@ -326,7 +336,7 @@ button.popup-notification-dropmarker {
|
||||
background: transparent;
|
||||
|
||||
&[notificationside='top'] {
|
||||
position: absolute;
|
||||
position: fixed;
|
||||
bottom: calc(var(--zen-element-separation) * 1.5);
|
||||
right: calc(var(--zen-element-separation) * 1.5);
|
||||
width: fit-content;
|
||||
@@ -454,6 +464,12 @@ button.popup-notification-dropmarker {
|
||||
}
|
||||
}
|
||||
|
||||
@media not (-moz-bool-pref: 'zen.urlbar.show-protections-icon') {
|
||||
#tracking-protection-icon-container {
|
||||
display: none !important;
|
||||
}
|
||||
}
|
||||
|
||||
/* Code ~~stolen~~ taken inspiration from https://github.com/greeeen-dev/zen-arc-cmd-bar
|
||||
*
|
||||
* MIT License
|
||||
|
||||
@@ -37,6 +37,9 @@ var gZenCompactModeManager = {
|
||||
|
||||
this.addMouseActions();
|
||||
this.addContextMenu();
|
||||
|
||||
// Clear hover states when window state changes (minimize, maximize, etc.)
|
||||
window.addEventListener('sizemodechange', () => this._clearAllHoverStates());
|
||||
},
|
||||
|
||||
get preference() {
|
||||
@@ -450,4 +453,15 @@ var gZenCompactModeManager = {
|
||||
let toolbar = document.getElementById('zen-appcontent-navbar-container');
|
||||
toolbar.toggleAttribute('zen-user-show');
|
||||
},
|
||||
|
||||
_clearAllHoverStates() {
|
||||
// Clear hover attributes from all hoverable elements
|
||||
for (let entry of this.hoverableElements) {
|
||||
const target = entry.element;
|
||||
if (target && !target.matches(':hover') && target.hasAttribute('zen-has-hover')) {
|
||||
target.removeAttribute('zen-has-hover');
|
||||
this.clearFlashTimeout('has-hover' + target.id);
|
||||
}
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
@@ -6,8 +6,9 @@
|
||||
#glances = new Map();
|
||||
#currentGlanceID = null;
|
||||
|
||||
#confirmationTimeout = null;
|
||||
|
||||
init() {
|
||||
window.addEventListener('keydown', this.onKeyDown.bind(this));
|
||||
window.addEventListener('TabClose', this.onTabClose.bind(this));
|
||||
window.addEventListener('TabSelect', this.onLocationChange.bind(this));
|
||||
|
||||
@@ -37,17 +38,6 @@
|
||||
return this.#glances.get(this.#currentGlanceID)?.parentTab;
|
||||
}
|
||||
|
||||
onKeyDown(event) {
|
||||
if (event.defaultPrevented) {
|
||||
return;
|
||||
}
|
||||
if (event.key === 'Escape' && this.#currentGlanceID) {
|
||||
event.preventDefault();
|
||||
event.stopPropagation();
|
||||
this.closeGlance({ onTabClose: true });
|
||||
}
|
||||
}
|
||||
|
||||
onOverlayClick(event) {
|
||||
if (event.target === this.overlay && event.originalTarget !== this.contentWrapper) {
|
||||
this.closeGlance({ onTabClose: true });
|
||||
@@ -216,11 +206,21 @@
|
||||
});
|
||||
}
|
||||
|
||||
closeGlance({ noAnimation = false, onTabClose = false, setNewID = null, isDifferent = false } = {}) {
|
||||
closeGlance({ noAnimation = false, onTabClose = false, setNewID = null, isDifferent = false, hasFocused = false } = {}) {
|
||||
if (this._animating || !this.#currentBrowser || this.animatingOpen || this._duringOpening) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (onTabClose && hasFocused && !this.#confirmationTimeout) {
|
||||
const cancelButton = document.getElementById('zen-glance-sidebar-close');
|
||||
cancelButton.setAttribute('waitconfirmation', true);
|
||||
this.#confirmationTimeout = setTimeout(() => {
|
||||
cancelButton.removeAttribute('waitconfirmation');
|
||||
this.#confirmationTimeout = null;
|
||||
}, 3000);
|
||||
return;
|
||||
}
|
||||
|
||||
this.browserWrapper.removeAttribute('has-finished-animation');
|
||||
if (noAnimation) {
|
||||
this.#currentParentTab.linkedBrowser.closest('.browserSidebarContainer').removeAttribute('style');
|
||||
@@ -275,7 +275,7 @@
|
||||
...originalPosition,
|
||||
opacity: 0,
|
||||
},
|
||||
{ type: 'spring', bounce: 0, duration: 0.6, easing: 'ease-in' }
|
||||
{ type: 'spring', bounce: 0, duration: 0.5, easing: 'ease-in' }
|
||||
)
|
||||
.then(() => {
|
||||
this.browserWrapper.removeAttribute('animate');
|
||||
@@ -398,9 +398,18 @@
|
||||
}
|
||||
}
|
||||
|
||||
// note: must be async to avoid timing issues
|
||||
clearConfirmationTimeout() {
|
||||
if (this.#confirmationTimeout) {
|
||||
clearTimeout(this.#confirmationTimeout);
|
||||
this.#confirmationTimeout = null;
|
||||
}
|
||||
document.getElementById('zen-glance-sidebar-close')?.removeAttribute('waitconfirmation');
|
||||
}
|
||||
|
||||
// note: must be sync to avoid timing issues
|
||||
onLocationChange(event) {
|
||||
const tab = event.target;
|
||||
this.clearConfirmationTimeout();
|
||||
if (this.animatingFullOpen || this.closingGlance) {
|
||||
return;
|
||||
}
|
||||
@@ -586,8 +595,12 @@
|
||||
esModuleURI: 'chrome://browser/content/zen-components/actors/ZenGlanceChild.sys.mjs',
|
||||
events: {
|
||||
DOMContentLoaded: {},
|
||||
keydown: {
|
||||
capture: true,
|
||||
},
|
||||
},
|
||||
},
|
||||
allFrames: true,
|
||||
matches: ['https://*/*'],
|
||||
});
|
||||
}
|
||||
|
||||
@@ -82,11 +82,9 @@
|
||||
}
|
||||
|
||||
onTabIconChanged(tab, url = null) {
|
||||
if (tab.hasAttribute('zen-essential') && this._pinsCache) {
|
||||
const pin = this._pinsCache.find((pin) => pin.uuid === tab.getAttribute('zen-pin-id'));
|
||||
if (pin) {
|
||||
tab.querySelector('.tab-background').style.setProperty('--zen-tab-icon', `url(${pin.iconUrl})`);
|
||||
}
|
||||
const iconUrl = url ?? tab.iconImage.src;
|
||||
if (tab.hasAttribute('zen-essential')) {
|
||||
tab.querySelector('.tab-background').style.setProperty('--zen-tab-icon', `url(${iconUrl})`);
|
||||
}
|
||||
// TODO: work on this
|
||||
//if (tab.hasAttribute('zen-pinned-changed') || !this._pinsCache) {
|
||||
@@ -468,6 +466,7 @@
|
||||
|
||||
if (!isClosing) {
|
||||
tab.removeAttribute('zen-pin-id');
|
||||
tab.removeAttribute('zen-essential'); // Just in case
|
||||
|
||||
if (!tab.hasAttribute('zen-workspace-id') && ZenWorkspaces.workspaceEnabled) {
|
||||
const workspace = await ZenWorkspaces.getActiveWorkspace();
|
||||
|
||||
@@ -176,7 +176,7 @@
|
||||
<checkbox data-l10n-id="zen-rice-share-include-workspace-themes" id="zen-rice-share-include-workspace-themes" />
|
||||
</vbox>
|
||||
<html:moz-button-group class="panel-footer">
|
||||
<button onclick="gZenThemePicker.riceManager.cancel()" class="footer-button" data-l10n-id="zen-rice-share-cancel" />
|
||||
<button onclick="gZenThemePicker.riceManager.cancel()" class="footer-button" data-l10n-id="zen-general-cancel" />
|
||||
<button onclick="gZenThemePicker.riceManager.submit()" class="footer-button" data-l10n-id="zen-rice-share-save" default="true" slot="primary" id="zen-rice-share-save" disabled="true" />
|
||||
</html:moz-button-group>
|
||||
</vbox>
|
||||
|
||||
@@ -89,9 +89,11 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
this.insertIntoContextMenu();
|
||||
|
||||
// Add drag over listener to the browser view
|
||||
const tabBox = document.getElementById('tabbrowser-tabbox');
|
||||
tabBox.addEventListener('dragover', this.onBrowserDragOverToSplit.bind(this));
|
||||
this.onBrowserDragEndToSplit = this.onBrowserDragEndToSplit.bind(this);
|
||||
if (Services.prefs.getBoolPref('zen.splitView.enable-tab-drop')) {
|
||||
const tabBox = document.getElementById('tabbrowser-tabbox');
|
||||
tabBox.addEventListener('dragover', this.onBrowserDragOverToSplit.bind(this));
|
||||
this.onBrowserDragEndToSplit = this.onBrowserDragEndToSplit.bind(this);
|
||||
}
|
||||
}
|
||||
|
||||
insertIntoContextMenu() {
|
||||
@@ -196,21 +198,24 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
if (currentView?.tabs.length >= this.MAX_TABS) {
|
||||
return;
|
||||
}
|
||||
// only show if we are 1/4 of the way to the edge
|
||||
const panelsRect = gBrowser.tabbox.getBoundingClientRect();
|
||||
const panelsWidth = panelsRect.width;
|
||||
if (
|
||||
event.clientX > panelsWidth / 2 ||
|
||||
event.clientX > panelsRect.left + panelsWidth - 10 ||
|
||||
event.clientX < panelsRect.left + 10 ||
|
||||
event.clientY < panelsRect.top + 10 ||
|
||||
event.clientY > panelsRect.bottom - 10
|
||||
) {
|
||||
return;
|
||||
}
|
||||
// first quarter or last quarter of the screen, but not the middle
|
||||
if (!(event.clientX < panelsRect.left + panelsWidth / 4 || event.clientX > panelsRect.left + (panelsWidth / 4) * 3)) {
|
||||
return;
|
||||
}
|
||||
dt.mozCursor = 'default';
|
||||
const oldTab = this._lastOpenedTab;
|
||||
this._canDrop = true;
|
||||
// wait some time before showing the split view
|
||||
this._showSplitViewTimeout = setTimeout(() => {
|
||||
{
|
||||
this._draggingTab = draggedTab;
|
||||
gBrowser.selectedTab = oldTab;
|
||||
this._hasAnimated = true;
|
||||
@@ -219,22 +224,31 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
}
|
||||
const panelsWidth = gBrowser.tabbox.getBoundingClientRect().width;
|
||||
const halfWidth = panelsWidth / 2;
|
||||
const side = event.clientX > halfWidth ? 'right' : 'left';
|
||||
this.fakeBrowser = document.createXULElement('vbox');
|
||||
this.fakeBrowser.addEventListener('dragleave', this.onBrowserDragEndToSplit);
|
||||
window.addEventListener('dragend', this.onBrowserDragEndToSplit, { once: true });
|
||||
const padding = Services.prefs.getIntPref('zen.theme.content-element-separation', 0);
|
||||
this.fakeBrowser.setAttribute('flex', '1');
|
||||
this.fakeBrowser.id = 'zen-split-view-fake-browser';
|
||||
gBrowser.tabbox.appendChild(this.fakeBrowser);
|
||||
this.fakeBrowser.style.setProperty('--zen-split-view-fake-icon', `url(${draggedTab.getAttribute('image')})`);
|
||||
draggedTab._visuallySelected = true;
|
||||
this.fakeBrowser.setAttribute('side', side);
|
||||
this._finishAllAnimatingPromise = Promise.all([
|
||||
gZenUIManager.motion.animate(
|
||||
gBrowser.tabbox,
|
||||
side === 'left'
|
||||
? {
|
||||
paddingLeft: [0, `${halfWidth}px`],
|
||||
paddingRight: 0,
|
||||
}
|
||||
: {
|
||||
paddingRight: [0, `${halfWidth}px`],
|
||||
paddingLeft: 0,
|
||||
},
|
||||
{
|
||||
paddingLeft: [0, `${halfWidth}px`],
|
||||
},
|
||||
{
|
||||
duration: 0.15,
|
||||
duration: 0.08,
|
||||
easing: 'ease-out',
|
||||
}
|
||||
),
|
||||
@@ -242,10 +256,14 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
this.fakeBrowser,
|
||||
{
|
||||
width: [0, `${halfWidth - padding}px`],
|
||||
marginLeft: [0, `${-halfWidth}px`],
|
||||
...(side === 'left'
|
||||
? {
|
||||
marginLeft: [0, `${-halfWidth}px`],
|
||||
}
|
||||
: {}),
|
||||
},
|
||||
{
|
||||
duration: 0.15,
|
||||
duration: 0.08,
|
||||
easing: 'ease-out',
|
||||
}
|
||||
),
|
||||
@@ -256,7 +274,7 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
draggedTab._visuallySelected = true;
|
||||
});
|
||||
}
|
||||
}, 100);
|
||||
}
|
||||
}
|
||||
|
||||
onBrowserDragEndToSplit(event) {
|
||||
@@ -276,9 +294,6 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
) {
|
||||
return;
|
||||
}
|
||||
if (this._showSplitViewTimeout) {
|
||||
clearTimeout(this._showSplitViewTimeout);
|
||||
}
|
||||
if (!this._hasAnimated || !this.fakeBrowser) {
|
||||
return;
|
||||
}
|
||||
@@ -289,17 +304,23 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
return;
|
||||
}
|
||||
this.fakeBrowser.classList.add('fade-out');
|
||||
gBrowser.selectedTab = this._draggingTab;
|
||||
const side = this.fakeBrowser.getAttribute('side');
|
||||
if (this._draggingTab) this._draggingTab.setAttribute('zen-has-splitted', 'true');
|
||||
this._lastOpenedTab = gBrowser.selectedTab;
|
||||
this._draggingTab = null;
|
||||
try {
|
||||
Promise.all([
|
||||
gZenUIManager.motion.animate(
|
||||
gBrowser.tabbox,
|
||||
side === 'left'
|
||||
? {
|
||||
paddingLeft: [`${halfWidth}px`, 0],
|
||||
}
|
||||
: {
|
||||
paddingRight: [`${halfWidth}px`, 0],
|
||||
},
|
||||
{
|
||||
paddingLeft: [`${halfWidth}px`, 0],
|
||||
},
|
||||
{
|
||||
duration: 0.15,
|
||||
duration: 0.1,
|
||||
easing: 'ease-out',
|
||||
}
|
||||
),
|
||||
@@ -307,10 +328,14 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
this.fakeBrowser,
|
||||
{
|
||||
width: [`${halfWidth - padding * 2}px`, 0],
|
||||
marginLeft: [`${-(halfWidth - padding)}px`, 0],
|
||||
...(side === 'left'
|
||||
? {
|
||||
marginLeft: [`${-halfWidth}px`, 0],
|
||||
}
|
||||
: {}),
|
||||
},
|
||||
{
|
||||
duration: 0.15,
|
||||
duration: 0.1,
|
||||
easing: 'ease-out',
|
||||
}
|
||||
),
|
||||
@@ -861,7 +886,7 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
return false;
|
||||
}
|
||||
for (const tab of window.gBrowser.selectedTabs) {
|
||||
if (tab.splitView) {
|
||||
if (tab.splitView || tab.hasAttribute('zen-empty-tab') || tab.hasAttribute('zen-essential')) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -1498,7 +1523,7 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
delete this._hasAnimated;
|
||||
this.fakeBrowser.remove();
|
||||
this.fakeBrowser = null;
|
||||
this._draggingTab._visuallySelected = false;
|
||||
if (this._draggingTab) this._draggingTab._visuallySelected = false;
|
||||
if (select) {
|
||||
gBrowser.selectedTab = this._draggingTab;
|
||||
this._draggingTab = null;
|
||||
@@ -1521,9 +1546,13 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
return false;
|
||||
}
|
||||
|
||||
const dropSide = this.fakeBrowser?.getAttribute('side');
|
||||
const containerRect = this.fakeBrowser.getBoundingClientRect();
|
||||
const padding = Services.prefs.getIntPref('zen.theme.content-element-separation', 0);
|
||||
const dropTarget = document.elementFromPoint(containerRect.left + containerRect.width + padding + 5, event.clientY);
|
||||
const dropTarget = document.elementFromPoint(
|
||||
dropSide === 'left' ? containerRect.left + containerRect.width + padding + 5 : containerRect.left - padding - 5,
|
||||
event.clientY
|
||||
);
|
||||
const browser = dropTarget?.closest('browser');
|
||||
|
||||
if (!browser) {
|
||||
@@ -1543,7 +1572,7 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
// Calculate which side of the target browser the drop occurred
|
||||
// const browserRect = browser.getBoundingClientRect();
|
||||
// const hoverSide = this.calculateHoverSide(event.clientX, event.clientY, browserRect);
|
||||
const hoverSide = 'left';
|
||||
const hoverSide = dropSide;
|
||||
|
||||
if (droppedOnTab.splitView) {
|
||||
// Add to existing split view
|
||||
@@ -1595,7 +1624,7 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
//}
|
||||
|
||||
// Put tabs always as if it was dropped from the left
|
||||
this.splitTabs([draggedTab, droppedOnTab], gridType, 1);
|
||||
this.splitTabs(dropSide == 'left' ? [draggedTab, droppedOnTab] : [droppedOnTab, draggedTab], gridType, 1);
|
||||
}
|
||||
}
|
||||
if (this._finishAllAnimatingPromise) {
|
||||
@@ -1628,7 +1657,7 @@ class ZenViewSplitter extends ZenDOMOperatedFeature {
|
||||
}
|
||||
|
||||
handleTabDrop(event, urls, replace, inBackground) {
|
||||
if (!inBackground || replace || urls.length !== 1) {
|
||||
if (replace || urls.length !== 1) {
|
||||
return false;
|
||||
}
|
||||
const url = urls[0];
|
||||
|
||||
@@ -111,12 +111,13 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
|
||||
);
|
||||
}
|
||||
|
||||
selectEmptyTab() {
|
||||
selectEmptyTab(newTabTarget = null) {
|
||||
if (this._emptyTab && gZenVerticalTabsManager._canReplaceNewTab) {
|
||||
gBrowser.selectedTab = this._emptyTab;
|
||||
return this._emptyTab;
|
||||
}
|
||||
let tab = gZenUIManager.openAndChangeToTab(Services.prefs.getStringPref('browser.startup.homepage'));
|
||||
const newTabUrl = newTabTarget || Services.prefs.getStringPref('browser.startup.homepage');
|
||||
let tab = gZenUIManager.openAndChangeToTab(newTabUrl);
|
||||
if (window.uuid) {
|
||||
tab.setAttribute('zen-workspace-id', this.activeWorkspace);
|
||||
}
|
||||
@@ -627,7 +628,7 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
|
||||
(currentTab.isEmpty &&
|
||||
(currentTab.getAttribute('image') === gPageIcons[currentTabURL] || !currentTab.hasAttribute('image'))) ||
|
||||
currentTab.hasAttribute('zen-empty-tab') ||
|
||||
currentTab._possibleEmptyTab
|
||||
(currentTab._possibleEmptyTab && currentTab.isEmpty)
|
||||
) {
|
||||
this.selectEmptyTab();
|
||||
this._removedByStartupPage = true;
|
||||
@@ -1404,15 +1405,16 @@ var ZenWorkspaces = new (class extends ZenMultiWindowFeature {
|
||||
}
|
||||
|
||||
_deleteAllTabsInWorkspace(workspaceID) {
|
||||
for (let tab of this.allStoredTabs) {
|
||||
if (tab.getAttribute('zen-workspace-id') === workspaceID) {
|
||||
gBrowser.removeTab(tab, {
|
||||
animate: false,
|
||||
skipSessionStore: true,
|
||||
closeWindowWithLastTab: false,
|
||||
});
|
||||
gBrowser.removeTabs(
|
||||
Array.from(gBrowser.tabs).filter(
|
||||
(tab) => tab.getAttribute('zen-workspace-id') === workspaceID && !tab.hasAttribute('zen-empty-tab')
|
||||
),
|
||||
{
|
||||
animate: false,
|
||||
skipSessionStore: true,
|
||||
closeWindowWithLastTab: false,
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
moveTabToWorkspace(tab, workspaceID) {
|
||||
|
||||
@@ -7,6 +7,7 @@ var ZenWorkspacesStorage = {
|
||||
Weave: 'resource://services-sync/main.sys.mjs',
|
||||
});
|
||||
|
||||
if (!window.ZenWorkspaces) return;
|
||||
await this._ensureTable();
|
||||
await ZenWorkspaceBookmarksStorage.init();
|
||||
},
|
||||
|
||||
@@ -12,6 +12,9 @@ export class ZenGlanceChild extends JSWindowActorChild {
|
||||
case 'DOMContentLoaded':
|
||||
await this.initiateGlance();
|
||||
break;
|
||||
case 'keydown':
|
||||
this.onKeyDown(event);
|
||||
break;
|
||||
default:
|
||||
}
|
||||
}
|
||||
@@ -120,4 +123,13 @@ export class ZenGlanceChild extends JSWindowActorChild {
|
||||
this.openGlance(target);
|
||||
}
|
||||
}
|
||||
|
||||
onKeyDown(event) {
|
||||
if (event.defaultPrevented || event.key !== 'Escape') {
|
||||
return;
|
||||
}
|
||||
this.sendAsyncMessage('ZenGlance:CloseGlance', {
|
||||
hasFocused: this.contentWindow.document.activeElement !== this.contentWindow.document.body,
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -15,6 +15,16 @@ export class ZenGlanceParent extends JSWindowActorParent {
|
||||
this.openGlance(this.browsingContext.topChromeWindow, message.data);
|
||||
break;
|
||||
}
|
||||
case 'ZenGlance:CloseGlance': {
|
||||
const params = {
|
||||
onTabClose: true,
|
||||
...message.data,
|
||||
};
|
||||
this.browsingContext.topChromeWindow.gZenGlanceManager.closeGlance(params);
|
||||
break;
|
||||
}
|
||||
default:
|
||||
console.warn(`[glance]: Unknown message: ${message.name}`);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/components/places/content/editBookmark.js b/browser/components/places/content/editBookmark.js
|
||||
index 9f17174fdd9cc1eaefb4330da1e10f40eeda2f31..e2c38872ee3a5c45d2e288e67d33f9ce24cab2b9 100644
|
||||
index 9ab4e96cc4738d0ba549dca67b8559e0f9534f37..07b9087b0b17e33853d78c66ea1e5321a2bfef80 100644
|
||||
--- a/browser/components/places/content/editBookmark.js
|
||||
+++ b/browser/components/places/content/editBookmark.js
|
||||
@@ -370,6 +370,10 @@ var gEditItemOverlay = {
|
||||
@@ -386,6 +386,10 @@ var gEditItemOverlay = {
|
||||
this._keywordField.readOnly = this.readOnly;
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ index 9f17174fdd9cc1eaefb4330da1e10f40eeda2f31..e2c38872ee3a5c45d2e288e67d33f9ce
|
||||
// Collapse the tag selector if the item does not accept tags.
|
||||
if (showOrCollapse("tagsRow", isBookmark || bulkTagging, "tags")) {
|
||||
this._initTagsField();
|
||||
@@ -682,6 +686,7 @@ var gEditItemOverlay = {
|
||||
@@ -692,6 +696,7 @@ var gEditItemOverlay = {
|
||||
if (this._paneInfo.isBookmark) {
|
||||
options.tags = this._element("tagsField").value;
|
||||
options.keyword = this._keyword;
|
||||
@@ -21,7 +21,17 @@ index 9f17174fdd9cc1eaefb4330da1e10f40eeda2f31..e2c38872ee3a5c45d2e288e67d33f9ce
|
||||
}
|
||||
|
||||
if (this._paneInfo.bulkTagging) {
|
||||
@@ -1232,6 +1237,148 @@ var gEditItemOverlay = {
|
||||
@@ -1193,6 +1198,9 @@ var gEditItemOverlay = {
|
||||
case "editBMPanel_tagsSelectorExpander":
|
||||
this.toggleTagsSelector().catch(console.error);
|
||||
break;
|
||||
+ case "editBMPanel_workspacesSelectorExpander":
|
||||
+ this.onWorkspaceDropdownToggle();
|
||||
+ break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
@@ -1279,6 +1287,148 @@ var gEditItemOverlay = {
|
||||
get bookmarkState() {
|
||||
return this._bookmarkState;
|
||||
},
|
||||
@@ -170,7 +180,7 @@ index 9f17174fdd9cc1eaefb4330da1e10f40eeda2f31..e2c38872ee3a5c45d2e288e67d33f9ce
|
||||
};
|
||||
|
||||
ChromeUtils.defineLazyGetter(gEditItemOverlay, "_folderTree", () => {
|
||||
@@ -1267,6 +1414,9 @@ for (let elt of [
|
||||
@@ -1317,6 +1467,9 @@ for (let elt of [
|
||||
"locationField",
|
||||
"keywordField",
|
||||
"tagsField",
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/places/content/editBookmarkPanel.inc.xhtml b/browser/components/places/content/editBookmarkPanel.inc.xhtml
|
||||
index 40366677b60123c66bf0739d1b2374b423d3061c..3e722dce6b21ab62535369f20afe5f0acd43838f 100644
|
||||
index 40366677b60123c66bf0739d1b2374b423d3061c..a2774e99726407d95011126ea2a272f08eaf0961 100644
|
||||
--- a/browser/components/places/content/editBookmarkPanel.inc.xhtml
|
||||
+++ b/browser/components/places/content/editBookmarkPanel.inc.xhtml
|
||||
@@ -12,14 +12,15 @@
|
||||
@@ -20,11 +20,10 @@ index 40366677b60123c66bf0739d1b2374b423d3061c..3e722dce6b21ab62535369f20afe5f0a
|
||||
<label data-l10n-id="bookmark-overlay-location-2"
|
||||
class="editBMPanel_folderRow hideable"
|
||||
control="editBMPanel_folderMenuList"/>
|
||||
@@ -47,7 +48,26 @@
|
||||
@@ -47,7 +48,25 @@
|
||||
class="expander-down panel-button"
|
||||
data-l10n-id="bookmark-overlay-folders-expander2"/>
|
||||
</hbox>
|
||||
-
|
||||
+ </hbox>
|
||||
+ <hbox flex="1" class="zenEditBMPanel_fieldContainer">
|
||||
+ <label data-l10n-id="zen-bookmark-edit-panel-workspace-selector"
|
||||
@@ -37,12 +36,11 @@ index 40366677b60123c66bf0739d1b2374b423d3061c..3e722dce6b21ab62535369f20afe5f0a
|
||||
+ class="workspace-trigger">-</div>
|
||||
+ <button id="editBMPanel_workspacesSelectorExpander"
|
||||
+ class="expander-down panel-button"
|
||||
+ data-l10n-id="bookmark-overlay-tags-expander2"
|
||||
+ oncommand="gEditItemOverlay.onWorkspaceDropdownToggle();"/>
|
||||
+
|
||||
+ data-l10n-id="bookmark-overlay-tags-expander2"/>
|
||||
+
|
||||
+ </div>
|
||||
+ </hbox>
|
||||
+
|
||||
|
||||
+ <ul id="editBMPanel_workspaceList" class="workspace-list hideable" hidden="true">
|
||||
+ </ul>
|
||||
<vbox id="editBMPanel_folderTreeRow"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/sessionstore/SessionStore.sys.mjs b/browser/components/sessionstore/SessionStore.sys.mjs
|
||||
index f814772114948f87cbb3c3a7231c95ea1f68d776..f7d1f1f05f33b42be6856fad52ee323751af56ee 100644
|
||||
index f814772114948f87cbb3c3a7231c95ea1f68d776..ae35daa518ca25f4fc95ef983519c390bf088a68 100644
|
||||
--- a/browser/components/sessionstore/SessionStore.sys.mjs
|
||||
+++ b/browser/components/sessionstore/SessionStore.sys.mjs
|
||||
@@ -3171,7 +3171,7 @@ var SessionStoreInternal = {
|
||||
@@ -11,14 +11,14 @@ index f814772114948f87cbb3c3a7231c95ea1f68d776..f7d1f1f05f33b42be6856fad52ee3237
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -3881,6 +3881,7 @@ var SessionStoreInternal = {
|
||||
aWindow.gBrowser.selectedTab = newTab;
|
||||
}
|
||||
@@ -3876,6 +3876,7 @@ var SessionStoreInternal = {
|
||||
Math.min(tabState.index, tabState.entries.length)
|
||||
);
|
||||
tabState.pinned = false;
|
||||
+ tabState.zenEssential = undefined;
|
||||
|
||||
+ if (aTab.hasAttribute("zenDefaultUserContextId")) newTab.setAttribute("zenDefaultUserContextId", true);
|
||||
// Restore the state into the new tab.
|
||||
this.restoreTab(newTab, tabState, {
|
||||
restoreImmediately: aRestoreImmediately,
|
||||
if (inBackground === false) {
|
||||
aWindow.gBrowser.selectedTab = newTab;
|
||||
@@ -5355,14 +5356,14 @@ var SessionStoreInternal = {
|
||||
}
|
||||
|
||||
@@ -45,7 +45,7 @@ index f814772114948f87cbb3c3a7231c95ea1f68d776..f7d1f1f05f33b42be6856fad52ee3237
|
||||
selectedIndex = 1;
|
||||
winData.title = tabbrowser.tabs[0].label;
|
||||
}
|
||||
@@ -6086,6 +6087,18 @@ var SessionStoreInternal = {
|
||||
@@ -6086,8 +6087,23 @@ var SessionStoreInternal = {
|
||||
|
||||
// Most of tabData has been restored, now continue with restoring
|
||||
// attributes that may trigger external events.
|
||||
@@ -61,6 +61,12 @@ index f814772114948f87cbb3c3a7231c95ea1f68d776..f7d1f1f05f33b42be6856fad52ee3237
|
||||
+ if (tabData.zenPinnedId) {
|
||||
+ tab.setAttribute("zen-pin-id", tabData.zenPinnedId);
|
||||
+ }
|
||||
+ if (tabData.zenDefaultUserContextId) {
|
||||
+ tab.setAttribute("zenDefaultUserContextId", true);
|
||||
+ }
|
||||
|
||||
if (tabData.pinned) {
|
||||
- if (tabData.pinned) {
|
||||
+ if (tabData.pinned || tabData.zenEssential) {
|
||||
tabbrowser.pinTab(tab);
|
||||
} else {
|
||||
tabbrowser.unpinTab(tab);
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
diff --git a/browser/components/sessionstore/TabState.sys.mjs b/browser/components/sessionstore/TabState.sys.mjs
|
||||
index 8f7ed557e6aa61e7e16ed4a8d785ad5fe651b3d8..4c9f17408b912a2c51ebc1a670062203bf4994f3 100644
|
||||
index 8f7ed557e6aa61e7e16ed4a8d785ad5fe651b3d8..aff63696d198055886960072a6130318e099ae42 100644
|
||||
--- a/browser/components/sessionstore/TabState.sys.mjs
|
||||
+++ b/browser/components/sessionstore/TabState.sys.mjs
|
||||
@@ -80,10 +80,19 @@ class _TabState {
|
||||
@@ -80,10 +80,20 @@ class _TabState {
|
||||
tabData.muteReason = tab.muteReason;
|
||||
}
|
||||
|
||||
@@ -14,6 +14,7 @@ index 8f7ed557e6aa61e7e16ed4a8d785ad5fe651b3d8..4c9f17408b912a2c51ebc1a670062203
|
||||
+ tabData.zenWorkspace = tab.getAttribute("zen-workspace-id");
|
||||
+ tabData.zenPinnedId = tab.getAttribute("zen-pin-id");
|
||||
+ tabData.zenEssential = tab.getAttribute("zen-essential");
|
||||
+ tabData.pinned = tabData.pinned || tabData.zenEssential;
|
||||
+ tabData.zenDefaultUserContextId = tab.getAttribute("zenDefaultUserContextId");
|
||||
+ tabData.zenPinnedEntry = tab.getAttribute("zen-pinned-entry");
|
||||
+ tabData.zenPinnedIcon = tab.getAttribute("zen-pinned-icon");
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/tabbrowser/content/tabbrowser.js b/browser/components/tabbrowser/content/tabbrowser.js
|
||||
index 628aa6596627c85efe361fc1ece8fd58f7ee653e..c62727bad57eda3b9d9a73c1df739a92f194f0c2 100644
|
||||
index 628aa6596627c85efe361fc1ece8fd58f7ee653e..cd3ad53dbe399383178d0eff459ad72079b02024 100644
|
||||
--- a/browser/components/tabbrowser/content/tabbrowser.js
|
||||
+++ b/browser/components/tabbrowser/content/tabbrowser.js
|
||||
@@ -412,11 +412,50 @@
|
||||
@@ -476,7 +476,7 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..c62727bad57eda3b9d9a73c1df739a92
|
||||
- this.addTrustedTab(BROWSER_NEW_TAB_URL, {
|
||||
- skipAnimation: true,
|
||||
- });
|
||||
+ ZenWorkspaces.selectEmptyTab();
|
||||
+ ZenWorkspaces.selectEmptyTab(BROWSER_NEW_TAB_URL);
|
||||
} else {
|
||||
TabBarVisibility.update();
|
||||
}
|
||||
@@ -529,13 +529,11 @@ index 628aa6596627c85efe361fc1ece8fd58f7ee653e..c62727bad57eda3b9d9a73c1df739a92
|
||||
} else {
|
||||
aIndex = Math.max(aIndex, this.pinnedTabCount);
|
||||
}
|
||||
@@ -5684,11 +5821,18 @@
|
||||
}
|
||||
@@ -5685,10 +5822,17 @@
|
||||
|
||||
this._handleTabMove(aTab, () => {
|
||||
- let neighbor = this.tabs[aIndex];
|
||||
let neighbor = this.tabs[aIndex];
|
||||
- if (forceStandaloneTab && neighbor.group) {
|
||||
+ let neighbor = this.tabs.filter(tab => !tab.hasAttribute("zen-glance-tab"))[aIndex];
|
||||
+ const _tPos = aTab._tPos;
|
||||
+ if ((forceStandaloneTab && neighbor.group) || neighbor.group?.hasAttribute("split-view-group")) {
|
||||
neighbor = neighbor.group;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/components/tabbrowser/content/tabs.js b/browser/components/tabbrowser/content/tabs.js
|
||||
index fa96568d366fd3608f9bd583fa793150bd815c8b..64e93a414f1544b89af05c636c587620036896db 100644
|
||||
index fa96568d366fd3608f9bd583fa793150bd815c8b..a13d501f2f0f190b9dc8fe0ce4f1d7af66b0495e 100644
|
||||
--- a/browser/components/tabbrowser/content/tabs.js
|
||||
+++ b/browser/components/tabbrowser/content/tabs.js
|
||||
@@ -94,7 +94,7 @@
|
||||
@@ -56,10 +56,14 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..64e93a414f1544b89af05c636c587620
|
||||
if (
|
||||
(effects == "move" || effects == "copy") &&
|
||||
this == draggedTab.container &&
|
||||
@@ -996,6 +1002,14 @@
|
||||
@@ -996,6 +1002,18 @@
|
||||
|
||||
this._tabDropIndicator.hidden = true;
|
||||
event.stopPropagation();
|
||||
+ if (draggedTab?.hasAttribute("zen-has-splitted")) {
|
||||
+ draggedTab.removeAttribute("zen-has-splitted");
|
||||
+ draggedTab._visuallySelected = false;
|
||||
+ }
|
||||
+ if (draggedTab && dropEffect == "move") {
|
||||
+ let moved = gZenPinnedTabManager.moveToAnotherTabContainerIfNecessary(event, movingTabs);
|
||||
+
|
||||
@@ -71,7 +75,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..64e93a414f1544b89af05c636c587620
|
||||
if (draggedTab && dropEffect == "copy") {
|
||||
// copy the dropped tab (wherever it's from)
|
||||
let newIndex = this._getDropIndex(event);
|
||||
@@ -1034,10 +1048,11 @@
|
||||
@@ -1034,10 +1052,11 @@
|
||||
}
|
||||
} else {
|
||||
let pinned = draggedTab.pinned;
|
||||
@@ -87,7 +91,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..64e93a414f1544b89af05c636c587620
|
||||
);
|
||||
let size = this.verticalMode ? "height" : "width";
|
||||
let screenAxis = this.verticalMode ? "screenY" : "screenX";
|
||||
@@ -1114,7 +1129,7 @@
|
||||
@@ -1114,7 +1133,7 @@
|
||||
let postTransitionCleanup = () => {
|
||||
tab.removeAttribute("tabdrop-samewindow");
|
||||
|
||||
@@ -96,7 +100,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..64e93a414f1544b89af05c636c587620
|
||||
if (dropIndex !== false) {
|
||||
gBrowser.moveTabTo(tab, dropIndex);
|
||||
if (!directionForward) {
|
||||
@@ -1122,7 +1137,7 @@
|
||||
@@ -1122,7 +1141,7 @@
|
||||
}
|
||||
}
|
||||
};
|
||||
@@ -105,7 +109,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..64e93a414f1544b89af05c636c587620
|
||||
postTransitionCleanup();
|
||||
} else {
|
||||
let onTransitionEnd = transitionendEvent => {
|
||||
@@ -1249,7 +1264,7 @@
|
||||
@@ -1249,7 +1268,7 @@
|
||||
return;
|
||||
}
|
||||
}
|
||||
@@ -114,7 +118,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..64e93a414f1544b89af05c636c587620
|
||||
gBrowser.loadTabs(urls, {
|
||||
inBackground,
|
||||
replace,
|
||||
@@ -1279,13 +1294,23 @@
|
||||
@@ -1279,13 +1298,23 @@
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -140,7 +144,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..64e93a414f1544b89af05c636c587620
|
||||
) {
|
||||
delete draggedTab._dragData;
|
||||
return;
|
||||
@@ -1517,7 +1542,7 @@
|
||||
@@ -1517,7 +1546,7 @@
|
||||
}
|
||||
|
||||
get newTabButton() {
|
||||
@@ -149,7 +153,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..64e93a414f1544b89af05c636c587620
|
||||
}
|
||||
|
||||
get verticalMode() {
|
||||
@@ -1537,28 +1562,40 @@
|
||||
@@ -1537,28 +1566,40 @@
|
||||
if (this.#allTabs) {
|
||||
return this.#allTabs;
|
||||
}
|
||||
@@ -198,7 +202,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..64e93a414f1544b89af05c636c587620
|
||||
return children.filter(node => node.tagName == "tab-group");
|
||||
}
|
||||
|
||||
@@ -1579,7 +1616,7 @@
|
||||
@@ -1579,7 +1620,7 @@
|
||||
*/
|
||||
get visibleTabs() {
|
||||
if (!this.#visibleTabs) {
|
||||
@@ -207,7 +211,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..64e93a414f1544b89af05c636c587620
|
||||
}
|
||||
return this.#visibleTabs;
|
||||
}
|
||||
@@ -1613,10 +1650,8 @@
|
||||
@@ -1613,10 +1654,8 @@
|
||||
return this.#focusableItems;
|
||||
}
|
||||
|
||||
@@ -220,7 +224,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..64e93a414f1544b89af05c636c587620
|
||||
|
||||
let focusableItems = [];
|
||||
for (let child of children) {
|
||||
@@ -1632,6 +1667,7 @@
|
||||
@@ -1632,6 +1671,7 @@
|
||||
}
|
||||
|
||||
this.#focusableItems = [
|
||||
@@ -228,7 +232,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..64e93a414f1544b89af05c636c587620
|
||||
...verticalPinnedTabsContainer.children,
|
||||
...focusableItems,
|
||||
];
|
||||
@@ -1642,6 +1678,7 @@
|
||||
@@ -1642,6 +1682,7 @@
|
||||
_invalidateCachedTabs() {
|
||||
this.#allTabs = null;
|
||||
this._invalidateCachedVisibleTabs();
|
||||
@@ -236,7 +240,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..64e93a414f1544b89af05c636c587620
|
||||
}
|
||||
|
||||
_invalidateCachedVisibleTabs() {
|
||||
@@ -1656,8 +1693,8 @@
|
||||
@@ -1656,8 +1697,8 @@
|
||||
#isContainerVerticalPinnedExpanded(tab) {
|
||||
return (
|
||||
this.verticalMode &&
|
||||
@@ -247,7 +251,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..64e93a414f1544b89af05c636c587620
|
||||
);
|
||||
}
|
||||
|
||||
@@ -1672,7 +1709,7 @@
|
||||
@@ -1672,7 +1713,7 @@
|
||||
|
||||
if (node == null) {
|
||||
// We have a container for non-tab elements at the end of the scrollbox.
|
||||
@@ -256,7 +260,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..64e93a414f1544b89af05c636c587620
|
||||
}
|
||||
|
||||
node.before(tab);
|
||||
@@ -1772,7 +1809,7 @@
|
||||
@@ -1772,7 +1813,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.
|
||||
@@ -265,7 +269,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..64e93a414f1544b89af05c636c587620
|
||||
const newTab2 = this.newTabButton;
|
||||
const newTabVertical = document.getElementById(
|
||||
"vertical-tabs-newtab-button"
|
||||
@@ -1855,7 +1892,7 @@
|
||||
@@ -1855,7 +1896,7 @@
|
||||
let rect = ele => {
|
||||
return window.windowUtils.getBoundsWithoutFlushing(ele);
|
||||
};
|
||||
@@ -274,7 +278,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..64e93a414f1544b89af05c636c587620
|
||||
if (tab && rect(tab).width <= this._tabClipWidth) {
|
||||
this.setAttribute("closebuttons", "activetab");
|
||||
} else {
|
||||
@@ -1867,10 +1904,12 @@
|
||||
@@ -1867,10 +1908,12 @@
|
||||
|
||||
_handleTabSelect(aInstant) {
|
||||
let selectedTab = this.selectedItem;
|
||||
@@ -287,7 +291,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..64e93a414f1544b89af05c636c587620
|
||||
selectedTab._notselectedsinceload = false;
|
||||
}
|
||||
|
||||
@@ -1882,7 +1921,7 @@
|
||||
@@ -1882,7 +1925,7 @@
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -296,7 +300,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..64e93a414f1544b89af05c636c587620
|
||||
if (!tabs.length) {
|
||||
return;
|
||||
}
|
||||
@@ -1918,7 +1957,7 @@
|
||||
@@ -1918,7 +1961,7 @@
|
||||
if (isEndTab && !this._hasTabTempMaxWidth) {
|
||||
return;
|
||||
}
|
||||
@@ -305,7 +309,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..64e93a414f1544b89af05c636c587620
|
||||
// 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 +1972,7 @@
|
||||
@@ -1933,7 +1976,7 @@
|
||||
let tabsToReset = [];
|
||||
for (let i = numPinned; i < tabs.length; i++) {
|
||||
let tab = tabs[i];
|
||||
@@ -314,7 +318,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..64e93a414f1544b89af05c636c587620
|
||||
if (!isEndTab) {
|
||||
// keep tabs the same width
|
||||
tab.style.transition = "none";
|
||||
@@ -1999,16 +2038,15 @@
|
||||
@@ -1999,16 +2042,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.
|
||||
@@ -337,7 +341,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..64e93a414f1544b89af05c636c587620
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2016,9 +2054,7 @@
|
||||
@@ -2016,9 +2058,7 @@
|
||||
}
|
||||
|
||||
_resetVerticalPinnedTabs() {
|
||||
@@ -348,7 +352,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..64e93a414f1544b89af05c636c587620
|
||||
|
||||
if (!verticalTabsContainer.children.length) {
|
||||
return;
|
||||
@@ -2031,8 +2067,8 @@
|
||||
@@ -2031,8 +2071,8 @@
|
||||
}
|
||||
|
||||
_positionPinnedTabs() {
|
||||
@@ -359,7 +363,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..64e93a414f1544b89af05c636c587620
|
||||
let absPositionHorizontalTabs =
|
||||
this.overflowing && tabs.length > numPinned && numPinned > 0;
|
||||
|
||||
@@ -2041,7 +2077,7 @@
|
||||
@@ -2041,7 +2081,7 @@
|
||||
|
||||
if (this.verticalMode) {
|
||||
this._updateVerticalPinnedTabs();
|
||||
@@ -368,7 +372,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..64e93a414f1544b89af05c636c587620
|
||||
let layoutData = this._pinnedTabsLayoutCache;
|
||||
let uiDensity = document.documentElement.getAttribute("uidensity");
|
||||
if (!layoutData || layoutData.uiDensity != uiDensity) {
|
||||
@@ -2113,7 +2149,7 @@
|
||||
@@ -2113,7 +2153,7 @@
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -377,7 +381,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..64e93a414f1544b89af05c636c587620
|
||||
|
||||
let directionX = screenX > dragData.animLastScreenX;
|
||||
let directionY = screenY > dragData.animLastScreenY;
|
||||
@@ -2121,7 +2157,7 @@
|
||||
@@ -2121,7 +2161,7 @@
|
||||
dragData.animLastScreenX = screenX;
|
||||
|
||||
let { width: tabWidth, height: tabHeight } =
|
||||
@@ -386,7 +390,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..64e93a414f1544b89af05c636c587620
|
||||
let shiftSizeX = tabWidth * movingTabs.length;
|
||||
let shiftSizeY = tabHeight;
|
||||
dragData.tabWidth = tabWidth;
|
||||
@@ -2296,10 +2332,11 @@
|
||||
@@ -2296,10 +2336,11 @@
|
||||
}
|
||||
|
||||
let pinned = draggedTab.pinned;
|
||||
@@ -402,7 +406,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..64e93a414f1544b89af05c636c587620
|
||||
);
|
||||
|
||||
if (this.#rtlMode) {
|
||||
@@ -2348,7 +2385,11 @@
|
||||
@@ -2348,7 +2389,11 @@
|
||||
translate = Math.min(Math.max(translate, firstBound), lastBound);
|
||||
|
||||
for (let tab of movingTabs) {
|
||||
@@ -415,7 +419,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..64e93a414f1544b89af05c636c587620
|
||||
}
|
||||
|
||||
dragData.translatePos = translate;
|
||||
@@ -2484,12 +2525,16 @@
|
||||
@@ -2484,12 +2529,16 @@
|
||||
// Shift background tabs to leave a gap where the dragged tab
|
||||
// would currently be dropped.
|
||||
for (let tab of tabs) {
|
||||
@@ -433,7 +437,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..64e93a414f1544b89af05c636c587620
|
||||
if (tab.group?.tabs[0] == tab) {
|
||||
tab.group.style.setProperty(
|
||||
"--tabgroup-dragover-transform",
|
||||
@@ -2541,8 +2586,9 @@
|
||||
@@ -2541,8 +2590,9 @@
|
||||
);
|
||||
}
|
||||
|
||||
@@ -445,7 +449,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..64e93a414f1544b89af05c636c587620
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -2553,6 +2599,7 @@
|
||||
@@ -2553,6 +2603,7 @@
|
||||
tab.style.transform = "";
|
||||
if (tab.group) {
|
||||
tab.group.style.removeProperty("--tabgroup-dragover-transform");
|
||||
@@ -453,7 +457,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..64e93a414f1544b89af05c636c587620
|
||||
}
|
||||
tab.removeAttribute("dragover-createGroup");
|
||||
}
|
||||
@@ -2604,7 +2651,7 @@
|
||||
@@ -2604,7 +2655,7 @@
|
||||
movingTab._moveTogetherSelectedTabsData.newIndex = movingTabNewIndex;
|
||||
movingTab._moveTogetherSelectedTabsData.animate = false;
|
||||
};
|
||||
@@ -462,7 +466,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..64e93a414f1544b89af05c636c587620
|
||||
postTransitionCleanup();
|
||||
} else {
|
||||
let onTransitionEnd = transitionendEvent => {
|
||||
@@ -2707,9 +2754,9 @@
|
||||
@@ -2707,9 +2758,9 @@
|
||||
function newIndex(aTab, index) {
|
||||
// Don't allow mixing pinned and unpinned tabs.
|
||||
if (aTab.pinned) {
|
||||
@@ -474,7 +478,7 @@ index fa96568d366fd3608f9bd583fa793150bd815c8b..64e93a414f1544b89af05c636c587620
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2793,7 +2840,7 @@
|
||||
@@ -2793,7 +2844,7 @@
|
||||
}
|
||||
|
||||
_notifyBackgroundTab(aTab) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/browser/themes/shared/urlbar-searchbar.css b/browser/themes/shared/urlbar-searchbar.css
|
||||
index 574f83af7fa49ddcdff6711ca8b1d3bed1a35e0c..7919f21f6b0b4df2f197b9c6f0e134ff85d50d0a 100644
|
||||
index 574f83af7fa49ddcdff6711ca8b1d3bed1a35e0c..c2e8cb8b37438176db07a47e1e975ae1aea42252 100644
|
||||
--- a/browser/themes/shared/urlbar-searchbar.css
|
||||
+++ b/browser/themes/shared/urlbar-searchbar.css
|
||||
@@ -5,7 +5,7 @@
|
||||
@@ -22,14 +22,3 @@ index 574f83af7fa49ddcdff6711ca8b1d3bed1a35e0c..7919f21f6b0b4df2f197b9c6f0e134ff
|
||||
width: calc(var(--urlbar-width) + 2 * var(--urlbar-margin-inline));
|
||||
|
||||
> .urlbar-input-container {
|
||||
@@ -583,8 +585,8 @@
|
||||
.urlbar-revert-button,
|
||||
.urlbar-go-button,
|
||||
.search-go-button {
|
||||
- width: calc(var(--urlbar-min-height) - 2px /* border */ - 2 * var(--urlbar-container-padding));
|
||||
- height: calc(var(--urlbar-min-height) - 2px /* border */ - 2 * var(--urlbar-container-padding));
|
||||
+ width: calc(var(--urlbar-min-height) + 2px /* border */ - 2 * var(--urlbar-container-padding));
|
||||
+ height: calc(var(--urlbar-min-height) + 2px /* border */ - 2 * var(--urlbar-container-padding));
|
||||
border-radius: var(--urlbar-icon-border-radius);
|
||||
padding: var(--urlbar-icon-padding);
|
||||
color: inherit;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
diff --git a/security/mac/hardenedruntime/v2/production/firefox.browser.xml b/security/mac/hardenedruntime/v2/production/firefox.browser.xml
|
||||
index abbf33e9d2b3c9d1e0a34bd46e7cd289c435533b..4d988ca8201fa6aba6ca049e97d3cdc6b772b5eb 100644
|
||||
index abbf33e9d2b3c9d1e0a34bd46e7cd289c435533b..d580b156fed13f4de8eb73e5c29c646a7a22a1d2 100644
|
||||
--- a/security/mac/hardenedruntime/v2/production/firefox.browser.xml
|
||||
+++ b/security/mac/hardenedruntime/v2/production/firefox.browser.xml
|
||||
@@ -26,7 +26,7 @@
|
||||
@@ -7,7 +7,7 @@ index abbf33e9d2b3c9d1e0a34bd46e7cd289c435533b..4d988ca8201fa6aba6ca049e97d3cdc6
|
||||
<!-- Required for com.apple.developer.web-browser.public-key-credential -->
|
||||
<key>com.apple.application-identifier</key>
|
||||
- <string>43AQ936H96.org.mozilla.firefox</string>
|
||||
+ <string>H36NPCN86W.app.zen-browser.zen</string>
|
||||
+ <string>9V5K9TP787.app.zen-browser.zen</string>
|
||||
|
||||
<!-- For platform passkey (webauthn) support -->
|
||||
<key>com.apple.developer.web-browser.public-key-credential</key><true/>
|
||||
|
||||
10
surfer.json
10
surfer.json
@@ -5,8 +5,8 @@
|
||||
"binaryName": "zen",
|
||||
"version": {
|
||||
"product": "firefox",
|
||||
"version": "136.0",
|
||||
"candidate": "136.0"
|
||||
"version": "136.0.1",
|
||||
"candidate": "136.0.1"
|
||||
},
|
||||
"buildOptions": {
|
||||
"generateBranding": true
|
||||
@@ -19,7 +19,7 @@
|
||||
"brandShortName": "Zen",
|
||||
"brandFullName": "Zen Browser",
|
||||
"release": {
|
||||
"displayVersion": "1.9b",
|
||||
"displayVersion": "1.9.1b",
|
||||
"github": {
|
||||
"repo": "zen-browser/desktop"
|
||||
},
|
||||
@@ -39,7 +39,7 @@
|
||||
"brandShortName": "Twilight",
|
||||
"brandFullName": "Zen Twilight",
|
||||
"release": {
|
||||
"displayVersion": "1.9t",
|
||||
"displayVersion": "1.9.1t",
|
||||
"github": {
|
||||
"repo": "zen-browser/desktop"
|
||||
}
|
||||
@@ -53,4 +53,4 @@
|
||||
"licenseType": "MPL-2.0"
|
||||
},
|
||||
"updateHostname": "updates.zen-browser.app"
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user