Previously with Codebook 3 all Sync Data was encrypted with your master password, and stored as one giant database out on the remote (Dropbox, Google Drive, or Desktop via Wifi). On the one hand this was simple and made functions like Overwrite and Restore possible. This was very secure and worked well initially but there were many problems with this approach that became apparent over time. Besides being slow and inefficient, it prevented us from implementing many new features that customers have asked for like storage of images and attachments, multi-factor authentication, and fast background sync. These are all future plans, so we needed to replace the sync system.
The new sync approach with Codebook 4 is quite different. Obviously the Sync Key is new and very visible. But the more significant change is that sync changes are broken up into small chunks that describe individual changes. These chunks are stored as a chronological series of change sets. This means that now Codebook only needs to exchange the items that have changed when it syncs, instead of copying your entire encrypted database around. The use of the random Sync Key makes it even more secure than before.
However, this change also means that the old concepts of Overwrite and Restore, where database were just deleted and replaced, are no longer applicable. For example, it isn’t feasible to overwrite in the new model, because changes have been tracked in such a way that Codebook can’t replace all the remote data. It is for this reason that we don’t foresee the return of Overwrite and Restore functions as first class sync features.
We have gone to great lengths to ensure that even when you are syncing across multiple devices changes will be merged in a sensible manner. In other words, the most recent change will always be visible after sync, new entries and categories will be created across your devices, and deletions will propagate cleanly. Our intent is that you should be able to use the new sync system without having to worry at all about what device a change originated on. Sync will be much faster too, especially over slower data connections. Furthermore, the new system will support future features like attachments, multi-factor authentication, and background sync seamlessly.
That said, we do recognize that in some cases it is required to completely replace a local dataset and start from a good copy, for example in a data recovery scenario. If you have bad data in a local copy (e.g. you have accidentally deleted an entire category of entries), you can uninstall the app on mobile, or delete your Codebook application data folders on desktop, reinstall, and start over. The next time you sync that “new” copy it will restore the good data from your Cloud or Desktop system.
We’d very much like for you to try out the new system with bidirectional sync support and see if it works for you. Of course we are grateful to hear from users, and appreciate feedback. If after using the new sync system you still find there there are specific scenarios or use cases that you feel can’t be supported we’d be happy to hear about them.