Skip to content

Conversation

@droidmonkey
Copy link
Member

@droidmonkey droidmonkey commented Dec 24, 2024

Originally contributed through #9778, code provided by @evur

Fixes #3045

Screenshots

Testing strategy

Type of change

  • ✅ Bug fix (non-breaking change that fixes an issue)
  • ✅ New feature (change that adds functionality)

@droidmonkey droidmonkey added feature: KeeShare pr: new feature Pull request adds a new feature labels Dec 24, 2024
@droidmonkey droidmonkey added this to the v2.7.10 milestone Dec 24, 2024
@codecov
Copy link

codecov bot commented Dec 24, 2024

Codecov Report

❌ Patch coverage is 26.08696% with 34 lines in your changes missing coverage. Please review.
✅ Project coverage is 64.34%. Comparing base (9031cb5) to head (27a50d8).
⚠️ Report is 25 commits behind head on develop.

Files with missing lines Patch % Lines
src/keeshare/ShareExport.cpp 0.00% 25 Missing ⚠️
src/keeshare/group/EditGroupWidgetKeeShare.cpp 33.33% 6 Missing ⚠️
src/keeshare/KeeShareSettings.cpp 75.00% 3 Missing ⚠️
Additional details and impacted files
@@             Coverage Diff             @@
##           develop   #11593      +/-   ##
===========================================
- Coverage    64.39%   64.34%   -0.05%     
===========================================
  Files          378      378              
  Lines        39782    39813      +31     
===========================================
+ Hits         25615    25616       +1     
- Misses       14167    14197      +30     

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

@droidmonkey
Copy link
Member Author

I fixed up the code, but this does break existing behavior since recursing is off by default. Need to think about whether to send this out with 2.7.10 or not.

@droidmonkey
Copy link
Member Author

This needs to be adjusted so the current behavior is retained as the default behavior.

@droidmonkey droidmonkey modified the milestones: v2.7.10, v2.8.0 Feb 9, 2025
@droidmonkey
Copy link
Member Author

Deferring this to 2.8.0

Copilot AI review requested due to automatic review settings November 2, 2025 17:25
@droidmonkey droidmonkey modified the milestones: v2.8.0, v2.7.11 Nov 2, 2025
@droidmonkey droidmonkey requested a review from phoerious November 2, 2025 17:26
@droidmonkey
Copy link
Member Author

droidmonkey commented Nov 2, 2025

This is ready to go, greatly improves experience with KeeShare without completely overhauling it. @phoerious

Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR adds a "Keep Group Structure" checkbox to the KeeShare export functionality, allowing users to optionally preserve the hierarchical group structure when exporting shared databases. Previously, all entries from a shared group were flattened into the root of the export database.

  • Adds a new keepGroups boolean field to the Reference struct (defaults to true for new references)
  • Implements serialization/deserialization of the new field with backward compatibility
  • Adds UI checkbox in the KeeShare group edit dialog to control this setting

Reviewed Changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
src/keeshare/group/EditGroupWidgetKeeShare.ui Adds a checkbox UI element at row 3 with layout adjustments for existing elements
src/keeshare/group/EditGroupWidgetKeeShare.h Declares the slot handler for the new checkbox toggle event
src/keeshare/group/EditGroupWidgetKeeShare.cpp Implements signal connection, checkbox state initialization, and toggle handler
src/keeshare/ShareExport.cpp Refactors export logic to conditionally clone child groups based on keepGroups setting
src/keeshare/KeeShareSettings.h Adds keepGroups field to Reference struct with default value true
src/keeshare/KeeShareSettings.cpp Implements serialization/deserialization logic with backward compatibility and changes log level from warning to debug
share/translations/keepassxc_en.ts Adds translation entries for the new checkbox label and tooltip
Comments suppressed due to low confidence (1)

src/keeshare/group/EditGroupWidgetKeeShare.ui:224

  • The tab order does not include the newly added keepGroupsCheckbox widget. Add <tabstop>keepGroupsCheckbox</tabstop> after passwordEdit to ensure proper keyboard navigation through all form fields.
 <tabstops>
  <tabstop>typeComboBox</tabstop>
  <tabstop>pathEdit</tabstop>
  <tabstop>pathSelectionButton</tabstop>
  <tabstop>passwordEdit</tabstop>
  <tabstop>clearButton</tabstop>
 </tabstops>

@droidmonkey droidmonkey merged commit d87554e into develop Nov 9, 2025
18 checks passed
@droidmonkey droidmonkey deleted the group-sync branch November 9, 2025 21:10
@elRicharde
Copy link

Deferring this to 2.8.0

this can´t go to 2.7.11 i guess?

Thanks for your work, happy to see this on the way! :-)

@at-ng
Copy link

at-ng commented Nov 13, 2025

Milestone v2.7.11

droidmonkey modified the milestones: v2.8.0, v2.7.11 2 weeks ago

Preview builds https://snapshot.keepassxc.org/

@elRicharde
Copy link

Preview builds https://snapshot.keepassxc.org/

these are all 2.8 and the win11 latest crashes when unlocking my DB.
Anyways i prefer a released Version - happy to see it almost here. Thanks Team!

@droidmonkey
Copy link
Member Author

Crashes? You should open an issue for that.

@droidmonkey droidmonkey added the pr: backported Pull request backported to previous release label Nov 23, 2025
droidmonkey added a commit that referenced this pull request Nov 23, 2025
---------

Co-authored-by: ever <[email protected]>
Co-authored-by: Ben Kluwe <[email protected]>
@phoerious phoerious mentioned this pull request Nov 23, 2025
phoerious pushed a commit that referenced this pull request Nov 23, 2025
---------

Co-authored-by: ever <[email protected]>
Co-authored-by: Ben Kluwe <[email protected]>
dragonekii pushed a commit to dragonekii/keepassxc-custom that referenced this pull request Dec 8, 2025
Release 2.7.11 (2025-11-23)

- Add image, HTML, Markdown preview, and text editing support to inline attachment viewer [keepassxreboot#12085, keepassxreboot#12244, keepassxreboot#12654]
- Add database merge confirmation dialog [keepassxreboot#10173]
- Add option to auto-generate a password for new entries [keepassxreboot#12593]
- Add support for group sync in KeeShare [keepassxreboot#11593]
- Add {UUID} placeholder for use in references [keepassxreboot#12511]
- Add “Wait for Enter” search option [keepassxreboot#12263]
- Add keyboard shortcut to “Jump to Group” from search results [keepassxreboot#12225]
- Add predefined search for TOTP entries [keepassxreboot#12199]
- Add confirmation when closing database via ESC key [keepassxreboot#11963]
- Add support for escaping placeholder expressions [keepassxreboot#11904]
- Reduce tab indentation width in notes fields [keepassxreboot#11919]
- Cap default Argon2 parallelism when creating a new database [keepassxreboot#11853]
- Database lock after inactivity now enabled by default and set to 900 seconds [keepassxreboot#12689, keepassxreboot#12609]
- Copying TOTP now opens setup dialog if none is configured for entry [keepassxreboot#12584]
- Make double click action configurable [keepassxreboot#12322]
- Remove unused “Last Accessed” from GUI [keepassxreboot#12602]
- Auto-Type: Add more granular confirmation settings [keepassxreboot#12370]
- Auto-Type: Add URL typing preset and add copy options to menu [keepassxreboot#12341]
- Browser: Do not allow sites automatically if entry added from browser extension [keepassxreboot#12413]
- Browser: Add options to restrict exposed groups [keepassxreboot#9852, keepassxreboot#12119]
- Bitwarden Import: Add support for timestamps and password history [keepassxreboot#12588]
- macOS: Add Liquid Glass icon [keepassxreboot#12642]
- macOS: Remove theme-based menubar icon toggle [keepassxreboot#12685]
- macOS: Add Window and Help menus [keepassxreboot#12357]
- Windows: Add option to add KeePassXC to PATH during installation [keepassxreboot#12171]

- Fix window geometry not being restored properly when KeePassXC starts in tray [keepassxreboot#12683]
- Fix potential database truncation when using direct write save method with YubiKeys [keepassxreboot#11841]
- Fix issue with database backup saving [keepassxreboot#11874]
- Fix UI lockups during startup with multiple tabs [keepassxreboot#12053]
- Fix keyboard shortcuts when menubar is hidden [keepassxreboot#12431]
- Fix clipboard being cleared on exit even if no password was copied [keepassxreboot#12603]
- Fix single-instance detection when username contains invalid filename characters [keepassxreboot#12559]
- Fix “Search Wait for Enter” setting not being save [keepassxreboot#12614]
- Fix hotkey accelerators not being escaped properly on database tabs [keepassxreboot#12630]
- Fix confusing error if user cancels out of key file edit dialog [keepassxreboot#12639]
- Fix issues with saved searches and “Press Enter to Search” option [keepassxreboot#12314]
- Fix URL wildcard matching [keepassxreboot#12257]
- Fix TOTP visibility on unlock and settings change [keepassxreboot#12220]
- Fix KeeShare entries with reference attributes not updating [keepassxreboot#11809]
- Fix sort order not being maintained when toggling filters in database reports [keepassxreboot#11849]
- Fix several UI font and layout issues [keepassxreboot#11967,  keepassxreboot#12102]
- Prevent mouse wheel scroll on edit username field [keepassxreboot#12398]
- Improve base translation consistency [keepassxreboot#12432]
- Improve inactivity timer [keepassxreboot#12246]
- Documentation improvements [keepassxreboot#12373, keepassxreboot#12506]
- Browser: Fix ordering of clientDataJSON in Passkey response object [keepassxreboot#12120]
- Browser: Fix URL matching for additional URLs [keepassxreboot#12196]
- Browser: Fix group settings inheritance [keepassxreboot#12368]
- Browser: Allow read-only native messaging config files [keepassxreboot#12236]
- Browser: Optimise entry iteration in browser access control dialog [keepassxreboot#11817]
- Browser: Fix “Do not ask permission for HTTP Basic Auth” option [keepassxreboot#11871]
- Browser: Fix native messaging path for Tor Browser launcher on Linux [keepassxreboot#12005]
- Auto-Type: Fix empty window behaviour [keepassxreboot#12622]
- Auto-Type: Take delays into account when typing TOTP [keepassxreboot#12691]
- SSH Agent: Fix out-of-memory crash with malformed SSH keys [keepassxreboot#12606]
- CSV Import: Fix modified and creation time import [keepassxreboot#12379]
- CSV Import: Fix duplication of root groups on import [keepassxreboot#12240]
- Proton Pass Import: Fix email addresses not being imported when no username set [keepassxreboot#11888]
- macOS: Fix secure input getting stuck [keepassxreboot#11928]
- Windows: Prevent launch as SYSTEM user from MSI installer [keepassxreboot#12705]
- Windows: Remove broken check for MSVC Redistributable from MSI installer [keepassxreboot#11950]
- Linux: Fix startup delay due to StartupNotify setting in desktop file [keepassxreboot#12306]
- Linux: Fix memory initialisation when --pw-stdin is used with a pipe [keepassxreboot#12050]
@tomasss1024
Copy link

tomasss1024 commented Dec 12, 2025

Please ensure that the manual is updated to reflect this change and clarify the backward compatibility aspect. I was surprised to find that my databases were not synchronized after update to v2.7.11 and that only "root" items appeared in the shared file.

hannpet pushed a commit to hannpet/keepassxc that referenced this pull request Jan 2, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

feature: KeeShare pr: backported Pull request backported to previous release pr: new feature Pull request adds a new feature

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Add ability to sync group structure with KeeShare

8 participants