on master help sign in
Merge pull request #345 from urbit/mino

Bridge 2.0.0: mino

commitf08b3ccc73726ceccc2bea34a45fc7d31dfd1488 authorFang <git@fang.io> dateMon 2 Dec 2019, 19:21 (7 years ago) parentcb2d0610ee6a9b
395 files changed+29449−61163
.env.development+1 .eslintignore+1 .eslintrc+14 .prettierrc.json+7 DEVELOPMENT.md+99 README.md+23−118 config-overrides.js+13 find-gas-usage.js+114 jsconfig.json+5 package-lock.json+8486−9896 package.json+68−35 public/index.html+9−1 public/spritesheet_a.png src/Bridge.js+85 src/Root.js−97 src/assets/back.svg+4 src/assets/copy.svg+7 src/bridge/Bridge.js−341 src/bridge/components/Anchor.js−33 src/bridge/components/Base.js−210 src/bridge/components/Blockie.js−12 src/bridge/components/Breadcrumb.js−12 src/bridge/components/BreadcrumbItem.js−12 src/bridge/components/Button.js−30 src/bridge/components/Checkbox.js−47 src/bridge/components/CheckboxButton.js−62 src/bridge/components/Code.js−37 src/bridge/components/Col.js−29 src/bridge/components/Container.js−29 src/bridge/components/DropdownDivider.js−12 src/bridge/components/DropdownItem.js−38 src/bridge/components/FlexCol.js−29 src/bridge/components/FlexRow.js−26 src/bridge/components/Footer.js−23 src/bridge/components/Form.js−29 src/bridge/components/H1.js−26 src/bridge/components/H2.js−26 src/bridge/components/H3.js−26 src/bridge/components/H4.js−26 src/bridge/components/Header.js−54 src/bridge/components/HorizontalSelector.js−57 src/bridge/components/InnerLabel.js−26 src/bridge/components/InnerLabelDropdown.js−114 src/bridge/components/Input.js−73 src/bridge/components/InputCaption.js−26 src/bridge/components/Label.js−26 src/bridge/components/OldHeader.js−52 src/bridge/components/OldLink.js−127 src/bridge/components/OldTextArea.js−129 src/bridge/components/P.js−37 src/bridge/components/PointList.js−29 src/bridge/components/ProtoAnchor.js−32 src/bridge/components/ProtoButton.js−40 src/bridge/components/ProtoInput.js−68 src/bridge/components/ProtoTextarea.js−64 src/bridge/components/ReactSVGComponents.js−63 src/bridge/components/RenderedPoint.js−56 src/bridge/components/Row.js−28 src/bridge/components/RowCol.js−30 src/bridge/components/ShowBlockie.js−81 src/bridge/components/Spacing.js−32 src/bridge/components/StatelessTransaction.js−497 src/bridge/components/Textarea.js−74 src/bridge/components/UploadButton.js−29 src/bridge/components/ValidatedBlockie.js−66 src/bridge/components/ValidatedSigil.js−79 src/bridge/components/Warning.js−28 src/bridge/components/advancedInput.js−152 src/bridge/components/icons/Chevron.js−30 src/bridge/lib/base.js−9 src/bridge/lib/child.js−20 src/bridge/lib/error.js−46 src/bridge/lib/keys.js−151 src/bridge/lib/ledger.js−31 src/bridge/lib/lib.js−43 src/bridge/lib/network.js−22 src/bridge/lib/proxy.js−21 src/bridge/lib/router.js−189 src/bridge/lib/transformers.js−18 src/bridge/lib/trezor.js−39 src/bridge/lib/txn.js−211 src/bridge/lib/validators.js−190 src/bridge/lib/wallet.js−123 src/bridge/style/anchor.css−31 src/bridge/style/base.css−13101 src/bridge/style/button.css−121 src/bridge/style/extend.css−487 src/bridge/style/index.css−7 src/bridge/style/input.css−57 src/bridge/views/AcceptTransfer.js−140 src/bridge/views/CancelTransfer.js−102 src/bridge/views/CreateGalaxy.js−232 src/bridge/views/GenKeyfile.js−157 src/bridge/views/IssueChild.js−283 src/bridge/views/Keystore.js−168 src/bridge/views/Landing.js−68 src/bridge/views/Ledger.js−211 src/bridge/views/Mnemonic.js−176 src/bridge/views/Network.js−145 src/bridge/views/Point.js−148 src/bridge/views/Point/Actions.js−222 src/bridge/views/Point/KeysAndMetadata.js−181 src/bridge/views/Points.js−251 src/bridge/views/PrivateKey.js−85 src/bridge/views/SentTransaction.js−196 src/bridge/views/SetKeys.js−222 src/bridge/views/SetProxy.js−211 src/bridge/views/Shards.js−231 src/bridge/views/Ticket.js−181 src/bridge/views/Transfer.js−150 src/bridge/views/Trezor.js−149 src/bridge/views/ViewPoint.js−88 src/bridge/views/Wallet.js−101 src/common/components/AppNavigation.js−43 src/common/style/base.css−12788 src/common/style/fonts64/SF-Pro-Text-Light.css−1 src/common/style/fonts64/SF-Pro-Text-Medium.css−1 src/common/style/fonts64/SF-Pro-Text-Regular.css−1 src/common/style/fonts64/SF-Pro-Text-Semibold.css−1 src/common/style/fonts64/SourceCodePro-Bold.css−1 src/common/style/fonts64/SourceCodePro-Regular.css−1 src/common/style/fonts64/WorkSans-Medium.css−1 src/common/style/fonts64/WorkSans-SemiBold.css−1 src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-Black.woff src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-Black.woff2 src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-BlackItalic.woff src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-BlackItalic.woff2 src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-Bold.woff src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-Bold.woff2 src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-BoldItalic.woff src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-BoldItalic.woff2 src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-ExtraBold.woff src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-ExtraBold.woff2 src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-ExtraBoldItalic.woff src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-ExtraBoldItalic.woff2 src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-Italic.woff src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-Italic.woff2 src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-Medium.woff src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-Medium.woff2 src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-MediumItalic.woff src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-MediumItalic.woff2 src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-Regular.woff src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-Regular.woff2 src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-SemiBold.woff src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-SemiBold.woff2 src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-SemiBoldItalic.woff src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-SemiBoldItalic.woff2 src/common/style/fontstack/Inter UI (web hinted)/inter-ui.css−147 src/common/style/index.css−17 src/components/Accordion.js+63 src/components/AspectRatio.js+22 src/components/Blinky.js+47 src/components/Buttons.js+34 src/components/CopiableAddress.js+8 src/components/CopiableWithTooltip.js+29 src/components/CopyButton.js+29 src/components/Crumbs.js+32 src/components/DownloadKeyfileButton.js+33 src/components/DownloadSigilButton.js+72 src/components/Footer.js+9 src/components/FooterButton.js+17 src/components/GlobalErrorBoundary.js+74 src/components/Greeting.js+80 src/components/Header.js+17 src/components/Highlighted.js+22 src/components/InlineEthereumTransaction.js+311 src/components/InputSigil.js+47 src/components/LoadingBar.js+19 src/components/MaybeSigil.js+21 src/components/MiniBackButton.js+13 src/components/NavHeader.js+9 src/components/NeedFundsNotice.js+25 src/components/NoticeBox.js+11 src/components/PaperBuilder.js+17 src/components/Passport.js+329 src/components/ProgressButton.js+30 src/components/Router.js+9 src/components/Sigil.js+13 src/components/Steps.js+11 src/components/Tabs.js+49 src/components/UploadButton.js+21 src/components/View.js+106 src/components/ViewHeader.js+7 src/components/WarningBox.js+11 src/components/WithErrorBoundary.js+20 src/components/WithTooltip.js+23 src/form/BridgeForm.js+47 src/form/Condition.js+11 src/form/FormError.js+34 src/form/Inputs.js+198 src/form/SubmitButton.js+71 src/form/UploadInput.js+51 src/form/ValidationPauser.js+27 src/form/ValuesHandler.js+18 src/form/formatters.js+79 src/form/helpers.js+5 src/form/validators.js+166 src/index.js+39−8 src/indigo-react/README.md+4 src/indigo-react/components/AccessoryIcon.js+32 src/indigo-react/components/Button.js+80 src/indigo-react/components/CheckboxInput.js+62 src/indigo-react/components/Flex.js+64 src/indigo-react/components/Grid.js+70 src/indigo-react/components/IconButton.js+56 src/indigo-react/components/IndigoApp.js+12 src/indigo-react/components/Input.js+128 src/indigo-react/components/LinkButton.js+35 src/indigo-react/components/SelectInput.js+139 src/indigo-react/components/ToggleInput.js+67 src/indigo-react/components/Typography.js+22 src/indigo-react/index.js+13 src/indigo-react/indigo.css+6779 src/indigo-react/lib/useOnClickOutside.js+23 src/lib/LocalRouter.js+9 src/lib/MediaQuery.js+24 src/lib/SigilDownloader.js+45 src/lib/base.js+6 src/lib/capitalize.js+1 src/lib/card.js+190 src/lib/child.js+20 src/lib/constants.js+93 src/bridge/lib/contracts.js → src/lib/contracts.js+8−9 src/lib/convertToInt.js+17 src/lib/dateFormat.js+13 src/lib/error.js+41 src/lib/explorer.js+33 src/lib/flags.js+2 src/lib/getSuggestedGasPrice.js+33 src/lib/invite.js+34 src/lib/inviteMail.js+43 src/lib/isPromise.js+6 src/lib/keys.js+195 src/lib/ledger.js+24 src/lib/lib.js+57 src/lib/metamask.js+27 src/lib/need.js+62 src/lib/nest.js+7 src/lib/network.js+19 src/lib/networkCode.js+50 src/lib/patp2dec.js+11 src/lib/pluralize.js+8 src/lib/proxy.js+36 src/lib/reticket.js+219 src/lib/routeNames.js+23 src/lib/router.js+33 src/bridge/lib/state.js → src/lib/state.js+5−17 src/lib/tank.js+134 src/lib/timeout.js+1 src/lib/trezor.js+39 src/lib/txn.js+221 src/lib/useBreakpoints.js+5 src/lib/useConstant.js+13 src/lib/useCopiable.js+23 src/lib/useCurrentPermissions.js+17 src/lib/useCurrentPointName.js+12 src/lib/useDeepEqualReference.js+22 src/lib/useEthereumTransaction.js+315 src/lib/useGasPrice.js+48 src/lib/useHasDisclaimed.js+7 src/lib/useImpliedPoint.js+14 src/lib/useImpliedTicket.js+14 src/lib/useInterval.js+22 src/lib/useInvites.js+7 src/lib/useIsEclipticOwner.js+25 src/lib/useKeyfileGenerator.js+131 src/lib/useLifecycle.js+6 src/lib/useLocalStorageState.js+43 src/lib/useLoginView.js+17 src/lib/useMailer.js+46 src/lib/useMedia.js+31 src/lib/usePermissionsForPoint.js+107 src/lib/usePointBirthday.js+7 src/lib/usePreviousValue.js+16 src/lib/useRejectedIncomingPointTransfers.js+19 src/lib/useRenderCount.js+7 src/lib/useRouter.js+136 src/lib/useSetState.js+16 src/lib/useSyncPoints.js+32 src/lib/useWasGreeted.js+7 src/lib/validators.js+104 src/lib/wallet.js+108 src/lib/walletgen.js+80 src/bridge/nockjs/TODO → src/nockjs/TODO src/bridge/nockjs/bits.js → src/nockjs/bits.js src/bridge/nockjs/compiler.js → src/nockjs/compiler.js src/bridge/nockjs/hamt.js → src/nockjs/hamt.js src/bridge/nockjs/list.js → src/nockjs/list.js src/bridge/nockjs/noun.js → src/nockjs/noun.js src/bridge/nockjs/serial.js → src/nockjs/serial.js src/bridge/nockjs/test/ack.js → src/nockjs/test/ack.js src/bridge/nockjs/test/add.js → src/nockjs/test/add.js src/bridge/nockjs/test/bits.js → src/nockjs/test/bits.js src/bridge/nockjs/test/decrement.js → src/nockjs/test/decrement.js src/bridge/nockjs/test/hamt.js → src/nockjs/test/hamt.js src/bridge/nockjs/test/noun.js → src/nockjs/test/noun.js src/bridge/nockjs/test/serial.js → src/nockjs/test/serial.js src/store/Provider.js+22 src/store/history.js+35 src/store/lib/useBirthdaysStore.js+59 src/store/lib/useControlledPointsStore.js+65 src/store/lib/useDetailsStore.js+50 src/store/lib/useEclipticOwnerStore.js+26 src/store/lib/useInvitesStore.js+57 src/store/lib/usePointStore.js+58 src/store/lib/useRekeyDateStore.js+79 src/store/network.js+119 src/store/online.js+66 src/store/pointCache.js+28 src/store/pointCursor.js+37 src/store/txnCursor.js+35 src/store/wallet.js+157 src/style/Inter-Medium.css+1 src/style/Inter-Regular.css+1 src/style/Inter-SemiBold.css+1 src/style/SourceCodePro-Medium.css+1 src/style/SourceCodePro-Regular.css+1 src/style/SourceCodePro-SemiBold.css+1 src/style/anim.css+460 src/style/bridge.scss+16 src/style/fonts64.scss+6 src/style/form-reset.scss+107 src/style/index.scss+14 src/style/indigo-proposals.scss+58 src/views/AcceptTransfer.js+93 src/views/Activate.js+45 src/views/Activate/ActivateCode.js+218 src/views/Activate/ActivateFlow.js+9 src/views/Activate/ActivatePassport.js+84 src/views/Activate/PassportDownload.js+91 src/views/Activate/PassportTransfer.js+198 src/views/Activate/PassportVerify.js+103 src/views/Activate/PassportView.js+27 src/views/Activate/useActivateFlowState.js+28 src/views/Admin.js+76 src/views/Admin/AdminCancelTransfer.js+84 src/views/Admin/AdminEditPermissions.js+130 src/views/Admin/AdminHome.js+106 src/views/Admin/AdminNetworkingKeys.js+401 src/views/Admin/AdminRedownload.js+72 src/views/Admin/AdminReticket.js+62 src/views/Admin/AdminSetProxy.js+238 src/views/Admin/AdminTransfer.js+113 src/views/Admin/Reticket/ReticketConfirm.js+91 src/views/Admin/Reticket/ReticketDownload.js+39 src/views/Admin/Reticket/ReticketExecute.js+178 src/views/Admin/Reticket/ReticketVerify.js+71 src/views/CancelTransfer.js+16 src/views/CreateGalaxy.js+166 src/views/Disclaimer.js+108 src/views/Invite.js+89 src/views/Invite/InviteEmail.js+639 src/views/Invite/InviteUrl.js+53 src/views/IssueChild.js+196 src/views/Login.js+98 src/views/Login/Advanced.js+37 src/views/Login/Hardware.js+52 src/views/Login/Keystore.js+92 src/views/Login/Ledger.js+221 src/views/Login/Metamask.js+68 src/views/Login/Mnemonic.js+110 src/views/Login/Other.js+67 src/views/Login/PrivateKey.js+63 src/views/Login/Ticket.js+241 src/views/Login/Trezor.js+147 src/views/Party/PartySetPoolSize.js+168 src/views/Point.js+146 src/views/Points.js+351 src/walletgen/Walletgen.js−147 src/walletgen/components/Button.js−13 src/walletgen/components/CheckBox.js−38 src/walletgen/components/EulaText.js−146 src/walletgen/components/Footer.js−46 src/walletgen/components/Header.js−86 src/walletgen/components/InputBox.js−31 src/walletgen/components/ReactSVGComponents.js−63 src/walletgen/components/UploadButton.js−30 src/walletgen/index.js−8 src/walletgen/lib/constants.js−65 src/walletgen/lib/lib.js−9 src/walletgen/style/base.css−12790 src/walletgen/style/index.css−474 src/walletgen/style/type.css−72 src/walletgen/views/BrowserWarning.js−14 src/walletgen/views/Custody.js−36 src/walletgen/views/Done.js−63 src/walletgen/views/Download.js−147 src/walletgen/views/Eula.js−49 src/walletgen/views/EulaView.js−37 src/walletgen/views/Generate.js−497 src/walletgen/views/NetworkWarning.js−14 src/walletgen/views/PrivacyPolicy.js−443 src/walletgen/views/Understand.js−43 src/walletgen/views/Upload.js−252 src/walletgen/views/Welcome.js−37
.env.development+1
@@ -2,3 +2,4 @@ REACT_APP_DEV_MNEMONIC='benefit crew supreme gesture quantum web media hazard th
22REACT_APP_DEV_GALAXY_TICKET='~wacfus-dabpex-danted-mosfep-pasrud-lavmer-nodtex-taslus-pactyp-milpub-pildeg-fornev-ralmed-dinfeb-fopbyr-sanbet-sovmyl-dozsut-mogsyx-mapwyc-sorrup-ricnec-marnys-lignex'
33REACT_APP_ROPSTEN_KEY='b7d2af9f01534031ba773374f766ef65'
44REACT_APP_HD_PATH="m/44'/60'/0'/0/0"
5+REACT_APP_STUB_LOCAL='false'
.eslintignorenew file+1
@@ -0,0 +1 @@
1+nockjs/
.eslintrcnew file+14
@@ -0,0 +1,14 @@
1+{
2+ "extends": [
3+ "react-app",
4+ "prettier",
5+ "prettier/react"
6+ ],
7+ "plugins": [
8+ "prettier",
9+ "react-hooks"
10+ ],
11+ "rules": {
12+ "prettier/prettier": "error"
13+ }
14+}
.prettierrc.jsonnew file+7
@@ -0,0 +1,7 @@
1+{
2+ "semi": true,
3+ "singleQuote": true,
4+ "trailingComma": "es5",
5+ "jsxBracketSameLine": true,
6+ "printWidth": 80
7+}
DEVELOPMENT.mdnew file+99
@@ -0,0 +1,99 @@
1+# Development notes
2+
3+## Install / Build
4+
5+Clone the repo, and use a simple `npm install`. You can then use a `npm run build` to create an optimised static build (serve it with e.g. [serve](http://npmjs.com/package/serve), or with python as described above).
6+
7+## General notes
8+
9+For development, use `npm run pilot` to get going after a `npm install`. This
10+will boot up a [Ganache](https://github.com/trufflesuite/ganache-cli) node in the background, deploy the Azimuth contracts to
11+it, and fire up a local webserver. Bridge will be served on `localhost:3000`.
12+
13+Note that one of our dependencies itself depends on a library called
14+`handle-thing` which breaks under the Ledger support requirements (see below)
15+on node 11.1.0, so make sure you're using some other node version.
16+
17+You can use [nvm](https://github.com/creationix/nvm), for example, and do:
18+
19+```
20+$ nvm install 11.0.0
21+$ nvm use v11.0.0
22+```
23+
24+before running `npm run pilot`.
25+
26+## Useful accounts
27+
28+The ecliptic owner is the only account that's able to create galaxies, so
29+it's a good place to get started. On the testnet, it's the address:
30+
31+```
32+0x6DEfFb0caFDB11D175F123F6891AA64F01c24F7d
33+```
34+
35+You can authenticate as it using the following mnemonic:
36+
37+```
38+benefit crew supreme gesture quantum web media hazard theory mercy wing kitten
39+```
40+
41+Under that mnemonic, Ganache will also auto-populate the following accounts
42+with 100 ETH:
43+
44+```
45+0x6deffb0cafdb11d175f123f6891aa64f01c24f7d
46+0xd53208cf45fc9bd7938b200bff8814a26146688f
47+0x7b2a2d51e4d8fac602e20a5f6907ff9fbd88e1fd
48+0xf48062ae8bafd6ef19cd6cb89db93a0d0ca6ce26
49+0xf84a77aeb351c49dfa87e805a659d2daddff7606
50+0x167e357cf8b845370d0d408f9b389b66185b7b5b
51+0xcbecf3abc9878f07afc851aead2d8f1c436cc71d
52+0x0afc0c3f4eeea500871f464ca71eef5e54a9af36
53+0x6d654ef2489674d21aed428e8a4ad8ca4820f125
54+0x218f6f87683db546ad47a5dc8b480e5a9b694866
55+```
56+
57+To play around with any of these, authenticate using the same mnemonic, but
58+use a custom HD path of `m/44'/60'/0'/0/1`, `m/44'/60'/0'/0/2`, and so on.
59+
60+## Initial development state
61+
62+You can also tweak a couple of things to change your development state
63+somewhat (say, for example, you want to start on the points list screen, instead
64+of having to re-authenticate whenever you make a change or refresh the page):
65+
66+- The `.env.development` file contains environment variables that you can
67+ provide to the application when it's running in development. You can access
68+ them via `process.env.REACT_APP_<whatever>`.
69+
70+- Set `REACT_APP_STUB_LOCAL='true'` in `.env.development` to enabled stubbing of
71+ certain methods throughout the app.
72+
73+- The top of the Bridge component in `src/Bridge.js` can be tweaked for setting
74+ your initial state. You can provide a specific wallet,
75+ network type, and so on.
76+
77+## HTTPS
78+
79+For development, you can enable HTTPS on localhost without a certificate for
80+Chrome by pasting the following into the URL bar:
81+
82+```
83+chrome://flags/#allow-insecure-localhost
84+```
85+
86+In Firefox, you may need to allow connecting to the unsecured local node
87+websocket. Do this by going to `about:config` and setting the
88+`network.websocket.allowInsecureFromHTTPS` flag to `true`.
89+
90+Additionally you need to run with the `HTTPS` environment variable set to
91+`true`. Note that `npm run pilot` will handle this automatically.
92+
93+## Releases
94+
95+To generate a release `bridge-$VERSION.zip` file, use a simple `npm run release`.
96+
97+This will pack the build directory together with the README, `bridge-https.py`
98+script, and also generate a set of checksums for the build directory. You can
99+verify the checksums on e.g. MacOS via `shasum -c checksums.txt`.
README.md+23−118
@@ -6,146 +6,51 @@ An application for interacting with Azimuth.
66
77## Usage
88
9+The latest version of Bridge is accessible online at [bridge.azimuth.network](https://bridge.azimuth.network). No setup needed.
10+
11+If you would rather host Bridge on your own machine, read on.
12+
913### Requirements
1014
1115Python 3.7.2
1216
1317### Instructions
1418
15−#### Install
19+#### Download
1620
17−1. [Download a release](https://github.com/urbit/bridge/releases)
21+1. [Download a release](https://github.com/urbit/bridge/releases/latest)
18222. Unzip it (`bridge-$version.zip`)
19233. Open up your command line interface (Terminal on MacOS, Command Prompt on Windows)
20244. `cd` into the `bridge-$version` directory
2125
22−Follow the instructions below to run Bridge.
23−
24−#### Run Bridge
25−
26−If you plan to authenticate and sign transactions with a Master Ticket, BIP39 mnemonic, Ethereum private key, or keystore file:
27−
28−1. `cd` into the `bridge-$version` directory
29−2. Run `python3 -m http.server 5000 --bind 127.0.0.1`
30−3. Navigate to http://localhost:5000 using a web browser to access Bridge (we recommend using Firefox or Chrome)
31−
32−#### Run Bridge with Ledger support
26+#### Verify checksums
3327
34−If you plan to authenticate and sign transactions with a [Ledger](https://www.ledger.com/), Bridge must be serving over HTTPS on localhost. This requires self-signed certificates. To do this:
35−
36−1. Install [mkcert](https://github.com/FiloSottile/mkcert)
37−2. If you're using Firefox, additionally install [nss](https://github.com/nss-dev/nss)
38−3. Install a local certificate authority via `mkcert -install`
39−4. From the `bridge-$version` directory, run `mkcert localhost` to generate a certificate valid for localhost. This will produce two files: `localhost.pem`, the local certificate, and `localhost-key.pem`, its corresponding private key
40−5. Run `python bridge-https.py`
41−6. Navigate to https://localhost:4443 in a web browser to access Bridge
42−
43−### Verify checksums
44−
45−To validate your downloaded file's integrity, compare the lines in checksum.txt to SHA-256 hashes of the `bridge-$version` directory's contents.
28+Optionally, to validate your downloaded file's integrity, compare the lines in checksum.txt to SHA-256 hashes of the `bridge-$version` directory's contents.
4629
4730- On MacOS: `shasum -a 256 -c checksums.txt .`
4831- On Linux: `sha256sum -c checksums.txt .`
4932- On Windows: Go into the `build` directory and verify files individually with `CertUtil -hashFile [file_name] SHA256`
5033
51−## Development notes
52−
53−### Install / Build
54−
55−Clone the repo, and use a simple `npm install`. You can then use a `npm run
56−build` to create an optimised static build (serve it with e.g. [serve][serv]).
57−
58−### General notes
59−
60−For development, use `npm run pilot` to get going after a `npm install`. This
61−will boot up a Ganache node in the background, deploy the Azimuth contracts to
62−it, and fire up a local webserver. Bridge will be served on `localhost:3000`.
63−
64−Note that one of our dependencies itself depends on a library called
65−`handle-thing` which breaks under the Ledger support requirements (see below)
66−on node 11.1.0, so make sure you're using some other node version.
67−
68−You can use [nvm](https://github.com/creationix/nvm), for example, and do:
69−
70−```
71−$ nvm install 11.0.0
72−$ nvm use v11.0.0
73−```
74−
75−before running `npm run pilot`.
76−
77−### Useful accounts
78−
79−The ecliptic owner is the only account that's able to create galaxies, so
80−it's a good place to get started. On the testnet, it's the address:
81−
82−```
83−0x6DEfFb0caFDB11D175F123F6891AA64F01c24F7d
84−```
85−
86−You can authenticate as it using the following mnemonic:
87−
88−```
89−benefit crew supreme gesture quantum web media hazard theory mercy wing kitten
90−```
91−
92−Under that mnemonic, Ganache will also auto-populate the following accounts
93−with 100 ETH:
94−
95−```
96−0x6deffb0cafdb11d175f123f6891aa64f01c24f7d
97−0xd53208cf45fc9bd7938b200bff8814a26146688f
98−0x7b2a2d51e4d8fac602e20a5f6907ff9fbd88e1fd
99−0xf48062ae8bafd6ef19cd6cb89db93a0d0ca6ce26
100−0xf84a77aeb351c49dfa87e805a659d2daddff7606
101−0x167e357cf8b845370d0d408f9b389b66185b7b5b
102−0xcbecf3abc9878f07afc851aead2d8f1c436cc71d
103−0x0afc0c3f4eeea500871f464ca71eef5e54a9af36
104−0x6d654ef2489674d21aed428e8a4ad8ca4820f125
105−0x218f6f87683db546ad47a5dc8b480e5a9b694866
106−```
107−
108−To play around with any of these, authenticate using the same mnemonic, but
109−use a custom HD path of `m/44'/60'/0'/0/1`, `m/44'/60'/0'/0/2`, and so on.
110−
111−### Initial development state
112−
113−You can also tweak a couple of things to change your development state
114−somewhat (say, for example, you want to start on the points list screen, instead
115−of having to re-authenticate whenever you make a change or refresh the page):
116−
117−* The `.env.development` file contains environment variables that you can
118− provide to the application when it's running in development. You can access
119− them via `process.env.REACT_APP_<whatever>`.
120−
121−* The `componentDidMount` method of the Bridge component in `src/Bridge.js`
122− can be tweaked for setting your initial state. You can provide a specific
123− wallet, network type, and so on.
124−
125−### HTTPS
34+#### Run Bridge
12635
127−For development, you can enable HTTPS on localhost without a certificate for
128−Chrome by pasting the following into the URL bar:
36+1. `cd` into the `bridge-$version` directory
37+2. Run `python3 -m http.server 5000 --bind 127.0.0.1`
38+3. Navigate to http://localhost:5000 using a web browser to access Bridge (we recommend using Firefox or Chrome)
12939
130−```
131−chrome://flags/#allow-insecure-localhost
132−```
40+#### Ledger support
13341
134−In Firefox, you may need to allow connecting to the unsecured local node
135−websocket. Do this by going to `about:config` and setting the
136−`network.websocket.allowInsecureFromHTTPS` flag to `true`.
42+If you plan to authenticate with a [Ledger](https://www.ledger.com/), Bridge must be serving over HTTPS on localhost. This requires self-signed certificates. To do this:
13743
138−Additionally you need to run with the `HTTPS` environment variable set to
139−`true`. Note that `npm run pilot` will handle this automatically.
44+1. Install [mkcert](https://github.com/FiloSottile/mkcert)
45+2. Install a local certificate authority via `mkcert -install`
46+3. From the `bridge-$version` directory, run `mkcert localhost` to generate a certificate valid for localhost. This will produce two files: `localhost.pem`, the local certificate, and `localhost-key.pem`, its corresponding private key
47+4. Run `python bridge-https.py`
48+5. Navigate to https://localhost:4443 in a web browser to access Bridge
14049
141−### Releases
50+## Bridge without internet access
14251
143−To generate a release `bridge-$VERSION.zip` file, use a simple `npm run
144−release`.
52+A proper "offline mode" for the latest iteration of Bridge is still being worked on. In the mean time, if you need to use Bridge on an airgapped machine, use [Bridge v1.4.1](https://github.com/urbit/bridge/releases/tag/v1.4.1).
14553
146−This will pack the build directory together with the README, `bridge-https.py`
147−script, and also generate a set of checksums for the build directory. You can
148−verify the checksums on e.g. OS X via `shasum -c checksums.txt`.
54+## Development
14955
150−[rele]: https://github.com/urbit/bridge/releases/latest
151−[serv]: http://npmjs.com/package/serve
56+See [development.md](DEVELOPMENT.md).
config-overrides.jsnew file+13
@@ -0,0 +1,13 @@
1+const rewireReactHotLoader = require('react-app-rewire-hot-loader');
2+const rewireAliases = require('react-app-rewire-aliases');
3+
4+const alias = rewireAliases.aliasesOptions({
5+ 'react-dom': '@hot-loader/react-dom',
6+});
7+
8+module.exports = function override(config, env) {
9+ config = rewireReactHotLoader(config, env);
10+ config = alias(config, env);
11+
12+ return config;
13+};
find-gas-usage.jsnew file+114
@@ -0,0 +1,114 @@
1+// usage: tweak constants at head of file, then run "node find-gas-usage.js"
2+// for very common events/calls, you may need to use a smaller TO-FROM
3+// range to keep web3 from yelling at you
4+
5+const ORIGIN = 6784800; // launch ceremony begins
6+const PUBLIC = 7033765; // azimuth becomes public
7+const LATEST = 'latest';
8+const AZIMUTH_ADDRESS = '0x223c067f8cf28ae173ee5cafea60ca44c335fecb';
9+const ENDPOINT =
10+ 'https://mainnet.infura.io/v3/196a7f37c7d54211b4a07904ec73ad87';
11+
12+const FROM = ORIGIN;
13+const TO = LATEST;
14+
15+const VENT = 'ChangedKeys';
16+const FUNC = '0x4447e48c'; // configureKeys
17+const ARGS = 5;
18+
19+// const VENT = 'Spawned';
20+// const FUNC = '0xa0d3253f'; // spawn
21+// const ARGS = 2;
22+
23+// const VENT = 'OwnerChanged';
24+// const FUNC = '0x1e79a85b'; // transferPoint
25+// const ARGS = 3;
26+
27+// const VENT = 'ChangedSpawnProxy';
28+// const FUNC = '0xae326221'; // setSpawnProxy
29+// const ARGS = 2;
30+
31+// const VENT = 'ChangedManagementProxy';
32+// const FUNC = '0x8866bb2c'; // setManagementProxy
33+// const ARGS = 2;
34+
35+// const VENT = 'ChangedTransferProxy';
36+// const FUNC = '0x2c7ba564'; // setTransferProxy
37+// const ARGS = 2;
38+
39+// const VENT = 'ChangedVotingProxy';
40+// const FUNC = '0xa60e8bd6'; // setVotingProxy
41+// const ARGS = 2;
42+
43+// const VENT = 'EscapeRequested';
44+// const FUNC = '0xbf5772b9'; // escape
45+// const ARGS = 2;
46+
47+// const VENT = 'EscapeCanceled';
48+// const FUNC = '0xc6d761d4'; // cancelEscape
49+// const ARGS = 1;
50+
51+// const VENT = 'EscapeAccepted';
52+// const FUNC = '0xc1b9d98b'; // adopt
53+// const ARGS = 1;
54+
55+// const VENT = 'EscapeCanceled';
56+// const FUNC = '0xbbe21ca5'; // reject
57+// const ARGS = 1;
58+
59+// const VENT = 'LostSponsor';
60+// const FUNC = '0x073a7804'; // detach
61+// const ARGS = 1;
62+
63+const LENT = 64 * ARGS + FUNC.length;
64+
65+const Web3 = require('web3');
66+const azimuth = require('azimuth-js');
67+
68+(async () => {
69+ const web3 = new Web3(new Web3.providers.HttpProvider(ENDPOINT));
70+ const contracts = await azimuth.initContractsPartial(web3, AZIMUTH_ADDRESS);
71+
72+ const keyEvents = await contracts.azimuth.getPastEvents(VENT, {
73+ fromBlock: FROM,
74+ toBlock: TO,
75+ });
76+
77+ const txsBatch = new web3.BatchRequest();
78+ keyEvents.map(vent => {
79+ txsBatch.add(
80+ web3.eth.getTransaction.request(vent.transactionHash, (err, res) => {})
81+ );
82+ });
83+ const txs = await txsBatch.execute();
84+ const keyTxs = txs.response.filter(tx => {
85+ const head = tx.input.slice(0, 10) === FUNC;
86+ const size = tx.input.length === LENT;
87+ if (head && !size) {
88+ console.log('weird inputs', tx.hash);
89+ }
90+ return head && size;
91+ });
92+
93+ const receiptsBatch = new web3.BatchRequest();
94+ keyTxs.map(tx => {
95+ receiptsBatch.add(
96+ web3.eth.getTransactionReceipt.request(tx.hash, (err, res) => {})
97+ );
98+ });
99+ const recs = await receiptsBatch.execute();
100+
101+ let usage = {};
102+ recs.response.map(rec => {
103+ if (rec.status !== true) {
104+ console.log('rejecting', rec.gasUsed);
105+ return;
106+ }
107+ if (rec.gasUsed in usage) {
108+ usage[rec.gasUsed]++;
109+ } else {
110+ usage[rec.gasUsed] = 1;
111+ }
112+ });
113+ console.log(usage);
114+})();
jsconfig.jsonnew file+5
@@ -0,0 +1,5 @@
1+{
2+ "compilerOptions": {
3+ "baseUrl": "src"
4+ }
5+}
package-lock.json+8486−9896

This diff is too big to show here.

package.json+68−35

This diff is too big to show here.

public/index.html+9−1

This diff is too big to show here.

public/spritesheet_a.pngnew file

Binary file not shown.

src/Bridge.jsnew file+85

This diff is too big to show here.

src/Root.jsdeleted−97

This diff is too big to show here.

src/assets/back.svgnew file+4

This diff is too big to show here.

src/assets/copy.svgnew file+7

This diff is too big to show here.

src/bridge/Bridge.jsdeleted−341

This diff is too big to show here.

src/bridge/components/Anchor.jsdeleted−33

This diff is too big to show here.

src/bridge/components/Base.jsdeleted−210

This diff is too big to show here.

src/bridge/components/Blockie.jsdeleted−12

This diff is too big to show here.

src/bridge/components/Breadcrumb.jsdeleted−12

This diff is too big to show here.

src/bridge/components/BreadcrumbItem.jsdeleted−12

This diff is too big to show here.

src/bridge/components/Button.jsdeleted−30

This diff is too big to show here.

src/bridge/components/Checkbox.jsdeleted−47

This diff is too big to show here.

src/bridge/components/CheckboxButton.jsdeleted−62

This diff is too big to show here.

src/bridge/components/Code.jsdeleted−37

This diff is too big to show here.

src/bridge/components/Col.jsdeleted−29

This diff is too big to show here.

src/bridge/components/Container.jsdeleted−29

This diff is too big to show here.

src/bridge/components/DropdownDivider.jsdeleted−12

This diff is too big to show here.

src/bridge/components/DropdownItem.jsdeleted−38

This diff is too big to show here.

src/bridge/components/FlexCol.jsdeleted−29

This diff is too big to show here.

src/bridge/components/FlexRow.jsdeleted−26

This diff is too big to show here.

src/bridge/components/Footer.jsdeleted−23

This diff is too big to show here.

src/bridge/components/Form.jsdeleted−29

This diff is too big to show here.

src/bridge/components/H1.jsdeleted−26

This diff is too big to show here.

src/bridge/components/H2.jsdeleted−26

This diff is too big to show here.

src/bridge/components/H3.jsdeleted−26

This diff is too big to show here.

src/bridge/components/H4.jsdeleted−26

This diff is too big to show here.

src/bridge/components/Header.jsdeleted−54

This diff is too big to show here.

src/bridge/components/HorizontalSelector.jsdeleted−57

This diff is too big to show here.

src/bridge/components/InnerLabel.jsdeleted−26

This diff is too big to show here.

src/bridge/components/InnerLabelDropdown.jsdeleted−114

This diff is too big to show here.

src/bridge/components/Input.jsdeleted−73

This diff is too big to show here.

src/bridge/components/InputCaption.jsdeleted−26

This diff is too big to show here.

src/bridge/components/Label.jsdeleted−26

This diff is too big to show here.

src/bridge/components/OldHeader.jsdeleted−52

This diff is too big to show here.

src/bridge/components/OldLink.jsdeleted−127

This diff is too big to show here.

src/bridge/components/OldTextArea.jsdeleted−129

This diff is too big to show here.

src/bridge/components/P.jsdeleted−37

This diff is too big to show here.

src/bridge/components/PointList.jsdeleted−29

This diff is too big to show here.

src/bridge/components/ProtoAnchor.jsdeleted−32

This diff is too big to show here.

src/bridge/components/ProtoButton.jsdeleted−40

This diff is too big to show here.

src/bridge/components/ProtoInput.jsdeleted−68

This diff is too big to show here.

src/bridge/components/ProtoTextarea.jsdeleted−64

This diff is too big to show here.

src/bridge/components/ReactSVGComponents.jsdeleted−63

This diff is too big to show here.

src/bridge/components/RenderedPoint.jsdeleted−56

This diff is too big to show here.

src/bridge/components/Row.jsdeleted−28

This diff is too big to show here.

src/bridge/components/RowCol.jsdeleted−30

This diff is too big to show here.

src/bridge/components/ShowBlockie.jsdeleted−81

This diff is too big to show here.

src/bridge/components/Spacing.jsdeleted−32

This diff is too big to show here.

src/bridge/components/StatelessTransaction.jsdeleted−497

This diff is too big to show here.

src/bridge/components/Textarea.jsdeleted−74

This diff is too big to show here.

src/bridge/components/UploadButton.jsdeleted−29

This diff is too big to show here.

src/bridge/components/ValidatedBlockie.jsdeleted−66

This diff is too big to show here.

src/bridge/components/ValidatedSigil.jsdeleted−79

This diff is too big to show here.

src/bridge/components/Warning.jsdeleted−28

This diff is too big to show here.

src/bridge/components/advancedInput.jsdeleted−152

This diff is too big to show here.

src/bridge/components/icons/Chevron.jsdeleted−30

This diff is too big to show here.

src/bridge/lib/base.jsdeleted−9

This diff is too big to show here.

src/bridge/lib/child.jsdeleted−20

This diff is too big to show here.

src/bridge/lib/error.jsdeleted−46

This diff is too big to show here.

src/bridge/lib/keys.jsdeleted−151

This diff is too big to show here.

src/bridge/lib/ledger.jsdeleted−31

This diff is too big to show here.

src/bridge/lib/lib.jsdeleted−43

This diff is too big to show here.

src/bridge/lib/network.jsdeleted−22

This diff is too big to show here.

src/bridge/lib/proxy.jsdeleted−21

This diff is too big to show here.

src/bridge/lib/router.jsdeleted−189

This diff is too big to show here.

src/bridge/lib/transformers.jsdeleted−18

This diff is too big to show here.

src/bridge/lib/trezor.jsdeleted−39

This diff is too big to show here.

src/bridge/lib/txn.jsdeleted−211

This diff is too big to show here.

src/bridge/lib/validators.jsdeleted−190

This diff is too big to show here.

src/bridge/lib/wallet.jsdeleted−123

This diff is too big to show here.

src/bridge/style/anchor.cssdeleted−31

This diff is too big to show here.

src/bridge/style/base.cssdeleted−13101

This diff is too big to show here.

src/bridge/style/button.cssdeleted−121

This diff is too big to show here.

src/bridge/style/extend.cssdeleted−487

This diff is too big to show here.

src/bridge/style/index.cssdeleted−7

This diff is too big to show here.

src/bridge/style/input.cssdeleted−57

This diff is too big to show here.

src/bridge/views/AcceptTransfer.jsdeleted−140

This diff is too big to show here.

src/bridge/views/CancelTransfer.jsdeleted−102

This diff is too big to show here.

src/bridge/views/CreateGalaxy.jsdeleted−232

This diff is too big to show here.

src/bridge/views/GenKeyfile.jsdeleted−157

This diff is too big to show here.

src/bridge/views/IssueChild.jsdeleted−283

This diff is too big to show here.

src/bridge/views/Keystore.jsdeleted−168

This diff is too big to show here.

src/bridge/views/Landing.jsdeleted−68

This diff is too big to show here.

src/bridge/views/Ledger.jsdeleted−211

This diff is too big to show here.

src/bridge/views/Mnemonic.jsdeleted−176

This diff is too big to show here.

src/bridge/views/Network.jsdeleted−145

This diff is too big to show here.

src/bridge/views/Point.jsdeleted−148

This diff is too big to show here.

src/bridge/views/Point/Actions.jsdeleted−222

This diff is too big to show here.

src/bridge/views/Point/KeysAndMetadata.jsdeleted−181

This diff is too big to show here.

src/bridge/views/Points.jsdeleted−251

This diff is too big to show here.

src/bridge/views/PrivateKey.jsdeleted−85

This diff is too big to show here.

src/bridge/views/SentTransaction.jsdeleted−196

This diff is too big to show here.

src/bridge/views/SetKeys.jsdeleted−222

This diff is too big to show here.

src/bridge/views/SetProxy.jsdeleted−211

This diff is too big to show here.

src/bridge/views/Shards.jsdeleted−231

This diff is too big to show here.

src/bridge/views/Ticket.jsdeleted−181

This diff is too big to show here.

src/bridge/views/Transfer.jsdeleted−150

This diff is too big to show here.

src/bridge/views/Trezor.jsdeleted−149

This diff is too big to show here.

src/bridge/views/ViewPoint.jsdeleted−88

This diff is too big to show here.

src/bridge/views/Wallet.jsdeleted−101

This diff is too big to show here.

src/common/components/AppNavigation.jsdeleted−43

This diff is too big to show here.

src/common/style/base.cssdeleted−12788

This diff is too big to show here.

src/common/style/fonts64/SF-Pro-Text-Light.cssdeleted−1

This diff is too big to show here.

src/common/style/fonts64/SF-Pro-Text-Medium.cssdeleted−1

This diff is too big to show here.

src/common/style/fonts64/SF-Pro-Text-Regular.cssdeleted−1

This diff is too big to show here.

src/common/style/fonts64/SF-Pro-Text-Semibold.cssdeleted−1

This diff is too big to show here.

src/common/style/fonts64/SourceCodePro-Bold.cssdeleted−1

This diff is too big to show here.

src/common/style/fonts64/SourceCodePro-Regular.cssdeleted−1

This diff is too big to show here.

src/common/style/fonts64/WorkSans-Medium.cssdeleted−1

This diff is too big to show here.

src/common/style/fonts64/WorkSans-SemiBold.cssdeleted−1

This diff is too big to show here.

src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-Black.woffdeleted

Binary file not shown.

src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-Black.woff2deleted

Binary file not shown.

src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-BlackItalic.woffdeleted

Binary file not shown.

src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-BlackItalic.woff2deleted

Binary file not shown.

src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-Bold.woffdeleted

Binary file not shown.

src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-Bold.woff2deleted

Binary file not shown.

src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-BoldItalic.woffdeleted

Binary file not shown.

src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-BoldItalic.woff2deleted

Binary file not shown.

src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-ExtraBold.woffdeleted

Binary file not shown.

src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-ExtraBold.woff2deleted

Binary file not shown.

src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-ExtraBoldItalic.woffdeleted

Binary file not shown.

src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-ExtraBoldItalic.woff2deleted

Binary file not shown.

src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-Italic.woffdeleted

Binary file not shown.

src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-Italic.woff2deleted

Binary file not shown.

src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-Medium.woffdeleted

Binary file not shown.

src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-Medium.woff2deleted

Binary file not shown.

src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-MediumItalic.woffdeleted

Binary file not shown.

src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-MediumItalic.woff2deleted

Binary file not shown.

src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-Regular.woffdeleted

Binary file not shown.

src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-Regular.woff2deleted

Binary file not shown.

src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-SemiBold.woffdeleted

Binary file not shown.

src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-SemiBold.woff2deleted

Binary file not shown.

src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-SemiBoldItalic.woffdeleted

Binary file not shown.

src/common/style/fontstack/Inter UI (web hinted)/Inter-UI-SemiBoldItalic.woff2deleted

Binary file not shown.

src/common/style/fontstack/Inter UI (web hinted)/inter-ui.cssdeleted−147

This diff is too big to show here.

src/common/style/index.cssdeleted−17

This diff is too big to show here.

src/components/Accordion.jsnew file+63

This diff is too big to show here.

src/components/AspectRatio.jsnew file+22

This diff is too big to show here.

src/components/Blinky.jsnew file+47

This diff is too big to show here.

src/components/Buttons.jsnew file+34

This diff is too big to show here.

src/components/CopiableAddress.jsnew file+8

This diff is too big to show here.

src/components/CopiableWithTooltip.jsnew file+29

This diff is too big to show here.

src/components/CopyButton.jsnew file+29

This diff is too big to show here.

src/components/Crumbs.jsnew file+32

This diff is too big to show here.

src/components/DownloadKeyfileButton.jsnew file+33

This diff is too big to show here.

src/components/DownloadSigilButton.jsnew file+72

This diff is too big to show here.

src/components/Footer.jsnew file+9

This diff is too big to show here.

src/components/FooterButton.jsnew file+17

This diff is too big to show here.

src/components/GlobalErrorBoundary.jsnew file+74

This diff is too big to show here.

src/components/Greeting.jsnew file+80

This diff is too big to show here.

src/components/Header.jsnew file+17

This diff is too big to show here.

src/components/Highlighted.jsnew file+22

This diff is too big to show here.

src/components/InlineEthereumTransaction.jsnew file+311

This diff is too big to show here.

src/components/InputSigil.jsnew file+47

This diff is too big to show here.

src/components/LoadingBar.jsnew file+19

This diff is too big to show here.

src/components/MaybeSigil.jsnew file+21

This diff is too big to show here.

src/components/MiniBackButton.jsnew file+13

This diff is too big to show here.

src/components/NavHeader.jsnew file+9

This diff is too big to show here.

src/components/NeedFundsNotice.jsnew file+25

This diff is too big to show here.

src/components/NoticeBox.jsnew file+11

This diff is too big to show here.

src/components/PaperBuilder.jsnew file+17

This diff is too big to show here.

src/components/Passport.jsnew file+329

This diff is too big to show here.

src/components/ProgressButton.jsnew file+30

This diff is too big to show here.

src/components/Router.jsnew file+9

This diff is too big to show here.

src/components/Sigil.jsnew file+13

This diff is too big to show here.

src/components/Steps.jsnew file+11

This diff is too big to show here.

src/components/Tabs.jsnew file+49

This diff is too big to show here.

src/components/UploadButton.jsnew file+21

This diff is too big to show here.

src/components/View.jsnew file+106

This diff is too big to show here.

src/components/ViewHeader.jsnew file+7

This diff is too big to show here.

src/components/WarningBox.jsnew file+11

This diff is too big to show here.

src/components/WithErrorBoundary.jsnew file+20

This diff is too big to show here.

src/components/WithTooltip.jsnew file+23

This diff is too big to show here.

src/form/BridgeForm.jsnew file+47

This diff is too big to show here.

src/form/Condition.jsnew file+11

This diff is too big to show here.

src/form/FormError.jsnew file+34

This diff is too big to show here.

src/form/Inputs.jsnew file+198

This diff is too big to show here.

src/form/SubmitButton.jsnew file+71

This diff is too big to show here.

src/form/UploadInput.jsnew file+51

This diff is too big to show here.

src/form/ValidationPauser.jsnew file+27

This diff is too big to show here.

src/form/ValuesHandler.jsnew file+18

This diff is too big to show here.

src/form/formatters.jsnew file+79

This diff is too big to show here.

src/form/helpers.jsnew file+5

This diff is too big to show here.

src/form/validators.jsnew file+166

This diff is too big to show here.

src/index.js+39−8

This diff is too big to show here.

src/indigo-react/README.mdnew file+4

This diff is too big to show here.

src/indigo-react/components/AccessoryIcon.jsnew file+32

This diff is too big to show here.

src/indigo-react/components/Button.jsnew file+80

This diff is too big to show here.

src/indigo-react/components/CheckboxInput.jsnew file+62

This diff is too big to show here.

src/indigo-react/components/Flex.jsnew file+64

This diff is too big to show here.

src/indigo-react/components/Grid.jsnew file+70

This diff is too big to show here.

src/indigo-react/components/IconButton.jsnew file+56

This diff is too big to show here.

src/indigo-react/components/IndigoApp.jsnew file+12

This diff is too big to show here.

src/indigo-react/components/Input.jsnew file+128

This diff is too big to show here.

src/indigo-react/components/LinkButton.jsnew file+35

This diff is too big to show here.

src/indigo-react/components/SelectInput.jsnew file+139

This diff is too big to show here.

src/indigo-react/components/ToggleInput.jsnew file+67

This diff is too big to show here.

src/indigo-react/components/Typography.jsnew file+22

This diff is too big to show here.

src/indigo-react/index.jsnew file+13

This diff is too big to show here.

src/indigo-react/indigo.cssnew file+6779

This diff is too big to show here.

src/indigo-react/lib/useOnClickOutside.jsnew file+23

This diff is too big to show here.

src/lib/LocalRouter.jsnew file+9

This diff is too big to show here.

src/lib/MediaQuery.jsnew file+24

This diff is too big to show here.

src/lib/SigilDownloader.jsnew file+45

This diff is too big to show here.

src/lib/base.jsnew file+6

This diff is too big to show here.

src/lib/capitalize.jsnew file+1

This diff is too big to show here.

src/lib/card.jsnew file+190

This diff is too big to show here.

src/lib/child.jsnew file+20

This diff is too big to show here.

src/lib/constants.jsnew file+93

This diff is too big to show here.

src/bridge/lib/contracts.js → src/lib/contracts.jsrenamed+8−9

This diff is too big to show here.

src/lib/convertToInt.jsnew file+17

This diff is too big to show here.

src/lib/dateFormat.jsnew file+13

This diff is too big to show here.

src/lib/error.jsnew file+41

This diff is too big to show here.

src/lib/explorer.jsnew file+33

This diff is too big to show here.

src/lib/flags.jsnew file+2

This diff is too big to show here.

src/lib/getSuggestedGasPrice.jsnew file+33

This diff is too big to show here.

src/lib/invite.jsnew file+34

This diff is too big to show here.

src/lib/inviteMail.jsnew file+43

This diff is too big to show here.

src/lib/isPromise.jsnew file+6

This diff is too big to show here.

src/lib/keys.jsnew file+195

This diff is too big to show here.

src/lib/ledger.jsnew file+24

This diff is too big to show here.

src/lib/lib.jsnew file+57

This diff is too big to show here.

src/lib/metamask.jsnew file+27

This diff is too big to show here.

src/lib/need.jsnew file+62

This diff is too big to show here.

src/lib/nest.jsnew file+7

This diff is too big to show here.

src/lib/network.jsnew file+19

This diff is too big to show here.

src/lib/networkCode.jsnew file+50

This diff is too big to show here.

src/lib/patp2dec.jsnew file+11

This diff is too big to show here.

src/lib/pluralize.jsnew file+8

This diff is too big to show here.

src/lib/proxy.jsnew file+36

This diff is too big to show here.

src/lib/reticket.jsnew file+219

This diff is too big to show here.

src/lib/routeNames.jsnew file+23

This diff is too big to show here.

src/lib/router.jsnew file+33

This diff is too big to show here.

src/bridge/lib/state.js → src/lib/state.jsrenamed+5−17

This diff is too big to show here.

src/lib/tank.jsnew file+134

This diff is too big to show here.

src/lib/timeout.jsnew file+1

This diff is too big to show here.

src/lib/trezor.jsnew file+39

This diff is too big to show here.

src/lib/txn.jsnew file+221

This diff is too big to show here.

src/lib/useBreakpoints.jsnew file+5

This diff is too big to show here.

src/lib/useConstant.jsnew file+13

This diff is too big to show here.

src/lib/useCopiable.jsnew file+23

This diff is too big to show here.

src/lib/useCurrentPermissions.jsnew file+17

This diff is too big to show here.

src/lib/useCurrentPointName.jsnew file+12

This diff is too big to show here.

src/lib/useDeepEqualReference.jsnew file+22

This diff is too big to show here.

src/lib/useEthereumTransaction.jsnew file+315

This diff is too big to show here.

src/lib/useGasPrice.jsnew file+48

This diff is too big to show here.

src/lib/useHasDisclaimed.jsnew file+7

This diff is too big to show here.

src/lib/useImpliedPoint.jsnew file+14

This diff is too big to show here.

src/lib/useImpliedTicket.jsnew file+14

This diff is too big to show here.

src/lib/useInterval.jsnew file+22

This diff is too big to show here.

src/lib/useInvites.jsnew file+7

This diff is too big to show here.

src/lib/useIsEclipticOwner.jsnew file+25

This diff is too big to show here.

src/lib/useKeyfileGenerator.jsnew file+131

This diff is too big to show here.

src/lib/useLifecycle.jsnew file+6

This diff is too big to show here.

src/lib/useLocalStorageState.jsnew file+43

This diff is too big to show here.

src/lib/useLoginView.jsnew file+17

This diff is too big to show here.

src/lib/useMailer.jsnew file+46

This diff is too big to show here.

src/lib/useMedia.jsnew file+31

This diff is too big to show here.

src/lib/usePermissionsForPoint.jsnew file+107

This diff is too big to show here.

src/lib/usePointBirthday.jsnew file+7

This diff is too big to show here.

src/lib/usePreviousValue.jsnew file+16

This diff is too big to show here.

src/lib/useRejectedIncomingPointTransfers.jsnew file+19

This diff is too big to show here.

src/lib/useRenderCount.jsnew file+7

This diff is too big to show here.

src/lib/useRouter.jsnew file+136

This diff is too big to show here.

src/lib/useSetState.jsnew file+16

This diff is too big to show here.

src/lib/useSyncPoints.jsnew file+32

This diff is too big to show here.

src/lib/useWasGreeted.jsnew file+7

This diff is too big to show here.

src/lib/validators.jsnew file+104

This diff is too big to show here.

src/lib/wallet.jsnew file+108

This diff is too big to show here.

src/lib/walletgen.jsnew file+80

This diff is too big to show here.

src/bridge/nockjs/TODO → src/nockjs/TODOrenamed

The content is the same.

src/bridge/nockjs/bits.js → src/nockjs/bits.jsrenamed

The content is the same.

src/bridge/nockjs/compiler.js → src/nockjs/compiler.jsrenamed

The content is the same.

src/bridge/nockjs/hamt.js → src/nockjs/hamt.jsrenamed

The content is the same.

src/bridge/nockjs/list.js → src/nockjs/list.jsrenamed

The content is the same.

src/bridge/nockjs/noun.js → src/nockjs/noun.jsrenamed

The content is the same.

src/bridge/nockjs/serial.js → src/nockjs/serial.jsrenamed

The content is the same.

src/bridge/nockjs/test/ack.js → src/nockjs/test/ack.jsrenamed

The content is the same.

src/bridge/nockjs/test/add.js → src/nockjs/test/add.jsrenamed

The content is the same.

src/bridge/nockjs/test/bits.js → src/nockjs/test/bits.jsrenamed

The content is the same.

src/bridge/nockjs/test/decrement.js → src/nockjs/test/decrement.jsrenamed

The content is the same.

src/bridge/nockjs/test/hamt.js → src/nockjs/test/hamt.jsrenamed

The content is the same.

src/bridge/nockjs/test/noun.js → src/nockjs/test/noun.jsrenamed

The content is the same.

src/bridge/nockjs/test/serial.js → src/nockjs/test/serial.jsrenamed

The content is the same.

src/store/Provider.jsnew file+22

This diff is too big to show here.

src/store/history.jsnew file+35

This diff is too big to show here.

src/store/lib/useBirthdaysStore.jsnew file+59

This diff is too big to show here.

src/store/lib/useControlledPointsStore.jsnew file+65

This diff is too big to show here.

src/store/lib/useDetailsStore.jsnew file+50

This diff is too big to show here.

src/store/lib/useEclipticOwnerStore.jsnew file+26

This diff is too big to show here.

src/store/lib/useInvitesStore.jsnew file+57

This diff is too big to show here.

src/store/lib/usePointStore.jsnew file+58

This diff is too big to show here.

src/store/lib/useRekeyDateStore.jsnew file+79

This diff is too big to show here.

src/store/network.jsnew file+119

This diff is too big to show here.

src/store/online.jsnew file+66

This diff is too big to show here.

src/store/pointCache.jsnew file+28

This diff is too big to show here.

src/store/pointCursor.jsnew file+37

This diff is too big to show here.

src/store/txnCursor.jsnew file+35

This diff is too big to show here.

src/store/wallet.jsnew file+157

This diff is too big to show here.

src/style/Inter-Medium.cssnew file+1

This diff is too big to show here.

src/style/Inter-Regular.cssnew file+1

This diff is too big to show here.

src/style/Inter-SemiBold.cssnew file+1

This diff is too big to show here.

src/style/SourceCodePro-Medium.cssnew file+1

This diff is too big to show here.

src/style/SourceCodePro-Regular.cssnew file+1

This diff is too big to show here.

src/style/SourceCodePro-SemiBold.cssnew file+1

This diff is too big to show here.

src/style/anim.cssnew file+460

This diff is too big to show here.

src/style/bridge.scssnew file+16

This diff is too big to show here.

src/style/fonts64.scssnew file+6

This diff is too big to show here.

src/style/form-reset.scssnew file+107

This diff is too big to show here.

src/style/index.scssnew file+14

This diff is too big to show here.

src/style/indigo-proposals.scssnew file+58

This diff is too big to show here.

src/views/AcceptTransfer.jsnew file+93

This diff is too big to show here.

src/views/Activate.jsnew file+45

This diff is too big to show here.

src/views/Activate/ActivateCode.jsnew file+218

This diff is too big to show here.

src/views/Activate/ActivateFlow.jsnew file+9

This diff is too big to show here.

src/views/Activate/ActivatePassport.jsnew file+84

This diff is too big to show here.

src/views/Activate/PassportDownload.jsnew file+91

This diff is too big to show here.

src/views/Activate/PassportTransfer.jsnew file+198

This diff is too big to show here.

src/views/Activate/PassportVerify.jsnew file+103

This diff is too big to show here.

src/views/Activate/PassportView.jsnew file+27

This diff is too big to show here.

src/views/Activate/useActivateFlowState.jsnew file+28

This diff is too big to show here.

src/views/Admin.jsnew file+76

This diff is too big to show here.

src/views/Admin/AdminCancelTransfer.jsnew file+84

This diff is too big to show here.

src/views/Admin/AdminEditPermissions.jsnew file+130

This diff is too big to show here.

src/views/Admin/AdminHome.jsnew file+106

This diff is too big to show here.

src/views/Admin/AdminNetworkingKeys.jsnew file+401

This diff is too big to show here.

src/views/Admin/AdminRedownload.jsnew file+72

This diff is too big to show here.

src/views/Admin/AdminReticket.jsnew file+62

This diff is too big to show here.

src/views/Admin/AdminSetProxy.jsnew file+238

This diff is too big to show here.

src/views/Admin/AdminTransfer.jsnew file+113

This diff is too big to show here.

src/views/Admin/Reticket/ReticketConfirm.jsnew file+91

This diff is too big to show here.

src/views/Admin/Reticket/ReticketDownload.jsnew file+39

This diff is too big to show here.

src/views/Admin/Reticket/ReticketExecute.jsnew file+178

This diff is too big to show here.

src/views/Admin/Reticket/ReticketVerify.jsnew file+71

This diff is too big to show here.

src/views/CancelTransfer.jsnew file+16

This diff is too big to show here.

src/views/CreateGalaxy.jsnew file+166

This diff is too big to show here.

src/views/Disclaimer.jsnew file+108

This diff is too big to show here.

src/views/Invite.jsnew file+89

This diff is too big to show here.

src/views/Invite/InviteEmail.jsnew file+639

This diff is too big to show here.

src/views/Invite/InviteUrl.jsnew file+53

This diff is too big to show here.

src/views/IssueChild.jsnew file+196

This diff is too big to show here.

src/views/Login.jsnew file+98

This diff is too big to show here.

src/views/Login/Advanced.jsnew file+37

This diff is too big to show here.

src/views/Login/Hardware.jsnew file+52

This diff is too big to show here.

src/views/Login/Keystore.jsnew file+92

This diff is too big to show here.

src/views/Login/Ledger.jsnew file+221

This diff is too big to show here.

src/views/Login/Metamask.jsnew file+68

This diff is too big to show here.

src/views/Login/Mnemonic.jsnew file+110

This diff is too big to show here.

src/views/Login/Other.jsnew file+67

This diff is too big to show here.

src/views/Login/PrivateKey.jsnew file+63

This diff is too big to show here.

src/views/Login/Ticket.jsnew file+241

This diff is too big to show here.

src/views/Login/Trezor.jsnew file+147

This diff is too big to show here.

src/views/Party/PartySetPoolSize.jsnew file+168

This diff is too big to show here.

src/views/Point.jsnew file+146

This diff is too big to show here.

src/views/Points.jsnew file+351

This diff is too big to show here.

src/walletgen/Walletgen.jsdeleted−147

This diff is too big to show here.

src/walletgen/components/Button.jsdeleted−13

This diff is too big to show here.

src/walletgen/components/CheckBox.jsdeleted−38

This diff is too big to show here.

src/walletgen/components/EulaText.jsdeleted−146

This diff is too big to show here.

src/walletgen/components/Footer.jsdeleted−46

This diff is too big to show here.

src/walletgen/components/Header.jsdeleted−86

This diff is too big to show here.

src/walletgen/components/InputBox.jsdeleted−31

This diff is too big to show here.

src/walletgen/components/ReactSVGComponents.jsdeleted−63

This diff is too big to show here.

src/walletgen/components/UploadButton.jsdeleted−30

This diff is too big to show here.

src/walletgen/index.jsdeleted−8

This diff is too big to show here.

src/walletgen/lib/constants.jsdeleted−65

This diff is too big to show here.

src/walletgen/lib/lib.jsdeleted−9

This diff is too big to show here.

src/walletgen/style/base.cssdeleted−12790

This diff is too big to show here.

src/walletgen/style/index.cssdeleted−474

This diff is too big to show here.

src/walletgen/style/type.cssdeleted−72

This diff is too big to show here.

src/walletgen/views/BrowserWarning.jsdeleted−14

This diff is too big to show here.

src/walletgen/views/Custody.jsdeleted−36

This diff is too big to show here.

src/walletgen/views/Done.jsdeleted−63

This diff is too big to show here.

src/walletgen/views/Download.jsdeleted−147

This diff is too big to show here.

src/walletgen/views/Eula.jsdeleted−49

This diff is too big to show here.

src/walletgen/views/EulaView.jsdeleted−37

This diff is too big to show here.

src/walletgen/views/Generate.jsdeleted−497

This diff is too big to show here.

src/walletgen/views/NetworkWarning.jsdeleted−14

This diff is too big to show here.

src/walletgen/views/PrivacyPolicy.jsdeleted−443

This diff is too big to show here.

src/walletgen/views/Understand.jsdeleted−43

This diff is too big to show here.

src/walletgen/views/Upload.jsdeleted−252

This diff is too big to show here.

src/walletgen/views/Welcome.jsdeleted−37

This diff is too big to show here.