EDIT: We’ve released updated binaries for SAFE Browser, Web Hosting Manager and SAFE Mail Tutorial. See this dev update for more info.

EDIT: We’ve also released mobile apps for Android and iOS. See this dev update for more info.

Today, we are pleased to be releasing Test 19 for all forum users who are at least trust level 1

This is a new network, so trying to access data from Test 18 won’t work (you need to create a new account). We are planning to take Test 18 offline this weekend.

Here are the main changes compared to Test 18:

Support sharing of arbitrary Mutable Data objects.

Optimise account packet creation.

Fix concurrent revocation bugs.

Increase the maximum number of allowed entries in a Mutable Data object from 100 to 1000.

Rate limiter refund on overcharge for GET response.

Rate limiter having soft capacity for clients.

Enforce one client per IP only on bootstrap request.

Resend rate exceeded user message parts and remove Event::ProxyRateLimitExceeded.

We’re hoping to be feature complete with Test 19 for Alpha 2. Any major identified issues with the front-end applications, we’ll try and resolve them with new front-end binaries alone, keeping the network data intact.

Also, we still need to release a new version of Web Hosting Manager with a redesigned UI, but that doesn’t require us to restart the network.

SAFE Browser v0.5.2

To connect to Test 19, you need to use SAFE Browser v0.5.0, v0.5.1 or v0.5.2.

This testnet is limited to forum users who are at least trust level 1. See this topic for more information.

Accounts can be created using the Authenticator which is bundled with the SAFE Browser. To obtain an invitation token, trust level 1 forum users can use this website, which can also be accessed via the SAFE Browser itself when creating an account.

Each client account is limited to 1000 operations. It’s worth noting that this number is just a temporary placeholder and is shared between all the apps on a given account.

Please be aware that we might need to restart this test network, wiping all data that is stored on it. We will announce this in a dev update (when possible) prior to taking it down.

Download

Changelog

[0.5.2]

MAID-2321: connection errors due to maximum number of client reached too often

MAID-2318: solved the issues preventing the browser to save the state on the network

MAID-2308: issues when closing applications windows on OS X

MAID-2106: deleting files from a website was causing problems to the browser when loading the website

MAID-2338: a temporary tab was open when claiming token but not being automatically closed

MAID-2335: remove default list of bookmarks and history

[0.5.1]

Issue with browsing empty files was solved.

Solved the issue that causes a crash in the browser when browsing a deleted service.

Display the correct error when failing to load the dynamic libraries.

Improvements to the README file.

[0.5.0]

The main changes are summarised below. Please refer to this changelog for more details:

Support for shared MutableData authorisation requests, displaying not only the MutableData’s metadata, but also the list of applications that already have access to it in the authorisation pop-up.

Display a different type of dialog in the authorisation pop-up when the application is actually being re-authorised to make it more explicit that the permissions to be granted will be the same as before.

Allow to open and see the Browser’s and Authenticator’s log files from the File -> Show SAFE Logs menu.

Known limitations

Localisation is not supported.

Unicode characters are not supported in public IDs, services names, or file names.

When there is a network latency the browser can freeze for a few moments while it’s trying to communicate with the network for different operations, like reading/saving bookmarks & history entries, loading a website, etc.

Example applications

Please note we are not supporting either localisation for the apps nor Unicode characters in the public IDs, service names, or file names for the web services, although they are supported in email IDs.

Web Hosting Manager v0.2.2

When uploading files using Web Hosting Manager, the maximum file size is 25 MB per file.

Note: You might notice that it’s a bit more complicated to upload a website now, since you’ll need to upload the files and folders separately. This is because we added support for uploading subdirectories. Ideally, it would be possible to choose both files and folders at the same time, but it looks like Electron doesn’t provide the upload dialog option which will let users choose files and folders. Hence the current mashup of both options. So to upload your website, you might need to first upload the files from the root of the website by selecting all of them via the upload file feature and then choose the folders via the upload directory feature. This should be made better with the upcoming UI rework.

Download

Changelog

[0.2.2]

MAID-2330: deleting a service now deletes all the files contained in it.

[0.2.1]

Issues with downloading empty files were solved.

Uploading empty directories is now correctly handled.

Crash caused by uploading empty files is fixed.

[0.2.0]

The main changes are summarised below. Please refer to this changelog for more details:

Support creating web services within public IDs originally created by the email tutorial or any other application.

Multiple selections of both files and directories in the upload actions are now supported by the Web Hosting Manager application. Note that now when uploading a directory it gets uploaded with its entire hierarchy, including the root directory which gets created on the target location. This is also applicable when uploading multiple directories.

SAFE Mail Tutorial v0.3.1

Download

Changelog

[0.3.1]

Support for switching between email IDs, or even creating new ones, without restarting the application.

[0.3.0]

The main changes are summarised below. Please refer to this changelog for more details:

Support for creating email services within public IDs originally created by the Web Hosting Manager or any other application.

New action supported for replying to emails from both the inbox or from the saved emails list.

The list of emails now sorted by time in a descending order.

SAFE Web API Playground

The SAFE Web API Playground allows any developer to learn and experiment with the DOM API in a friendly and interactive way.

It is meant to help people aiming at creating websites/webapps that need to access the SAFE Network DOM API, which is available on the global window object in the SAFE Browser.

Instead of having to upload your site to the network every time you want to test some code, you can simply use this tool to experiment and get a deeper understanding of how each API works.

In order to use it, follow the instructions found in its README , and either upload it as a web app using the Web Hosting Manager application or just run it locally and access it from the SAFE Browser using the now supported localhost protocol (see above for details).

Repository

Example HTML file

An examples.html file has been published with the safe_examples release. This file showcases some basic use cases of the DOM API, like authorising an application, creating MutableData objects, as well as reading and iterating over MutableData entries. You can upload this file using the Web Hosting Manager application and publish it as a website, and then run any of the three examples available from the SAFE Browser.

Support

If you need help with anything related to SAFE Browser, Web Hosting Manager or SAFE Mail Tutorial, please use the #support category of this forum.

For more technical questions (e.g. about the SAFE APIs), please use the #support category of the SAFE Dev Forum.

Where should I report issues?

If you know which component a bug is associated with, feel free to report it on GitHub in the corresponding repo.

SAFE Authenticator & API

During the last week, the whole front-end team was focusing on fixing all issues reported in our internal tests of Test 19, and performing additional integration tests to exercise some more edgy cases which helped us stabilise not only the browser and its plugins, but also the example applications.

@hunterlester made a new video to introduce the authoriseShareMd DOM API function which allows a web application to send an authorisation request for accesing a MutableData created by another application.

Some new features were added to the examples applications as detailed above since they help us in testing the network and the interactions with the Browser and the Authenticator. This can be sometimes considered unnecessary as these applications were originally meant to showcase how to use the API, but they have demonstrated to be very helpful in finding issues in different layers of the software.

Apart from continuing working on fixing some minor issues that we still have in our backlog, the team is now trying to focus on enhancing our build process for all the front-end artifacts, since there are several steps we still have to do manually.

There was an ongoing effort which is now being resumed to enhance the UI/UX of the Web Hosting Manager which should allow us to add more complex functionality to it.

SAFE Client Libs

This week the team continued fixing existing issues and expanding our test suite. @canndrew fixed an issue where an error was being raised after the first-time read of the /tmp/MockVault file. This was resulting in a deserialise error as the file was empty and we were trying to deserialise 0 bytes. @marcin has added high-level documentation for all tests, of which there are 130 and growing, and finished refactoring mock-routing-only tests. He also began adding missing test cases, starting with our FFI functions. The new tests haven’t uncovered any bugs yet, which we hope is a good sign

We began to identify parts of the code that might be sending unnecessary network requests. We want to eliminate such requests because they generate unnecessary traffic and in the case of mutations, incur charges against the user’s account balance. One such request was identified during application authentication and work to remove it is ongoing (MAID-2312). Another was suspected to happen during application revocation, but a quick test case did not confirm the issue.

Routing, Vault & Crust

Our research efforts this week have been focused on messaging strategies, of which gossip and single-node accumulation are two examples. We have written a basic simulation of the sort of gossip protocol we might like to use, and so far the results look promising. Even though the gossip protocol we need requires a quorum of nodes to vote on each message, the simulation demonstrates that messages still propagate within a small (logarithmic) number of steps, as in regular gossip. There are several details that still need to be worked out, but our hope is that a gossip protocol will be more robust and distribute the load of sending messages better than using a single-node as an accumulator.

In Crust, work has continued on implementing uTP support. uTP is a stream-oriented protocol which works over UDP and is mainly used on the BitTorrent network. UDP has several advantages compared to TCP: it’s faster, it allows us to make more connections with fewer sockets, and it’s easier to hole-punch UDP sockets through network address translators meaning better connectivity for users behind home routers. There has also been some effort to allow Crust to run Tokio-style futures, which should speed up the rate at which we can implement new features in Crust.