The Safe Browser is actively being developed against various iterations of The Safe Network. Both of which are still considered alpha software, so please be prepared to encounter and report bugs!
You currently (need the Safe Authenticator to be installed.)[https://github.com/maidsafe/safe-api#the-authenticator-daemon].
Currently 404 pages renders are being swallowed by electron (electron/electron#21046), so these errors / pages returned to browser will return a 200 error code, but a 404 page served by the browser's internal server.
| Linux/macOS |
|---|
Built upon peruse, but using its baked in extensibility to add SAFE Network functionality.
Looking for more information about developing websites/web apps for the SAFE Network? Take a look at the Web App Overview.
For normal SAFE Network browsing, you should download the latest version of the browser from The SAFE Browser releases page.
Application developers should use the same link, but choose the -dev postfixed version for their platform. This version uses a mock network to allow local development (without the need to pay PUT costs on a live SAFE Network).
We use a dev branch for development. And we keep master as a stable reference updated with each release.
To find out more about the structure of Peruse and the SAFE functionality extending it, read the Browser Application Design Overview.
- Node.js ^8.0.0 (we recommend installing it via nvm)
- Git
- Yarn (as a replacement for
npm). - Windows-specific:
- Yarn attempts to build modules concurrently with multiple child processes, which causes intermittent timing issues on Windows. Users need to run
yarn config set child-concurrency 1just once to effect local yarn settings. - In order to be able to build native Node modules for this library, run
npm install --global --production windows-build-toolswhich installs Python 2.x, Visual Studio 2015 build tools, and Visual C++ build tools.
- Yarn attempts to build modules concurrently with multiple child processes, which causes intermittent timing issues on Windows. Users need to run
- If you are using Ubuntu, Mint, or Debian 9 as OS,
libgconf-2-4and/orbuild-essentialdependencies might be missing. Please install them as needed with Synaptic Package Mgr., or withaptfrom a shell console:$ sudo apt-get install libgconf-2-4 build-essential
git clone https://github.com/maidsafe/safe_browser.gitgit checkout master(masteris the stable branch.devis current working branch)cd safe_browserNODE_ENV=dev yarn(NODE_ENVis needed to install mock libs and to runyarn mock-dev).yarn rebuild
And to run dev mode:
yarn mock-dev
Want to run 'production' variables, but with hot reloading?
yarn put-live-net-files-for-<windows|osx|linux>yarn prod-dev
Note, you'll need a crust.config set for the application. Helper commands for osx/linux/windows
And to package:
yarn package
The resulting packages are contained within the releases folder.
A packaged application, built in a NODE_ENV=dev, can access either prod or dev networks. prod is the default, or alternatively you can open the application and pass a --mock flag to open and use a mock network.
On Linux, the packaged application gets generated as a Shared Library file and hence cannot be run by double-clicking the executable. This is due to an issue with electron-builder( electron-userland/electron-builder#3950 ). But the application can be run through the terminal. You can run the browser by running ./safe-browser.
On macOS, the application should be located in the 'Applications' for security reasons. By default the packaged application will prompt to move the application. To override this, you can pass --ignoreAppLocation:
open release/safe-browser-<version>-mac-x64/SAFE\ Browser.app --args --ignoreAppLocation
There are a few build commands for various situations:
yarn prod-devwill run a developer version of the application using the live network.yarn buildcompiles all code, but you shouldn't need to use thisyarn build-preloadwill need to be run whenever you change thepreload.jsfile for changes to show up in the browser.
Pushes to master will be automatically released, with changelog generated from conventional commits (enforced at commit time, and checked at CI), and the version bumped autmomatically.
To release alpha/beta versions of the browser, simply create a version tag for the release you want, ie v0.18.0-alpha.0 and push this to the repository to trigger a build of that alpha/beta version.
yarn testruns jest (you have the optionalyarn test-watch, too).yarn test-e2eruns spectron integration tests (not yet stable).
yarn lintruns the linter and throws all of the lint errorsyarn lint-fixruns the linter, Automatically fix problems that it can & throws the remaining lint errors
Via electron-log: import { logger } from '$Logger', and you can logger.info('things').
Logs are printed to both render console and stdout. Logs are also written to a log file per system.
yarn log-osx will tail the file. Similar commands (as yet untested) exist for linux/windows.
electron-logis used under the hood, and ouputs logs to:
- on Linux: ~/.config/safe-browser/logs/{process type}.log
- on macOS: ~/Library/Logs/Safe Browser/{process type}.log
- on Windows: %USERPROFILE%\AppData\Roaming\Safe Browser\logs{process type}.log
You can discuss development-related questions on the SAFE Dev Forum. If you are just starting to develop an application for the SAFE Network, it's very advisable to visit the SAFE Network Dev Hub where you will find a lot of relevant information, including a tutorial to create an example SAFE web application which makes use of the API exposed by the SAFE Browser.
This SAFE Network library is dual-licensed under the Modified BSD (LICENSE-BSD https://opensource.org/licenses/BSD-3-Clause) or the MIT license (LICENSE-MIT https://opensource.org/licenses/MIT) at your option.
Want to contribute? Great 🎉
There are many ways to give back to the project, whether it be writing new code, fixing bugs, or just reporting errors. All forms of contributions are encouraged!
For instructions on how to contribute, see our Guide to contributing.