diff --git a/app/_locales/en/messages.json b/app/_locales/en/messages.json index 657bf2004..9e3bda041 100644 --- a/app/_locales/en/messages.json +++ b/app/_locales/en/messages.json @@ -240,6 +240,25 @@ "basic": { "message": "Basic" }, + "betaMetamaskDescription": { + "message": "Trusted by millions, MetaMask is a secure wallet making the world of web3 accessible to all." + }, + "betaMetamaskDescriptionExplanation": { + "message": "Use this version to test upcoming features before they’re released. Your use and feedback helps us build the best version of MetaMask possible. Your use of MetaMask Beta is subject to our standard $1 as well as our $2. As a Beta, there may be an increased risk of bugs. By proceeding, you accept and acknowledge these risks, as well as those risks found in our Terms and Beta Terms.", + "description": "$1 represents localization item betaMetamaskDescriptionExplanationTermsLinkText. $2 represents localization item betaMetamaskDescriptionExplanationBetaTermsLinkText" + }, + "betaMetamaskDescriptionExplanationBetaTermsLinkText": { + "message": "Supplemental Beta Terms" + }, + "betaMetamaskDescriptionExplanationTermsLinkText": { + "message": "Terms" + }, + "betaMetamaskVersion": { + "message": "MetaMask Beta Version" + }, + "betaWelcome": { + "message": "Welcome to MetaMask Beta" + }, "blockExplorerUrl": { "message": "Block Explorer URL" }, @@ -1328,9 +1347,15 @@ "message": "Need help? Contact $1", "description": "$1 represents `needHelpLinkText`, the text which goes in the help link" }, + "needHelpFeedback": { + "message": "Share your Feedback" + }, "needHelpLinkText": { "message": "MetaMask Support" }, + "needHelpSubmitTicket": { + "message": "Submit a Ticket" + }, "needImportFile": { "message": "You must select a file to import.", "description": "User is important an account and needs to add a file to continue" diff --git a/app/build-types/beta/beta-mascot.json b/app/build-types/beta/beta-mascot.json new file mode 100644 index 000000000..5f922a57e --- /dev/null +++ b/app/build-types/beta/beta-mascot.json @@ -0,0 +1,337 @@ +{ + "chunks": [ + { + "color": [0, 0, 0], + "faces": [ + [11, 12, 13], + [36, 15, 37], + [37, 38, 36], + [31, 39, 22], + [22, 21, 31], + [31, 15, 36], + [36, 39, 31], + [64, 65, 66], + [75, 69, 26], + [26, 80, 75], + [75, 80, 38], + [38, 37, 75], + [38, 80, 39], + [39, 36, 38], + [39, 80, 26], + [26, 22, 39] + ] + }, + { + "color": [236, 229, 220], + "faces": [ + [19, 20, 21], + [21, 22, 19], + [20, 19, 23], + [23, 24, 20], + [23, 25, 24], + [19, 22, 26], + [26, 27, 19], + [23, 28, 29], + [23, 29, 30], + [25, 23, 30], + [21, 20, 24], + [24, 31, 21], + [24, 25, 30], + [29, 51, 52], + [52, 30, 29], + [27, 26, 69], + [69, 70, 27], + [70, 71, 72], + [72, 27, 70], + [72, 71, 73], + [51, 74, 72], + [52, 51, 72], + [73, 52, 72], + [69, 71, 70], + [71, 69, 75], + [52, 73, 71], + [19, 27, 74], + [74, 28, 19], + [51, 29, 28], + [28, 74, 51], + [74, 27, 72], + [28, 23, 19] + ] + }, + { + "color": [119, 228, 171], + "faces": [ + [5, 4, 35], + [57, 59, 79] + ] + }, + { + "color": [80, 157, 116], + "faces": [ + [4, 5, 2], + [2, 5, 6], + [57, 56, 55], + [58, 59, 55], + [2, 1, 4], + [55, 59, 57] + ] + }, + { + "color": [67, 127, 95], + "faces": [ + [0, 1, 2], + [2, 3, 0], + [6, 3, 2], + [7, 8, 9], + [10, 3, 6], + [10, 50, 7], + [7, 3, 10], + [7, 9, 3], + [49, 0, 9], + [3, 9, 0], + [53, 54, 55], + [55, 56, 53], + [55, 54, 58], + [60, 61, 62], + [63, 58, 54], + [63, 60, 89], + [60, 63, 54], + [60, 54, 61], + [88, 61, 53], + [54, 53, 61] + ] + }, + { + "color": [119, 228, 207], + "faces": [ + [59, 5, 35], + [35, 79, 59] + ] + }, + { + "color": [163, 230, 235], + "faces": [ + [14, 15, 11], + [11, 16, 14], + [16, 13, 12], + [17, 33, 10], + [17, 18, 34], + [34, 33, 17], + [11, 15, 31], + [18, 12, 11], + [41, 64, 37], + [64, 41, 40], + [66, 65, 40], + [67, 63, 77], + [67, 77, 76], + [76, 68, 67], + [75, 37, 64], + [68, 64, 66] + ] + }, + { + "color": [204, 237, 236], + "faces": [ + [10, 6, 17], + [31, 18, 11], + [14, 16, 40], + [40, 41, 14], + [63, 67, 58], + [64, 68, 75], + [14, 41, 37], + [37, 15, 14], + [5, 59, 40], + [40, 16, 5] + ] + }, + { + "color": [207, 248, 247], + "faces": [ + [6, 5, 16], + [16, 17, 6], + [12, 17, 16], + [58, 67, 40], + [40, 59, 58], + [40, 67, 66] + ] + }, + { + "color": [127, 185, 228], + "faces": [ + [33, 34, 24], + [71, 76, 77] + ] + }, + { + "color": [119, 200, 228], + "faces": [ + [31, 24, 18], + [24, 34, 18], + [35, 4, 42], + [4, 1, 42], + [42, 43, 44], + [44, 35, 42], + [45, 43, 42], + [42, 10, 45], + [30, 32, 24], + [30, 33, 32], + [33, 30, 10], + [44, 43, 46], + [43, 45, 47], + [47, 46, 43], + [48, 47, 45], + [45, 30, 48], + [30, 45, 10], + [49, 42, 0], + [8, 7, 42], + [50, 42, 7], + [50, 10, 42], + [1, 0, 42], + [42, 9, 8], + [42, 49, 9], + [75, 68, 71], + [71, 68, 76], + [79, 81, 57], + [57, 81, 56], + [82, 79, 35], + [35, 44, 82], + [81, 79, 82], + [82, 83, 81], + [84, 63, 81], + [81, 83, 84], + [44, 46, 85], + [85, 82, 44], + [71, 78, 52], + [52, 78, 77], + [77, 63, 52], + [82, 85, 83], + [83, 85, 86], + [86, 84, 83], + [87, 52, 84], + [84, 86, 87], + [52, 63, 84], + [88, 53, 81], + [62, 81, 60], + [89, 60, 81], + [89, 81, 63], + [56, 81, 53], + [81, 62, 61], + [81, 61, 88], + [48, 87, 86], + [86, 47, 48], + [47, 86, 85], + [85, 46, 47], + [48, 30, 52], + [52, 87, 48] + ] + }, + { + "color": [95, 167, 211], + "faces": [ + [24, 32, 33], + [77, 78, 71] + ] + }, + { + "color": [119, 222, 228], + "faces": [ + [17, 12, 18], + [13, 16, 11], + [67, 68, 66], + [65, 64, 40] + ] + } + ], + "positions": [ + [111.024597, 52.604599, 46.225899], + [114.025002, 87.673302, 58.9818], + [66.192001, 80.898003, 55.394299], + [72.113297, 35.491798, 30.871401], + [97.804497, 116.560997, 73.978798], + [16.7623, 58.010899, 58.078201], + [52.608898, 30.3641, 42.556099], + [106.881401, 31.945499, 46.9133], + [113.484596, 38.6049, 49.121498], + [108.6633, 43.2332, 46.315399], + [101.216599, 15.9822, 46.308201], + [16.6605, -16.2883, 93.618698], + [40.775002, -10.2288, 85.276398], + [23.926901, -2.5103, 86.736504], + [11.1691, -7.0037, 99.377602], + [9.5692, -34.393902, 141.671997], + [12.596, 7.1655, 88.740997], + [61.180901, 8.8142, 76.996803], + [39.719501, -28.927099, 88.963799], + [13.7962, -68.575699, 132.057007], + [15.2674, -62.32, 129.688004], + [14.8446, -52.6096, 140.113007], + [12.8917, -49.771599, 144.740997], + [35.604198, -71.758003, 81.063904], + [47.462502, -68.606102, 63.369701], + [38.2486, -64.730202, 38.909901], + [-12.8917, -49.771599, 144.740997], + [-13.7962, -68.575699, 132.057007], + [17.802099, -71.758003, 81.063904], + [19.1243, -69.0168, 49.420101], + [38.2486, -66.275597, 17.776199], + [12.8928, -36.703499, 141.671997], + [109.283997, -93.589897, 27.824301], + [122.117996, -36.8894, 35.025002], + [67.7668, -30.197001, 78.417801], + [33.180698, 101.851997, 25.3186], + [9.4063, -35.589802, 150.722], + [-9.5692, -34.393902, 141.671997], + [-9.4063, -35.589802, 150.722], + [11.4565, -37.899399, 150.722], + [-12.596, 7.1655, 88.740997], + [-11.1691, -7.0037, 99.377602], + [70.236504, 62.836201, -3.9475], + [47.263401, 54.293999, -27.414801], + [28.7302, 91.731102, -24.972601], + [69.167603, 6.5862, -12.7757], + [28.7302, 49.1003, -48.3596], + [31.903, 5.692, -47.821999], + [35.075802, -34.432899, -16.280899], + [115.284103, 48.681499, 48.684101], + [110.842796, 28.4821, 49.176201], + [-19.1243, -69.0168, 49.420101], + [-38.2486, -66.275597, 17.776199], + [-111.024597, 52.604599, 46.225899], + [-72.113297, 35.491798, 30.871401], + [-66.192001, 80.898003, 55.394299], + [-114.025002, 87.673302, 58.9818], + [-97.804497, 116.560997, 73.978798], + [-52.608898, 30.3641, 42.556099], + [-16.7623, 58.010899, 58.078201], + [-106.881401, 31.945499, 46.9133], + [-108.6633, 43.2332, 46.315399], + [-113.484596, 38.6049, 49.121498], + [-101.216599, 15.9822, 46.308201], + [-16.6605, -16.2883, 93.618698], + [-23.926901, -2.5103, 86.736504], + [-40.775002, -10.2288, 85.276398], + [-61.180901, 8.8142, 76.996803], + [-39.719501, -28.927099, 88.963799], + [-14.8446, -52.6096, 140.113007], + [-15.2674, -62.32, 129.688004], + [-47.462502, -68.606102, 63.369701], + [-35.604198, -71.758003, 81.063904], + [-38.2486, -64.730202, 38.909901], + [-17.802099, -71.758003, 81.063904], + [-12.8928, -36.703499, 141.671997], + [-67.7668, -30.197001, 78.417801], + [-122.117996, -36.8894, 35.025002], + [-109.283997, -93.589897, 27.824301], + [-33.180698, 101.851997, 25.3186], + [-11.4565, -37.899399, 150.722], + [-70.236504, 62.836201, -3.9475], + [-28.7302, 91.731102, -24.972601], + [-47.263401, 54.293999, -27.414801], + [-69.167603, 6.5862, -12.7757], + [-28.7302, 49.1003, -48.3596], + [-31.903, 5.692, -47.821999], + [-35.075802, -34.432899, -16.280899], + [-115.284103, 48.681499, 48.684101], + [-110.842796, 28.4821, 49.176201] + ] +} diff --git a/app/build-types/beta/icon-128.png b/app/build-types/beta/icon-128.png new file mode 100644 index 000000000..97762ff99 Binary files /dev/null and b/app/build-types/beta/icon-128.png differ diff --git a/app/build-types/beta/icon-16.png b/app/build-types/beta/icon-16.png new file mode 100644 index 000000000..216b4ad06 Binary files /dev/null and b/app/build-types/beta/icon-16.png differ diff --git a/app/build-types/beta/icon-19.png b/app/build-types/beta/icon-19.png new file mode 100644 index 000000000..f7da09c5e Binary files /dev/null and b/app/build-types/beta/icon-19.png differ diff --git a/app/build-types/beta/icon-32.png b/app/build-types/beta/icon-32.png new file mode 100644 index 000000000..fb2a55a57 Binary files /dev/null and b/app/build-types/beta/icon-32.png differ diff --git a/app/build-types/beta/icon-38.png b/app/build-types/beta/icon-38.png new file mode 100644 index 000000000..e9449d4d0 Binary files /dev/null and b/app/build-types/beta/icon-38.png differ diff --git a/app/build-types/beta/icon-48.png b/app/build-types/beta/icon-48.png new file mode 100644 index 000000000..0fdfeb25c Binary files /dev/null and b/app/build-types/beta/icon-48.png differ diff --git a/app/build-types/beta/icon-512.png b/app/build-types/beta/icon-512.png new file mode 100644 index 000000000..09690ab1b Binary files /dev/null and b/app/build-types/beta/icon-512.png differ diff --git a/app/build-types/beta/icon-64.png b/app/build-types/beta/icon-64.png new file mode 100644 index 000000000..b60b7d5d5 Binary files /dev/null and b/app/build-types/beta/icon-64.png differ diff --git a/app/build-types/beta/info-logo.png b/app/build-types/beta/info-logo.png new file mode 100644 index 000000000..97762ff99 Binary files /dev/null and b/app/build-types/beta/info-logo.png differ diff --git a/app/build-types/beta/logo/metamask-fox.svg b/app/build-types/beta/logo/metamask-fox.svg new file mode 100644 index 000000000..53698aefd --- /dev/null +++ b/app/build-types/beta/logo/metamask-fox.svg @@ -0,0 +1,130 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/build-types/beta/logo/metamask-logo-horizontal-dark.svg b/app/build-types/beta/logo/metamask-logo-horizontal-dark.svg new file mode 100644 index 000000000..3155a5149 --- /dev/null +++ b/app/build-types/beta/logo/metamask-logo-horizontal-dark.svg @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/build-types/beta/logo/metamask-logo-horizontal.svg b/app/build-types/beta/logo/metamask-logo-horizontal.svg new file mode 100644 index 000000000..43a44eb0e --- /dev/null +++ b/app/build-types/beta/logo/metamask-logo-horizontal.svg @@ -0,0 +1,148 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/images/mascot.json b/app/images/mascot.json new file mode 100644 index 000000000..319c10fb4 --- /dev/null +++ b/app/images/mascot.json @@ -0,0 +1,322 @@ +{ + "chunks": [ + { + "color": [246, 133, 27], + "faces": [ + [17, 33, 10], + [17, 18, 34], + [34, 33, 17], + [10, 6, 17], + [11, 15, 31], + [31, 18, 11], + [18, 12, 11], + [14, 16, 40], + [40, 41, 14], + [59, 5, 35], + [35, 79, 59], + [67, 63, 77], + [67, 77, 76], + [76, 68, 67], + [63, 67, 58], + [64, 68, 75], + [75, 37, 64], + [68, 64, 66], + [14, 41, 37], + [37, 15, 14], + [5, 59, 40], + [40, 16, 5] + ] + }, + { + "color": [228, 118, 27], + "faces": [ + [31, 24, 18], + [6, 5, 16], + [16, 17, 6], + [24, 32, 33], + [33, 34, 24], + [5, 4, 35], + [75, 68, 71], + [58, 67, 40], + [40, 59, 58], + [71, 76, 77], + [77, 78, 71] + ] + }, + { + "color": [118, 61, 22], + "faces": [ + [0, 1, 2], + [2, 3, 0], + [4, 5, 2], + [6, 3, 2], + [2, 5, 6], + [7, 8, 9], + [10, 3, 6], + [10, 50, 7], + [7, 3, 10], + [7, 9, 3], + [49, 0, 9], + [3, 9, 0], + [53, 54, 55], + [55, 56, 53], + [57, 56, 55], + [58, 59, 55], + [55, 54, 58], + [60, 61, 62], + [63, 58, 54], + [63, 60, 89], + [60, 63, 54], + [60, 54, 61], + [88, 61, 53], + [54, 53, 61], + [2, 1, 4], + [55, 59, 57] + ] + }, + { + "color": [22, 22, 22], + "faces": [ + [36, 15, 37], + [37, 38, 36], + [31, 39, 22], + [22, 21, 31], + [31, 15, 36], + [36, 39, 31], + [75, 69, 26], + [26, 80, 75], + [75, 80, 38], + [38, 37, 75], + [38, 80, 39], + [39, 36, 38], + [39, 80, 26], + [26, 22, 39] + ] + }, + { + "color": [215, 193, 179], + "faces": [ + [21, 20, 24], + [24, 31, 21], + [69, 71, 70], + [71, 69, 75] + ] + }, + { + "color": [192, 173, 158], + "faces": [ + [19, 20, 21], + [21, 22, 19], + [20, 19, 23], + [23, 24, 20], + [23, 25, 24], + [19, 22, 26], + [26, 27, 19], + [23, 28, 29], + [23, 29, 30], + [25, 23, 30], + [29, 51, 52], + [52, 30, 29], + [27, 26, 69], + [69, 70, 27], + [70, 71, 72], + [72, 27, 70], + [72, 71, 73], + [51, 74, 72], + [52, 51, 72], + [73, 52, 72], + [19, 27, 74], + [74, 28, 19], + [51, 29, 28], + [28, 74, 51], + [74, 27, 72], + [28, 23, 19] + ] + }, + { + "color": [205, 97, 22], + "faces": [ + [24, 34, 18], + [16, 13, 12], + [12, 17, 16], + [13, 16, 11], + [71, 68, 76], + [40, 67, 66], + [66, 65, 40], + [65, 64, 40] + ] + }, + { + "color": [35, 52, 71], + "faces": [ + [11, 12, 13], + [64, 65, 66] + ] + }, + { + "color": [228, 117, 31], + "faces": [ + [14, 15, 11], + [11, 16, 14], + [17, 12, 18], + [41, 64, 37], + [67, 68, 66] + ] + }, + { + "color": [226, 118, 27], + "faces": [ + [35, 4, 42], + [4, 1, 42], + [42, 43, 44], + [44, 35, 42], + [45, 43, 42], + [42, 10, 45], + [30, 32, 24], + [24, 25, 30], + [30, 33, 32], + [33, 30, 10], + [44, 43, 46], + [43, 45, 47], + [47, 46, 43], + [48, 47, 45], + [45, 30, 48], + [30, 45, 10], + [49, 42, 0], + [8, 7, 42], + [50, 42, 7], + [50, 10, 42], + [1, 0, 42], + [42, 9, 8], + [42, 49, 9], + [64, 41, 40], + [57, 59, 79], + [79, 81, 57], + [57, 81, 56], + [82, 79, 35], + [35, 44, 82], + [81, 79, 82], + [82, 83, 81], + [84, 63, 81], + [81, 83, 84], + [44, 46, 85], + [85, 82, 44], + [52, 73, 71], + [71, 78, 52], + [52, 78, 77], + [77, 63, 52], + [82, 85, 83], + [83, 85, 86], + [86, 84, 83], + [87, 52, 84], + [84, 86, 87], + [52, 63, 84], + [88, 53, 81], + [62, 81, 60], + [89, 60, 81], + [89, 81, 63], + [56, 81, 53], + [81, 62, 61], + [81, 61, 88], + [48, 87, 86], + [86, 47, 48], + [47, 86, 85], + [85, 46, 47], + [48, 30, 52], + [52, 87, 48] + ] + } + ], + "positions": [ + [111.0246, 52.6046, 46.2259], + [114.025, 87.6733, 58.9818], + [66.192, 80.898, 55.3943], + [72.1133, 35.4918, 30.8714], + [97.8045, 116.561, 73.9788], + [16.7623, 58.0109, 58.0782], + [52.6089, 30.3641, 42.5561], + [106.8814, 31.9455, 46.9133], + [113.4846, 38.6049, 49.1215], + [108.6633, 43.2332, 46.3154], + [101.2166, 15.9822, 46.3082], + [16.6605, -16.2883, 93.6187], + [40.775, -10.2288, 85.2764], + [23.9269, -2.5103, 86.7365], + [11.1691, -7.0037, 99.3776], + [9.5692, -34.3939, 141.672], + [12.596, 7.1655, 88.741], + [61.1809, 8.8142, 76.9968], + [39.7195, -28.9271, 88.9638], + [13.7962, -68.5757, 132.057], + [15.2674, -62.32, 129.688], + [14.8446, -52.6096, 140.113], + [12.8917, -49.7716, 144.741], + [35.6042, -71.758, 81.0639], + [47.4625, -68.6061, 63.3697], + [38.2486, -64.7302, 38.9099], + [-12.8917, -49.7716, 144.741], + [-13.7962, -68.5757, 132.057], + [17.8021, -71.758, 81.0639], + [19.1243, -69.0168, 49.4201], + [38.2486, -66.2756, 17.7762], + [12.8928, -36.7035, 141.672], + [109.284, -93.5899, 27.8243], + [122.118, -36.8894, 35.025], + [67.7668, -30.197, 78.4178], + [33.1807, 101.852, 25.3186], + [9.4063, -35.5898, 150.722], + [-9.5692, -34.3939, 141.672], + [-9.4063, -35.5898, 150.722], + [11.4565, -37.8994, 150.722], + [-12.596, 7.1655, 88.741], + [-11.1691, -7.0037, 99.3776], + [70.2365, 62.8362, -3.9475], + [47.2634, 54.294, -27.4148], + [28.7302, 91.7311, -24.9726], + [69.1676, 6.5862, -12.7757], + [28.7302, 49.1003, -48.3596], + [31.903, 5.692, -47.822], + [35.0758, -34.4329, -16.2809], + [115.2841, 48.6815, 48.6841], + [110.8428, 28.4821, 49.1762], + [-19.1243, -69.0168, 49.4201], + [-38.2486, -66.2756, 17.7762], + [-111.0246, 52.6046, 46.2259], + [-72.1133, 35.4918, 30.8714], + [-66.192, 80.898, 55.3943], + [-114.025, 87.6733, 58.9818], + [-97.8045, 116.561, 73.9788], + [-52.6089, 30.3641, 42.5561], + [-16.7623, 58.0109, 58.0782], + [-106.8814, 31.9455, 46.9133], + [-108.6633, 43.2332, 46.3154], + [-113.4846, 38.6049, 49.1215], + [-101.2166, 15.9822, 46.3082], + [-16.6605, -16.2883, 93.6187], + [-23.9269, -2.5103, 86.7365], + [-40.775, -10.2288, 85.2764], + [-61.1809, 8.8142, 76.9968], + [-39.7195, -28.9271, 88.9638], + [-14.8446, -52.6096, 140.113], + [-15.2674, -62.32, 129.688], + [-47.4625, -68.6061, 63.3697], + [-35.6042, -71.758, 81.0639], + [-38.2486, -64.7302, 38.9099], + [-17.8021, -71.758, 81.0639], + [-12.8928, -36.7035, 141.672], + [-67.7668, -30.197, 78.4178], + [-122.118, -36.8894, 35.025], + [-109.284, -93.5899, 27.8243], + [-33.1807, 101.852, 25.3186], + [-11.4565, -37.8994, 150.722], + [-70.2365, 62.8362, -3.9475], + [-28.7302, 91.7311, -24.9726], + [-47.2634, 54.294, -27.4148], + [-69.1676, 6.5862, -12.7757], + [-28.7302, 49.1003, -48.3596], + [-31.903, 5.692, -47.822], + [-35.0758, -34.4329, -16.2809], + [-115.2841, 48.6815, 48.6841], + [-110.8428, 28.4821, 49.1762] + ] +} diff --git a/app/manifest/_beta_modifications.json b/app/manifest/_beta_modifications.json new file mode 100644 index 000000000..a505eb7f4 --- /dev/null +++ b/app/manifest/_beta_modifications.json @@ -0,0 +1,27 @@ +{ + "browser_action": { + "default_icon": { + "16": "images/icon-16.png", + "19": "images/icon-19.png", + "32": "images/icon-32.png", + "38": "images/icon-38.png", + "64": "images/icon-64.png", + "128": "images/icon-128.png", + "512": "images/icon-512.png" + }, + "default_title": "MetaMask Beta" + }, + "icons": { + "16": "images/icon-16.png", + "19": "images/icon-19.png", + "32": "images/icon-32.png", + "38": "images/icon-38.png", + "48": "images/icon-48.png", + "64": "images/icon-64.png", + "128": "images/icon-128.png", + "512": "images/icon-512.png" + }, + "name": "__MSG_appName__ Beta", + "short_name": "__MSG_appName__ Beta", + "version": "" +} diff --git a/development/build/etc.js b/development/build/etc.js index 754a64f78..b64cb51bb 100644 --- a/development/build/etc.js +++ b/development/build/etc.js @@ -9,7 +9,12 @@ const { createTask, composeParallel } = require('./task'); module.exports = createEtcTasks; -function createEtcTasks({ browserPlatforms, livereload }) { +function createEtcTasks({ + browserPlatforms, + livereload, + isBeta, + betaVersionsMap, +}) { const clean = createTask('clean', async function clean() { await del(['./dist/*']); await Promise.all( @@ -27,18 +32,23 @@ function createEtcTasks({ browserPlatforms, livereload }) { const zip = createTask( 'zip', composeParallel( - ...browserPlatforms.map((platform) => createZipTask(platform)), + ...browserPlatforms.map((platform) => + createZipTask(platform, isBeta ? betaVersionsMap[platform] : undefined), + ), ), ); return { clean, reload, zip }; } -function createZipTask(target) { +function createZipTask(platform, betaVersion) { return async () => { + const path = betaVersion + ? `metamask-BETA-${platform}-${betaVersion}` + : `metamask-${platform}-${version}`; await pump( - gulp.src(`dist/${target}/**`), - gulpZip(`metamask-${target}-${version}.zip`), + gulp.src(`dist/${platform}/**`), + gulpZip(`${path}.zip`), gulp.dest('builds'), ); }; diff --git a/development/build/index.js b/development/build/index.js index 452b6bce0..8c682644e 100755 --- a/development/build/index.js +++ b/development/build/index.js @@ -4,6 +4,7 @@ // run any task with "yarn build ${taskName}" // const livereload = require('gulp-livereload'); +const { version } = require('../../package.json'); const { createTask, composeSeries, @@ -15,6 +16,7 @@ const createScriptTasks = require('./scripts'); const createStyleTasks = require('./styles'); const createStaticAssetTasks = require('./static'); const createEtcTasks = require('./etc'); +const { getNextBetaVersionMap } = require('./utils'); // packages required dynamically via browserify configuration in dependencies require('loose-envify'); @@ -34,17 +36,31 @@ defineAllTasks(); detectAndRunEntryTask(); function defineAllTasks() { + const IS_BETA = process.env.BUILD_TYPE === 'beta'; + const BETA_VERSIONS_MAP = getNextBetaVersionMap(version, browserPlatforms); + const staticTasks = createStaticAssetTasks({ livereload, browserPlatforms, shouldIncludeLockdown, + isBeta: IS_BETA, + }); + const manifestTasks = createManifestTasks({ + browserPlatforms, + isBeta: IS_BETA, + betaVersionsMap: BETA_VERSIONS_MAP, }); - const manifestTasks = createManifestTasks({ browserPlatforms }); const styleTasks = createStyleTasks({ livereload }); - const scriptTasks = createScriptTasks({ livereload, browserPlatforms }); + const scriptTasks = createScriptTasks({ + livereload, + browserPlatforms, + }); + const { clean, reload, zip } = createEtcTasks({ livereload, browserPlatforms, + isBeta: IS_BETA, + betaVersionsMap: BETA_VERSIONS_MAP, }); // build for development (livereload) diff --git a/development/build/manifest.js b/development/build/manifest.js index 09df35cbd..679119a26 100644 --- a/development/build/manifest.js +++ b/development/build/manifest.js @@ -4,12 +4,17 @@ const { merge, cloneDeep } = require('lodash'); const baseManifest = require('../../app/manifest/_base.json'); const { version } = require('../../package.json'); +const betaManifestModifications = require('../../app/manifest/_beta_modifications.json'); const { createTask, composeSeries } = require('./task'); module.exports = createManifestTasks; -function createManifestTasks({ browserPlatforms }) { +function createManifestTasks({ + browserPlatforms, + isBeta = false, + betaVersionsMap = {}, +}) { // merge base manifest with per-platform manifests const prepPlatforms = async () => { return Promise.all( @@ -26,8 +31,10 @@ function createManifestTasks({ browserPlatforms }) { ); const result = merge( cloneDeep(baseManifest), - { version }, platformModifications, + isBeta + ? getBetaModifications(platform, betaVersionsMap) + : { version }, ); const dir = path.join('.', 'dist', platform); await fs.mkdir(dir, { recursive: true }); @@ -105,3 +112,13 @@ async function readJson(file) { async function writeJson(obj, file) { return fs.writeFile(file, JSON.stringify(obj, null, 2)); } + +function getBetaModifications(platform, betaVersionsMap) { + const betaVersion = betaVersionsMap[platform]; + + return { + ...betaManifestModifications, + version: betaVersion, + ...(platform === 'firefox' ? {} : { version_name: 'beta' }), + }; +} diff --git a/development/build/scripts.js b/development/build/scripts.js index f21737a1d..396fff821 100644 --- a/development/build/scripts.js +++ b/development/build/scripts.js @@ -37,6 +37,7 @@ const metamaskrc = require('rc')('metamask', { const { streamFlatMap } = require('../stream-flat-map.js'); const { version } = require('../../package.json'); + const { createTask, composeParallel, @@ -548,6 +549,7 @@ function getEnvironmentVariables({ devMode, testing }) { METAMASK_DEBUG: devMode, METAMASK_ENVIRONMENT: environment, METAMASK_VERSION: version, + METAMASK_BUILD_TYPE: process.env.BUILD_TYPE || 'main', NODE_ENV: devMode ? 'development' : 'production', IN_TEST: testing ? 'true' : false, PUBNUB_SUB_KEY: process.env.PUBNUB_SUB_KEY || '', diff --git a/development/build/static.js b/development/build/static.js index ed7e9290a..341b7d56b 100644 --- a/development/build/static.js +++ b/development/build/static.js @@ -13,15 +13,26 @@ module.exports = function createStaticAssetTasks({ livereload, browserPlatforms, shouldIncludeLockdown = true, + isBeta, }) { const [copyTargetsProd, copyTargetsDev] = getCopyTargets( shouldIncludeLockdown, ); + const copyTargetsBeta = [ + ...copyTargetsProd, + { + src: './app/build-types/beta/', + dest: `images`, + }, + ]; + + const targets = isBeta ? copyTargetsBeta : copyTargetsProd; + const prod = createTask( 'static:prod', composeSeries( - ...copyTargetsProd.map((target) => { + ...targets.map((target) => { return async function copyStaticAssets() { await performCopy(target); }; diff --git a/development/build/utils.js b/development/build/utils.js new file mode 100644 index 000000000..4c020142f --- /dev/null +++ b/development/build/utils.js @@ -0,0 +1,25 @@ +// Returns an object with browser as key and next version of beta +// as the value. Ex: { firefox: '9.6.0.beta0', chrome: '9.6.0.1' } +function getNextBetaVersionMap(currentVersion, platforms) { + // `yarn beta 3` would create version 9.x.x.3 + const [, premajor = '0'] = process.argv.slice(2); + const [major, minor] = currentVersion.split('.'); + + return platforms.reduce((platformMap, platform) => { + platformMap[platform] = [ + // Keeps the current major + major, + // Bump the minor version + Number(minor) + 1, + // This isn't typically used + 0, + // The beta number + `${platform === 'firefox' ? 'beta' : ''}${premajor}`, + ].join('.'); + return platformMap; + }, {}); +} + +module.exports = { + getNextBetaVersionMap, +}; diff --git a/package.json b/package.json index 626ee32f7..2731e652f 100644 --- a/package.json +++ b/package.json @@ -12,6 +12,7 @@ "start": "yarn build:dev dev", "start:lavamoat": "yarn build dev", "dist": "yarn build prod", + "beta": "BUILD_TYPE=beta yarn build prod", "build": "lavamoat development/build/index.js", "build:dev": "node development/build/index.js", "start:test": "yarn build testDev", @@ -109,7 +110,7 @@ "@metamask/eth-token-tracker": "^3.0.1", "@metamask/etherscan-link": "^2.1.0", "@metamask/jazzicon": "^2.0.0", - "@metamask/logo": "^2.5.0", + "@metamask/logo": "^3.0.1", "@metamask/obs-store": "^5.0.0", "@metamask/post-message-stream": "^4.0.0", "@metamask/providers": "^8.1.1", diff --git a/ui/components/app/account-menu/account-menu.component.js b/ui/components/app/account-menu/account-menu.component.js index aec8decfb..41c809be8 100644 --- a/ui/components/app/account-menu/account-menu.component.js +++ b/ui/components/app/account-menu/account-menu.component.js @@ -20,6 +20,8 @@ import { import TextField from '../../ui/text-field'; import SearchIcon from '../../ui/search-icon'; +import { isBeta } from '../../../helpers/utils/build-types'; + export function AccountMenuItem(props) { const { icon, children, text, subText, className, onClick } = props; @@ -310,6 +312,13 @@ export default class AccountMenu extends Component { return null; } + let supportText = t('support'); + let supportLink = 'https://support.metamask.io'; + if (isBeta()) { + supportText = t('needHelpSubmitTicket'); + supportLink = 'https://metamask.zendesk.com/hc/en-us/requests/new'; + } + return (
@@ -410,10 +419,10 @@ export default class AccountMenu extends Component {
{ - global.platform.openTab({ url: 'https://support.metamask.io' }); + global.platform.openTab({ url: supportLink }); }} - icon={{t('support')}} - text={t('support')} + icon={{supportText}} + text={supportText} /> { const horizontalMiddle = left + width / 2; const verticalMiddle = top + height / 2; @@ -43,6 +45,7 @@ export default class Mascot extends Component { pxNotRatio: true, width, height, + meshJson: getBuildSpecificAsset('foxMeshJson'), }); this.mascotContainer = createRef(); diff --git a/ui/components/ui/metafox-logo/metafox-logo.component.js b/ui/components/ui/metafox-logo/metafox-logo.component.js index 2b0b36c87..cdebd67c0 100644 --- a/ui/components/ui/metafox-logo/metafox-logo.component.js +++ b/ui/components/ui/metafox-logo/metafox-logo.component.js @@ -1,19 +1,22 @@ import React, { PureComponent } from 'react'; import PropTypes from 'prop-types'; import classnames from 'classnames'; +import { getBuildSpecificAsset } from '../../../helpers/utils/build-types'; export default class MetaFoxLogo extends PureComponent { static propTypes = { onClick: PropTypes.func, unsetIconHeight: PropTypes.bool, + useDark: PropTypes.bool, }; static defaultProps = { onClick: undefined, + useDark: false, }; render() { - const { onClick, unsetIconHeight } = this.props; + const { onClick, unsetIconHeight, useDark } = this.props; const iconProps = unsetIconHeight ? {} : { height: 42, width: 42 }; return ( @@ -25,7 +28,11 @@ export default class MetaFoxLogo extends PureComponent { > - + - +
🎉
{t('congratulations')}
diff --git a/ui/pages/first-time-flow/metametrics-opt-in/metametrics-opt-in.component.js b/ui/pages/first-time-flow/metametrics-opt-in/metametrics-opt-in.component.js index 4e13ca634..2ba9a4648 100644 --- a/ui/pages/first-time-flow/metametrics-opt-in/metametrics-opt-in.component.js +++ b/ui/pages/first-time-flow/metametrics-opt-in/metametrics-opt-in.component.js @@ -2,6 +2,7 @@ import React, { Component } from 'react'; import PropTypes from 'prop-types'; import MetaFoxLogo from '../../../components/ui/metafox-logo'; import PageContainerFooter from '../../../components/ui/page-container/page-container-footer'; +import { isBeta } from '../../../helpers/utils/build-types'; export default class MetaMetricsOptIn extends Component { static propTypes = { @@ -30,7 +31,7 @@ export default class MetaMetricsOptIn extends Component { return (
- +
diff --git a/ui/pages/first-time-flow/seed-phrase/seed-phrase.component.js b/ui/pages/first-time-flow/seed-phrase/seed-phrase.component.js index 612e86c77..db31f3c39 100644 --- a/ui/pages/first-time-flow/seed-phrase/seed-phrase.component.js +++ b/ui/pages/first-time-flow/seed-phrase/seed-phrase.component.js @@ -11,6 +11,7 @@ import { DEFAULT_ROUTE, } from '../../../helpers/constants/routes'; import MetaFoxLogo from '../../../components/ui/metafox-logo'; +import { isBeta } from '../../../helpers/utils/build-types'; import ConfirmSeedPhrase from './confirm-seed-phrase'; import RevealSeedPhrase from './reveal-seed-phrase'; import SeedPhraseIntro from './seed-phrase-intro'; @@ -50,7 +51,7 @@ export default class SeedPhrase extends PureComponent { return (
- + - +
diff --git a/ui/pages/first-time-flow/welcome/beta-welcome-footer.component.js b/ui/pages/first-time-flow/welcome/beta-welcome-footer.component.js new file mode 100644 index 000000000..e7ebd921d --- /dev/null +++ b/ui/pages/first-time-flow/welcome/beta-welcome-footer.component.js @@ -0,0 +1,27 @@ +import React from 'react'; +import { useI18nContext } from '../../../hooks/useI18nContext'; + +const BetaWelcomeFooter = () => { + const t = useI18nContext(); + + return ( + <> +
{t('betaWelcome')}
+
+

{t('betaMetamaskDescription')}

+

+ {t('betaMetamaskDescriptionExplanation', [ + + {t('betaMetamaskDescriptionExplanationTermsLinkText')} + , + + {t('betaMetamaskDescriptionExplanationBetaTermsLinkText')} + , + ])} +

+
+ + ); +}; + +export default BetaWelcomeFooter; diff --git a/ui/pages/first-time-flow/welcome/index.scss b/ui/pages/first-time-flow/welcome/index.scss index 7ccf6ad64..fdb190d12 100644 --- a/ui/pages/first-time-flow/welcome/index.scss +++ b/ui/pages/first-time-flow/welcome/index.scss @@ -27,8 +27,15 @@ &__description { text-align: center; - div { + p { @include Paragraph; + + text-align: start; + margin-bottom: 22px; + } + + a { + color: $primary-1; } @media screen and (max-width: 575px) { diff --git a/ui/pages/first-time-flow/welcome/welcome-footer.component.js b/ui/pages/first-time-flow/welcome/welcome-footer.component.js new file mode 100644 index 000000000..93f42fa97 --- /dev/null +++ b/ui/pages/first-time-flow/welcome/welcome-footer.component.js @@ -0,0 +1,18 @@ +import React from 'react'; +import { useI18nContext } from '../../../hooks/useI18nContext'; + +const WelcomeFooter = () => { + const t = useI18nContext(); + + return ( + <> +
{t('welcome')}
+
+

{t('metamaskDescription')}

+

{t('happyToSeeYou')}

+
+ + ); +}; + +export default WelcomeFooter; diff --git a/ui/pages/first-time-flow/welcome/welcome.component.js b/ui/pages/first-time-flow/welcome/welcome.component.js index 43d81b4fa..20a929372 100644 --- a/ui/pages/first-time-flow/welcome/welcome.component.js +++ b/ui/pages/first-time-flow/welcome/welcome.component.js @@ -7,6 +7,9 @@ import { INITIALIZE_CREATE_PASSWORD_ROUTE, INITIALIZE_SELECT_ACTION_ROUTE, } from '../../../helpers/constants/routes'; +import { isBeta } from '../../../helpers/utils/build-types'; +import WelcomeFooter from './welcome-footer.component'; +import BetaWelcomeFooter from './beta-welcome-footer.component'; export default class Welcome extends PureComponent { static propTypes = { @@ -50,11 +53,7 @@ export default class Welcome extends PureComponent { width="125" height="125" /> -
{t('welcome')}
-
-
{t('metamaskDescription')}
-
{t('happyToSeeYou')}
-
+ {isBeta() ? : }
diff --git a/ui/pages/routes/routes.component.js b/ui/pages/routes/routes.component.js index d70256e17..e4a7a4e16 100644 --- a/ui/pages/routes/routes.component.js +++ b/ui/pages/routes/routes.component.js @@ -61,6 +61,7 @@ import { ENVIRONMENT_TYPE_POPUP, } from '../../../shared/constants/app'; import { getEnvironmentType } from '../../../app/scripts/lib/util'; +import { isBeta } from '../../helpers/utils/build-types'; import { TRANSACTION_STATUSES } from '../../../shared/constants/transaction'; import ConfirmationPage from '../confirmation'; @@ -305,6 +306,7 @@ export default class Routes extends Component { [`os-${os}`]: os, [`browser-${browser}`]: browser, 'mouse-user-styles': isMouseUser, + 'beta': isBeta(), })} dir={textDirection} onClick={() => setMouseUserState(true)} diff --git a/ui/pages/settings/info-tab/info-tab.component.js b/ui/pages/settings/info-tab/info-tab.component.js index d601cbe74..753774567 100644 --- a/ui/pages/settings/info-tab/info-tab.component.js +++ b/ui/pages/settings/info-tab/info-tab.component.js @@ -1,6 +1,7 @@ import React, { PureComponent } from 'react'; import PropTypes from 'prop-types'; import Button from '../../../components/ui/button'; +import { isBeta } from '../../../helpers/utils/build-types'; export default class InfoTab extends PureComponent { state = { @@ -97,7 +98,7 @@ export default class InfoTab extends PureComponent {
- {t('metamaskVersion')} + {isBeta() ? t('betaMetamaskVersion') : t('metamaskVersion')}
{this.state.version} @@ -110,7 +111,7 @@ export default class InfoTab extends PureComponent { {this.renderInfoLinks()}
- +
); diff --git a/yarn.lock b/yarn.lock index bf906a850..a560f8b5a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2856,10 +2856,10 @@ color "^0.11.3" mersenne-twister "^1.1.0" -"@metamask/logo@^2.5.0": - version "2.5.0" - resolved "https://registry.yarnpkg.com/@metamask/logo/-/logo-2.5.0.tgz#4d35bf9e427db66c0030d81b8faa0f5162d17f7a" - integrity sha512-SBgWhcbKj0+efpFVAHf5Jh7URGMhH3Os06sgmERui+dvgXMEIBrt2aEeGRXe1aKKRSOhruazHknpdLdqyEvNjA== +"@metamask/logo@^3.0.1": + version "3.0.1" + resolved "https://registry.yarnpkg.com/@metamask/logo/-/logo-3.0.1.tgz#9c0758d9abc56345c5e4ed01cac22a6d2d452793" + integrity sha512-EV1BqyUI/GX1X9pTIydBRZ94c7Zx4Vlsl6V/zIOqk8Zw9mhlLG46lRQSBCq8syCvuGeKVMj/1LYsf/sNVf/SsA== dependencies: gl-mat4 "1.1.4" gl-vec3 "1.0.3"