diff --git a/.circleci/config.yml b/.circleci/config.yml deleted file mode 100644 index d4b0febd7..000000000 --- a/.circleci/config.yml +++ /dev/null @@ -1,405 +0,0 @@ -version: 2.1 - -workflows: - test_and_release: - jobs: - - create_release_pull_request: - filters: - branches: - only: - - /^Version-v(\d+)[.](\d+)[.](\d+)/ - - prep-deps - - test-deps - - prep-build: - requires: - - prep-deps - - prep-build-test: - requires: - - prep-deps - - prep-build-storybook: - requires: - - prep-deps - - test-lint: - requires: - - prep-deps - - test-lint-shellcheck - - test-lint-lockfile: - requires: - - prep-deps - - test-e2e-chrome: - requires: - - prep-build-test - - test-e2e-firefox: - requires: - - prep-build-test - - test-unit: - requires: - - prep-deps - - test-unit-global: - requires: - - prep-deps - - validate-source-maps: - requires: - - prep-build - - test-mozilla-lint: - requires: - - prep-deps - - prep-build - - all-tests-pass: - requires: - - test-lint - - test-lint-shellcheck - - test-lint-lockfile - - test-unit - - test-unit-global - - validate-source-maps - - test-mozilla-lint - - test-e2e-chrome - - test-e2e-firefox - - benchmark: - requires: - - prep-build-test - - job-publish-prerelease: - requires: - - prep-deps - - prep-build - - benchmark - - all-tests-pass - - job-publish-release: - filters: - branches: - only: master - requires: - - prep-deps - - prep-build - - all-tests-pass - - job-publish-storybook: - filters: - branches: - only: develop - requires: - - prep-build-storybook - - coveralls-upload: - requires: - - test-unit - -jobs: - create_release_pull_request: - docker: - - image: circleci/node@sha256:e16740707de2ebed45c05d507f33ef204902349c7356d720610b5ec6a35d3d88 - steps: - - checkout - - run: - name: Create GitHub Pull Request for version - command: | - .circleci/scripts/release-bump-changelog-version - .circleci/scripts/release-bump-manifest-version - .circleci/scripts/release-create-release-pr - - prep-deps: - docker: - - image: circleci/node@sha256:e16740707de2ebed45c05d507f33ef204902349c7356d720610b5ec6a35d3d88 - steps: - - checkout - - run: - name: Install deps - command: | - .circleci/scripts/deps-install.sh - - run: - name: Collect yarn install HAR logs - command: | - .circleci/scripts/collect-har-artifact.sh - - persist_to_workspace: - root: . - paths: - - node_modules - - build-artifacts - - prep-build: - docker: - - image: circleci/node@sha256:e16740707de2ebed45c05d507f33ef204902349c7356d720610b5ec6a35d3d88 - steps: - - checkout - - attach_workspace: - at: . - - run: - name: build:dist - command: yarn dist - - run: - name: build:debug - command: find dist/ -type f -exec md5sum {} \; | sort -k 2 - - persist_to_workspace: - root: . - paths: - - dist - - builds - - prep-build-test: - docker: - - image: circleci/node@sha256:e16740707de2ebed45c05d507f33ef204902349c7356d720610b5ec6a35d3d88 - steps: - - checkout - - attach_workspace: - at: . - - run: - name: Build extension for testing - command: yarn build:test - - run: - name: Move test build to 'dist-test' to avoid conflict with production build - command: mv ./dist ./dist-test - - persist_to_workspace: - root: . - paths: - - dist-test - - prep-build-storybook: - docker: - - image: circleci/node@sha256:e16740707de2ebed45c05d507f33ef204902349c7356d720610b5ec6a35d3d88 - steps: - - checkout - - attach_workspace: - at: . - - run: - name: Build Storybook - command: yarn storybook:build - - persist_to_workspace: - root: . - paths: - - .out - - test-lint: - docker: - - image: circleci/node@sha256:e16740707de2ebed45c05d507f33ef204902349c7356d720610b5ec6a35d3d88 - steps: - - checkout - - attach_workspace: - at: . - - run: - name: Lint - command: yarn lint - - run: - name: Verify locales - command: yarn verify-locales --quiet - - test-lint-shellcheck: - docker: - - image: koalaman/shellcheck-alpine@sha256:169a51b086af0ab181e32801c15deb78944bb433d4f2c0a21cc30d4e60547065 - steps: - - checkout - - run: apk add --no-cache bash jq yarn - - run: - name: Shellcheck Lint - command: yarn lint:shellcheck - - test-lint-lockfile: - docker: - - image: circleci/node@sha256:e16740707de2ebed45c05d507f33ef204902349c7356d720610b5ec6a35d3d88 - steps: - - checkout - - attach_workspace: - at: . - - run: - name: lockfile-lint - command: yarn lint:lockfile - - test-deps: - docker: - - image: circleci/node@sha256:e16740707de2ebed45c05d507f33ef204902349c7356d720610b5ec6a35d3d88 - steps: - - checkout - - attach_workspace: - at: . - - run: - name: yarn audit - command: .circleci/scripts/yarn-audit - - test-e2e-chrome: - docker: - - image: circleci/node@sha256:e16740707de2ebed45c05d507f33ef204902349c7356d720610b5ec6a35d3d88 - steps: - - checkout - - attach_workspace: - at: . - - run: - name: Move test build to dist - command: mv ./dist-test ./dist - - run: - name: test:e2e:chrome - command: yarn test:e2e:chrome - no_output_timeout: 20m - - store_artifacts: - path: test-artifacts - destination: test-artifacts - - test-e2e-firefox: - docker: - - image: circleci/node@sha256:e16740707de2ebed45c05d507f33ef204902349c7356d720610b5ec6a35d3d88 - steps: - - checkout - - run: - name: Install Firefox - command: ./.circleci/scripts/firefox-install - - attach_workspace: - at: . - - run: - name: Move test build to dist - command: mv ./dist-test ./dist - - run: - name: test:e2e:firefox - command: yarn test:e2e:firefox - no_output_timeout: 20m - - store_artifacts: - path: test-artifacts - destination: test-artifacts - - benchmark: - docker: - - image: circleci/node@sha256:e16740707de2ebed45c05d507f33ef204902349c7356d720610b5ec6a35d3d88 - steps: - - checkout - - attach_workspace: - at: . - - run: - name: Move test build to dist - command: mv ./dist-test ./dist - - run: - name: Run page load benchmark - command: yarn benchmark:chrome --out test-artifacts/chrome/benchmark/pageload.json - - store_artifacts: - path: test-artifacts - destination: test-artifacts - - persist_to_workspace: - root: . - paths: - - test-artifacts - - job-publish-prerelease: - docker: - - image: circleci/node@sha256:e16740707de2ebed45c05d507f33ef204902349c7356d720610b5ec6a35d3d88 - steps: - - checkout - - attach_workspace: - at: . - - run: - name: build:source-map-explorer - command: ./development/source-map-explorer.sh - - store_artifacts: - path: dist/sourcemaps - destination: builds/sourcemaps - - store_artifacts: - path: builds - destination: builds - - store_artifacts: - path: test-artifacts - destination: test-artifacts - # important: generate sesify viz AFTER uploading builds as artifacts - - run: - name: build:sesify-viz - command: ./.circleci/scripts/create-sesify-viz - - store_artifacts: - path: build-artifacts - destination: build-artifacts - - run: - name: build:announce - command: ./development/metamaskbot-build-announce.js - - job-publish-release: - docker: - - image: circleci/node@sha256:e16740707de2ebed45c05d507f33ef204902349c7356d720610b5ec6a35d3d88 - steps: - - checkout - - attach_workspace: - at: . - - run: - name: sentry sourcemaps upload - command: yarn sentry:publish - - run: - name: Create GitHub release - command: | - .circleci/scripts/release-create-gh-release - - run: - name: Create GitHub Pull Request to sync master with develop - command: .circleci/scripts/release-create-master-pr - - job-publish-storybook: - docker: - - image: circleci/node@sha256:e16740707de2ebed45c05d507f33ef204902349c7356d720610b5ec6a35d3d88 - steps: - - add_ssh_keys: - fingerprints: - - "5e:a3:2d:35:b6:25:b5:87:b1:41:11:0d:77:50:96:73" - - checkout - - attach_workspace: - at: . - - run: - name: storybook:deploy - command: | - git remote add storybook git@github.com:MetaMask/metamask-storybook.git - yarn storybook:deploy - - test-unit: - docker: - - image: circleci/node@sha256:e16740707de2ebed45c05d507f33ef204902349c7356d720610b5ec6a35d3d88 - steps: - - checkout - - attach_workspace: - at: . - - run: - name: test:coverage - command: yarn test:coverage - - persist_to_workspace: - root: . - paths: - - .nyc_output - - coverage - test-unit-global: - docker: - - image: circleci/node@sha256:e16740707de2ebed45c05d507f33ef204902349c7356d720610b5ec6a35d3d88 - steps: - - checkout - - attach_workspace: - at: . - - run: - name: test:unit:global - command: yarn test:unit:global - - validate-source-maps: - docker: - - image: circleci/node@sha256:e16740707de2ebed45c05d507f33ef204902349c7356d720610b5ec6a35d3d88 - steps: - - checkout - - attach_workspace: - at: . - - run: - name: Validate source maps - command: yarn validate-source-maps - - test-mozilla-lint: - docker: - - image: circleci/node@sha256:e16740707de2ebed45c05d507f33ef204902349c7356d720610b5ec6a35d3d88 - steps: - - checkout - - attach_workspace: - at: . - - run: - name: test:mozilla-lint - command: NODE_OPTIONS=--max_old_space_size=3072 yarn mozilla-lint - - all-tests-pass: - docker: - - image: circleci/node@sha256:e16740707de2ebed45c05d507f33ef204902349c7356d720610b5ec6a35d3d88 - steps: - - run: - name: All Tests Passed - command: echo 'weew - everything passed!' - - coveralls-upload: - docker: - - image: circleci/node@sha256:e16740707de2ebed45c05d507f33ef204902349c7356d720610b5ec6a35d3d88 - steps: - - checkout - - attach_workspace: - at: . - - run: - name: Coveralls upload - command: yarn test:coveralls-upload diff --git a/.circleci/scripts/collect-har-artifact.sh b/.circleci/scripts/collect-har-artifact.sh deleted file mode 100755 index 7f6f1aa41..000000000 --- a/.circleci/scripts/collect-har-artifact.sh +++ /dev/null @@ -1,5 +0,0 @@ -#!/usr/bin/env bash -set -x - -mkdir -p build-artifacts/yarn-install-har -mv ./*.har build-artifacts/yarn-install-har/ diff --git a/.circleci/scripts/create-sesify-viz b/.circleci/scripts/create-sesify-viz deleted file mode 100755 index 33dc0bc72..000000000 --- a/.circleci/scripts/create-sesify-viz +++ /dev/null @@ -1,13 +0,0 @@ -#!/usr/bin/env bash - -set -x -set -e -set -u -set -o pipefail - -# prepare artifacts dir -mkdir -p ./build-artifacts/deps-viz/ - -# generate viz -SESIFY_AUTOGEN=1 yarn build scripts:core:prod:background -npx sesify-viz --deps sesify/deps-background.json --config sesify/background.json --dest ./build-artifacts/deps-viz/background \ No newline at end of file diff --git a/.circleci/scripts/deps-install.sh b/.circleci/scripts/deps-install.sh deleted file mode 100755 index c8b15e29b..000000000 --- a/.circleci/scripts/deps-install.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env bash - -# Print commands and their arguments as they are executed. -set -x -# Exit immediately if a command exits with a non-zero status. -set -e - -yarn --frozen-lockfile --ignore-scripts --har - -# run each in subshell so directory change does not persist -# scripts can be any of: -# preinstall -# install -# postinstall - -# for build -(cd node_modules/node-sass && yarn run postinstall) -(cd node_modules/optipng-bin && yarn run postinstall) -(cd node_modules/gifsicle && yarn run postinstall) -(cd node_modules/jpegtran-bin && yarn run postinstall) - -# for test -(cd node_modules/scrypt && yarn run install) -(cd node_modules/weak && yarn run install) -(cd node_modules/chromedriver && yarn run install) -(cd node_modules/geckodriver && yarn run postinstall) - -# for release -(cd node_modules/@sentry/cli && yarn run install) diff --git a/.circleci/scripts/firefox-install b/.circleci/scripts/firefox-install deleted file mode 100755 index 21766467e..000000000 --- a/.circleci/scripts/firefox-install +++ /dev/null @@ -1,29 +0,0 @@ -#!/usr/bin/env bash - -set -e -set -u -set -o pipefail - -FIREFOX_VERSION='70.0' -FIREFOX_BINARY="firefox-${FIREFOX_VERSION}.tar.bz2" -FIREFOX_BINARY_URL="https://ftp.mozilla.org/pub/firefox/releases/${FIREFOX_VERSION}/linux-x86_64/en-US/${FIREFOX_BINARY}" -FIREFOX_PATH='/opt/firefox' - -printf '%s\n' "Removing old Firefox installation" - -sudo rm -r "${FIREFOX_PATH}" - -printf '%s\n' "Downloading & installing Firefox ${FIREFOX_VERSION}" - -wget --quiet --show-progress -O- "${FIREFOX_BINARY_URL}" | sudo tar xj -C /opt - -printf '%s\n' "Firefox ${FIREFOX_VERSION} installed" - -{ - printf '%s\n' 'pref("general.config.filename", "firefox.cfg");' - printf '%s\n' 'pref("general.config.obscure_value", 0);' -} | sudo tee "${FIREFOX_PATH}/defaults/pref/autoconfig.js" - -sudo cp .circleci/scripts/firefox.cfg "${FIREFOX_PATH}" - -printf '%s\n' "Firefox ${FIREFOX_VERSION} configured" diff --git a/.circleci/scripts/firefox.cfg b/.circleci/scripts/firefox.cfg deleted file mode 100644 index 68dd285f2..000000000 --- a/.circleci/scripts/firefox.cfg +++ /dev/null @@ -1,13 +0,0 @@ -// IMPORTANT: Start your code on the 2nd line - -lockPref("app.update.enabled", false); -lockPref("app.update.auto", false); -lockPref("app.update.mode", 0); -lockPref("app.update.service.enabled", false); - -pref("browser.rights.3.shown", true); - -pref("browser.startup.homepage_override.mstone","ignore"); - -lockPref("plugins.hide_infobar_for_outdated_plugin", true); -clearPref("plugins.update.url"); diff --git a/.circleci/scripts/release-bump-changelog-version b/.circleci/scripts/release-bump-changelog-version deleted file mode 100755 index 9fd4ddbb8..000000000 --- a/.circleci/scripts/release-bump-changelog-version +++ /dev/null @@ -1,44 +0,0 @@ -#!/usr/bin/env bash - -set -e -set -u -set -o pipefail - -if [[ "${CI:-}" != 'true' ]] -then - printf '%s\n' 'CI environment variable must be set to true' - exit 1 -fi - -if [[ "${CIRCLECI:-}" != 'true' ]] -then - printf '%s\n' 'CIRCLECI environment variable must be set to true' - exit 1 -fi - -version="${CIRCLE_BRANCH/Version-v/}" - -if ! grep --quiet --fixed-strings "$version" CHANGELOG.md -then - printf '%s\n' 'Adding this release to CHANGELOG.md' - date_str="$(date '+%a %b %d %Y')" - cp CHANGELOG.md{,.bak} - -update_headers=$(cat < CHANGELOG.md - rm CHANGELOG.md.bak -else - printf '%s\n' "CHANGELOG.md already includes a header for ${version}" - exit 0 -fi diff --git a/.circleci/scripts/release-bump-manifest-version b/.circleci/scripts/release-bump-manifest-version deleted file mode 100755 index 7579ad70a..000000000 --- a/.circleci/scripts/release-bump-manifest-version +++ /dev/null @@ -1,38 +0,0 @@ -#!/usr/bin/env bash - -set -e -set -u -set -o pipefail - -if [[ "${CI:-}" != 'true' ]] -then - printf '%s\n' 'CI environment variable must be set to true' - exit 1 -fi - -if [[ "${CIRCLECI:-}" != 'true' ]] -then - printf '%s\n' 'CIRCLECI environment variable must be set to true' - exit 1 -fi - -printf '%s\n' 'Updating the manifest version if needed' - -version="${CIRCLE_BRANCH/Version-v/}" -updated_manifest="$(jq ".version = \"$version\"" app/manifest/_base.json)" -printf '%s\n' "$updated_manifest" > app/manifest/_base.json - -if [[ -z $(git status --porcelain) ]] -then - printf '%s\n' 'App manifest version already set' - exit 0 -fi - -git \ - -c user.name='MetaMask Bot' \ - -c user.email='metamaskbot@users.noreply.github.com' \ - commit --message "${CIRCLE_BRANCH/-/ }" \ - CHANGELOG.md app/manifest/_base.json - -repo_slug="$CIRCLE_PROJECT_USERNAME/$CIRCLE_PROJECT_REPONAME" -git push "https://$GITHUB_TOKEN_USER:$GITHUB_TOKEN@github.com/$repo_slug" "$CIRCLE_BRANCH" diff --git a/.circleci/scripts/release-create-gh-release b/.circleci/scripts/release-create-gh-release deleted file mode 100755 index 93303f576..000000000 --- a/.circleci/scripts/release-create-gh-release +++ /dev/null @@ -1,51 +0,0 @@ -#!/usr/bin/env bash - -set -x -set -e -set -u -set -o pipefail - -if [[ "${CI:-}" != 'true' ]] -then - printf '%s\n' 'CI environment variable must be set to true' - exit 1 -fi - -if [[ "${CIRCLECI:-}" != 'true' ]] -then - printf '%s\n' 'CIRCLECI environment variable must be set to true' - exit 1 -fi - -function install_github_cli () -{ - printf '%s\n' 'Installing hub CLI' - pushd "$(mktemp -d)" - curl -sSL 'https://github.com/github/hub/releases/download/v2.11.2/hub-linux-amd64-2.11.2.tgz' | tar xz - PATH="$PATH:$PWD/hub-linux-amd64-2.11.2/bin" - popd -} - -current_commit_msg=$(git show -s --format='%s' HEAD) - -if [[ $current_commit_msg =~ Version[-[:space:]](v[[:digit:]]+.[[:digit:]]+.[[:digit:]]+) ]] -then - tag="${BASH_REMATCH[1]}" - - install_github_cli - - printf '%s\n' 'Creating GitHub Release' - release_body="$(awk -v version="${tag##v}" -f .circleci/scripts/show-changelog.awk CHANGELOG.md)" - pushd builds - hub release create \ - --attach metamask-chrome-*.zip \ - --attach metamask-firefox-*.zip \ - --message "Version ${tag##v}" \ - --message "$release_body" \ - --commitish "$CIRCLE_SHA1" \ - "$tag" - popd -else - printf '%s\n' 'Version not found in commit message; skipping GitHub Release' - exit 0 -fi diff --git a/.circleci/scripts/release-create-master-pr b/.circleci/scripts/release-create-master-pr deleted file mode 100755 index 9b62d2397..000000000 --- a/.circleci/scripts/release-create-master-pr +++ /dev/null @@ -1,52 +0,0 @@ -#!/usr/bin/env bash - -set -e -set -u -set -o pipefail - -if [[ "${CI:-}" != 'true' ]] -then - printf '%s\n' 'CI environment variable must be set to true' - exit 1 -fi - -if [[ "${CIRCLECI:-}" != 'true' ]] -then - printf '%s\n' 'CIRCLECI environment variable must be set to true' - exit 1 -fi - -if [[ -z "${GITHUB_TOKEN:-}" ]] -then - printf '%s\n' 'GITHUB_TOKEN environment variable must be set' - exit 1 -fi - -function install_github_cli () -{ - printf '%s\n' 'Installing hub CLI' - pushd "$(mktemp -d)" - curl -sSL 'https://github.com/github/hub/releases/download/v2.11.2/hub-linux-amd64-2.11.2.tgz' | tar xz - PATH="$PATH:$PWD/hub-linux-amd64-2.11.2/bin" - popd -} - -base_branch='develop' - -if [[ -n "${CI_PULL_REQUEST:-}" ]] -then - printf '%s\n' 'CI_PULL_REQUEST is set, pull request already exists for this build' - exit 0 -fi - -install_github_cli - -printf '%s\n' "Creating a Pull Request to sync 'master' with 'develop'" - -if ! hub pull-request \ - --message "Master => develop" --message 'Merge latest release back into develop' \ - --base "$CIRCLE_PROJECT_USERNAME:$base_branch" \ - --head "$CIRCLE_PROJECT_USERNAME:$CIRCLE_BRANCH"; -then - printf '%s\n' 'Pull Request already exists' -fi diff --git a/.circleci/scripts/release-create-release-pr b/.circleci/scripts/release-create-release-pr deleted file mode 100755 index f209422cd..000000000 --- a/.circleci/scripts/release-create-release-pr +++ /dev/null @@ -1,53 +0,0 @@ -#!/usr/bin/env bash - -set -e -set -u -set -o pipefail - -if [[ "${CI:-}" != 'true' ]] -then - printf '%s\n' 'CI environment variable must be set to true' - exit 1 -fi - -if [[ "${CIRCLECI:-}" != 'true' ]] -then - printf '%s\n' 'CIRCLECI environment variable must be set to true' - exit 1 -fi - -if [[ -z "${GITHUB_TOKEN:-}" ]] -then - printf '%s\n' 'GITHUB_TOKEN environment variable must be set' - exit 1 -fi - -function install_github_cli () -{ - printf '%s\n' 'Installing hub CLI' - pushd "$(mktemp -d)" - curl -sSL 'https://github.com/github/hub/releases/download/v2.11.2/hub-linux-amd64-2.11.2.tgz' | tar xz - PATH="$PATH:$PWD/hub-linux-amd64-2.11.2/bin" - popd -} - -version="${CIRCLE_BRANCH/Version-v/}" -base_branch='master' - -if [[ -n "${CI_PULL_REQUEST:-}" ]] -then - printf '%s\n' 'CI_PULL_REQUEST is set, pull request already exists for this build' - exit 0 -fi - -install_github_cli - -printf '%s\n' "Creating a Pull Request for $version on GitHub" - -if ! hub pull-request \ - --message "${CIRCLE_BRANCH/-/ } RC" --message ':package: :rocket:' \ - --base "$CIRCLE_PROJECT_USERNAME:$base_branch" \ - --head "$CIRCLE_PROJECT_USERNAME:$CIRCLE_BRANCH"; -then - printf '%s\n' 'Pull Request already exists' -fi diff --git a/.circleci/scripts/show-changelog.awk b/.circleci/scripts/show-changelog.awk deleted file mode 100644 index e490df9db..000000000 --- a/.circleci/scripts/show-changelog.awk +++ /dev/null @@ -1,52 +0,0 @@ -# DESCRIPTION -# -# This script will print out all of the CHANGELOG.md lines for a given version -# with the assumption that the CHANGELOG.md files looks something along the -# lines of: -# -# ``` -# ## 6.6.2 Fri Jun 07 2019 -# -# - [#6690](https://github.com/MetaMask/metamask-extension/pull/6690): Some words -# - [#6700](https://github.com/MetaMask/metamask-extension/pull/6700): some more words -# -# ## 6.6.1 Thu Jun 06 2019 -# -# - [#6691](https://github.com/MetaMask/metamask-extension/pull/6691): Revert other words -# -# ## 6.6.0 Mon Jun 03 2019 -# -# - [#6659](https://github.com/MetaMask/metamask-extension/pull/6659): foo -# - [#6671](https://github.com/MetaMask/metamask-extension/pull/6671): bar -# - [#6625](https://github.com/MetaMask/metamask-extension/pull/6625): baz -# - [#6633](https://github.com/MetaMask/metamask-extension/pull/6633): Many many words -# -# -# ``` -# -# EXAMPLE -# -# Run this script like so, passing in the version: -# -# ``` -# awk -v version='6.6.0' -f .circleci/scripts/show-changelog.awk CHANGELOG.md -# ``` -# - -BEGIN { - inside_section = 0; -} - -$1 == "##" && $2 == version { - inside_section = 1; - next; -} - -$1 == "##" && $2 != version { - inside_section = 0; - next; -} - -inside_section && !/^$/ { - print $0; -} diff --git a/.circleci/scripts/yarn-audit b/.circleci/scripts/yarn-audit deleted file mode 100755 index ebe036815..000000000 --- a/.circleci/scripts/yarn-audit +++ /dev/null @@ -1,20 +0,0 @@ -#!/usr/bin/env bash - -set -u -set -o pipefail - -yarn audit --level moderate --groups dependencies -audit_status="$?" - -# Use a bitmask to ignore INFO and LOW severity audit results -# See here: https://yarnpkg.com/lang/en/docs/cli/audit/ -audit_status="$(( audit_status & 11100 ))" - -if [[ "$audit_status" != 0 ]] -then - count="$(yarn audit --level moderate --groups dependencies --json | tail -1 | jq '.data.vulnerabilities.moderate + .data.vulnerabilities.high + .data.vulnerabilities.critical')" - printf "Audit shows %s moderate or high severity advisories _in the production dependencies_\n" "$count" - exit 1 -else - printf "Audit shows _zero_ moderate or high severity advisories _in the production dependencies_\n" -fi diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS deleted file mode 100644 index d2dddc92f..000000000 --- a/.github/CODEOWNERS +++ /dev/null @@ -1,6 +0,0 @@ -# Lines starting with '#' are comments. -# Each line is a file pattern followed by one or more owners. - -* @MetaMask/extension-devs -.circleci/ @MetaMask/extension-devs @kumavis -development/ @MetaMask/extension-devs @kumavis diff --git a/.github/CONTRIBUTING.md b/.github/CONTRIBUTING.md deleted file mode 100644 index 19fdf3242..000000000 --- a/.github/CONTRIBUTING.md +++ /dev/null @@ -1,24 +0,0 @@ -# Welcome to MetaMask! - -If you're submitting code to MetaMask, there are some simple things we'd appreciate you doing to help us stay organized! - -### Finding the right project - -Before taking the time to code and implement something, feel free to open an issue and discuss it! There may even be an issue already open, and together we may come up with a specific strategy before you take your precious time to write code. - -There are also plenty of open issues we'd love help with. Search the [`good first issue`](https://github.com/MetaMask/metamask-extension/issues?q=is%3Aopen+is%3Aissue+label%3A%22good+first+issue%22) label, or head to Gitcoin and earn ETH for completing projects we've posted bounties on. - -If you're picking up a bounty or an existing issue, feel free to ask clarifying questions on the issue as you go about your work. - -### Submitting a pull request -When you're done with your project / bugfix / feature and ready to submit a PR, there are a couple guidelines we ask you to follow: - -- [ ] **Test it**: For any new programmatic functionality, we like unit tests when possible, so if you can keep your code cleanly isolated, please do add a test file to the `tests` folder. -- [ ] **Add to the CHANGELOG**: Help us keep track of all the moving pieces by adding an entry to the [`CHANGELOG.md`](https://github.com/MetaMask/metamask-extension/blob/develop/CHANGELOG.md) with a link to your PR. -- [ ] **Meet the spec**: Make sure the PR adds functionality that matches the issue you're closing. This is especially important for bounties: sometimes design or implementation details are included in the conversation, so read carefully! -- [ ] **Close the issue**: If this PR closes an open issue, add the line `Fixes #$ISSUE_NUMBER`. Ex. For closing issue 418, include the line `Fixes #418`. If it doesn't close the issue but addresses it partially, just include a reference to the issue number, like `#418`. -- [ ] **Keep it simple**: Try not to include multiple features in a single PR, and don't make extraneous changes outside the scope of your contribution. All those touched files make things harder to review ;) -- [ ] **PR against `develop`**: Submit your PR against the `develop` branch. This is where we merge new features so they get some time to receive extra testing before being pushed to `master` for production. If your PR is a hot-fix that needs to be published urgently, you may submit a PR against the `master` branch, but this PR will receive tighter scrutiny before merging. -- [ ] **Get reviewed by a core contributor**: Make sure you get a `:thumbsup`, `:+1`, or `LGTM` from a user with a `Member` badge before merging. - -And that's it! Thanks for helping out. diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md deleted file mode 100644 index b56d08d95..000000000 --- a/.github/ISSUE_TEMPLATE.md +++ /dev/null @@ -1,15 +0,0 @@ - diff --git a/.github/ISSUE_TEMPLATE/bug-report.md b/.github/ISSUE_TEMPLATE/bug-report.md deleted file mode 100644 index 0f815d2d3..000000000 --- a/.github/ISSUE_TEMPLATE/bug-report.md +++ /dev/null @@ -1,37 +0,0 @@ ---- -name: Bug Report -about: Using MetaMask, but it's not working as you expect? - ---- - - - -**Describe the bug** -A clear and concise description of what the bug is. - -**To Reproduce (REQUIRED)** -Steps to reproduce the behavior, libraries used with version number, and/or any setup information to easily reproduce: - -1. Go to '...' -2. Click on '....' -3. Scroll down to '....' -4. See error - -**Expected behavior** -A clear description of what you expected to happen. - -**Screenshots** -If applicable, add screenshots to help explain your problem. - -**Browser details (please complete the following information):** - - OS: [e.g. OS X, Windows] - - Hardware Wallet [e.g. Trezor Firmware version 1.8.3, Ledger Nano S Firmware version 1.6.0] - - Browser [e.g. Chrome Version 79.0.3945.79 (Official Build) (64-bit), Firefox Browser 71.0 (64-bit)] - - MetaMask Version [e.g. 5.0.2] - -**Additional context (Error Messages, etc.)** -Add any other context about the problem here. diff --git a/.github/ISSUE_TEMPLATE/feature-request.md b/.github/ISSUE_TEMPLATE/feature-request.md deleted file mode 100644 index edba657a4..000000000 --- a/.github/ISSUE_TEMPLATE/feature-request.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -name: Feature Request -about: Looking for a feature that doesn't exist? Let us know! - ---- - -**What problem are you trying to solve?** -A short description of what you're trying to do. E.g., "My users need to wrap ETH, but they're intimidated by the confirm screen..." or "I'm trying to debug my application, and XYZ..." - -**Describe the solution you'd like** -A clear and concise description of what you want to happen. Try to also include any alternative solutions you've considered. - -**Additional context** -Add any other context or screenshots about the feature request here. diff --git a/.github/ISSUE_TEMPLATE/support-request-or-question.md b/.github/ISSUE_TEMPLATE/support-request-or-question.md deleted file mode 100644 index aeb31af26..000000000 --- a/.github/ISSUE_TEMPLATE/support-request-or-question.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -name: Support Request or Question -about: Have a question about how to use MetaMask? - ---- - -FOR USER QUESTIONS, PLEASE DO NOT OPEN A GITHUB ISSUE - IT WILL NOT BE HANDLED HERE. - -INSTEAD, PLEASE EMAIL SUPPORT@METAMASK.IO WITH A DESCRIPTION OF YOUR PROBLEM. diff --git a/.storybook/README.md b/.storybook/README.md deleted file mode 100644 index b358744e7..000000000 --- a/.storybook/README.md +++ /dev/null @@ -1,10 +0,0 @@ -# Storybook -We're currently using [Storybook](https://storybook.js.org/) as part of our design system. To run Storybook and test some of our UI components, clone the repo and run the following: -``` -yarn -yarn storybook -``` -You should then see: -> info Storybook started on => http://localhost:6006/ - -In your browser, navigate to http://localhost:6006/ to see the Storybook application. From here, you'll be able to easily view components and even modify some of their properties. diff --git a/.storybook/main.js b/.storybook/main.js deleted file mode 100644 index 74acf6fb8..000000000 --- a/.storybook/main.js +++ /dev/null @@ -1,8 +0,0 @@ -module.exports = { - stories: ['../ui/app/**/*.stories.js'], - addons: [ - '@storybook/addon-knobs', - '@storybook/addon-actions', - '@storybook/addon-backgrounds' - ], -} diff --git a/.storybook/preview-body.html b/.storybook/preview-body.html deleted file mode 100644 index a9676ff1f..000000000 --- a/.storybook/preview-body.html +++ /dev/null @@ -1,2 +0,0 @@ -
-
diff --git a/.storybook/preview.js b/.storybook/preview.js deleted file mode 100644 index b28733bad..000000000 --- a/.storybook/preview.js +++ /dev/null @@ -1,46 +0,0 @@ -import React from 'react' -import { addDecorator, addParameters } from '@storybook/react' -import { withKnobs } from '@storybook/addon-knobs/react' -import { I18nProvider, LegacyI18nProvider } from '../ui/app/contexts/i18n' -import { Provider } from 'react-redux' -import configureStore from '../ui/app/store/store' -import '../ui/app/css/index.scss' -import en from '../app/_locales/en/messages' - -addParameters({ - backgrounds: [ - { name: 'light', value: '#FFFFFF'}, - { name: 'dark', value: '#333333' }, - ], -}) - -const styles = { - height: '100vh', - display: 'flex', - justifyContent: 'center', - alignItems: 'center', -} - -const store = configureStore({ - metamask: { metamask: { currentLocale: 'en' } }, - - localeMessages: { - current: en, - en: en, - }, -}) - -const metamaskDecorator = story => ( - - - -
- { story() } -
-
-
-
-) - -addDecorator(withKnobs) -addDecorator(metamaskDecorator) diff --git a/.storybook/webpack.config.js b/.storybook/webpack.config.js deleted file mode 100644 index be7dfecea..000000000 --- a/.storybook/webpack.config.js +++ /dev/null @@ -1,41 +0,0 @@ -const path = require('path') - -const CopyWebpackPlugin = require('copy-webpack-plugin') - -module.exports = { - module: { - strictExportPresence: true, - rules: [ - { - test: /\.scss$/, - loaders: [ - 'style-loader', - { - loader: 'css-loader', - options: { - import: false, - url: false, - }, - }, - 'resolve-url-loader', - { - loader: 'sass-loader', - options: { - sourceMap: true, - }, - }, - ], - }, - ], - }, - plugins: [ - new CopyWebpackPlugin({ - patterns: [ - { - from: path.join('node_modules', '@fortawesome', 'fontawesome-free', 'webfonts'), - to: path.join('fonts', 'fontawesome'), - }, - ], - }), - ], -} diff --git a/MISSION.md b/MISSION.md index 9045828b1..692b7235a 100644 --- a/MISSION.md +++ b/MISSION.md @@ -1,4 +1,4 @@ -# MetaMask Philosophy +# MetaverseVM extension Philosophy ## Mission diff --git a/README.md b/README.md index 6de3481ce..748b33d8d 100644 --- a/README.md +++ b/README.md @@ -51,7 +51,7 @@ yarn dist - [How to add custom build to Chrome](./docs/add-to-chrome.md) - [How to add custom build to Firefox](./docs/add-to-firefox.md) -- [How to add a new translation to MetaMask](./docs/translating-guide.md) +- [How to add a new translation to MetaverseVM extension](./docs/translating-guide.md) - [Publishing Guide](./docs/publishing.md) - [How to use the TREZOR emulator](./docs/trezor-emulator.md) - [How to generate a visualization of this repository's development](./development/gource-viz.sh) diff --git a/USER_AGREEMENT.md b/USER_AGREEMENT.md index c485edd1d..f3fdd6046 100644 --- a/USER_AGREEMENT.md +++ b/USER_AGREEMENT.md @@ -6,11 +6,11 @@ _Our Terms of Use have been updated as of September 5, 2016_ ## 1. Acceptance of Terms ## -MetaMask provides a platform for managing Ethereum (or "ETH") accounts, and allowing ordinary websites to interact with the Ethereum blockchain, while keeping the user in control over what transactions they approve, through our website located at[ ](http://metamask.io)[https://metamask.io/](https://metamask.io/) and browser plugin (the "Site") — which includes text, images, audio, code and other materials (collectively, the “Content”) and all of the features, and services provided. The Site, and any other features, tools, materials, or other services offered from time to time by MetaMask are referred to here as the “Service.” Please read these Terms of Use (the “Terms” or “Terms of Use”) carefully before using the Service. By using or otherwise accessing the Services, or clicking to accept or agree to these Terms where that option is made available, you (1) accept and agree to these Terms (2) consent to the collection, use, disclosure and other handling of information as described in our Privacy Policy and (3) any additional terms, rules and conditions of participation issued by MetaMask from time to time. If you do not agree to the Terms, then you may not access or use the Content or Services. +MetaverseVM extension provides a platform for managing Ethereum (or "ETH") accounts, and allowing ordinary websites to interact with the Metaverse blockchain, while keeping the user in control over what transactions they approve, through our website located at[ ](http://mvs.org)[https://mvs.org/](https://mvs.org/) and browser plugin (the "Site") — which includes text, images, audio, code and other materials (collectively, the “Content”) and all of the features, and services provided. The Site, and any other features, tools, materials, or other services offered from time to time by MetaverseVM extension are referred to here as the “Service.” Please read these Terms of Use (the “Terms” or “Terms of Use”) carefully before using the Service. By using or otherwise accessing the Services, or clicking to accept or agree to these Terms where that option is made available, you (1) accept and agree to these Terms (2) consent to the collection, use, disclosure and other handling of information as described in our Privacy Policy and (3) any additional terms, rules and conditions of participation issued by MetaverseVM extension from time to time. If you do not agree to the Terms, then you may not access or use the Content or Services. ## 2. Modification of Terms of Use ## -Except for Section 13, providing for binding arbitration and waiver of class action rights, MetaMask reserves the right, at its sole discretion, to modify or replace the Terms of Use at any time. The most current version of these Terms will be posted on our Site. You shall be responsible for reviewing and becoming familiar with any such modifications. Use of the Services by you after any modification to the Terms constitutes your acceptance of the Terms of Use as modified. +Except for Section 13, providing for binding arbitration and waiver of class action rights, MetaverseVM extension reserves the right, at its sole discretion, to modify or replace the Terms of Use at any time. The most current version of these Terms will be posted on our Site. You shall be responsible for reviewing and becoming familiar with any such modifications. Use of the Services by you after any modification to the Terms constitutes your acceptance of the Terms of Use as modified. @@ -18,17 +18,17 @@ Except for Section 13, providing for binding arbitration and waiver of class act You hereby represent and warrant that you are fully able and competent to enter into the terms, conditions, obligations, affirmations, representations and warranties set forth in these Terms and to abide by and comply with these Terms. -MetaMask is a global platform and by accessing the Content or Services, you are representing and warranting that, you are of the legal age of majority in your jurisdiction as is required to access such Services and Content and enter into arrangements as provided by the Service. You further represent that you are otherwise legally permitted to use the service in your jurisdiction including owning cryptographic tokens of value, and interacting with the Services or Content in any way. You further represent you are responsible for ensuring compliance with the laws of your jurisdiction and acknowledge that MetaMask is not liable for your compliance with such laws. +MetaverseVM extension is a global platform and by accessing the Content or Services, you are representing and warranting that, you are of the legal age of majority in your jurisdiction as is required to access such Services and Content and enter into arrangements as provided by the Service. You further represent that you are otherwise legally permitted to use the service in your jurisdiction including owning cryptographic tokens of value, and interacting with the Services or Content in any way. You further represent you are responsible for ensuring compliance with the laws of your jurisdiction and acknowledge that the Metaverse Foundation is not liable for your compliance with such laws. ## 4 Account Password and Security ## -When setting up an account within MetaMask, you will be responsible for keeping your own account secrets, which may be a twelve-word seed phrase, an account file, or other locally stored secret information. MetaMask encrypts this information locally with a password you provide, that we never send to our servers. You agree to (a) never use the same password for MetaMask that you have ever used outside of this service; (b) keep your secret information and password confidential and do not share them with anyone else; (c) immediately notify MetaMask of any unauthorized use of your account or breach of security. MetaMask cannot and will not be liable for any loss or damage arising from your failure to comply with this section. +When setting up an account within MetaverseVM extension, you will be responsible for keeping your own account secrets, which may be a twelve-word seed phrase, an account file, or other locally stored secret information. MetaverseVM extension encrypts this information locally with a password you provide, that we never send to our servers. You agree to (a) never use the same password for MetaverseVM extension that you have ever used outside of this service; (b) keep your secret information and password confidential and do not share them with anyone else; (c) immediately notify MetaverseVM extension of any unauthorized use of your account or breach of security. MetaverseVM extension cannot and will not be liable for any loss or damage arising from your failure to comply with this section. ## 5. Representations, Warranties, and Risks ## ### 5.1. Warranty Disclaimer ### -You expressly understand and agree that your use of the Service is at your sole risk. The Service (including the Service and the Content) are provided on an "AS IS" and "as available" basis, without warranties of any kind, either express or implied, including, without limitation, implied warranties of merchantability, fitness for a particular purpose or non-infringement. You acknowledge that MetaMask has no control over, and no duty to take any action regarding: which users gain access to or use the Service; what effects the Content may have on you; how you may interpret or use the Content; or what actions you may take as a result of having been exposed to the Content. You release MetaMask from all liability for you having acquired or not acquired Content through the Service. MetaMask makes no representations concerning any Content contained in or accessed through the Service, and MetaMask will not be responsible or liable for the accuracy, copyright compliance, legality or decency of material contained in or accessed through the Service. +You expressly understand and agree that your use of the Service is at your sole risk. The Service (including the Service and the Content) are provided on an "AS IS" and "as available" basis, without warranties of any kind, either express or implied, including, without limitation, implied warranties of merchantability, fitness for a particular purpose or non-infringement. You acknowledge that the Metaverse Foundation has no control over, and no duty to take any action regarding: which users gain access to or use the Service; what effects the Content may have on you; how you may interpret or use the Content; or what actions you may take as a result of having been exposed to the Content. You release the Metaverse Foundation from all liability for you having acquired or not acquired Content through the Service. MetaverseVM extension makes no representations concerning any Content contained in or accessed through the Service, and the Metaverse Foundation will not be responsible or liable for the accuracy, copyright compliance, legality or decency of material contained in or accessed through the Service. ### 5.2 Sophistication and Risk of Cryptographic Systems ### @@ -36,41 +36,41 @@ By utilizing the Service or interacting with the Content or platform in any way, ### 5.3 Risk of Regulatory Actions in One or More Jurisdictions ### -MetaMask and ETH could be impacted by one or more regulatory inquiries or regulatory action, which could impede or limit the ability of MetaMask to continue to develop, or which could impede or limit your ability to access or use the Service or Ethereum blockchain. +Metaverse and ETP could be impacted by one or more regulatory inquiries or regulatory action, which could impede or limit the ability of the MetaverseVM extension to continue to develop, or which could impede or limit your ability to access or use the Service or Ethereum blockchain. ### 5.4 Risk of Weaknesses or Exploits in the Field of Cryptography ### -You acknowledge and understand that Cryptography is a progressing field. Advances in code cracking or technical advances such as the development of quantum computers may present risks to cryptocurrencies and Services of Content, which could result in the theft or loss of your cryptographic tokens or property. To the extent possible, MetaMask intends to update the protocol underlying Services to account for any advances in cryptography and to incorporate additional security measures, but does not guarantee or otherwise represent full security of the system. By using the Service or accessing Content, you acknowledge these inherent risks. +You acknowledge and understand that Cryptography is a progressing field. Advances in code cracking or technical advances such as the development of quantum computers may present risks to cryptocurrencies and Services of Content, which could result in the theft or loss of your cryptographic tokens or property. To the extent possible, MetaverseVM extension intends to update the protocol underlying Services to account for any advances in cryptography and to incorporate additional security measures, but does not guarantee or otherwise represent full security of the system. By using the Service or accessing Content, you acknowledge these inherent risks. ### 5.5 Volatility of Crypto Currencies ### -You understand that Ethereum and other blockchain technologies and associated currencies or tokens are highly volatile due to many factors including but not limited to adoption, speculation, technology and security risks. You also acknowledge that the cost of transacting on such technologies is variable and may increase at any time causing impact to any activities taking place on the Ethereum blockchain. You acknowledge these risks and represent that MetaMask cannot be held liable for such fluctuations or increased costs. +You understand that Ethereum and other blockchain technologies and associated currencies or tokens are highly volatile due to many factors including but not limited to adoption, speculation, technology and security risks. You also acknowledge that the cost of transacting on such technologies is variable and may increase at any time causing impact to any activities taking place on the Ethereum blockchain. You acknowledge these risks and represent that the Metaverse Foundation cannot be held liable for such fluctuations or increased costs. ### 5.6 Application Security ### -You acknowledge that Ethereum applications are code subject to flaws and acknowledge that you are solely responsible for evaluating any code provided by the Services or Content and the trustworthiness of any third-party websites, products, smart-contracts, or Content you access or use through the Service. You further expressly acknowledge and represent that Ethereum applications can be written maliciously or negligently, that MetaMask cannot be held liable for your interaction with such applications and that such applications may cause the loss of property or even identity. This warning and others later provided by MetaMask in no way evidence or represent an on-going duty to alert you to all of the potential risks of utilizing the Service or Content. +You acknowledge that Ethereum applications are code subject to flaws and acknowledge that you are solely responsible for evaluating any code provided by the Services or Content and the trustworthiness of any third-party websites, products, smart-contracts, or Content you access or use through the Service. You further expressly acknowledge and represent that Ethereum applications can be written maliciously or negligently, that the Metaverse Foundation cannot be held liable for your interaction with such applications and that such applications may cause the loss of property or even identity. This warning and others later provided by the MetaverseVM extension in no way evidence or represent an on-going duty to alert you to all of the potential risks of utilizing the Service or Content. ## 6. Indemnity ## -You agree to release and to indemnify, defend and hold harmless MetaMask and its parents, subsidiaries, affiliates and agencies, as well as the officers, directors, employees, shareholders and representatives of any of the foregoing entities, from and against any and all losses, liabilities, expenses, damages, costs (including attorneys’ fees and court costs) claims or actions of any kind whatsoever arising or resulting from your use of the Service, your violation of these Terms of Use, and any of your acts or omissions that implicate publicity rights, defamation or invasion of privacy. MetaMask reserves the right, at its own expense, to assume exclusive defense and control of any matter otherwise subject to indemnification by you and, in such case, you agree to cooperate with MetaMask in the defense of such matter. +You agree to release and to indemnify, defend and hold harmless the Metaverse Foundation and its parents, subsidiaries, affiliates and agencies, as well as the officers, directors, employees, shareholders and representatives of any of the foregoing entities, from and against any and all losses, liabilities, expenses, damages, costs (including attorneys’ fees and court costs) claims or actions of any kind whatsoever arising or resulting from your use of the Service, your violation of these Terms of Use, and any of your acts or omissions that implicate publicity rights, defamation or invasion of privacy. The Metaverse Foundation reserves the right, at its own expense, to assume exclusive defense and control of any matter otherwise subject to indemnification by you and, in such case, you agree to cooperate with the Metaverse Foundation in the defense of such matter. ## 7. Limitation on liability ## -YOU ACKNOWLEDGE AND AGREE THAT YOU ASSUME FULL RESPONSIBILITY FOR YOUR USE OF THE SITE AND SERVICE. YOU ACKNOWLEDGE AND AGREE THAT ANY INFORMATION YOU SEND OR RECEIVE DURING YOUR USE OF THE SITE AND SERVICE MAY NOT BE SECURE AND MAY BE INTERCEPTED OR LATER ACQUIRED BY UNAUTHORIZED PARTIES. YOU ACKNOWLEDGE AND AGREE THAT YOUR USE OF THE SITE AND SERVICE IS AT YOUR OWN RISK. RECOGNIZING SUCH, YOU UNDERSTAND AND AGREE THAT, TO THE FULLEST EXTENT PERMITTED BY APPLICABLE LAW, NEITHER METAMASK NOR ITS SUPPLIERS OR LICENSORS WILL BE LIABLE TO YOU FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY OR OTHER DAMAGES OF ANY KIND, INCLUDING WITHOUT LIMITATION DAMAGES FOR LOSS OF PROFITS, GOODWILL, USE, DATA OR OTHER TANGIBLE OR INTANGIBLE LOSSES OR ANY OTHER DAMAGES BASED ON CONTRACT, TORT, STRICT LIABILITY OR ANY OTHER THEORY (EVEN IF METAMASK HAD BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES), RESULTING FROM THE SITE OR SERVICE; THE USE OR THE INABILITY TO USE THE SITE OR SERVICE; UNAUTHORIZED ACCESS TO OR ALTERATION OF YOUR TRANSMISSIONS OR DATA; STATEMENTS OR CONDUCT OF ANY THIRD PARTY ON THE SITE OR SERVICE; ANY ACTIONS WE TAKE OR FAIL TO TAKE AS A RESULT OF COMMUNICATIONS YOU SEND TO US; HUMAN ERRORS; TECHNICAL MALFUNCTIONS; FAILURES, INCLUDING PUBLIC UTILITY OR TELEPHONE OUTAGES; OMISSIONS, INTERRUPTIONS, LATENCY, DELETIONS OR DEFECTS OF ANY DEVICE OR NETWORK, PROVIDERS, OR SOFTWARE (INCLUDING, BUT NOT LIMITED TO, THOSE THAT DO NOT PERMIT PARTICIPATION IN THE SERVICE); ANY INJURY OR DAMAGE TO COMPUTER EQUIPMENT; INABILITY TO FULLY ACCESS THE SITE OR SERVICE OR ANY OTHER WEBSITE; THEFT, TAMPERING, DESTRUCTION, OR UNAUTHORIZED ACCESS TO, IMAGES OR OTHER CONTENT OF ANY KIND; DATA THAT IS PROCESSED LATE OR INCORRECTLY OR IS INCOMPLETE OR LOST; TYPOGRAPHICAL, PRINTING OR OTHER ERRORS, OR ANY COMBINATION THEREOF; OR ANY OTHER MATTER RELATING TO THE SITE OR SERVICE. +YOU ACKNOWLEDGE AND AGREE THAT YOU ASSUME FULL RESPONSIBILITY FOR YOUR USE OF THE SITE AND SERVICE. YOU ACKNOWLEDGE AND AGREE THAT ANY INFORMATION YOU SEND OR RECEIVE DURING YOUR USE OF THE SITE AND SERVICE MAY NOT BE SECURE AND MAY BE INTERCEPTED OR LATER ACQUIRED BY UNAUTHORIZED PARTIES. YOU ACKNOWLEDGE AND AGREE THAT YOUR USE OF THE SITE AND SERVICE IS AT YOUR OWN RISK. RECOGNIZING SUCH, YOU UNDERSTAND AND AGREE THAT, TO THE FULLEST EXTENT PERMITTED BY APPLICABLE LAW, NEITHER THE METAVERSE FOUNDATION NOR ITS SUPPLIERS OR LICENSORS WILL BE LIABLE TO YOU FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY OR OTHER DAMAGES OF ANY KIND, INCLUDING WITHOUT LIMITATION DAMAGES FOR LOSS OF PROFITS, GOODWILL, USE, DATA OR OTHER TANGIBLE OR INTANGIBLE LOSSES OR ANY OTHER DAMAGES BASED ON CONTRACT, TORT, STRICT LIABILITY OR ANY OTHER THEORY (EVEN IF THE METAVERSE FOUNDATION HAD BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES), RESULTING FROM THE SITE OR SERVICE; THE USE OR THE INABILITY TO USE THE SITE OR SERVICE; UNAUTHORIZED ACCESS TO OR ALTERATION OF YOUR TRANSMISSIONS OR DATA; STATEMENTS OR CONDUCT OF ANY THIRD PARTY ON THE SITE OR SERVICE; ANY ACTIONS WE TAKE OR FAIL TO TAKE AS A RESULT OF COMMUNICATIONS YOU SEND TO US; HUMAN ERRORS; TECHNICAL MALFUNCTIONS; FAILURES, INCLUDING PUBLIC UTILITY OR TELEPHONE OUTAGES; OMISSIONS, INTERRUPTIONS, LATENCY, DELETIONS OR DEFECTS OF ANY DEVICE OR NETWORK, PROVIDERS, OR SOFTWARE (INCLUDING, BUT NOT LIMITED TO, THOSE THAT DO NOT PERMIT PARTICIPATION IN THE SERVICE); ANY INJURY OR DAMAGE TO COMPUTER EQUIPMENT; INABILITY TO FULLY ACCESS THE SITE OR SERVICE OR ANY OTHER WEBSITE; THEFT, TAMPERING, DESTRUCTION, OR UNAUTHORIZED ACCESS TO, IMAGES OR OTHER CONTENT OF ANY KIND; DATA THAT IS PROCESSED LATE OR INCORRECTLY OR IS INCOMPLETE OR LOST; TYPOGRAPHICAL, PRINTING OR OTHER ERRORS, OR ANY COMBINATION THEREOF; OR ANY OTHER MATTER RELATING TO THE SITE OR SERVICE. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OF CERTAIN WARRANTIES OR THE LIMITATION OR EXCLUSION OF LIABILITY FOR INCIDENTAL OR CONSEQUENTIAL DAMAGES. ACCORDINGLY, SOME OF THE ABOVE LIMITATIONS MAY NOT APPLY TO YOU. ## 8. Our Proprietary Rights ## -All title, ownership and intellectual property rights in and to the Service are owned by MetaMask or its licensors. You acknowledge and agree that the Service contains proprietary and confidential information that is protected by applicable intellectual property and other laws. Except as expressly authorized by MetaMask, you agree not to copy, modify, rent, lease, loan, sell, distribute, perform, display or create derivative works based on the Service, in whole or in part. MetaMask issues a license for MetaMask, found [here](https://github.com/MetaMask/metamask-plugin/blob/master/LICENSE). For information on other licenses utilized in the development of MetaMask, please see our attribution page at: [https://metamask.io/attributions.html](https://metamask.io/attributions.html) +All title, ownership and intellectual property rights in and to the Service are owned by the Metaverse Foundation or its licensors. You acknowledge and agree that the Service contains proprietary and confidential information that is protected by applicable intellectual property and other laws. Except as expressly authorized by the Metaverse Foundation, you agree not to copy, modify, rent, lease, loan, sell, distribute, perform, display or create derivative works based on the Service, in whole or in part. The Metaverse Foundation issues a license for MetaverseVM extension, found [here](https://github.com/mvs-org/metaverse-vm-extension/blob/main/LICENSE). ## 9. Links ## -The Service provides, or third parties may provide, links to other World Wide Web or accessible sites, applications or resources. Because MetaMask has no control over such sites, applications and resources, you acknowledge and agree that MetaMask is not responsible for the availability of such external sites, applications or resources, and does not endorse and is not responsible or liable for any content, advertising, products or other materials on or available from such sites or resources. You further acknowledge and agree that MetaMask shall not be responsible or liable, directly or indirectly, for any damage or loss caused or alleged to be caused by or in connection with use of or reliance on any such content, goods or services available on or through any such site or resource. +The Service provides, or third parties may provide, links to other World Wide Web or accessible sites, applications or resources. Because the MetaverseVM extension has no control over such sites, applications and resources, you acknowledge and agree that the Metaverse Foundation is not responsible for the availability of such external sites, applications or resources, and does not endorse and is not responsible or liable for any content, advertising, products or other materials on or available from such sites or resources. You further acknowledge and agree that the Metaverse Foundation shall not be responsible or liable, directly or indirectly, for any damage or loss caused or alleged to be caused by or in connection with use of or reliance on any such content, goods or services available on or through any such site or resource. ## 10. Termination and Suspension ## -MetaMask may terminate or suspend all or part of the Service and your MetaMask access immediately, without prior notice or liability, if you breach any of the terms or conditions of the Terms. Upon termination of your access, your right to use the Service will immediately cease. +The Metaverse Foundation may terminate or suspend all or part of the Service and your MetaverseVM extension access immediately, without prior notice or liability, if you breach any of the terms or conditions of the Terms. Upon termination of your access, your right to use the Service will immediately cease. The following provisions of the Terms survive any termination of these Terms: INDEMNITY; WARRANTY DISCLAIMERS; LIMITATION ON LIABILITY; OUR PROPRIETARY RIGHTS; LINKS; TERMINATION; NO THIRD PARTY BENEFICIARIES; BINDING ARBITRATION AND CLASS ACTION WAIVER; GENERAL INFORMATION. @@ -80,7 +80,7 @@ You agree that, except as otherwise expressly provided in these Terms, there sha ## 12. Notice and Procedure For Making Claims of Copyright Infringement ## -If you believe that your copyright or the copyright of a person on whose behalf you are authorized to act has been infringed, please provide MetaMask’s Copyright Agent a written Notice containing the following information: +If you believe that your copyright or the copyright of a person on whose behalf you are authorized to act has been infringed, please provide the Metaverse Foundation’s Copyright Agent a written Notice containing the following information: · an electronic or physical signature of the person authorized to act on behalf of the owner of the copyright or other intellectual property interest; @@ -94,19 +94,9 @@ If you believe that your copyright or the copyright of a person on whose behalf · a statement by you, made under penalty of perjury, that the above information in your Notice is accurate and that you are the copyright or intellectual property owner or authorized to act on the copyright or intellectual property owner's behalf. -MetaMask’s Copyright Agent can be reached at: +The Metaverse Foundation’s Copyright Agent can be reached at: -Email: copyright [at] metamask [dot] io - -Mail: - -Attention: - -MetaMask Copyright ℅ ConsenSys - -49 Bogart Street - -Brooklyn, NY 11206 +Email: copyright [at] mvs [dot] org ## 13. Binding Arbitration and Class Action Waiver ## @@ -130,7 +120,7 @@ Binding arbitration shall take place in New York. You agree to submit to the per ### 13.4 Class Action Waiver ### -The parties further agree that any arbitration shall be conducted in their individual capacities only and not as a class action or other representative action, and the parties expressly waive their right to file a class action or seek relief on a class basis. YOU AND METAMASK AGREE THAT EACH MAY BRING CLAIMS AGAINST THE OTHER ONLY IN YOUR OR ITS INDIVIDUAL CAPACITY, AND NOT AS A PLAINTIFF OR CLASS MEMBER IN ANY PURPORTED CLASS OR REPRESENTATIVE PROCEEDING. If any court or arbitrator determines that the class action waiver set forth in this paragraph is void or unenforceable for any reason or that an arbitration can proceed on a class basis, then the arbitration provision set forth above shall be deemed null and void in its entirety and the parties shall be deemed to have not agreed to arbitrate disputes. +The parties further agree that any arbitration shall be conducted in their individual capacities only and not as a class action or other representative action, and the parties expressly waive their right to file a class action or seek relief on a class basis. YOU AND THE METAVERSE FOUNDATION AGREE THAT EACH MAY BRING CLAIMS AGAINST THE OTHER ONLY IN YOUR OR ITS INDIVIDUAL CAPACITY, AND NOT AS A PLAINTIFF OR CLASS MEMBER IN ANY PURPORTED CLASS OR REPRESENTATIVE PROCEEDING. If any court or arbitrator determines that the class action waiver set forth in this paragraph is void or unenforceable for any reason or that an arbitration can proceed on a class basis, then the arbitration provision set forth above shall be deemed null and void in its entirety and the parties shall be deemed to have not agreed to arbitrate disputes. ### 13.5 Exception - Litigation of Intellectual Property and Small Claims Court Claims ### @@ -138,25 +128,25 @@ Notwithstanding the parties' decision to resolve all disputes through arbitratio ### 13.6 30-Day Right to Opt Out ### -You have the right to opt-out and not be bound by the arbitration and class action waiver provisions set forth above by sending written notice of your decision to opt-out to the following address: MetaMask ℅ ConsenSys, 49 Bogart Street, Brooklyn NY 11206 and via email at support@metamask.io. The notice must be sent within 30 days of September 6, 2016 or your first use of the Service, whichever is later, otherwise you shall be bound to arbitrate disputes in accordance with the terms of those paragraphs. If you opt-out of these arbitration provisions, MetaMask also will not be bound by them. +You have the right to opt-out and not be bound by the arbitration and class action waiver provisions set forth above by sending written notice of your decision to opt-out to the following email at support@mvs.org. The notice must be sent within 30 days of Feburary 12, 2021 or your first use of the Service, whichever is later, otherwise you shall be bound to arbitrate disputes in accordance with the terms of those paragraphs. If you opt-out of these arbitration provisions, the Metaverse Foundation also will not be bound by them. ### 13.7 Changes to This Section ### -MetaMask will provide 60-days’ notice of any changes to this section. Changes will become effective on the 60th day, and will apply prospectively only to any claims arising after the 60th day. +The Metaverse Foundation will provide 60-days’ notice of any changes to this section. Changes will become effective on the 60th day, and will apply prospectively only to any claims arising after the 60th day. -For any dispute not subject to arbitration you and MetaMask agree to submit to the personal and exclusive jurisdiction of and venue in the federal and state courts located in New York, New York. You further agree to accept service of process by mail, and hereby waive any and all jurisdictional and venue defenses otherwise available. +For any dispute not subject to arbitration you and the Metaverse Foundation agree to submit to the personal and exclusive jurisdiction of and venue in the federal and state courts located in New York, New York. You further agree to accept service of process by mail, and hereby waive any and all jurisdictional and venue defenses otherwise available. -The Terms and the relationship between you and MetaMask shall be governed by the laws of the State of New York without regard to conflict of law provisions. +The Terms and the relationship between you and the Metaverse Foundation shall be governed by the laws of the State of New York without regard to conflict of law provisions. ## 14. General Information ## ### 14.1 Entire Agreement ### -These Terms (and any additional terms, rules and conditions of participation that MetaMask may post on the Service) constitute the entire agreement between you and MetaMask with respect to the Service and supersedes any prior agreements, oral or written, between you and MetaMask. In the event of a conflict between these Terms and the additional terms, rules and conditions of participation, the latter will prevail over the Terms to the extent of the conflict. +These Terms (and any additional terms, rules and conditions of participation that the Metaverse Foundation may post on the Service) constitute the entire agreement between you and the Metaverse Foundation with respect to the Service and supersedes any prior agreements, oral or written, between you and the Metaverse Foundation. In the event of a conflict between these Terms and the additional terms, rules and conditions of participation, the latter will prevail over the Terms to the extent of the conflict. ### 14.2 Waiver and Severability of Terms ### -The failure of MetaMask to exercise or enforce any right or provision of the Terms shall not constitute a waiver of such right or provision. If any provision of the Terms is found by an arbitrator or court of competent jurisdiction to be invalid, the parties nevertheless agree that the arbitrator or court should endeavor to give effect to the parties' intentions as reflected in the provision, and the other provisions of the Terms remain in full force and effect. +The failure of the Metaverse Foundation to exercise or enforce any right or provision of the Terms shall not constitute a waiver of such right or provision. If any provision of the Terms is found by an arbitrator or court of competent jurisdiction to be invalid, the parties nevertheless agree that the arbitrator or court should endeavor to give effect to the parties' intentions as reflected in the provision, and the other provisions of the Terms remain in full force and effect. ### 14.3 Statute of Limitations ### @@ -168,12 +158,4 @@ The section titles in the Terms are for convenience only and have no legal or co ### 14.5 Communications ### -Users with questions, complaints or claims with respect to the Service may contact us using the relevant contact information set forth above and at communications@metamask.io. - -## 15 Related Links ## - -**[Terms of Use](https://metamask.io/terms.html)** - -**[Privacy](https://metamask.io/privacy.html)** - -**[Attributions](https://metamask.io/attributions.html)** +Users with questions, complaints or claims with respect to the Service may contact us using the relevant contact information set forth above and at support@mvs.org. diff --git a/docs/QA_Guide.md b/docs/QA_Guide.md index 0b7c0e023..b7f57243c 100644 --- a/docs/QA_Guide.md +++ b/docs/QA_Guide.md @@ -5,7 +5,7 @@ Steps to mark a full pass of QA complete. * OS: Ubuntu, Mac OSX, Windows * Load older version of MetaMask and attempt to simulate updating the extension. * Open Developer Console in background and popup, inspect errors. -* Watch the state logs +* Watch the state logs * Transactions (unapproved txs -> rejected/submitted -> confirmed) * Nonces/LocalNonces * Vault integrity @@ -16,24 +16,16 @@ Steps to mark a full pass of QA complete. * Restore from seed * Create a second account * Import a loose account (not related to HD Wallet) - * Import old existing vault seed phrase (pref with test Ether) + * Import old existing vault seed phrase (pref with test ETP) * Download State Logs, Priv key file, seed phrase file. -* Send Ether - * by address - * by ens name +* Send ETP * Web3 API Stability - * Create a contract from a Ðapp (remix) - * Load a Ðapp that reads using events/logs (ENS) - * Connect to MEW/MyCypto + * Create a contract from a Ðapp + * Load a Ðapp that reads using events/logs * Send a transaction from any Ðapp - - MEW - - EtherDelta - - Leeroy - - Aragon - - (https://tmashuang.github.io/demo-dapp) * Check account balances -* Token Management - * create a token with tokenfactory (http://tokenfactory.surge.sh/#/factory) +* Smart Token (MST) + * create a token * Add that token to the token view * Send that token to another metamask address. * confirm the token arrived. diff --git a/docs/README.md b/docs/README.md index 6c54c98cf..7cb5e4f85 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,20 +1,16 @@ # Documentation -These docs relate to how to contribute to the MetaMask project itself. +These docs relate to how to contribute to the MetaverseVM Extension project itself. -You can find the latest version of MetaMask on [our official website](https://metamask.io/). +You can find the latest version of Metaverse on [our official website](https://mvs.org/). -For help using MetaMask, visit our [User Support Site](https://metamask.zendesk.com/hc/en-us). +For help using Metaverse, visit our [User Support Site](https://mvs.org). -For up to the minute news, follow our [Twitter](https://twitter.com/metamask_io) or [Medium](https://medium.com/metamask) pages. - -To learn how to develop MetaMask-compatible applications, visit our [Developer Docs](https://metamask.github.io/metamask-docs/). +To learn how to develop Metaverse-compatible applications, visit our [Developer Docs](https://docs.mvs.org). - [How to add custom build to Chrome](./add-to-chrome.md) - [How to add custom build to Firefox](./add-to-firefox.md) - [Publishing Guide](./publishing.md) - [How to live reload on local dependency changes](./developing-on-deps.md) - [How to add new networks to the Provider Menu](./adding-new-networks.md) -- [How to port MetaMask to a new platform](./porting_to_new_environment.md) -- [How to generate a visualization of this repository's development](./development-visualization.md) - [How to add a feature behind a secret feature flag](./secret-preferences.md) diff --git a/docs/add-to-chrome.md b/docs/add-to-chrome.md index 82c1afed3..7dc5ff755 100644 --- a/docs/add-to-chrome.md +++ b/docs/add-to-chrome.md @@ -6,7 +6,7 @@ * Check "Developer mode". * Alternatively, use the URL `chrome://extensions/` in your address bar * At the top, click `Load Unpacked Extension`. -* Navigate to your `metamask-plugin/dist/chrome` folder. +* Navigate to your `metaverse-vm-extension/dist/chrome` folder. * Click `Select`. * Change to your locale via `chrome://settings/languages` * Restart the browser and test the plugin in your locale diff --git a/docs/creating-metrics-events.md b/docs/creating-metrics-events.md deleted file mode 100644 index 26fd8a6bb..000000000 --- a/docs/creating-metrics-events.md +++ /dev/null @@ -1,72 +0,0 @@ -## Creating Metrics Events - -The `metricsEvent` method is made available to all components via context. This is done in `metamask-extension/ui/app/helpers/higher-order-components/metametrics/metametrics.provider.js`. As such, it can be called in all components by first adding it to the context proptypes: - -``` -static contextTypes = { - t: PropTypes.func, - metricsEvent: PropTypes.func, -} -``` - -and then accessing it on `this.context`. - -Below is an example of a metrics event call: - -``` -this.context.metricsEvent({ - eventOpts: { - category: 'Navigation', - action: 'Main Menu', - name: 'Switched Account', - }, -}) -``` - -### Base Schema - -Every `metricsEvent` call is passed an object that must have an `eventOpts` property. This property is an object that itself must have three properties: -- category: categorizes events according to the schema we have set up in our matomo.org instance -- action: usually describes the page on which the event takes place, or sometimes a significant subsections of a page -- name: a very specific descriptor of the event - -### Implicit properties - -All metrics events send the following data when called: -- network -- environmentType -- activeCurrency -- accountType -- numberOfTokens -- numberOfAccounts -- version - -These are added to the metrics event via the metametrics provider. - -### Custom Variables - -Metrics events can include custom variables. These are included within the `customVariables` property that is a first-level property within first param passed to `metricsEvent`. - -For example: -``` -this.context.metricsEvent({ - eventOpts: { - category: 'Settings', - action: 'Custom RPC', - name: 'Error', - }, - customVariables: { - networkId: newRpc, - chainId, - }, -}) -``` - -Custom variables can have custom property names and values can be strings or numbers. - -**To include a custom variable, there are a set of necessary steps you must take.** - -1. First you must declare a constant equal to the desired name of the custom variable property in `metamask-extension/ui/app/helpers/utils/metametrics.util.js` under `//Custom Variable Declarations` -1. Then you must add that name to the `customVariableNameIdMap` declaration - 1. The id must be between 1 and 5 - 1. There can be no more than 5 custom variables assigned ids on a given url diff --git a/docs/design-system.md b/docs/design-system.md deleted file mode 100644 index fa088bdbf..000000000 --- a/docs/design-system.md +++ /dev/null @@ -1,5 +0,0 @@ -# MetaMask Design System - -A design system is a series of components that can be reused in different combinations. Design systems allow you to manage design at scale. - -Design System [Figma File](https://www.figma.com/file/aWgwMrzdAuv9VuPdtst64uuw/Style-Guide?node-id=211%3A0) diff --git a/docs/load-dev-build-chrome.gif b/docs/load-dev-build-chrome.gif deleted file mode 100644 index 5b4965fe3..000000000 Binary files a/docs/load-dev-build-chrome.gif and /dev/null differ diff --git a/docs/sensitive-release.md b/docs/sensitive-release.md index 1ebae3932..fc308801b 100644 --- a/docs/sensitive-release.md +++ b/docs/sensitive-release.md @@ -28,8 +28,6 @@ Ensure the rollback release has been built, and downloaded locally, fully ready For a sensitive release, initially roll out to only 1% of Chrome users (since Chrome allows incremental rollout). -Monitor Sentry for any recognizable error logs. - Gradually increase the rollout percentage. ### In case of Emergency diff --git a/docs/state_dump.md b/docs/state_dump.md index 855445dca..07eb27ce7 100644 --- a/docs/state_dump.md +++ b/docs/state_dump.md @@ -2,11 +2,11 @@ Sometimes a UI bug is hard to reproduce, but we'd like to rapidly develop against the application state that caused the bug. -In this case, a MetaMask developer will sometimes ask a user with a bug to perform a "state dump", so we can use some internal tools to reproduce and fix the bug. +In this case, a MetaverseVM extension developer will sometimes ask a user with a bug to perform a "state dump", so we can use some internal tools to reproduce and fix the bug. To take a state dump, follow these steps: -1. Get the MetaMask popup to the point where it shows the bug (the developer will probably specify exactly where). +1. Get the MetaverseVM extension popup to the point where it shows the bug (the developer will probably specify exactly where). 2. Right click on the extension popup UI, and in the menu, click "Inspect". This will open the developer tools. 3. In case it isn't already selected, click the "Console" tab in the new Developer Tools window. 4. In the console, type this command exactly: `logState()`. This should print a bunch of JSON text into your console. diff --git a/docs/translating-guide.md b/docs/translating-guide.md index 684316e4f..61e4ade94 100644 --- a/docs/translating-guide.md +++ b/docs/translating-guide.md @@ -1,19 +1,19 @@ -# MetaMask Translation Guide +# MetaverseVM extension Translation Guide -The MetaMask browser extension supports new translations added in the form of new locales files added in `app/_locales`. +The MetaverseVM extension browser extension supports new translations added in the form of new locales files added in `app/_locales`. - [The MDN Guide to Internationalizing Extensions](https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Internationalization) ## Adding a new Language - Each supported language is represented by a folder in `app/_locales` whose name is that language's subtag (example: `app/_locales/es/`). (look up a language subtag using the [r12a "Find" tool](https://r12a.github.io/app-subtags/) or this [wikipedia list](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes)). -- Inside that folder there should be a `messages.json`. +- Inside that folder there should be a `messages.json`. - An easy way to start your translation is to first **make a copy** of `app/_locales/en/messages.json` (the English translation), and then **translate the `message` key** for each in-app message. - **The `description` key** is just to add context for what the translation is about, it **does not need to be translated**. -- Add the language to the [locales index](https://github.com/MetaMask/metamask-extension/blob/master/app/_locales/index.json) `app/_locales/index.json` +- Add the language to the [locales index](https://github.com/mvs-org/metaverse-vm-extension/blob/master/app/_locales/index.json) `app/_locales/index.json` -That's it! When MetaMask is loaded on a computer with that language set as the system language, they will see your translation instead of the default one. +That's it! When MetaverseVM extension is loaded on a computer with that language set as the system language, they will see your translation instead of the default one. ## Testing @@ -25,5 +25,5 @@ node development/verify-locale-strings.js $YOUR_LOCALE Where `$YOUR_LOCALE` is your locale string (example: `es`), i.e. the name of your language folder. -To verify that your translation works in the app, you will need to [build a local copy](https://github.com/MetaMask/metamask-extension#building-locally) of MetaMask. You will need to change your browser language, your operating system language, and restart your browser (sorry it's so much work!). +To verify that your translation works in the app, you will need to [build a local copy](https://github.com/mvs-org/metaverse-vm-extension#building-locally) of MetaverseVM extension. You will need to change your browser language, your operating system language, and restart your browser (sorry it's so much work!). diff --git a/docs/trezor-emulator.md b/docs/trezor-emulator.md index 8f66ba213..0e5b24602 100644 --- a/docs/trezor-emulator.md +++ b/docs/trezor-emulator.md @@ -1,6 +1,6 @@ # Using the TREZOR simulator -You can install the TREZOR emulator and use it with Metamask. +You can install the TREZOR emulator and use it with MetaverseVM extension. Here is how: ## 1 - Install the TREZOR Bridge