5.7 KiB
0.25.0-beta1
13th July, 2025
After reading Issue #668, I conducted another self-review of the E2EE-related code. In retrospect, it was clearly written by someone inexperienced, which is understandable, but it is still rather embarrassing. Three years is certainly enough time for growth.
I have now rewritten the E2EE code to be more robust and easier to understand. It is significantly more readable and should be easier to maintain in the future. The performance issue, previously considered a concern, has been addressed by introducing a master key and deriving keys using HKDF. This approach is both fast and robust, and it provides protection against rainbow table attacks. (In addition, this implementation has been a dedicated package on the npm registry, and tested in 100% branch-coverage).
As a result, this is the first time in a while that forward compatibility has been broken. We have also taken the opportunity to change all metadata to use encryption rather than obfuscation. Furthermore, the Dynamic Iteration Count setting is now redundant and has been moved to the Patches pane in the settings. Thanks to Rabin-Karp, the eden setting is also no longer necessary and has been relocated accordingly. Therefore, v0.25.0 represents a legitimate and correct evolution.
As previously reported, beta releases are made when forward compatibility is broken. This version will be released in about a week if no issues arise. I am aware that there are other outstanding issues, but as this is a security matter, please let me prioritise this release. Thank you for your understanding and patience. I hope you enjoy the new version.
Fixed
- The encryption algorithm now uses HKDF with a master key.
- This is more robust and faster than the previous implementation.
- It is now more secure against rainbow table attacks.
- The previous implementation can still be used via
Patches->End-to-end encryption algorithm->Force V1.- Note that
V1: Legacycan decrypt V2, but produces V1 output.
- Note that
Fetch everything from the remotenow works correctly.- It no longer creates local database entries before synchronisation.
- Extra log messages during QR code decoding have been removed.
Changed
- The following settings have been moved to the
Patchespane:Remote Database TweakIncubate Chunks in DocumentData Compression
Behavioural and API Changes
DirectFileManipulatorV2now requires new settings (as you may already know, E2EEAlgorithm).- The database version has been increased to
12from10.- If an older version is detected, we will be notified and synchronisation will be paused until the update is acknowledged. (It has been a long time since this behaviour was last encountered; we always err on the side of caution, even if it is less convenient.)
Refactored
couchdb_utils.tshas been separated into several explicitly named files.- Some missing functions in
bgWorker.mock.tshave been added.
0.24.31
10th July, 2025
Fixed
- The description of
Enable Developers' Debug Tools.has been refined.- Now performance impact is more clearly stated.
- Automatic conflict checking and resolution has been improved.
- It now works parallelly for each other file, instead of sequentially. It makes significantly faster on first synchronisation when with local files information.
- Resolving conflicts dialogue will not be shown for the multiple files at once.
- It will be shown for each file, one by one.
0.24.30
9th July, 2025
New Feature
- New chunking algorithm
V3: Fine deduplicationhas been added, and will be recommended after updates.- The Rabin-Karp algorithm is used for efficient chunking.
- This will be the default in the new installations.
- It is more robust and faster than the previous one.
- We can change it in the
Advancedpane of the settings.
- New language
ko(Korean) has been added.- Thank you for your contribution, @ellixspace!
- Any contributions are welcome, from any route. Please let me know if I seem to be unaware of this. It is often the case that I am not really aware of it.
- Thank you for your contribution, @ellixspace!
- Chinese (Simplified) translation has been updated.
- Thank you for your contribution, @52sanmao!
Fixed
- Numeric settings are now never lost the focus during value changing.
- Doctor now redacts more sensitive information on error reports.
Improved
- All translations have been rewritten into YAML format, to easier to manage and contribute.
- We can write them with comments, newlines, and other YAML features.
- Doctor recommendations are now shown in a user-friendly notation.
- We can now see the recommended as
V3: Fine deduplicationinstead ofv3-rabin-karp.
- We can now see the recommended as
Refactored
- Never-ending
ObsidianLiveSyncSettingTab.tshas finally been separated into each pane's file. - Some commented-out code has been removed.
Acknowledgement
- Jun Murakami, Shun Ishiguro, and Yoshihiro Oyama. 2012. Implementation and Evaluation of a Cache Deduplication Mechanism with Content-Defined Chunking. In IPSJ SIG Technical Report, Vol.2012-ARC-202, No.4. Information Processing Society of Japan, 1-7.
0.24.29
20th June, 2025
Fixed
- Synchronisation with buckets now works correctly, regardless of whether a prefix is set or the bucket has been (re-) initialised (#664).
- An information message is now displayed again, during any automatic synchronisation is enabled (#662).
Tidied up
- Importing paths have been tidied up.
Older notes are in updates_old.md.