Replies: 3 comments 3 replies
-
|
As this was the first request of its kind, I wasn't sure what to make of this AI implementation. It has significant drawbacks, because even though it seems to work at first glance for your specific needs and has some interesting features, many aspects are unsatisfactory. So I conducted a general study of the solution and carried out an initial review.
Here are my comments after reading the code you generated in your fork. What's wrong :
What's right :
FileSync is currently being developed. It is designed to handle the conflicts you mentioned here, but in a generic way for all file types. KeeShare will then be developed based on this foundation. |
Beta Was this translation helpful? Give feedback.
-
|
OK, take a look here: https://github.com/Lcstyle/KeePassDX/tree/feature/keeshare-saf-clean I cleaned everything up and you should find the docs a little bit easier. I also fixed the modification issue:
|
Beta Was this translation helpful? Give feedback.
-
|
Update: I've addressed your feedback @J-Jamet and have the sync working properly now. Still testing but so far it looks good. What changed since the SAF-clean branchFull diff of the new commits: Lcstyle/KeePassDX@v0.1.0-perdevice...v0.2.0-perdevice Key fixes:
All file I/O goes through SAF — no direct filesystem access, no Syncthing API, no network connections. ReleaseAPK binary: https://github.com/Lcstyle/KeePassDX/releases/tag/v0.2.0-perdevice Would you like me to open a pull request? |
Beta Was this translation helpful? Give feedback.
Uh oh!
There was an error while loading. Please reload this page.
-
Hey everyone,
I implemented KeeShare support in KeePassDX with a per-device sync mode that eliminates file conflicts when syncing via Syncthing between multiple devices (phones, tablets, desktops).
The problem: classic KeeShare has all devices read/write the same container file. When two devices edit their databases and Syncthing syncs, you get conflicts.
The solution: each device writes its own container file (
{DEVICE_ID}.kdbx) into a shared sync directory, and imports entries from all other devices' files. No two devices ever write the same file.What the KeePassDX implementation includes
Fork branch: https://github.com/Lcstyle/KeePassDX/tree/feature/keeshare-support
Desktop interop
I also implemented the matching desktop side in KeePassXC so the two can interop seamlessly: https://github.com/Lcstyle/keepassxc/tree/feature/per-device-keeshare-sync
Discussion on the KeePassXC side: keepassxreboot/keepassxc#13080
This is still untested in real multi-device scenarios, but both builds work and unit tests pass. I'll be testing it with my own Syncthing setup soon.
Would love to hear thoughts on this approach. Happy to clean things up if there's interest in getting this upstream.
Beta Was this translation helpful? Give feedback.
All reactions