From c28d6520d679f422b872b9f1efd6a1723fdce4e2 Mon Sep 17 00:00:00 2001 From: Slowlife Date: Sat, 21 Feb 2026 06:17:05 +0700 Subject: [PATCH] feat: Live folders, p=#11921 Co-authored-by: Slowlife01 Co-authored-by: mr. m <91018726+mr-cheffy@users.noreply.github.com> Co-authored-by: reizumi --- .../browser/browser/zen-live-folders.ftl | 98 ++++ .../browser/browser/zen-vertical-tabs.ftl | 7 +- .../en-US/browser/browser/zen-workspaces.ftl | 3 + prefs/privatefox/privacy.yaml | 4 + src/browser/base/content/zen-assets.inc.xhtml | 1 + .../base/content/zen-assets.jar.inc.mn | 1 + .../base/content/zen-commands.inc.xhtml | 2 + .../base/content/zen-locales.inc.xhtml | 1 + .../base/content/zen-panels/popups.inc | 23 + .../sessionstore/TabState-sys-mjs.patch | 5 +- .../tabbrowser/content/tab-js.patch | 4 +- .../common/selectable/logo-github.svg | 5 + src/browser/themes/shared/zen-icons/icons.css | 5 + .../themes/shared/zen-icons/jar.inc.mn | 1 + .../zen-icons/nucleo/security-broken.svg | 2 +- .../shared/zen-icons/update-resources.sh | 12 + src/zen/ZenComponents.manifest | 1 + src/zen/common/modules/ZenSessionStore.mjs | 3 + src/zen/common/modules/ZenUIManager.mjs | 1 + src/zen/common/zen-sets.js | 7 + src/zen/drag-and-drop/ZenDragAndDrop.js | 25 + src/zen/folders/ZenFolder.mjs | 12 +- src/zen/folders/ZenFolders.mjs | 45 +- src/zen/folders/zen-folders.css | 8 +- .../LiveFoldersComponents.manifest | 5 + src/zen/live-folders/ZenLiveFolder.sys.mjs | 337 ++++++++++++ .../ZenLiveFoldersManager.sys.mjs | 506 ++++++++++++++++++ src/zen/live-folders/ZenLiveFoldersUI.mjs | 221 ++++++++ src/zen/live-folders/jar.inc.mn | 5 + src/zen/live-folders/moz.build | 10 + .../providers/GithubLiveFolder.sys.mjs | 260 +++++++++ .../providers/RssLiveFolder.sys.mjs | 274 ++++++++++ src/zen/moz.build | 1 + .../sessionstore/ZenSessionManager.sys.mjs | 2 + src/zen/sessionstore/ZenWindowSync.sys.mjs | 34 +- src/zen/tabs/ZenPinnedTabManager.mjs | 9 + src/zen/tabs/zen-tabs/vertical-tabs.css | 17 +- src/zen/tests/live-folders/browser.toml | 7 + .../browser_github_live_folder.js | 165 ++++++ .../tests/live-folders/browser_live_folder.js | 83 +++ .../live-folders/browser_rss_live_folder.js | 229 ++++++++ src/zen/tests/moz.build | 1 + src/zen/zen.globals.mjs | 1 + 43 files changed, 2421 insertions(+), 22 deletions(-) create mode 100644 locales/en-US/browser/browser/zen-live-folders.ftl create mode 100644 src/browser/themes/shared/zen-icons/common/selectable/logo-github.svg create mode 100644 src/zen/live-folders/LiveFoldersComponents.manifest create mode 100644 src/zen/live-folders/ZenLiveFolder.sys.mjs create mode 100644 src/zen/live-folders/ZenLiveFoldersManager.sys.mjs create mode 100644 src/zen/live-folders/ZenLiveFoldersUI.mjs create mode 100644 src/zen/live-folders/jar.inc.mn create mode 100644 src/zen/live-folders/moz.build create mode 100644 src/zen/live-folders/providers/GithubLiveFolder.sys.mjs create mode 100644 src/zen/live-folders/providers/RssLiveFolder.sys.mjs create mode 100644 src/zen/tests/live-folders/browser.toml create mode 100644 src/zen/tests/live-folders/browser_github_live_folder.js create mode 100644 src/zen/tests/live-folders/browser_live_folder.js create mode 100644 src/zen/tests/live-folders/browser_rss_live_folder.js diff --git a/locales/en-US/browser/browser/zen-live-folders.ftl b/locales/en-US/browser/browser/zen-live-folders.ftl new file mode 100644 index 000000000..12ba2a14f --- /dev/null +++ b/locales/en-US/browser/browser/zen-live-folders.ftl @@ -0,0 +1,98 @@ +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +zen-live-folder-options = + .label = Live Folder Options + +zen-live-folder-last-fetched = + .label = Last fetch: { $time } + +zen-live-folder-refresh = + .label = Refresh + +zen-live-folder-github-option-author-self = + .label = Created by Me + +zen-live-folder-github-option-assigned-self = + .label = Assigned to Me + +zen-live-folder-github-option-review-requested = + .label = Review Requests + +zen-live-folder-type-rss = + .label = RSS Feed + +zen-live-folder-option-fetch-interval = + .label = Fetch Interval + +zen-live-folder-fetch-interval-mins = + .label = { $mins -> + [one] 1 minute + *[other] { $mins } minutes + } + +zen-live-folder-fetch-interval-hours = + .label = { $hours -> + [one] 1 hour + *[other] { $hours } hours + } + +zen-live-folder-rss-option-time-range = + .label = Time Range + +zen-live-folder-time-range-hours = + .label = { $hours -> + [one] Last hour + *[other] Last { $hours } hours + } + +zen-live-folder-time-range-all-time = + .label = All time + +zen-live-folder-time-range-days = + .label = { $days -> + [one] Last day + *[other] Last { $days } days + } + +zen-live-folder-rss-option-item-limit = + .label = Item Limit + +zen-live-folder-rss-option-feed-url = + .label = Feed URL + +zen-live-folder-rss-prompt-feed-url = Please enter the feed URL + +zen-live-folder-rss-option-item-limit-num = + .label = { $limit } items + +zen-live-folder-failed-fetch = + .label = Failed to update + .tooltiptext = Failed to update. Try again. + +zen-live-folder-github-no-auth = + .label = Not signed in to GitHub + .tooltiptext = Sign back in to GitHub. + +zen-live-folder-github-no-filter = + .label = Filter is not set + .tooltiptext = No filter set, nothing will be fetched. + +zen-live-folder-rss-invalid-url-title = Failed to create the Live Folder +zen-live-folder-rss-invalid-url-description = The feed URL is invalid. Check the address and try again + +zen-live-folder-github-option-repo-filter = + .label = Repositories + +zen-live-folder-github-option-repo = + .label = { $repo } + +zen-live-folder-github-pull-requests = + .label = Pull Requests + +zen-live-folder-github-issues = + .label = Issues + +zen-live-folder-github-option-repo-list-note = + .label = This list is generated based on your currently active pull requests. diff --git a/locales/en-US/browser/browser/zen-vertical-tabs.ftl b/locales/en-US/browser/browser/zen-vertical-tabs.ftl index cc9791f7f..9f22dd01a 100644 --- a/locales/en-US/browser/browser/zen-vertical-tabs.ftl +++ b/locales/en-US/browser/browser/zen-vertical-tabs.ftl @@ -42,4 +42,9 @@ tabbrowser-reset-pin-button = [one] Reset and pin tab *[other] Reset and pin { $tabCount } tabs } -tab-reset-pin-label = Back to pinned url + +zen-tab-sublabel = + { $tabSubtitle -> + [zen-default-pinned] Back to pinned url + *[other] { $tabSubtitle } + } diff --git a/locales/en-US/browser/browser/zen-workspaces.ftl b/locales/en-US/browser/browser/zen-workspaces.ftl index 097a2b02e..5a4125163 100644 --- a/locales/en-US/browser/browser/zen-workspaces.ftl +++ b/locales/en-US/browser/browser/zen-workspaces.ftl @@ -13,6 +13,9 @@ zen-panel-ui-workspaces-create = zen-panel-ui-folder-create = .label = Create Folder +zen-panel-ui-live-folder-create = + .label = Live Folder + zen-panel-ui-new-empty-split = .label = New Split diff --git a/prefs/privatefox/privacy.yaml b/prefs/privatefox/privacy.yaml index dfe89b769..3640d8c76 100644 --- a/prefs/privatefox/privacy.yaml +++ b/prefs/privatefox/privacy.yaml @@ -63,6 +63,10 @@ value: false locked: true +- name: browser.search.serpEventTelemetryCategorization.enabled + value: false + locked: true + - name: browser.newtabpage.activity-stream.telemetry value: false locked: true diff --git a/src/browser/base/content/zen-assets.inc.xhtml b/src/browser/base/content/zen-assets.inc.xhtml index 0ad4b1f6f..1404e03b6 100644 --- a/src/browser/base/content/zen-assets.inc.xhtml +++ b/src/browser/base/content/zen-assets.inc.xhtml @@ -51,3 +51,4 @@ + diff --git a/src/browser/base/content/zen-assets.jar.inc.mn b/src/browser/base/content/zen-assets.jar.inc.mn index d97cdfaf6..2a44065d4 100644 --- a/src/browser/base/content/zen-assets.jar.inc.mn +++ b/src/browser/base/content/zen-assets.jar.inc.mn @@ -18,3 +18,4 @@ #include ../../../zen/images/jar.inc.mn #include ../../../zen/vendor/jar.inc.mn #include ../../../zen/fonts/jar.inc.mn +#include ../../../zen/live-folders/jar.inc.mn diff --git a/src/browser/base/content/zen-commands.inc.xhtml b/src/browser/base/content/zen-commands.inc.xhtml index 23bc35478..670e8725d 100644 --- a/src/browser/base/content/zen-commands.inc.xhtml +++ b/src/browser/base/content/zen-commands.inc.xhtml @@ -63,4 +63,6 @@ + + diff --git a/src/browser/base/content/zen-locales.inc.xhtml b/src/browser/base/content/zen-locales.inc.xhtml index aac0742ad..2040154fa 100644 --- a/src/browser/base/content/zen-locales.inc.xhtml +++ b/src/browser/base/content/zen-locales.inc.xhtml @@ -9,4 +9,5 @@ + diff --git a/src/browser/base/content/zen-panels/popups.inc b/src/browser/base/content/zen-panels/popups.inc index 864d88e10..d9b804d6a 100644 --- a/src/browser/base/content/zen-panels/popups.inc +++ b/src/browser/base/content/zen-panels/popups.inc @@ -3,6 +3,23 @@ # file, You can obtain one at http://mozilla.org/MPL/2.0/. + + + + + + + + @@ -35,6 +52,12 @@ + +