It is finally done: last night, on the 7th birthday of the remoteStorage.js Git repository, we tagged and published version
Between last year's
0.14.0 and yesterday's
1.0.0, 6 authors have contributed 619 commits; restructuring the codebase, fixing bugs, enhancing features, improving the public API, and documenting code and usage. Thank all of you, for every single line of it!
remoteStorage is the first (and currently only) open standard to enable truly unhosted web apps. That means users are in full control of their precious data and where it is stored, while app developers are freed of the burden of hosting, maintaining and protecting a central database.
Layout, builds, ES6
Data modules are now npm modules
New connect widget add-on, support for Dropbox & Google Drive
We completely removed the connect widget from the core library in favor of creating public APIs for anything that is needed to build your own user interface. However, we also had a great community effort to design a new connect widget as an add-on library, which also incorporates a screen for choosing between multiple storage backends.
In fact, remoteStorage.js now officially supports optionally connecting a Dropbox or Google Drive account, instead of a remoteStorage one, so your app can appeal to a wider audience, and users can switch to remoteStorage whenever they're ready for it. And the new connect widget thus includes design elements for those backends as well.
Last but not least, we finally got our documentation in order for good. There's a whole new documentation site, which combines all of the different docs we had before. It's based on ReStructuredText and Sphinx, and you can find all of it in the
doc/ folder of the repo as well.
We also switched the code documentation from NaturalDocs to the more suitable JSDoc, and we're using sphinx-js to pull that into the new combined docs.
We published a guide for how to upgrade to rs.js 1.0 (from 0.14 or earlier). For most apps, this should take less than 15 minutes and is definitely worth the effort.
(If you run into any problems, just open a thread here on the forums, or pop into #remotestorage on Freenode IRC, and someone will help you solve it and also improve the respective docs.)
- All builds, including AMD/CommonJS and no-cache, are now rolled into one UMD build. (#951)
RemoteStorage.defineModule is no more, and both declaring modules and loading them in apps can now be done with a new, improved API. (#974)
- The connect widget is not part of the core library anymore, but has moved to a seperate add-on library (#862)
- Error events (e.g. unauthorized, sync error, etc.) are identified by name instead of type now (#984)
- Network request timeouts are configured via the
setRequestTimeout method on the RemoteStorage instance instead of setting
- Deprecated method
RemoteStorage.util has been removed
setApiKeys takes a config object as argument to allow to configure multiple backends at once (#1021)
- The sync events 'done' and 'req-done' are emitted by the
remoteStorage instance instead of
remoteStorage.sync as 'sync-done' and 'sync-req-done (#1044)
- The network events 'wire-busy' and 'wire-done' are emitted by the
remoteStorage instance instead of
- Switch Dropbox adapter to use the Dropbox API v2 (#936)
- Store data in Google Drive under "remotestorage" base dir (#962)
- Use email address as user address when connected to Google Drive (#955)
Unauthorized error on 401 responses (#1018)
Unauthorized error with code "access_denied" when user denies access (#1018)
reconnect() method to retrieve new authorization (e.g. after it expired) (#1018)
startSync() returns the sync promise (#1036)
not-connected events when registering an handler after they happened originally. (#1066)
- Introduce ESLint, fix syntax and scope issues throughout the code (#1080)
- Fix sync errors after disconnect (#994)
- Fix discovery problems in Internet Explorer (#1018)
- Fix error when trying to delete last document in a directory (#993)
- Fix Dropbox files not being deleted when they had been created in the same session (#1042)
- Emit 'wire-busy' and 'wire-done' events when using Dropbox or Google Drive (#957)