From 3c18e6020d3d70f828d7723f9961af2b2f847607 Mon Sep 17 00:00:00 2001 From: Jack Works <5390719+Jack-Works@users.noreply.github.com> Date: Fri, 3 Jul 2026 00:00:00 +0000 Subject: [PATCH 1/3] refactor: remove manifest v2 --- knip.ts | 1 - package.json | 2 - packages/mask/.webpack/config.ts | 2 +- packages/mask/.webpack/flags.ts | 5 +- packages/mask/.webpack/manifest/manifest.json | 22 -------- packages/mask/.webpack/plugins/manifest.ts | 40 ++++----------- .../background/initialization/mv2-entry.ts | 1 - .../services/helper/popup-opener.ts | 2 +- .../background/services/site-adaptors/sdk.ts | 29 +++-------- .../InjectContentScripts_imperative.ts | 34 ++++++------- packages/mask/background/tsconfig.json | 2 +- .../mask/background/utils/injectScript.ts | 51 +++++-------------- .../mask/shared-ui/initialization/fetch.ts | 10 +--- packages/scripts/src/bin/args.ts | 2 +- packages/scripts/src/extension/ci.ts | 2 - packages/scripts/src/extension/dotenv.ts | 7 ++- security/content-security-policy.json | 7 --- 17 files changed, 53 insertions(+), 166 deletions(-) delete mode 100644 packages/mask/.webpack/manifest/manifest.json delete mode 100644 packages/mask/background/initialization/mv2-entry.ts diff --git a/knip.ts b/knip.ts index 1879b7d483c7..103023c28651 100644 --- a/knip.ts +++ b/knip.ts @@ -15,7 +15,6 @@ const config: KnipConfig = { ignore: ['public'], entry: [ '.webpack/webpack.config.ts', - 'background/initialization/mv2-entry.ts', 'background/initialization/mv3-entry.ts', 'dashboard/initialization/index.ts', 'popups/initialization/index.ts', diff --git a/package.json b/package.json index facf51819eab..75271e116ad1 100644 --- a/package.json +++ b/package.json @@ -13,8 +13,6 @@ "scripts": { "start": "dev", "start-rspack": "dev-rspack", - "start:mv2": "dev --manifest 2", - "start:mv3": "dev --manifest 3", "start:fx": "dev --manifest firefox-mv3", "codegen": "gulp codegen-watch", "build": "build", diff --git a/packages/mask/.webpack/config.ts b/packages/mask/.webpack/config.ts index e2e3013afb27..bbf5af8526bc 100644 --- a/packages/mask/.webpack/config.ts +++ b/packages/mask/.webpack/config.ts @@ -449,7 +449,7 @@ export async function createConfiguration( dashboard: withReactDevTools(join(import.meta.dirname, '../dashboard/initialization/index.ts')), popups: withReactDevTools(join(import.meta.dirname, '../popups/initialization/index.ts')), contentScript: withReactDevTools(join(import.meta.dirname, '../content-script/index.ts')), - background: normalizeEntryDescription(join(import.meta.dirname, '../background/initialization/mv2-entry.ts')), + background: normalizeEntryDescription(join(import.meta.dirname, '../background/initialization/mv3-entry.ts')), backgroundWorker: normalizeEntryDescription( join(import.meta.dirname, '../background/initialization/mv3-entry.ts'), ), diff --git a/packages/mask/.webpack/flags.ts b/packages/mask/.webpack/flags.ts index 635fd0b049ba..f4f4973d8691 100644 --- a/packages/mask/.webpack/flags.ts +++ b/packages/mask/.webpack/flags.ts @@ -2,10 +2,8 @@ import type { Configuration } from 'webpack' import { join, isAbsolute } from 'node:path' export const ManifestFile = { - ChromiumMV2: 'chromium-mv2', ChromiumMV3: 'chromium-mv3', ChromiumBetaMV3: 'chromium-beta-mv3', - FirefoxMV2: 'firefox-mv2', FirefoxMV3: 'firefox-mv3', SafariMV3: 'safari-mv3', } @@ -114,8 +112,7 @@ export function computedBuildFlags( if (flags.sourceMapPreference) { // React 19 requires a precise source map to make "Open in Editor" feature work if (flags.devtools) sourceMapKind = 'source-map' - else if (flags.manifestFile.includes('3')) sourceMapKind = 'inline-cheap-source-map' - else sourceMapKind = 'eval-cheap-source-map' + else sourceMapKind = 'inline-cheap-source-map' if (flags.mode === 'production') sourceMapKind = 'source-map' if (typeof flags.sourceMapPreference === 'string') sourceMapKind = flags.sourceMapPreference diff --git a/packages/mask/.webpack/manifest/manifest.json b/packages/mask/.webpack/manifest/manifest.json deleted file mode 100644 index 1070352a125d..000000000000 --- a/packages/mask/.webpack/manifest/manifest.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "Mask Network", - "version": "0", - "manifest_version": 2, - "permissions": ["storage", "webNavigation", "activeTab", "identity"], - "optional_permissions": ["", "notifications", "clipboardRead", "tabs", "cookies"], - "background": { "page": "background.html" }, - "icons": { - "16": "assets/16x16.png", - "48": "assets/48x48.png", - "128": "assets/128x128.png", - "256": "assets/256x256.png" - }, - "browser_action": { "default_popup": "popups.html" }, - "homepage_url": "https://mask.io", - "description": "The portal to the new & open Internet. Send encrypted message and decentralized Apps right on top of social networks.", - "web_accessible_resources": ["js/*", "bundled/*", "entry/*", "*.svg", "*.png", "*.jpg", "*.css", "build-info.json"], - "oauth2": { - "client_id": "884348965548-npd1mffii0tbrr87eb2fm73ue022k3t3.apps.googleusercontent.com", - "scopes": ["https://www.googleapis.com/auth/drive.file", "https://www.googleapis.com/auth/userinfo.email"] - } -} diff --git a/packages/mask/.webpack/plugins/manifest.ts b/packages/mask/.webpack/plugins/manifest.ts index f1bfda91e5c5..5757e7cca781 100644 --- a/packages/mask/.webpack/plugins/manifest.ts +++ b/packages/mask/.webpack/plugins/manifest.ts @@ -14,8 +14,6 @@ export function emitManifestFile(flags: NormalizedFlags, computedFlags: Computed readFileSync(new URL('../../../../security/content-security-policy.json', import.meta.url), 'utf-8'), ) const cspContent = { - mv2: Array.from(data['@mv2']).join('; ') + '; ', - mv2dev: Array.from(data['@mv2dev']).join('; ') + '; ', mv3: Array.from(data['@mv3']).join('; ') + '; ', } if (flags.csp && flags.mode === 'development') { @@ -41,12 +39,10 @@ export function emitManifestFile(flags: NormalizedFlags, computedFlags: Computed csp += '; ' } csp.trim() - cspContent.mv2 += csp - cspContent.mv2dev += csp cspContent.mv3 += csp } - const manifest = prepareAllManifest(flags, computedFlags, cspContent) + const manifest = prepareAllManifest(flags, cspContent) const plugins = [] for (const [fileName, fileContent] of manifest) { plugins.push( @@ -77,29 +73,21 @@ export function emitManifestFile(flags: NormalizedFlags, computedFlags: Computed return plugins } -type ManifestV2 = Manifest.WebExtensionManifest & { manifest_version: 2; key?: string } type ManifestV3 = Manifest.WebExtensionManifest & { manifest_version: 3; key?: string } -type ModifyAcceptFlags = Pick +type ModifyAcceptFlags = Pick type CSP = { - mv2: string - mv2dev: string mv3: string } -type ManifestPresets = - | [flags: ModifyAcceptFlags, base: ManifestV2, modify?: (manifest: ManifestV2) => void] - | [flags: ModifyAcceptFlags, base: ManifestV3, modify?: (manifest: ManifestV3) => void] +type ManifestPresets = [flags: ModifyAcceptFlags, base: ManifestV3, modify?: (manifest: ManifestV3) => void] -function prepareAllManifest(flags: NormalizedFlags, computedFlags: ComputedFlags, csp: CSP) { - const mv2Base: ManifestV2 = parseJSONc(readFileSync(new URL('../manifest/manifest.json', import.meta.url), 'utf-8')) +function prepareAllManifest(flags: NormalizedFlags, csp: CSP) { const mv3Base: ManifestV3 = parseJSONc( readFileSync(new URL('../manifest/manifest-mv3.json', import.meta.url), 'utf-8'), ) const manifestFlags: Record = { 'chromium-beta-mv3': [{ ...flags, channel: 'beta' }, mv3Base], - 'chromium-mv2': [flags, mv2Base, (manifest: ManifestV2) => (manifest.browser_specific_settings = undefined)], 'chromium-mv3': [flags, mv3Base, (manifest: ManifestV3) => (manifest.browser_specific_settings = undefined)], - 'firefox-mv2': [flags, mv2Base, (manifest: ManifestV2) => manifest.permissions!.push('tabs')], 'firefox-mv3': [ flags, mv3Base, @@ -123,12 +111,12 @@ function prepareAllManifest(flags: NormalizedFlags, computedFlags: ComputedFlags }, ], } - const manifest = new Map() + const manifest = new Map() for (const fileName in manifestFlags) { if (!Object.hasOwn(manifestFlags, fileName)) continue const [flags, base, modify]: ManifestPresets = (manifestFlags as any)[fileName] const fileContent = cloneDeep(base) - editManifest(fileContent, cloneDeep(flags), cloneDeep(computedFlags), csp) + editManifest(fileContent, cloneDeep(flags), csp) modify?.(fileContent as any) manifest.set(fileName as any, fileContent) } @@ -136,9 +124,8 @@ function prepareAllManifest(flags: NormalizedFlags, computedFlags: ComputedFlags } function editManifest( - manifest: ManifestV2 | ManifestV3, + manifest: ManifestV3, flags: ModifyAcceptFlags, - computedFlags: ComputedFlags, csp: CSP, ) { if (flags.mode === 'development') manifest.name += ' (dev)' @@ -151,21 +138,12 @@ function editManifest( const topPackageJSON = JSON.parse(readFileSync(new URL('../../../../package.json', import.meta.url), 'utf-8')) manifest.version = topPackageJSON.version - if (manifest.manifest_version === 2) { - if (String(computedFlags.sourceMapKind).includes('eval')) manifest.content_security_policy = csp.mv2dev - else manifest.content_security_policy = csp.mv2 - - if (flags.hmr) { - ;(manifest.web_accessible_resources as string[]).push('*.json', '*.js') - } - } else { - manifest.content_security_policy = { extension_pages: csp.mv3 } - } + manifest.content_security_policy = { extension_pages: csp.mv3 } } // cspell: disable-next-line // Note: with this key you cannot upload it to the extension store -function fixTheExtensionID(manifest: ManifestV2 | ManifestV3) { +function fixTheExtensionID(manifest: ManifestV3) { manifest.key = 'MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAoz51rhO1w+wD' + '0EKZJEFJaSMkIcIj0qRadfi0tqcl5nbpuJAsafvLe3MaTbW9LhbixTg9' + diff --git a/packages/mask/background/initialization/mv2-entry.ts b/packages/mask/background/initialization/mv2-entry.ts deleted file mode 100644 index bff21fb25d62..000000000000 --- a/packages/mask/background/initialization/mv2-entry.ts +++ /dev/null @@ -1 +0,0 @@ -import './entry.js' diff --git a/packages/mask/background/services/helper/popup-opener.ts b/packages/mask/background/services/helper/popup-opener.ts index 6e06cf002486..638a32d7b715 100644 --- a/packages/mask/background/services/helper/popup-opener.ts +++ b/packages/mask/background/services/helper/popup-opener.ts @@ -22,7 +22,7 @@ async function openOrFocusPopupWindow(initialURL: string): Promise { // opened from the background chrome process for the extension that // has no physical dimensions - // Note: DOM is only available in MV2 or MV3 page mode. + // Note: DOM is only available in page-based background contexts. const { screenX, outerWidth, screenY } = globalThis as any if (typeof screenX === 'number' && typeof screenY === 'number' && typeof outerWidth === 'number') { top = Math.max(screenY, 0) diff --git a/packages/mask/background/services/site-adaptors/sdk.ts b/packages/mask/background/services/site-adaptors/sdk.ts index bbc5f3e9ab95..f5b60f6c5108 100644 --- a/packages/mask/background/services/site-adaptors/sdk.ts +++ b/packages/mask/background/services/site-adaptors/sdk.ts @@ -1,23 +1,14 @@ import { Sniffings } from '@masknet/shared-base' -import { maskSDK_URL, injectUserScriptMV2, evaluateContentScript } from '../../utils/injectScript.js' +import { maskSDK_URL, evaluateContentScript } from '../../utils/injectScript.js' export async function attachMaskSDKToCurrentActivePage(): Promise { - if (browser.scripting) { - const [{ id }] = await browser.tabs.query({ active: true }) - if (!id) return false - await Promise.all([attachMaskSDK3(id), evaluateContentScript(id)]) - } else if (browser.tabs) { - await Promise.all([attachMaskSDK2(), evaluateContentScript(undefined)]) - } + const [{ id }] = await browser.tabs.query({ active: true }) + if (!id) return false + await Promise.all([attachMaskSDK(id), evaluateContentScript(id)]) return true } -async function attachMaskSDK2() { - await browser.tabs.executeScript(undefined, { - code: await injectUserScriptMV2(maskSDK_URL), - }) -} -async function attachMaskSDK3(id: number) { +async function attachMaskSDK(id: number) { // TODO: Firefox MV3 const target = { target: { tabId: id }, @@ -31,13 +22,9 @@ async function attachMaskSDK3(id: number) { export async function developmentMaskSDKReload(): Promise { if (process.env.NODE_ENV !== 'development') return - if (browser.scripting) { - const [{ id }] = await browser.tabs.query({ active: true }) - if (!id) return - await attachMaskSDK3(id) - } else if (browser.tabs) { - await attachMaskSDK2() - } + const [{ id }] = await browser.tabs.query({ active: true }) + if (!id) return + await attachMaskSDK(id) } export async function shouldSuggestConnectInPopup(url?: string): Promise { diff --git a/packages/mask/background/tasks/Cancellable/InjectContentScripts_imperative.ts b/packages/mask/background/tasks/Cancellable/InjectContentScripts_imperative.ts index ed321b442cd9..3a84f6f85901 100644 --- a/packages/mask/background/tasks/Cancellable/InjectContentScripts_imperative.ts +++ b/packages/mask/background/tasks/Cancellable/InjectContentScripts_imperative.ts @@ -1,12 +1,6 @@ import { hmr } from '../../../utils-pure/hmr.js' -import type { ExtensionTypes, WebNavigation } from 'webextension-polyfill' -import { - evaluateContentScript, - ignoreInjectError, - injectUserScriptMV2, - injectedScriptURL, - maskSDK_URL, -} from '../../utils/injectScript.js' +import type { WebNavigation } from 'webextension-polyfill' +import { evaluateContentScript, ignoreInjectError, injectedScriptURL, maskSDK_URL } from '../../utils/injectScript.js' import { Sniffings } from '@masknet/shared-base' import { matchesAnySiteAdaptor } from '../../../shared/site-adaptors/definitions.js' @@ -18,22 +12,24 @@ async function onCommittedListener(arg: WebNavigation.OnCommittedDetailsType): P const contains = await browser.permissions.contains({ origins: [arg.url] }) if (!contains) return - const detail: ExtensionTypes.InjectDetails = { runAt: 'document_start', frameId: arg.frameId } const err = ignoreInjectError(arg) + const executeScript = (files: string[]) => { + const script = { + target: { tabId: arg.tabId, frameIds: [arg.frameId] }, + files, + world: 'MAIN' as any, + injectImmediately: true, + } + if (Sniffings.is_firefox) delete script.world + return browser.scripting.executeScript(script) + } + if (matchesAnySiteAdaptor(arg.url)) { // don't add await here. we don't want this to block the content script - if (Sniffings.is_firefox) { - browser.tabs.executeScript(arg.tabId, { ...detail, file: injectedScriptURL }).catch(err) - } else { - injectUserScriptMV2(injectedScriptURL) - .then(async (code) => browser.tabs.executeScript(arg.tabId, { ...detail, code })) - .catch(err) - } + executeScript([injectedScriptURL]).catch(err) } - injectUserScriptMV2(maskSDK_URL) - .then(async (code) => browser.tabs.executeScript(arg.tabId, { ...detail, code })) - .catch(err) + executeScript([maskSDK_URL]).catch(err) evaluateContentScript(arg.tabId, arg.frameId).catch(err) } diff --git a/packages/mask/background/tsconfig.json b/packages/mask/background/tsconfig.json index 923dcdba4087..a35d50af7a9a 100644 --- a/packages/mask/background/tsconfig.json +++ b/packages/mask/background/tsconfig.json @@ -4,7 +4,7 @@ "rootDir": "./", "outDir": "../dist/background/", "tsBuildInfoFile": "../dist/background.tsbuildinfo", - // MV3 = WebWorker, MV2 = DOM + // Chrome MV3 = WebWorker, Firefox MV3 = DOM // but we cannot build the same code in two env "lib": ["ESNext", "WebWorker", "DOM.Iterable"] }, diff --git a/packages/mask/background/utils/injectScript.ts b/packages/mask/background/utils/injectScript.ts index ee6256a7001c..d7730af93f5a 100644 --- a/packages/mask/background/utils/injectScript.ts +++ b/packages/mask/background/utils/injectScript.ts @@ -1,33 +1,22 @@ import { Sniffings } from '@masknet/shared-base' -import { memoize } from 'lodash-es' export const injectedScriptURL = '/js/injected-script.js' export const maskSDK_URL = '/js/mask-sdk.js' export async function evaluateContentScript(tabId: number | undefined, frameId?: number) { - if (browser.scripting) { - if (tabId === undefined) { - const activeTab = await browser.tabs.query({ active: true }) - if (!activeTab.length) return - tabId = activeTab[0].id - } - if (!tabId) return - const script = { - target: { tabId, frameIds: frameId ? [frameId] : undefined }, - files: contentScriptList, - world: 'ISOLATED' as any, - } - if (Sniffings.is_firefox) delete script.world - await browser.scripting.executeScript(script) - } else { - for (const script of contentScriptList) { - await browser.tabs.executeScript(tabId, { - file: script, - frameId, - runAt: 'document_idle', - }) - } + if (tabId === undefined) { + const activeTab = await browser.tabs.query({ active: true }) + if (!activeTab.length) return + tabId = activeTab[0].id } + if (!tabId) return + const script = { + target: { tabId, frameIds: frameId ? [frameId] : undefined }, + files: contentScriptList, + world: 'ISOLATED' as any, + } + if (Sniffings.is_firefox) delete script.world + await browser.scripting.executeScript(script) } export const contentScriptList = [ '/js/patches.js', @@ -43,22 +32,6 @@ export const contentScriptList = [ '/cs.js', ] -async function injectUserScriptMV2_raw(url: string) { - try { - const code = await fetch(url).then((x) => x.text()) - return `{ - const script = document.createElement("script") - script.innerHTML = ${JSON.stringify(code)} - document.documentElement.appendChild(script) - }` - } catch (error) { - console.error(error) - return `console.log('[Mask] User script ${url} failed to load.')` - } -} -export const injectUserScriptMV2 = - process.env.NODE_ENV === 'development' ? injectUserScriptMV2_raw : memoize(injectUserScriptMV2_raw) - export function ignoreInjectError(arg: unknown): (reason: Error) => void { return (error) => { const ignoredErrorMessages = ['non-structured-clonable data', 'No tab with id'] diff --git a/packages/mask/shared-ui/initialization/fetch.ts b/packages/mask/shared-ui/initialization/fetch.ts index 3e6ab6dfddb5..492c564d7475 100644 --- a/packages/mask/shared-ui/initialization/fetch.ts +++ b/packages/mask/shared-ui/initialization/fetch.ts @@ -9,15 +9,7 @@ function contentFetch(input: RequestInfo | URL, init?: RequestInit) { const request = new Request(input, init) if (shouldAccessViaContent(request.url)) { - if ( - navigator.userAgent.includes('Firefox') && - browser.runtime.getManifest().manifest_version === 2 && - typeof content === 'object' - ) { - return content.fetch(request, init) - } else { - return original_fetch(request, init) - } + return original_fetch(request, init) } const signal = init?.signal diff --git a/packages/scripts/src/bin/args.ts b/packages/scripts/src/bin/args.ts index 6db5f7f6b21d..28a45f53c550 100644 --- a/packages/scripts/src/bin/args.ts +++ b/packages/scripts/src/bin/args.ts @@ -14,7 +14,7 @@ export function extensionArgsParser(mode: 'development' | 'production') { .options('manifest', { type: 'string', - choices: ['2', '3', ...manifestFiles] as const, + choices: ['3', ...manifestFiles] as const, description: 'Select which manifest file/version to use', }) diff --git a/packages/scripts/src/extension/ci.ts b/packages/scripts/src/extension/ci.ts index 994322887c16..5338ea8fda8e 100644 --- a/packages/scripts/src/extension/ci.ts +++ b/packages/scripts/src/extension/ci.ts @@ -11,10 +11,8 @@ const BUILD_PATH = new URL('./build/', ROOT_PATH) export const ciBuild: TaskFunction = series( codegen, buildBaseExtension, - zipTo('MaskNetwork.chromium-mv2.zip', ManifestFile.ChromiumMV2), zipTo('MaskNetwork.chromium-mv3.zip', ManifestFile.ChromiumMV3), zipTo('MaskNetwork.chromium-beta.zip', ManifestFile.ChromiumBetaMV3), - zipTo('MaskNetwork.firefox-mv2.zip', ManifestFile.FirefoxMV2, true), zipTo('MaskNetwork.firefox-mv3.zip', ManifestFile.FirefoxMV3, true), ) export const buildChrome: TaskFunction = series( diff --git a/packages/scripts/src/extension/dotenv.ts b/packages/scripts/src/extension/dotenv.ts index 3ab947c1e3e4..9948b3d47e47 100644 --- a/packages/scripts/src/extension/dotenv.ts +++ b/packages/scripts/src/extension/dotenv.ts @@ -16,12 +16,12 @@ export function applyDotEnv(flags: BuildFlags) { flags.sourceMapPreference ??= parseBooleanOrString(parsed.sourceMap) if (parsed.manifest) { - if (parsed.manifest !== '2' && parsed.manifest !== '3') { + if (parsed.manifest !== '3') { if (!Object.values(ManifestFile).includes(parsed.manifest as ManifestFile)) { throw new TypeError(`Invalid manifest version "${parsed.manifest}" specified in the env file`) } } - flags.manifestFile ??= parseManifest(parsed.manifest as ManifestFile | '2' | '3') + flags.manifestFile ??= parseManifest(parsed.manifest as ManifestFile | '3') } flags.hmr ??= parseBoolean(parsed.hmr) flags.devtools ??= parseBoolean(parsed.devtools) @@ -36,8 +36,7 @@ export function applyDotEnv(flags: BuildFlags) { flags.csp ??= parseBoolean(parsed.csp) flags.sourceMapHideFrameworks ??= parseBoolean(parsed.sourceMapHideFrameworks) } -export function parseManifest(manifest: '2' | '3' | 2 | 3 | undefined | ManifestFile) { - if (manifest === 2 || manifest === '2') return ManifestFile.ChromiumMV2 +export function parseManifest(manifest: '3' | 3 | undefined | ManifestFile) { if (manifest === 3 || manifest === '3') return ManifestFile.ChromiumMV3 if (typeof manifest === 'string') return manifest return ManifestFile.ChromiumMV3 diff --git a/security/content-security-policy.json b/security/content-security-policy.json index aba3873ed56b..f745695de60b 100644 --- a/security/content-security-policy.json +++ b/security/content-security-policy.json @@ -1,11 +1,4 @@ { - "@mv2dev": [ - "script-src 'self' 'unsafe-eval'", - "trusted-types default dompurify webpack mask", - "upgrade-insecure-requests", - "require-trusted-types-for 'script'" - ], - "@mv2": ["script-src 'self'", "trusted-types default dompurify mask", "upgrade-insecure-requests"], "@mv3": ["script-src 'self'", "trusted-types default dompurify mask", "upgrade-insecure-requests"], "default-src": "self", "style-src": "unsafe-inline", From f5ed5a0894a4af6eef449dd1a8d2ae9f396dc3a7 Mon Sep 17 00:00:00 2001 From: Jack-Works Date: Fri, 3 Jul 2026 08:33:25 +0000 Subject: [PATCH 2/3] fix: linter --- packages/mask/.webpack/plugins/manifest.ts | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/packages/mask/.webpack/plugins/manifest.ts b/packages/mask/.webpack/plugins/manifest.ts index 5757e7cca781..47f71d720041 100644 --- a/packages/mask/.webpack/plugins/manifest.ts +++ b/packages/mask/.webpack/plugins/manifest.ts @@ -123,11 +123,7 @@ function prepareAllManifest(flags: NormalizedFlags, csp: CSP) { return manifest } -function editManifest( - manifest: ManifestV3, - flags: ModifyAcceptFlags, - csp: CSP, -) { +function editManifest(manifest: ManifestV3, flags: ModifyAcceptFlags, csp: CSP) { if (flags.mode === 'development') manifest.name += ' (dev)' else if (flags.channel === 'beta') manifest.name += ' (beta)' else if (flags.channel === 'insider') manifest.name += ' (insider)' From 7acd0bb72d105d7da26b0c654d857485472bd5b7 Mon Sep 17 00:00:00 2001 From: Jack Works <5390719+Jack-Works@users.noreply.github.com> Date: Fri, 3 Jul 2026 00:00:00 +0000 Subject: [PATCH 3/3] fix: ci --- .github/workflows/compile.yml | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/.github/workflows/compile.yml b/.github/workflows/compile.yml index cd4108aae5fb..c716202fc6ce 100644 --- a/.github/workflows/compile.yml +++ b/.github/workflows/compile.yml @@ -73,12 +73,6 @@ jobs: sourcemaps: ./build version_prefix: mask- ignore_missing: true - - name: Upload `MaskNetwork.chromium-mv2.zip` - uses: actions/upload-artifact@v7 - with: - name: MaskNetwork.chromium-mv2.zip - path: masknetwork.chromium-mv2.zip - if-no-files-found: error - name: Upload `MaskNetwork.chromium-beta.zip` uses: actions/upload-artifact@v7 with: @@ -91,12 +85,6 @@ jobs: name: MaskNetwork.chromium-mv3.zip path: masknetwork.chromium-mv3.zip if-no-files-found: error - - name: Upload `MaskNetwork.firefox-mv2.zip` - uses: actions/upload-artifact@v7 - with: - name: MaskNetwork.firefox-mv2.zip - path: masknetwork.firefox-mv2.zip - if-no-files-found: error - name: Upload `MaskNetwork.firefox-mv3.zip` uses: actions/upload-artifact@v7 with: