With the regular and consistent issues with sync, I think you should prioritize the ability on both mobile platforms as well as PC’s to export an encrypted backup copy of the database. Allow the user to set their own password, double-plus-good if you use a format that can be decrypted by a third-party, standard encryption application, like openssl or GPG.
Your competitors are using your “Export in plaintext only” ability as a marker of an “insecure application” which must have other security problems. I would love to be able to export the DB in an encrypted form alongside the ability to merge that copy back in.
Also, I’d love to see your “Merge” capability have the ability to keep all entries, consistently renaming duplicate entries, so I could manually choose which entry to keep after the Merge has completed.
Hello @Spartan - thanks for reaching out about this. One thing to consider here with Codebook is that the underlying storage of secure data is encapsulated in a single file that can easily be backed up at any time, e.g. using a standard operating system or device backup.
The file format for Codebook itself is already in an open standard form. Codebook uses SQLCipher, which is an open source, widely used encrypted database library. You can open the database and access all of your information using a freely available tool like DB Browser for SQLite. You can even run arbitrary SQL queries against the data.
On the desktops the strip.db file can be accessed in %APPDATA%\Zetetic LLC\Strip\ for Windows, and ~/Library/Containers/net.zetetic.Strip.mac/Data/Library/Application Support/Strip for macOS. You can copy that file, back it up, and then restore it directly onto a new environment if you really needed to in an emergency.
In Codebook, “export to plain text” is not intended to be used for day to day backups. Rather, it is a way for users to:
make a “hard copy” of their data, for example to keep a printout in a safe
Move their data in a portable format to another platform (i.e. so they are never “locked in”).
These are both really valid use cases, and in our opinion any tool that doesn’t provide an option to export your data to support those basic requirements should be looked at skeptically. If I might ask, would you mind pointing me to the place you noticed our competitors saying this was the marker of Codebook being an insecure application?
Finally, with regard to Merge, what you describe is similar to how it works today. If you run a merge operation and there are different distinct entries on both sides, they will both be present in the final database.
Please let me know if this helps address your concerns. Thanks!
On MacOs your codebook database, strip.db, is what’s called a package. The MacOs Finder treats a package as a single object in the filesystem but the system primitives treat it as folder that contains other files and folders. So, to do anything with a package using the command line tools one must treat strip.db as a folder.
Hello @JFS - thanks for pitching in on this. If you are operating through the finder navigation, default.strip is the package. You can right click on that and “Show Package Contents” to directly access the internal strip.db file. The same is true on the command line, i.e. you can cd ~/Library/Containers/net.zetetic.Strip.mac/Data/Library/Application\ Support/Strip/default.strip/to directly operation on strip.db. That individual file can be copied outside of the package to be accessed by SQLCipher, or the entire package can be used as an export if the intent is to backup / restore for Codebook itself.