Skip to content

Updated with latest repo - #11

Open
vaimeo wants to merge 5125 commits into
vaimeo:developfrom
DimensionDev:develop
Open

Updated with latest repo#11
vaimeo wants to merge 5125 commits into
vaimeo:developfrom
DimensionDev:develop

Conversation

@vaimeo

@vaimeo vaimeo commented Jun 1, 2022

Copy link
Copy Markdown
Owner

Description

Closes # (NO_ISSUE)

Type of change

  • Documentation
  • Code refactoring (Restructuring existing code w/o changing its observable behavior)
  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (a fix or feature that would make something no longer possible to do/require old user must upgrade their Mask Network to this new version)

Previews

Checklist

  • My code follows the style guidelines of this project.
  • I have performed a self-review of my own code.
    • I have removed all in development console.logs
    • I have removed all commented code.
  • I have commented on my code, particularly in hard-to-understand areas.
  • I have read Internationalization Guide and moved text fields to the i18n JSON file.

If this PR depends on external APIs:

  • I have configured those APIs with CORS headers to let extension requests get passed.
    • chrome extension: chrome-extension://[id]
    • firefox extension: moz-extension://[id]
  • I have delegated all web requests to the background service via the internal RPC bridge.

Jack-Works and others added 23 commits April 5, 2025 13:57
* 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>
Jack-Works and others added 30 commits July 15, 2026 00:00
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: improve typings and remove duplicated constants

* Fix import statement for FireflyRedPacketAPI

* Update constants.ts
* 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.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.