mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2025-12-04 15:39:34 +01:00
* Add copilot management files * Add AI statements to README and CONTRIBUTING * Add statement to pull request template
2.2 KiB
2.2 KiB
This is a C++ based repository that uses Qt5 as a primary support and GUI library. This repository is for a password manager application that stores passwords and other highly sensitive information. The data format that passwords are stored is called KDBX which is a mixed binary and XML format that is fully encrypted at rest. This format is unpacked into a series of data structures: Database, Groups, and Entries. Please follow these guidelines when contributing:
Code Standards
Required Before Each Commit
- Run
cmake --build . --target formatbefore committing any changes to ensure proper code formatting - This will run clang-format to ensure all code conforms to the style guide
- From the checkout directory, also run
./release-tool i18n lupdateto update translation files
Development Flow
- Setup Build Folder:
mkdir build; cd build - Configure:
cmake -G Ninja -DWITH_XC_ALL=ON -DWITH_GUI_TESTS=ON .. - Build:
cmake --build . -- -j $(nproc) - Test:
ctest
Repository Structure
docs/topics: Documentation written in asciidoctor syntaxsrc/: Main source code files are under this subdirectorysrc/autotype: Code that emulates a virtual keyboard to type into interfacessrc/browser: Interface with the KeePassXC Browser Extension using a JSON-based protocolsrc/cli: Command Line Interface codesrc/core: Contains files that define the data model and other shared code structuressrc/format: Code for import/export and reading/writing of KDBX databasessrc/fdosecrets: freedesktop.org Secret Service interface codesrc/quickunlock: Quick unlock interfaces for various platformssrc/sshagent: SSH Agent interface code to load private keys from the database into ssh-agenttests/: Test source code filestests/gui: GUI test source code files
Key Guidelines
- Follow C++20 and Qt5 best practices and idiomatic patterns
- Maintain existing code structure and organization
- Prefer not to edit cryptographic handling code or other sensitive parts of the code base
- Write unit tests for new functionality using QTest scaffolding
- Suggest changes to the
docs/topicsfolder when appropriate - Unless the change is simple, don't actually make edits to .ui files, just suggest the changes needed