Updated with latest repo - #11
Open
vaimeo wants to merge 5154 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
* 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.
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>
…ontroller into injected-ui (#12454)
…icKey, LoadingPlaceholder into injected-ui (#12455)
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).
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]