Skip to content

Updated with latest repo - #11

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

Updated with latest repo#11
vaimeo wants to merge 5154 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.

Wukong Sun and others added 23 commits April 24, 2025 21:58
* fix: mf-6697 report nft

* fix: mf-6695 switch chain in sidebar

* fix: mf-6696 load erc1155

* fix: tag image

* fix: mf-6706 mf-6699 nftscan supported chains

* fix: mf-6702 collectible plugin supports base chain

* fix: mf-6701 magiceden offers

* fix mf-6708 adjust collectible card style

* fix: mf-6707 portal container
* refactor: only use production nextid proof service

* fix: revert button style

* fix: solana nft collections are not support yet
* chore: bump version to 2.33.0

* fix: initialize lens client only with valid address (#12221)

---------

Co-authored-by: Wukong Sun <swkatmask@gmail.com>
Co-authored-by: Jack-Works <Jack-Works@users.noreply.github.com>
* chore: bump version to 2.33.2

* fix: mf-6715 update firefly domain (#12227)

* fix(farcaster): mf-6717 use username for farcaster identity (#12232)

* fix(RSS3): mf-6716 remove rss3 profile fetching (#12234)

Remove RSS3.getProfiles API usage from avatar component and DSearch provider.

---------

Co-authored-by: Wukong Sun <swkatmask@gmail.com>
* chore: config weavevm

* chore: config weavevm

* chore: weavevm agent

* chore: install bundler sdk

* chore: update bundler sdk

* chore: minor fix

* chore: pull

* chore: use envelopes to set mime type

* chore: rebase package.json

* chore: fix gateway and weavevm download url

* chore: ui fixes

* chore: cosmetic fix

* chore: move deps

* feat: weavevm-bundles to load0

* chore: bump version to 2.33.3

* fix: linter

* chore: mf-6722 update and add plugin tutorial links (#12238)

* docs(FileService): mf-6721 update terms of service (#12237)

---------

Co-authored-by: Joel <itsjoelpm@gmail.com>
Co-authored-by: Xylophone <xylophonezygote@gmail.com>
Co-authored-by: guanbinrui <guanbinrui@users.noreply.github.com>
Co-authored-by: Wukong Sun <swkatmask@gmail.com>
removes the Mask Network backup option from the dashboard.
* chore(welcome): welcome-error handle permission request errors

add custom snackbar to show error message when permission request fails.

* Update packages/mask/dashboard/pages/SetupPersona/Welcome/index.tsx

Co-authored-by: guanbinrui <52657989+guanbinrui@users.noreply.github.com>

* fix: linter

* Update packages/mask/dashboard/pages/SetupPersona/Welcome/index.tsx

* fix: linter

---------

Co-authored-by: guanbinrui <52657989+guanbinrui@users.noreply.github.com>
Co-authored-by: swkatmask <swkatmask@users.noreply.github.com>
Co-authored-by: guanbinrui <guanbinrui@users.noreply.github.com>
Signed-off-by: curlwget <curlwget@icloud.com>
…12241)

disable the 'agree' button on the welcome screen while the `handleAgree` function is executing to prevent multiple clicks and potential issues.
Wukong Sun and others added 30 commits September 6, 2026 00:51
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.
* feat(book): add component gallery Vite app in apps/

A plain Vite + React SPA that renders Maskbook's shared UI components,
imported from source via the `mask-src` export condition (mirrors
packages/mask/.webpack/config.ts). No Storybook.

- apps/book: Vite app, hash router, auto-discovered `*.demo.tsx` demos
  via import.meta.glob, MaskThemeProvider + light/dark toggle
- Sections: Foundation (colors, typography, shadows), Components
  (ActionButton, Alert, Indicators, LoadingBase, Tabs, TextField),
  Icons (full @masknet/icons gallery)
- Shadow-root portals disabled for normal-DOM rendering
- vite-plugin-wasm for tiny-secp256k1 pulled in via @masknet/shared-base
- pnpm-workspace.yaml: add apps/*; root scripts: `book`, `book:build`
- vercel.json for deploy from apps/book

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013SLkuieqJXCMg1xoL98jij

* fix: linter

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
Co-authored-by: guanbinrui <guanbinrui@users.noreply.github.com>
* feat(book): extract ToolboxHint wallet slot into injected-ui

Generalizes packages/injected-ui/src/ToolboxHint.tsx (previously only the
"Mask Network" application slot) with icon/extra props so it also covers
the connected-wallet slot injected into the same toolbox/sidebar. The
container in ToolboxUnstyled.tsx now computes the wallet icon (via
@masknet/shared's WalletIcon) and chain-indicator dot and passes them
down as props, keeping @masknet/shared out of injected-ui entirely.

Adds ToolboxHintWallet book demos for Twitter, Facebook, and Minds.

Follow-up to #12445, #12446, #12447.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ED8N1kMNKJ5vinunnvcWY6

* fix: linter

* fix(injected-ui): avoid JSX default parameter value in ToolboxHint

eslint's @eslint-react/no-unstable-default-props flagged the JSX default
(icon = <Icons.MaskBlue .../>) in the props destructuring. Move the
fallback to the render site (icon ?? <Icons.MaskBlue .../>) instead.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ED8N1kMNKJ5vinunnvcWY6

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: guanbinrui <guanbinrui@users.noreply.github.com>
)

* feat(book): extract WizardDialog + PinExtension into injected-ui

Both were already fully prop-driven (no live site-adaptor/plugin-infra
coupling), so this is a straight move with one adjustment: PinExtension's
internal Trans-wrapped copy and "Start" button label are lifted to
tip/startLabel props, following the pattern established for GuideStep/
ToolboxHint - the container (SetupGuide/index.tsx) now supplies the
translated content.

The extensionPinned.png asset PinExtension references is copied into
packages/injected-ui/src/resources/ so the component has no dependency
on packages/mask's resource layout.

Adds WizardDialog and PinExtension book demos under
apps/book/src/demos/injection/shared/ (setup guide is cross-platform,
not tied to one site adaptor).

Follow-up to #12445, #12446, #12447, #12449.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ED8N1kMNKJ5vinunnvcWY6

* fix: linter

* fix: eslint

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: guanbinrui <guanbinrui@users.noreply.github.com>
Co-authored-by: Jack-Works <Jack-Works@users.noreply.github.com>
…ui (#12451)

* feat(book): extract CommentBox + AutoPasteFailedDialog into injected-ui

CommentBox only needed a small refactor: it read
activatedSiteAdaptorUI!.networkIdentifier directly for the Minds-specific
width variant and used useLingui() for its placeholder - both are now
site/placeholder props, computed by the container
(site-adaptor-infra/defaults/inject/CommentBox.tsx).

AutoPasteFailedDialog was already close to pure; the only import at risk
of pulling @masknet/shared's barrel into injected-ui was its use of
Image for the pasted screenshot preview. Since that image is always a
local blob URL (never a network fetch), Image's retry/fallback behavior
doesn't apply here, so it's replaced with a plain <img>. The download
button's saveFileFromUrl call and the DraggableDiv positioning wrapper
stay in the container (packages/mask), which now passes onDownload as
a prop.

Adds a date-fns dependency to packages/injected-ui (used for the
suggested download file name) and its pnpm-lock.yaml entry.

Adds CommentBox demos for Twitter/Minds (showing the width variants)
and an AutoPasteFailedDialog demo under apps/book/src/demos/injection/.

Follow-up to #12445, #12446, #12447, #12449, and the not-yet-merged
WizardDialog/PinExtension batch.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ED8N1kMNKJ5vinunnvcWY6

* fix: linter

* feat(book): extract AccountConnectStatus content into injected-ui

AccountConnectStatus (the setup guide's "connect persona" status card)
previously read activatedSiteAdaptorUI and SetupGuideContext directly.
Split into a pure content component (the per-state Typography/Button
messages) that takes connected/isFirstConnection/isTwitterPage/
expectAccount/currentUserId/siteName as props, and a thinner container
that keeps the BindingDialog/LoadingStatus wrapping (both stay in
packages/mask since they pull @masknet/shared) and resolves the live
site/context values.

No new dependencies (MUI + @masknet/theme were already injected-ui deps).

Adds an AccountConnectStatus book demo with a scenario picker covering
all five message states.

Follow-up to #12445, #12446, #12447, #12449, and the not-yet-merged
WizardDialog/PinExtension and CommentBox/AutoPasteFailedDialog batches.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ED8N1kMNKJ5vinunnvcWY6

* fix: linter

* feat(book): extract AdditionalContent + RecipientsToolTip into injected-ui

AdditionalContent (the card injected above a post for its decryption
status) previously read activatedSiteAdaptorUI directly and rendered
TypedMessage content inline via a packages/mask-private
TypedMessageRenderContext. Split into a pure card-layout component
whose message prop is already-rendered ReactNode, and a thin container
(AdditionalPostContent.tsx) that keeps the TypedMessage/text-resizer
wiring and forwards the rendered result down - callers that never
needed real TypedMessage rendering (the progress/error states) now use
the pure component directly.

This let DecryptPostAwaiting.tsx and DecryptPostFailed.tsx collapse
into inline calls in DecryptedPost.tsx's renderProgress - they had no
behavior beyond forwarding props into AdditionalContent, so keeping
them as separate files would just be indirection. getAuthorDifferentMessage
(which needs Trans) stays untouched in packages/mask and its result is
now passed down as headerActions instead of being computed inside the
extracted components.

RecipientsToolTip was already pure aside from a relative import into
packages/mask's shared-ui Avatar; since that Avatar has another
consumer, it's duplicated as ContactAvatar.tsx in injected-ui (it's
~15 lines) rather than touched.

Adds AdditionalContent and RecipientsToolTip book demos.

Follow-up to #12445, #12446, #12447, #12449, and the not-yet-merged
WizardDialog/PinExtension, CommentBox/AutoPasteFailedDialog, and
AccountConnectStatus batches.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ED8N1kMNKJ5vinunnvcWY6

* fix: linter

* fix: import useLingui from @lingui/react/macro for the t tag in CommentBox

Type-check was failing: useLingui from @lingui/react (the plain runtime
hook) returns { i18n, _ }, not { t } - the t template-tag destructure
only works with the macro-transformed useLingui from
@lingui/react/macro, matching the { t } = useLingui() pattern already
used elsewhere in packages/mask (e.g. popups/pages/Wallet/EditNetwork/useWarnings.ts).

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01ED8N1kMNKJ5vinunnvcWY6

* fix: linter

---------

Co-authored-by: Claude <noreply@anthropic.com>
Co-authored-by: guanbinrui <guanbinrui@users.noreply.github.com>
* fix(icons): use currentColor for neutral monochrome UI icons

Neutral single-color glyphs in general/ and settings/ were each authored
with an arbitrary hardcoded fill (#1c68f3, #767f8d, #07101b, #fff, ...).
Since the icon codegen only emits inline JSX (which inherits `color`) when
the SVG source contains `currentColor`, these rendered as fixed-color
background images and showed up as a rainbow of hues in the book gallery.

Replace the hardcoded color with currentColor on 50 SVGs (~40 icons),
including all Settings* light/dark pairs, and add fill="currentColor" to
5 icons that had no color attribute at all. Regenerate
icon-generated-as-jsx.js. Brand logos, semantic-color icons (red Warning,
green Success), two-tone badges, and icons already using var(--icon-color)
are left untouched. No type/API changes.

Also bump the book icon gallery to a fixed 10 icons per row with larger
36px glyphs so each icon is easier to see.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013SLkuieqJXCMg1xoL98jij

* fix(icons): drop fill-opacity from EyeOff.dark

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013SLkuieqJXCMg1xoL98jij

* fix(icons): collapse duplicate Gear variants into one

Gear.light and Gear.dark are identical after the currentColor conversion.
Keep Gear.light (fixing its stray viewBox "0 0 24 25" -> "0 0 24 24" so it
stays square and keeps the `size` prop), drop Gear.dark. The single
remaining variant is returned for any palette.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013SLkuieqJXCMg1xoL98jij

* fix(icons): collapse duplicate light/dark variants into one

After the currentColor conversion these light/dark pairs render
identically, so keep the dark file and drop the light one:
Eye, EyeOff, Identity, LinearCalendar, Pin, PublicKey, and
Settings{Appearance,Backup,Email,Password,Phone,Restore,Sync}.

The remaining single variant is returned for any palette. No call
site passes variant="light"; the one variant="dark" use of
LinearCalendar still resolves. Regenerated icon codegen.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013SLkuieqJXCMg1xoL98jij

* fix(icons): drop SettingsSync (dup of Swap) and collapse SettingsLanguage

- SettingsSync.dark is the same design as general/Swap at a 24-grid;
  SettingsSync has no usages, so remove it and keep Swap.
- SettingsLanguage.light/.dark render identically (the light clip-path
  referenced a missing id, the dark one clipped to the full viewBox).
  Keep .dark, strip the dead clip-path wrapper and its #1C68F3 defs.

Regenerated icon codegen. book:build passes.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_013SLkuieqJXCMg1xoL98jij

---------

Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
The book vite server had no macro transform, so any source importing
@lingui/react/macro (e.g. shared-base-ui's CrashUI, reached via
injected-ui's ProfileTab) loaded the macro's browser.mjs runtime guard
and threw at runtime.

Mirror packages/mask/.webpack/config.ts: swap @vitejs/plugin-react for
@vitejs/plugin-react-swc with @lingui/swc-plugin, and exclude
@masknet/shared-base-ui from optimizeDeps so its sources go through
the transform pipeline (esbuild pre-bundling would skip the plugin).
* fix: mf-6794 include recipient in useTokenTip deps so tips go to the selected address

* fix: mf-6795 wrap decompressK256Raw in Result so invalid v37 keys return Err instead of throwing

* fix: mf-6796 send correct EIP-1559 gas fields in swap and bridge confirm

* fix: mf-6797 apply identifiers filter in queryProfilesDB when network is set

* fix: mf-6798 show per-user claimed amount on Solana red packet envelope
…s fields (#12463)

* fix: mf-6796 use rule-compliant minimal ternary for gas fields

* fix: linter

---------

Co-authored-by: swkatmask <swkatmask@users.noreply.github.com>
…12464)

* fix: mf-6799 run destroy cleanup by not registering abort listeners with their own signal

* fix: mf-6800 stop IntervalWatcher when untilElementAvailable times out

* fix: mf-6801 restore E2E post recipients instead of clobbering them with everyone

* fix: mf-6802 materialize activated plugins before searching plugin backups

* fix: mf-6803 migrate profiles store localKey in v1_v2 upgrade

* fix: mf-6804 stop stale keepAlive timers from killing the healthy gun instance

* fix: mf-6805 return cleanup from subscribeGunMapData so decrypts stop subscriptions

* fix: mf-6806 serialize weighted/quadratic vote choices as a JSON weight map

* fix: mf-6807 apply slippage to the minimum received amount on the swap slippage page

* fix: mf-6808 recompute the exchange rate when the comparison direction flips

* fix: mf-6809 recompute gas fee when any gas config field changes

* fix: mf-6810 refetch native token balance after a chain switch

* fix: mf-6811 parse OKX bridge quote toChainId from its own field

* fix: mf-6812 estimate tips transfer gas with the decimal-shifted amount

* fix: mf-6803 use an interface for the migration record type

* fix: mf-6813 recompute patched history when claim info arrives

* fix: mf-6814 check red packet expiry live and stop polling emptied packets

* fix: mf-6815 await file restore writes and surface failures

* fix: mf-6816 always clean up the upload progress entry via try/finally

* fix: mf-6817 split v38 metadata on the first separator only

* fix: mf-6818 ignore stale twitter profile responses after navigation

* fix: linter

* fix: eslint

* fix: linter

---------

Co-authored-by: swkatmask <swkatmask@users.noreply.github.com>
Co-authored-by: Jack-Works <Jack-Works@users.noreply.github.com>
…12465)

- Build RPC_URLS/RPC_URLS_OFFICIAL/RPC_WEIGHTS from viem/chains presets
  (public ?? default) via an explicit ChainId -> chain map, so dead
  testnets (Ropsten/Rinkeby/Kovan/Optimism_Kovan/Arbitrum_Rinkeby, plus
  the sunset Base/Optimism Goerli) no longer ship presets and Kovan (42)
  never resolves to the unrelated LUKSO chain reusing that id
- Add manual public RPC entries for Robinhood (not in viem) and override
  Metis' preset with its browser-working endpoints (hypersync
  unreachable, blockeden 402, blastapi 403/CORS-less); the MV3 manifest
  has no host_permissions so browser CORS is mandatory
- Remove packages/web3-constants/evm/rpc.json and its rotated Infura
  project IDs, Alchemy key and QuickNode token URL
- Remove the WEB3_CONSTANTS_RPC build-time override (webpack
  EnvironmentPlugin injection, CI secret and env typing)
- Upgrade viem 2.45.0 -> 2.56.3 across the workspace: 2.56 defaults are
  keyless CORS-enabled endpoints (mainnet moves off the rate-limited
  eth.merkle.io to ethereum.reth.rs); annotate the viem client factories
  with an explicit ViemClient type since viem >= 2.5x inferred client
  types break composite declaration emit (TS2742)
- Patch viem token/tempo actions for SES lockdown: they assign an own
  'call' property onto exported functions at module init, which throws
  under lockdown's hardened Function.prototype; the patch rewrites those
  assignments to Object.defineProperty (patches/viem@2.56.3.patch,
  public API unchanged)
…#12466)

getFungibleTokensBalance sent the whole token list (~1700 addresses on
BSC) to the balance checker in one eth_call. Two independent failure
modes made the dialog spin with no balances:

- a single token whose balanceOf reverts (dead contracts like Multichain,
  Oikos, agEUR are common in long token lists) reverts the whole batch —
  29 such tokens in the current BSC list
- oversized batches can exceed the node's eth_call gas cap

Query in chunks of 100 and bisect failing chunks, zeroing out
individually reverting tokens. Verified against the real 1735-token BSC
list on 56.rpc.thirdweb.com: 1735/1735 balances resolved in 62 requests
(~3.4s, parallel) where the single call reverted before.

This predates the public-RPC switch (the same revert happens on
bsc-dataseed.binance.org).
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.