Updated with latest repo - #11
Open
vaimeo wants to merge 5125 commits into
Open
Conversation
guanbinrui
force-pushed
the
develop
branch
2 times, most recently
from
March 3, 2023 15:44
43c6e4c to
1931e81
Compare
guanbinrui
force-pushed
the
develop
branch
2 times, most recently
from
November 6, 2023 17:25
621ed43 to
ec19101
Compare
* New translations en-us.po (Japanese) docs(i18n): sync translation en-us.po for Japanese * New translations en-us.po (Korean) docs(i18n): sync translation en-us.po for Korean * New translations en-us.po (Chinese Simplified) docs(i18n): sync translation en-us.po for Chinese Simplified * New translations en-us.po (Chinese Traditional) docs(i18n): sync translation en-us.po for Chinese Traditional * New translations en-us.po (Quenya) docs(i18n): sync translation en-us.po for Quenya * fix: run codegen --------- Co-authored-by: Jack-Works <Jack-Works@users.noreply.github.com>
* feat: mf-6648 refine tag render * refactor: depreate enhanceTag * feat: search joined name
* fix: mf-6675 adjust background color of file table * fix: mf-6677 back up => backup * fix: mf-6678 backup dialog * refactor: replace merge modal with restore modal * fix: mf-6680 handle failed restore backup * fix: mf-6681 navigate to onboarding page after recovery * fix: mf-6674 mf-6679 adjust login and logout * fix: mf-6682 format datetime * fixup! fix: mf-6674 mf-6679 adjust login and logout * fix: mf-6683 scrollbar in collectible card * fix: mf-6676 actively request drive permission
Co-authored-by: Jack-Works <Jack-Works@users.noreply.github.com>
Co-authored-by: Jack-Works <Jack-Works@users.noreply.github.com>
Co-authored-by: Jack-Works <Jack-Works@users.noreply.github.com>
* feat: mf-6673 lens v3 follow/unfollow * refactor: lens feeds migrate to lens v3 api * chore: lingui compile * fix: eslint --------- Co-authored-by: swkatmask <swkatmask@users.noreply.github.com>
Co-authored-by: guanbinrui <52657989+guanbinrui@users.noreply.github.com>
…#12432) * perf: cache per-tweet image parsing and t.co link resolution on x.com The timeline post collector re-runs collectPostInfo/collectLinks on every onNodeMutation of a tweet node (view counters, hover cards, lazy image loads, etc. all fire this on x.com). Each re-run used to spin up a brand new untilElementAvailable polling watcher for image steganography parsing and re-request resolveTCOLink for every link, even when nothing relevant had changed. This caches both by tweetNode/href respectively so repeated mutations reuse prior work instead of redoing it, reducing scripting cost while scrolling a busy timeline. Output values are unchanged; only the redundant recomputation is removed. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012hAmnQwwcfT7DaWAAugciS * fix: stop leaking React trees on avatar/tips button re-renders on x.com injectAvatar, injectTipsButtonOnPost, and injectTipsButtonOnFollowButton each create a fresh DOMProxy() inside their onNodeMutation/onTargetChanged handler for the same watched element. Since a new DOMProxy always attaches a brand-new shadow-root sibling, every mutation of an avatar or tips button element (lazy image loads, hover states, X's virtualization reusing nodes) was injecting another live React tree next to the previous one without ever destroying it - the old `remover` was simply discarded. On a long scroll session this accumulates orphaned DOM nodes/shadow roots/React components (each with their own data-fetching hooks) that are never cleaned up until the whole post/cell is removed. Call the existing `remove()` before creating the new tree so at most one is ever live per element, matching the pattern already used correctly elsewhere (e.g. MaskIcon's helper reuses the watcher-provided DOMProxy instead of creating a new one). No behavior/output change other than removing the leaked duplicates. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012hAmnQwwcfT7DaWAAugciS --------- Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
* chore: remove Mask Wallet Removes the built-in Mask-native wallet (mnemonic/private-key management, keystore, payment password, lock/unlock, HD derivation, and all related create/import/export UI) while keeping external wallet connections (MetaMask, WalletConnect, etc.) and all other Web3 features intact. - Firefly/Privy embedded wallets are re-architected onto their own ProviderType.Firefly, backed by the already-independent Firefly REST API, instead of piggy-backing on Mask Wallet's local-key storage. - The dApp-facing injected wallet identity (EIP-6963 announcement and the entry-sdk/mask-sdk RPC bridge, both hardcoded to the built-in wallet) is removed entirely; web pages no longer see "Mask Wallet" as a selectable provider. - Background wallet services (mnemonic/keystore crypto, password vault, lock timer, legacy wallet migration, per-origin permission grants) are deleted; wallet-related backup/restore paths become no-ops while preserving backward-compatible parsing of old backup files. - Popup/dashboard UI: wallet creation/import/derive/lock/settings screens are removed; the Wallet tab gate is rewritten to be provider-agnostic (shows a "connect a wallet" empty state instead of mnemonic onboarding when nothing is connected). - Cleanup: dead routes, the MaskWallet provider descriptor/icon, the @dimensiondev/mask-wallet-core dependency, and orphaned locale strings are removed. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ly4aKgVW1wnPu2LfzTQuJi * chore: remove stray tsc build artifacts, fix lint warning Running \`tsc -b\` for verification during the Mask Wallet removal incidentally emitted .d.ts/.d.ts.map declaration files in-place under packages/scripts/src and packages/mask/.webpack, which got swept up by git add. These are build output, not source, and don't exist on develop. Also fixes a lingering type-only-import lint warning in popup-opener.ts. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ly4aKgVW1wnPu2LfzTQuJi * fix: linter * fix: swap SingletonModal generic argument order for GasSettingModal/ChooseTokenModal Introduced by the wallet-removal cleanup of this file: SingletonModal's generic order is <OpenProps, CloseProps> everywhere else, but these two got swapped to <CloseProps, OpenProps> while removing the adjacent deleted-wallet-modal declarations. Fixes the type-check CI failure. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ly4aKgVW1wnPu2LfzTQuJi * chore: remove dead PluginID/event declarations orphaned by wallet removal - PluginID.SmartPay and its SmartPayDialogEvent had zero remaining callers already (the SmartPay account-abstraction plugin was removed before this change); leaves the SmartPay ABI/transaction-history strings intact for decoding old transactions. - PluginID.Wallet, PluginID.WalletService, and WalletSettingsDialogEvent became dead as a direct result of this PR's own deletions (the wallet database and WalletSettings UI) and were missed in the original pass. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Ly4aKgVW1wnPu2LfzTQuJi --------- Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com> Co-authored-by: guanbinrui <guanbinrui@users.noreply.github.com>
`pnpm run dev` failed with "Module parse failed: 'import' and 'export' may appear only with 'sourceType: module'" on the vendored @bonfida/spl-name-service dist files. The TS/swc rule includes all of packages/, so it also matched the prebuilt CJS dist. With HMR on, the react-refresh plugin prepends an ESM import preamble to every file it processes (injected via normalModuleFactory hooks, outside module rules), mixing ESM into CJS which webpack cannot parse. - exclude dist/ from the TS/swc rule - exclude dist/ (plus the plugin's default node_modules exclusion) from the react-refresh plugin
* chore: remove dead code left over from wallet removal (found via knip)
Ran knip's dead-code scan and found four files whose only consumers
were already deleted by this PR:
- RestoreFromMnemonic.tsx / RestoreFromPrivateKey.tsx: only used by the
now-deleted RestoreWalletFromLocal.tsx.
- useWalletName.ts: only used by the now-deleted
Interaction/PermissionRequest.tsx.
- dashboard/contexts/{RecoveryContext.tsx,index.ts}: only used by the
now-deleted RestoreWalletFromLocal.tsx and CreateMaskWallet/Recovery.
Also fixes knip.ts's own config, which still listed the deleted
web-workers/wallet.ts as a package entry point.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Ly4aKgVW1wnPu2LfzTQuJi
* fix: linter
---------
Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: guanbinrui <guanbinrui@users.noreply.github.com>
Follow-up to #12432, which fixed the same class of leak for injectAvatar and the tips buttons on x.com. The remaining injection points that create a React tree inside an onNodeMutation/onTargetChanged handler had the same problem: a mutation of the watched element (lazy image src swaps, hover states, feed virtualization reusing nodes) re-runs the handler, which attaches a brand-new shadow-root sibling + React tree without tearing down the previous one. On a long scroll session this accumulates orphaned DOM nodes / shadow roots / React roots (each with its own data-fetching hooks) that are never cleaned up until navigation. - facebook/minds/instagram injectAvatar: call remove() before re-creating the DOMProxy, mirroring the twitter.com fix from #12432. - injectMaskIconToPostTwitter: post.author refines several times as post parsing completes and re-fires on every onNodeMutation of the tweet, so each add() stacked another DOMProxy shadow sibling + <Icon> React root (visible as duplicated Mask icons on the post). Reuse a single proxy, tear down the previous tree first, and release the post.author subscription on signal abort instead of leaking it. - injectMaskUserBadgeAtTwitter (MaskIcon `_` helper): check() re-ran on every mutation and re-called attachReactTreeWithContainer with the same shadow key, which the mounter rejects with a console.error on every floating-bio-card hover while also clobbering `remover` to a no-op. Attach once; remove()/onRemove reset the guard so a genuinely re-added element still re-attaches. - site-adaptor-infra startPostListener: the per-post AbortController wired a listener onto the page-lifetime signal on every post `set` and never removed it, so every post scrolled past left a permanent listener (and its retained controller). Pass { signal: abort.signal } so it drops when the post unmounts. Output values are unchanged; only the redundant/leaked work is removed. Claude-Session: https://claude.ai/code/session_013SLkuieqJXCMg1xoL98jij Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Removes Sentry error/performance monitoring entirely, keeping Mixpanel analytics intact. - Deletes packages/sentry (the @sentry/browser bundle injected as a content script) and its build task (packages/scripts/src/projects/sentry.ts). - Deletes the Sentry telemetry provider (web3-telemetry/src/providers/Sentry.ts) and the Sentry-only fetch-transaction tracer (captureFetchTransaction.ts); TelemetryAPI.captureException becomes a no-op since Sentry was its only backing provider. - Fixes MixpanelAPI.captureEvent, which was incorrectly gated on the sentry_enabled/sentry_event_enabled flags instead of its own mixpanel_enabled/mixpanel_event_enabled flags (same isProd default, so no behavior change — just no longer coupled to Sentry's flags). - Removes all sentry_* flags, the MASK_SENTRY/MASK_SENTRY_DSN env vars and their webpack DefinePlugin injection, the sentry.js/sentry-patch.js content-script injection (both the dynamic list and the MV3 service worker's importScripts), the @sentry/browser no-restricted-imports eslint rule, and the CI "Create Sentry release" step (including its now-unnecessary git-worktreeconfig workaround) and MASK_SENTRY* secrets. Claude-Session: https://claude.ai/code/session_01Ly4aKgVW1wnPu2LfzTQuJi Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
MUI lighten() only parses literal colors and throws on var(--mui-palette-maskColor-primary) from the cssVariables theme (#52d5bce737). Add a color-mix based lighten() to @masknet/theme alongside alpha() and use it instead.
MUI v5's Box converted the system prop fontSize={0} to font-size: 0,
zeroing the strut so the svg child filled the icon span. Since the v9
upgrade (52d5bce) Box only styles through sx, so the prop was passed
through as a dead font-size="0" DOM attribute and every s:true icon
(svg child path) drifted down a few px inside text-sized containers
(e.g. MaskBlue size={16} in the ProfileCard avatar badge).
Move fontSize: 0 into the sx base style (restoring v5 semantics), add
lineHeight: 0 to guard against host pages inheriting an absolute
line-height, and drop the dead prop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description
Closes # (NO_ISSUE)
Type of change
Previews
Checklist
console.logsIf this PR depends on external APIs:
chrome-extension://[id]moz-extension://[id]