Skip to content

[pull] develop from keepassxreboot:develop#213

Open
pull[bot] wants to merge 18 commits into
byxy77:developfrom
keepassxreboot:develop
Open

[pull] develop from keepassxreboot:develop#213
pull[bot] wants to merge 18 commits into
byxy77:developfrom
keepassxreboot:develop

Conversation

@pull
Copy link
Copy Markdown

@pull pull Bot commented Apr 19, 2026

See Commits and Changes for more details.


Created by pull[bot] (v2.0.0-alpha.4)

Can you help keep this open source service alive? 💖 Please sponsor : )

phoerious and others added 15 commits March 12, 2026 23:34
Replace "Chinese (China)" with "Chinese (Simplified)" and "Chinese (Taiwan)" with "Chinese (Traditional)". This keeps both items adjacent in the language dropdown, uses script-accurate naming, and avoids any geographic misinterpretation.
* Fixes #13130

* Add wifi and sshKey import types
* Add catch-all import type to prevent loss of data when Proton Pass introduces new things
* For some reason the C locale setting is not respected in Jammy and the test fails due to attribute sorting
---------

Co-authored-by: Jonathan White <support@dmapps.us>
* Fix ghost window on Windows by using proper dialog window flags

Replace Qt::Window with Qt::Dialog | Qt::WindowTitleHint | Qt::WindowCloseButtonHint
in UpdateCheckDialog to prevent an orphaned DWM window frame on Windows 11.

Using bare Qt::Window on a QDialog causes Windows DWM to create an independently
managed top-level composition surface. If the dialog's native handle is not
cleanly destroyed (e.g., during process exit while the dialog exists), DWM can
leave behind a transparent, non-interactive ghost window frame that persists
even after the process is gone and can only be cleared by rebooting.

Using Qt::Dialog keeps the dialog properly associated with its parent window
in DWM's composition tree, preventing the orphaned frame.

Fixes #9493
* Refactor: avoid naming lambda expressions and use STL algorithm

Lambda expressions in C++ are designed to be anonymous, lightweight, and local,
intended to encapsulate concise logic without the need for formal declarations.
Explicitly naming them (e.g., assigning to a variable or using a named `auto`)
contradicts their purpose: it introduces redundancy, adds unnecessary weight,
and blurs the line between lambdas and regular functions.

This change removes unnecessary lambda names and replaces the custom logic with
a standard STL algorithm, making the code more idiomatic, maintainable, and
aligned with the STL's philosophy of generic, reusable components.

* Refactor: Use std::any_of and lambda for deleted object checks

Replace manual for-loop iteration with std::any_of and a lambda expression
to check for the presence of a deleted object by UUID. This improves code
clarity, conciseness, and aligns with modern C++ best practices by leveraging
STL algorithms and functional-style expressions.

The second overload of containsDeletedObject() is now implemented by reusing
the first, avoiding code duplication and ensuring consistency.

* Run code format

* refactor(config): replace manual loop with `std::any_of` for roaming settings validation

- Remove the local lambda function `isValidSetting` and replace it with a direct use of `std::any_of` in the loop.
- Improve code readability and maintainability by leveraging the C++ Standard Library.
- Reduce redundancy and make the logic more concise and idiomatic.

This change ensures the code is more aligned with modern C++ practices while maintaining the same functionality.

* refactor(icons): simplify image format validation using `std::all_of`

- Replace manual loop and flag-based validation with `std::all_of` to check for non-alphanumeric characters in image formats.
- Improve code clarity and reduce boilerplate by leveraging the C++ Standard Library.
- Maintain the same filtering logic while making the code more concise and idiomatic.

---------

Co-authored-by: Jonathan White <support@dmapps.us>
* Remove individual feature flags in favor of a single `KPXC_MINIMAL` flag that removes advanced features from the build. Basic features are no longer guarded by feature flags.
* Basic features: Auto-Type, Yubikey, KeeShare
* Advanced features include: Browser (and passkeys), SSH Agent, and Secret Service
* Networking, Documentation, and Update Checking remain as feature flags to accommodate various distro requirements.

This change also cleans up the main CMakeLists.txt by re-arranging some content and placing macros into a dedicated include file. The minimum CMake version was bumped to 3.16.0 to conform to our minimum Ubuntu support of Focal (20.04). This also allows us to default to C++20, we fall back to C++17 for Qt versions less than 5.15.0 due to lack of support.

Lastly this change removes the KEEPASSXC_BUILD_TYPE="PreRelease" which is never used. We only support "Snapshot" and "Release" now.

Additional cleanup of CMakeLists:

1. Removed always-true CMake version guard  if(CMAKE_VERSION >= 3.14.0)

2. Removed dead GCC 4.8 stack protector fallback; C++20 requires GCC 10+, and -fstack-protector-strong has been available since GCC 4.9.

3. Removed dead ASan LSan version guard for the same reason.

4. Converted set_target_properties( COMPILE_DEFINITIONS) to target_compile_definitions() on both keepassxc_core and keepassxc_gui. Both are now PRIVATE since the symbol is an internal build detail.

5. Scoped Qt5Gui_PRIVATE_INCLUDE_DIRS to keepassxc_gui preventing Qt-internal headers from leaking into every target in the build.

6. Use cmake_parse_arguments to cleanup test case definition macros. Remove test output formats as they are never used and can be controlled when tests are run.

* moved /fsanitize=address to compile options instead of definitions for MSVC builds

---------

Co-authored-by: varjolintu <sami.vanttinen@ahmala.org>
@pull pull Bot locked and limited conversation to collaborators Apr 19, 2026
@pull pull Bot added ⤵️ pull merge-conflict Resolve conflicts manually labels Apr 19, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

⤵️ pull merge-conflict Resolve conflicts manually

Projects

None yet

Development

Successfully merging this pull request may close these issues.