Compare commits
679 Commits
2.7.0-beta
...
develop
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
967dc5937f | ||
|
|
adba5095c3 | ||
|
|
98bbad0a4c | ||
|
|
87c63ff9ee | ||
|
|
cb24df7aae | ||
|
|
0f3def03b6 | ||
|
|
97d4edd9b8 | ||
|
|
72308a1706 | ||
|
|
a5c9ffbef7 | ||
|
|
2900f919c8 | ||
|
|
6c59b5db98 | ||
|
|
1a4e9ca4e2 | ||
|
|
a2e7132ead | ||
|
|
4e59c1c579 | ||
|
|
c09ba0113b | ||
|
|
f39e0937b9 | ||
|
|
f484d7f5ed | ||
|
|
10bd651355 | ||
|
|
b3dbc49161 | ||
|
|
eefee1f092 | ||
|
|
5332075193 | ||
|
|
964bb59f71 | ||
|
|
5acfcc6a1f | ||
|
|
d87554e6d2 | ||
|
|
e542070902 | ||
|
|
301c64d68c | ||
|
|
77746846da | ||
|
|
002b8fee15 | ||
|
|
44daca921a | ||
|
|
fedcbf60c5 | ||
|
|
592d553ff8 | ||
|
|
a709f14cf3 | ||
|
|
9031cb530e | ||
|
|
ebf0676661 | ||
|
|
6130a64be5 | ||
|
|
9814037fd3 | ||
|
|
8c8ae49240 | ||
|
|
1e370b8ab8 | ||
|
|
cd9bb483fe | ||
|
|
2cc2c905b5 | ||
|
|
d9ccf767d0 | ||
|
|
f927c4c41a | ||
|
|
092879bcee | ||
|
|
298d401649 | ||
|
|
32b0f4ee9f | ||
|
|
c016e8af9b | ||
|
|
61fdb85a3c | ||
|
|
20c7d35216 | ||
|
|
682269f622 | ||
|
|
6ca42103b8 | ||
|
|
33a747d5bc | ||
|
|
6f59444439 | ||
|
|
5736c6379c | ||
|
|
fd2a729677 | ||
|
|
c0ea6f65f9 | ||
|
|
9a40182a62 | ||
|
|
05150e2483 | ||
|
|
dd023ca157 | ||
|
|
ad2f95117a | ||
|
|
6e1694111f | ||
|
|
7ea141652e | ||
|
|
b12f6f0786 | ||
|
|
7e3e2c10d2 | ||
|
|
e9cf38a6e3 | ||
|
|
142454d08e | ||
|
|
83d1003ec2 | ||
|
|
41da5b2127 | ||
|
|
606cf37952 | ||
|
|
544f983bad | ||
|
|
8d59090243 | ||
|
|
9e8a966c23 | ||
|
|
448165613d | ||
|
|
93423eda30 | ||
|
|
56b63a9e0f | ||
|
|
2c2b686593 | ||
|
|
7c2fd5e3e9 | ||
|
|
7ec0f1f5a8 | ||
|
|
76b2f377df | ||
|
|
20c65fbd1e | ||
|
|
74326616c5 | ||
|
|
634a5b34f1 | ||
|
|
8c7cc90363 | ||
|
|
217ee01572 | ||
|
|
7a5cd6105c | ||
|
|
64078933ab | ||
|
|
e5fbab38d8 | ||
|
|
e2cf37a91f | ||
|
|
f62ea95499 | ||
|
|
b5f4e98925 | ||
|
|
20aefd0c7a | ||
|
|
9baf77cbc4 | ||
|
|
5dfcc72f98 | ||
|
|
f2a4cc7e66 | ||
|
|
c4b4be48a5 | ||
|
|
2c3a1a03cb | ||
|
|
3c7c3b0a5f | ||
|
|
eac95df000 | ||
|
|
db0f091536 | ||
|
|
5cb6ad6335 | ||
|
|
f32ed71dfc | ||
|
|
8a32b3bc5e | ||
|
|
f53c7e5af5 | ||
|
|
a1ad86705c | ||
|
|
a6e92c96d5 | ||
|
|
640366ad4d | ||
|
|
af2479da8d | ||
|
|
dff5f3bc13 | ||
|
|
12010d47a6 | ||
|
|
b50fad47ac | ||
|
|
ed0429ad4e | ||
|
|
37ddbb3cd2 | ||
|
|
fcb32efd05 | ||
|
|
9e64570e3a | ||
|
|
31c0b23890 | ||
|
|
33a3796074 | ||
|
|
1b1643b5d1 | ||
|
|
244ed42231 | ||
|
|
af2d0b1429 | ||
|
|
86f74a00d0 | ||
|
|
ab6b6f36a0 | ||
|
|
5a3289ee3c | ||
|
|
e4bb80b96c | ||
|
|
d6e726a9cf | ||
|
|
03855fc411 | ||
|
|
518dd71de6 | ||
|
|
41b6247178 | ||
|
|
2ea656bc27 | ||
|
|
253bb42ac0 | ||
|
|
0b5ae1775c | ||
|
|
9ba6ada266 | ||
|
|
51e8c042af | ||
|
|
c9a64be699 | ||
|
|
15ac8ac4f8 | ||
|
|
8ca90a070a | ||
|
|
811887e591 | ||
|
|
81fa8d5947 | ||
|
|
5ee5e4998a | ||
|
|
046cb9bd70 | ||
|
|
831704f3b2 | ||
|
|
4d7eae34c2 | ||
|
|
8d6d937b1b | ||
|
|
f5bb5985ee | ||
|
|
6494cdbb4c | ||
|
|
9de623120b | ||
|
|
f3b08102c4 | ||
|
|
29ac4da240 | ||
|
|
832340e209 | ||
|
|
dce34de875 | ||
|
|
40ee047ef0 | ||
|
|
17dc022e15 | ||
|
|
620abb96f2 | ||
|
|
edab0faa94 | ||
|
|
9e29b5c7b6 | ||
|
|
2afec91e87 | ||
|
|
fb022cb5e9 | ||
|
|
e76e9d42c7 | ||
|
|
9670a5e74e | ||
|
|
132ca42ec5 | ||
|
|
af0c1644a6 | ||
|
|
d60472328f | ||
|
|
5e61db630c | ||
|
|
0cb0373f85 | ||
|
|
6bbb7dcfac | ||
|
|
f2ed4e3840 | ||
|
|
cdbff32f25 | ||
|
|
f71cca4eba | ||
|
|
b1180b3341 | ||
|
|
9a63e80386 | ||
|
|
b29993abe5 | ||
|
|
1d581ee027 | ||
|
|
bf856d278d | ||
|
|
9b8163c3a4 | ||
|
|
b9c5869806 | ||
|
|
4acb3774e6 | ||
|
|
2fc24be331 | ||
|
|
bff0b93f5f | ||
|
|
ca9b88fae8 | ||
|
|
6e81451f64 | ||
|
|
d03ffc228c | ||
|
|
2738a72b43 | ||
|
|
5d24495704 | ||
|
|
34fe413dad | ||
|
|
feafceca57 | ||
|
|
8acc54225d | ||
|
|
6e0baf9f2c | ||
|
|
95bae8377c | ||
|
|
f07db033c6 | ||
|
|
4f8c204096 | ||
|
|
02881889d5 | ||
|
|
d57d167e9c | ||
|
|
740994ed48 | ||
|
|
dbf9587775 | ||
|
|
7498fe24dc | ||
|
|
0941ff41b6 | ||
|
|
12ee4a9446 | ||
|
|
e07eb2c82c | ||
|
|
684122c9a9 | ||
|
|
ba0fc3b886 | ||
|
|
3fde6aae45 | ||
|
|
b8564d5c24 | ||
|
|
d2da13da20 | ||
|
|
abcb1414a3 | ||
|
|
ea2e36c676 | ||
|
|
c1a66a8be9 | ||
|
|
c8fc25ea5c | ||
|
|
2f0160438a | ||
|
|
3c05dd248d | ||
|
|
48d0f2b159 | ||
|
|
c7d318236f | ||
|
|
9b4e6b4e11 | ||
|
|
3c5f49dc5b | ||
|
|
d643d338d2 | ||
|
|
ac6654c532 | ||
|
|
6a9ed21079 | ||
|
|
b3bec8b2b4 | ||
|
|
42ce2a49fa | ||
|
|
5351392237 | ||
|
|
672a9fe87f | ||
|
|
14619cb16e | ||
|
|
05112e5700 | ||
|
|
e48ef80e9c | ||
|
|
afe634d4f2 | ||
|
|
166a371050 | ||
|
|
854459068f | ||
|
|
0a516d526c | ||
|
|
a02ddc773e | ||
|
|
198889c7a4 | ||
|
|
6b1ab1a5ed | ||
|
|
e07fe032f6 | ||
|
|
43e3fbaaf0 | ||
|
|
dad8b1d2ea | ||
|
|
34808a2caa | ||
|
|
fbdd97b1be | ||
|
|
88b76244cf | ||
|
|
5bf5b93836 | ||
|
|
07f565aa49 | ||
|
|
e6db2ce3b9 | ||
|
|
1f9c25cc91 | ||
|
|
80ac50a144 | ||
|
|
34d913ed33 | ||
|
|
f4b91c17a9 | ||
|
|
5f2ee86d72 | ||
|
|
9972b5f531 | ||
|
|
a6ea307205 | ||
|
|
24dc07897b | ||
|
|
def56f745c | ||
|
|
da8874ded6 | ||
|
|
2c0844807e | ||
|
|
2b08af712f | ||
|
|
dd1a233859 | ||
|
|
f80e79f71a | ||
|
|
3662f6aa77 | ||
|
|
28e6887aa4 | ||
|
|
fbace75185 | ||
|
|
8bc76a2a88 | ||
|
|
6c02c74539 | ||
|
|
af2ba798a0 | ||
|
|
647272e9c5 | ||
|
|
1ca607792d | ||
|
|
ad8a00d56b | ||
|
|
40f4428e36 | ||
|
|
1d008dbd72 | ||
|
|
c3df16147d | ||
|
|
af3b4074e2 | ||
|
|
e72cc7dd73 | ||
|
|
ecdebd71c1 | ||
|
|
c81e4e1208 | ||
|
|
9288bef4f5 | ||
|
|
5de669eb7b | ||
|
|
9aa040604a | ||
|
|
20868ab3a2 | ||
|
|
c93eacd1d3 | ||
|
|
a5c7f7bb50 | ||
|
|
8cd45f57b7 | ||
|
|
1fd8923746 | ||
|
|
2a62000b28 | ||
|
|
e7aa09276e | ||
|
|
da90319d2d | ||
|
|
f093291442 | ||
|
|
b56c5cbde8 | ||
|
|
3ace4c6cf5 | ||
|
|
83623c896f | ||
|
|
92b30ae7ec | ||
|
|
bd449f3226 | ||
|
|
6b62beab6e | ||
|
|
1896883382 | ||
|
|
94ace985e7 | ||
|
|
3829bcdd8f | ||
|
|
4f12f57a0b | ||
|
|
04fac249f9 | ||
|
|
f812f0a1ac | ||
|
|
195e5b53f2 | ||
|
|
13362c9142 | ||
|
|
9a65ffe972 | ||
|
|
19d4f7334c | ||
|
|
cd1aa6ee4a | ||
|
|
a542ded97c | ||
|
|
4ef52c859b | ||
|
|
7ae65dd656 | ||
|
|
bb856f89b9 | ||
|
|
994c5b733a | ||
|
|
d0e9f133b1 | ||
|
|
5b123e7944 | ||
|
|
880621c1fb | ||
|
|
35af1c6695 | ||
|
|
cb1ae44a3b | ||
|
|
41d00135af | ||
|
|
6f11422604 | ||
|
|
e657cbf43b | ||
|
|
6481ecccd7 | ||
|
|
f60601fa67 | ||
|
|
194409abd6 | ||
|
|
5883f49f37 | ||
|
|
8a4787278d | ||
|
|
9329df2b48 | ||
|
|
c34098546d | ||
|
|
e70777061c | ||
|
|
d5e6f394b7 | ||
|
|
35fdcfa28d | ||
|
|
812bb606c7 | ||
|
|
db0b659a53 | ||
|
|
9521f63b3a | ||
|
|
32f38cc6ed | ||
|
|
6cd2de35fc | ||
|
|
b916b76713 | ||
|
|
5513ff5c1f | ||
|
|
60908d4b9b | ||
|
|
514afebcc7 | ||
|
|
267928d6de | ||
|
|
7293dd1fb7 | ||
|
|
3fb3659cc9 | ||
|
|
254ec73940 | ||
|
|
72fc00695c | ||
|
|
14e8bc58f3 | ||
|
|
e700195f0a | ||
|
|
a02bceabd2 | ||
|
|
b4ff1fa36c | ||
|
|
0acb15de0f | ||
|
|
aace1dc913 | ||
|
|
6a273363c4 | ||
|
|
79ca00604a | ||
|
|
d2e7d4a5ad | ||
|
|
d2a4ccbc16 | ||
|
|
2086e4c7d1 | ||
|
|
ac2b445db6 | ||
|
|
dff2f186ce | ||
|
|
a472ef8a93 | ||
|
|
d03f5e4977 | ||
|
|
eb892791f0 | ||
|
|
442d65a497 | ||
|
|
884386c924 | ||
|
|
7bfe9065cf | ||
|
|
6b3eaa7f3e | ||
|
|
b77eb4b905 | ||
|
|
f77975a9f7 | ||
|
|
ce01f6d7cd | ||
|
|
07232f04c0 | ||
|
|
9f3b4dc5ea | ||
|
|
5d64292ed8 | ||
|
|
d44486ce94 | ||
|
|
b2e6dc5fda | ||
|
|
6d19ab8894 | ||
|
|
6820400b11 | ||
|
|
e28f5187bc | ||
|
|
a8cfefe6c8 | ||
|
|
fefab7064a | ||
|
|
9e119230d4 | ||
|
|
681a0f5638 | ||
|
|
af4bc3e194 | ||
|
|
c0b71126bd | ||
|
|
e355ac54b8 | ||
|
|
c5e9d3588a | ||
|
|
f7fd3881e3 | ||
|
|
cc0530ba46 | ||
|
|
13c88e1013 | ||
|
|
013db199cb | ||
|
|
6e8fa34b1e | ||
|
|
a3717c7acd | ||
|
|
1126055015 | ||
|
|
8499a90caa | ||
|
|
49f2924532 | ||
|
|
454dc7169d | ||
|
|
6f2354c0e9 | ||
|
|
378c2992cd | ||
|
|
029b4c25ac | ||
|
|
6f5f600559 | ||
|
|
f93adaa854 | ||
|
|
ddd2fcecea | ||
|
|
1a81f79df7 | ||
|
|
8f45431ecb | ||
|
|
509e218676 | ||
|
|
cd7a53abbb | ||
|
|
6b67f587e5 | ||
|
|
27c5c5d464 | ||
|
|
1919c23c09 | ||
|
|
6f14becb8c | ||
|
|
0eded87dd3 | ||
|
|
139153d9a3 | ||
|
|
eee25a1c35 | ||
|
|
5fb26d666a | ||
|
|
e1482dee2b | ||
|
|
c041f45138 | ||
|
|
286b5cf9a4 | ||
|
|
d025f02720 | ||
|
|
a7f857d32c | ||
|
|
a35f446585 | ||
|
|
15b8b5d92f | ||
|
|
0a7585852b | ||
|
|
1b12c958c5 | ||
|
|
29726e2bfd | ||
|
|
a01400e88d | ||
|
|
3f78e5f7a2 | ||
|
|
b8f9ac85ec | ||
|
|
8199bf0869 | ||
|
|
b612476c56 | ||
|
|
534b61e9e8 | ||
|
|
bb37cf3c32 | ||
|
|
9214ab2038 | ||
|
|
5dea019309 | ||
|
|
b6dc5201a8 | ||
|
|
9d72d8d3f7 | ||
|
|
3cf14971f2 | ||
|
|
190a1fa10c | ||
|
|
35baeaff79 | ||
|
|
a0874a0d6d | ||
|
|
e755ee8e04 | ||
|
|
338fe553ba | ||
|
|
0592218fa3 | ||
|
|
a5c1298e32 | ||
|
|
4dcd41975d | ||
|
|
f9e6395797 | ||
|
|
d715bf24bf | ||
|
|
263ce20473 | ||
|
|
60b177f668 | ||
|
|
85d474318b | ||
|
|
2ce9fff285 | ||
|
|
b3dc2ae89b | ||
|
|
825657b217 | ||
|
|
44b152eb70 | ||
|
|
16b3d32ca5 | ||
|
|
cf819e0a3f | ||
|
|
97adfd5b54 | ||
|
|
3d1449d4f1 | ||
|
|
e701ccbd73 | ||
|
|
420c364bf7 | ||
|
|
52775d4a3f | ||
|
|
fb2672e910 | ||
|
|
64b3695e51 | ||
|
|
ba1bbd3b52 | ||
|
|
3bbaeab278 | ||
|
|
2ee9d501ff | ||
|
|
58c4d1de1e | ||
|
|
c1720c3711 | ||
|
|
c112ffc3fc | ||
|
|
988bb9c1cd | ||
|
|
35de521549 | ||
|
|
5b312889b8 | ||
|
|
f64fcecde1 | ||
|
|
7a6505626f | ||
|
|
1129986f18 | ||
|
|
8a554b37c0 | ||
|
|
56178f976a | ||
|
|
8dec687798 | ||
|
|
0a2e716525 | ||
|
|
f9f82e9705 | ||
|
|
4a30417f76 | ||
|
|
ba15981700 | ||
|
|
f9d99fe8ca | ||
|
|
b84d38e7fb | ||
|
|
cc35bf2096 | ||
|
|
b4be71d967 | ||
|
|
20e8e524a5 | ||
|
|
5bd871528f | ||
|
|
bba0c09b42 | ||
|
|
f703736685 | ||
|
|
3243243be8 | ||
|
|
714c0a5be2 | ||
|
|
1e770e3a71 | ||
|
|
d90b32a7c9 | ||
|
|
2c256023a9 | ||
|
|
52af8a5e2a | ||
|
|
e1fbed0e25 | ||
|
|
b1d96cd1ee | ||
|
|
5226a59ede | ||
|
|
ea183a6889 | ||
|
|
ef8c7b0a4c | ||
|
|
e221f89e68 | ||
|
|
03ad6c52c0 | ||
|
|
f381e29f3a | ||
|
|
ce51534c3a | ||
|
|
55571b5d1b | ||
|
|
318157d242 | ||
|
|
0f7ef275ab | ||
|
|
880cc230ac | ||
|
|
8846880015 | ||
|
|
93831f64a3 | ||
|
|
3e3e87d3c5 | ||
|
|
c410c380f6 | ||
|
|
2d6f2f7895 | ||
|
|
ad773c567d | ||
|
|
2dbb29fc85 | ||
|
|
12be175d58 | ||
|
|
afc7dcd83c | ||
|
|
3cbe4df8c7 | ||
|
|
033dd79c58 | ||
|
|
6fa34bdbfe | ||
|
|
188fff1488 | ||
|
|
6d23a3bd2c | ||
|
|
a5dee81e45 | ||
|
|
4030dbc4b4 | ||
|
|
3efad4e14b | ||
|
|
ceb2cd2b67 | ||
|
|
c5eaee80cb | ||
|
|
ab95690043 | ||
|
|
37baa6fd25 | ||
|
|
69f05d4c26 | ||
|
|
91fafccb0a | ||
|
|
ef51065c98 | ||
|
|
03f11ce516 | ||
|
|
2583cc4aa4 | ||
|
|
422fd91255 | ||
|
|
d83743ea0b | ||
|
|
a81819914d | ||
|
|
93fedd0fff | ||
|
|
a73f5bc32e | ||
|
|
e3a3734bb6 | ||
|
|
1d00c22244 | ||
|
|
e180980b90 | ||
|
|
e6b2e4e95e | ||
|
|
1af985fde9 | ||
|
|
5e9fa18a4d | ||
|
|
e7a5b3939d | ||
|
|
f096f7d7fa | ||
|
|
f7735afcd6 | ||
|
|
56307e6cad | ||
|
|
1bfb62747c | ||
|
|
affff20b49 | ||
|
|
6f64c84c7d | ||
|
|
f56fcdd79b | ||
|
|
893b398d73 | ||
|
|
db98f114f9 | ||
|
|
b1e7c34b82 | ||
|
|
54f9b25b52 | ||
|
|
9366c5c233 | ||
|
|
e254cad39e | ||
|
|
ac1347f324 | ||
|
|
f9f9a34ba3 | ||
|
|
2b4d286de6 | ||
|
|
e7fe3ff968 | ||
|
|
5caf68988e | ||
|
|
bb4f5c2e94 | ||
|
|
eaa363d8c0 | ||
|
|
d181f80c8c | ||
|
|
33d8b6db62 | ||
|
|
59e2c38635 | ||
|
|
dd15db721a | ||
|
|
ef6d8f1138 | ||
|
|
612c1098ea | ||
|
|
ed7b634dbf | ||
|
|
4c1e5ec74c | ||
|
|
b0a68ea0de | ||
|
|
f32dc96757 | ||
|
|
79ac8b3c95 | ||
|
|
e5bd5f39fb | ||
|
|
dfee59742f | ||
|
|
61f922179b | ||
|
|
9e81c31e5a | ||
|
|
bdeef63fe4 | ||
|
|
ed693e146d | ||
|
|
14f12b0a25 | ||
|
|
e05f6a4c5b | ||
|
|
bd809ba90b | ||
|
|
15b9e82f93 | ||
|
|
aa839e2619 | ||
|
|
a6d3f973fa | ||
|
|
dab6d9408e | ||
|
|
6b05b84895 | ||
|
|
861fe2e5a9 | ||
|
|
63a5e474a6 | ||
|
|
b86c3e64ec | ||
|
|
6cb6f1f007 | ||
|
|
a2aac7066c | ||
|
|
c1dbe27f25 | ||
|
|
9e9ed8b532 | ||
|
|
de3d40b644 | ||
|
|
20a2a96222 | ||
|
|
b1f4e12d34 | ||
|
|
bc0a5a9440 | ||
|
|
e16c007d43 | ||
|
|
924eb6dbc4 | ||
|
|
b5e0572155 | ||
|
|
0f3a2531e7 | ||
|
|
dab7047113 | ||
|
|
6f20f0e2ec | ||
|
|
0f7b674cbb | ||
|
|
e2bf537c4a | ||
|
|
c5467c43bf | ||
|
|
806b8b0901 | ||
|
|
a740fe128c | ||
|
|
ba8f787d0d | ||
|
|
65a1d1b0f7 | ||
|
|
1009650b5c | ||
|
|
b14bec3bb0 | ||
|
|
a4c5997050 | ||
|
|
aa97bd5213 | ||
|
|
a4d4adb1f6 | ||
|
|
7e1d980d08 | ||
|
|
f3f1520f81 | ||
|
|
7e44b67906 | ||
|
|
44333fef0a | ||
|
|
414cb5026c | ||
|
|
f15ee90429 | ||
|
|
9bf61bfc5c | ||
|
|
7edeceec03 | ||
|
|
692c95b11e | ||
|
|
5916a8f8dd | ||
|
|
4ffdc98512 | ||
|
|
9f402885d8 | ||
|
|
6b0eeb9722 | ||
|
|
a98bf1eac3 | ||
|
|
7cd824ae1c | ||
|
|
31db3c325d | ||
|
|
656e6161a0 | ||
|
|
44be95cc1b | ||
|
|
48a3fd8e3c | ||
|
|
7d7c635423 | ||
|
|
097be1a5cd | ||
|
|
c5d25ac371 | ||
|
|
dd5217734c | ||
|
|
41061cfde8 | ||
|
|
d8da81d87c | ||
|
|
2b8d670f17 | ||
|
|
aca197a96f | ||
|
|
044fc8d50c | ||
|
|
5c45cf2d76 | ||
|
|
7eb7172635 | ||
|
|
02602da257 | ||
|
|
ad61d71c6e | ||
|
|
fc5a07b46d | ||
|
|
01b15fbeba | ||
|
|
c33995e075 | ||
|
|
4178e72fe0 | ||
|
|
7dc2d236df | ||
|
|
eac60b3228 | ||
|
|
75e857bbfc | ||
|
|
11351613ed | ||
|
|
3d04e2b86e | ||
|
|
7d3c3b09fb | ||
|
|
1e73d549ed | ||
|
|
9e21df2515 | ||
|
|
c5f40a55e7 | ||
|
|
5239ecc780 | ||
|
|
acfad54ae3 | ||
|
|
ab153a24ec | ||
|
|
60f7744ec6 | ||
|
|
1ca358f3fd | ||
|
|
17aefc3cf7 | ||
|
|
cf5429a39b | ||
|
|
4cc5850c86 | ||
|
|
7da9899c48 | ||
|
|
5c772cea1a | ||
|
|
9569438295 | ||
|
|
68113f8f3f | ||
|
|
e488452ef3 | ||
|
|
8a7eb36950 | ||
|
|
392cab2e36 | ||
|
|
747c2ef28f | ||
|
|
c363e4a969 | ||
|
|
ed7acf358a | ||
|
|
e07d143c9b | ||
|
|
e6a6ba7d63 | ||
|
|
4bc32d37ac | ||
|
|
1ae0d772c4 | ||
|
|
8f76ea3106 | ||
|
|
0ad75ccb8f | ||
|
|
a2140d7081 | ||
|
|
e5a2958458 | ||
|
|
93624c3700 | ||
|
|
abfebea4f2 |
@@ -54,6 +54,7 @@ IncludeCategories:
|
||||
IndentCaseLabels: false
|
||||
IndentWidth: 4
|
||||
IndentWrappedFunctionNames: false
|
||||
InsertNewlineAtEOF: true
|
||||
KeepEmptyLinesAtTheStartOfBlocks: true
|
||||
MacroBlockBegin: ''
|
||||
MacroBlockEnd: ''
|
||||
@@ -81,7 +82,7 @@ SpacesInContainerLiterals: true
|
||||
SpacesInCStyleCastParentheses: false
|
||||
SpacesInParentheses: false
|
||||
SpacesInSquareBrackets: false
|
||||
Standard: Cpp11
|
||||
Standard: c++17
|
||||
TabWidth: 4
|
||||
UseTab: Never
|
||||
...
|
||||
|
||||
21
.gitattributes
vendored
@@ -1,3 +1,14 @@
|
||||
# Github-linguist language hints
|
||||
*.h linguist-language=C++
|
||||
*.cpp linguist-language=C++
|
||||
|
||||
# Line endings harmony
|
||||
* text=auto eol=lf
|
||||
|
||||
# binary files
|
||||
*.ai binary
|
||||
|
||||
# Export
|
||||
src/version.h.cmake export-subst
|
||||
.gitattributes export-ignore
|
||||
.gitignore export-ignore
|
||||
@@ -7,13 +18,3 @@ src/version.h.cmake export-subst
|
||||
snapcraft.yaml export-ignore
|
||||
make_release.sh export-ignore
|
||||
AppImage-Recipe.sh export-ignore
|
||||
|
||||
# github-linguist language hints
|
||||
*.h linguist-language=C++
|
||||
*.cpp linguist-language=C++
|
||||
|
||||
# binary files
|
||||
*.ai binary
|
||||
|
||||
# Line endings harmony
|
||||
* text=auto
|
||||
|
||||
20
.github/CONTRIBUTING.md
vendored
@@ -15,6 +15,7 @@ These are just guidelines, not rules. Use your best judgment, and feel free to p
|
||||
* [Bug reports](#bug-reports)
|
||||
* [Discuss with the team](#discuss-with-the-team)
|
||||
* [Your first code contribution](#your-first-code-contribution)
|
||||
* [Using AI](#using-ai)
|
||||
* [Pull requests](#pull-requests)
|
||||
* [Translations](#translations)
|
||||
|
||||
@@ -38,7 +39,7 @@ We will accept contributions of good code that we can use from anyone.
|
||||
- “contributions”: This means just about anything you wish to contribute to the project, as long as it is good code we can use. The easier you make it for us to accept your contribution, the happier we are, but if it’s good enough, we will do a reasonable amount of work to use it.
|
||||
- “of good code”: This means that we will accept contributions that work well and efficiently, that fit in with the goals of the project, that match the project’s coding style, and that do not impose an undue maintenance workload on us going forward. This does not mean just program code, either, but documentation and artistic works as appropriate to the project.
|
||||
- “that we can use”: This means that your contribution must be given freely and irrevocably, that you must have the right to contribute it for our unrestricted use, and that your contribution is made under a license that is compatible with the license the project has chosen and that permits us to include, distribute, and modify your work without restriction.
|
||||
- “from anyone”: This means exactly that. We don’t care about anything but your code. We don’t care about your race, religion, national origin, biological gender, perceived gender, sexual orientation, lifestyle, political viewpoint, or anything extraneous like that. We will neither reject your contribution nor grant it preferential treatment on any basis except the code itself. We do, however, reserve the right to tell you to go away if you behave too obnoxiously toward us.
|
||||
- “from anyone”: This means exactly that. We don’t care about anything but your code. We don’t care about your race, religion, national origin, biological gender, perceived gender, sexual orientation, lifestyle, political viewpoint, or anything extraneous like that. We will neither reject your contribution nor grant it preferential treatment on any basis except the code itself. We do, however, reserve the right to limit your access to our community if you violate our [Code of Conduct](../CODE-OF-CONDUCT.md).
|
||||
|
||||
#### If Your Contribution Is Rejected
|
||||
|
||||
@@ -74,6 +75,10 @@ Unsure where to begin contributing to KeePassXC? You can start by looking throug
|
||||
|
||||
Both issue lists are sorted by total number of comments. While not perfect, looking at the number of comments on an issue can give a general idea of how much an impact a given change will have.
|
||||
|
||||
### Using AI
|
||||
|
||||
Generative AI is fast becoming a first-party feature in most development environments, including GitHub itself. If you use Generative AI to write the vast majority of your submission (e.g., agent-based or vibe coding) then you **must document your use of AI** in your pull request. Please include the service you used and/or model that generated the code. All code submissions go through a rigorous review process regardless of the development workflow used.
|
||||
|
||||
### Pull requests
|
||||
|
||||
Along with our desire to hear your feedback and suggestions, we're also interested in accepting direct assistance in the form of code.
|
||||
@@ -82,19 +87,26 @@ All pull requests must comply with the above requirements and with the [stylegui
|
||||
|
||||
### Translations
|
||||
|
||||
Translations are managed on [Transifex](https://www.transifex.com/keepassxc/keepassxc/) which offers a web interface.
|
||||
Translations are managed on [Transifex](https://explore.transifex.com/keepassxc/keepassxc/) which offers a web interface.
|
||||
Please join an existing language team or request a new one if there is none.
|
||||
|
||||
If you open a Pull Request with new strings that require translations, you will need to run the following:
|
||||
```
|
||||
./release-tool i18n lupdate
|
||||
```
|
||||
This will make the new strings available for translation in Transifex.
|
||||
|
||||
## Styleguides
|
||||
|
||||
### Git branch strategy
|
||||
|
||||
The Branch Strategy is based on [git-flow-lite](http://nvie.com/posts/a-successful-git-branching-model/).
|
||||
|
||||
* **master** – points to the latest public release
|
||||
* **develop** – points to the development of the next release, contains tested and reviewed code
|
||||
* **feature/**[name] – points to a branch with a new feature, one which is candidate for merge into develop (subject to rebase)
|
||||
* **hotfix/**[name] – points to a branch with a fix for a particular issue ID
|
||||
* **fix/**[name] – points to a branch with a fix for a particular issue ID
|
||||
|
||||
Note: The **latest** tag is used to point to the most recent stable release.
|
||||
|
||||
|
||||
### Git commit messages
|
||||
|
||||
39
.github/ISSUE_TEMPLATE/bug-report.md
vendored
@@ -1,39 +0,0 @@
|
||||
---
|
||||
name: Bug Report
|
||||
about: provide information about a problem
|
||||
title:
|
||||
labels: bug
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
## Overview
|
||||
[TIP]: # ( DO NOT include screenshots of your actual database! )
|
||||
[NOTE]: # ( Give a BRIEF summary about your problem )
|
||||
|
||||
|
||||
## Steps to Reproduce
|
||||
[NOTE]: # ( Provide a simple set of steps to reproduce this bug. )
|
||||
1.
|
||||
2.
|
||||
3.
|
||||
|
||||
## Expected Behavior
|
||||
[NOTE]: # ( Tell us what you expected to happen )
|
||||
|
||||
|
||||
## Actual Behavior
|
||||
[NOTE]: # ( Tell us what actually happens )
|
||||
|
||||
|
||||
## Context
|
||||
[NOTE]: # ( Give us any additional information you may have. )
|
||||
|
||||
|
||||
[NOTE]: # ( Paste debug info from Help → About here )
|
||||
KeePassXC - VERSION
|
||||
Revision: REVISION
|
||||
|
||||
[NOTE]: # ( Pick choices based on your environment )
|
||||
Operating System: Windows/Linux/macOS
|
||||
Desktop Env: Gnome/KDE/XFCE/Mate/Cinnamon
|
||||
Windowing System: X11/Wayland
|
||||
83
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
Normal file
@@ -0,0 +1,83 @@
|
||||
name: Bug Report
|
||||
description: Provide information about a problem you are experiencing.
|
||||
type: Bug
|
||||
|
||||
body:
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Have you searched for an existing issue?
|
||||
description: |
|
||||
Use the issue search box to see if one already exists for the bug you encountered.
|
||||
Also take a moment to review our pinned issues.
|
||||
options:
|
||||
- label: Yes, I tried searching and reviewed the pinned issues
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: summary
|
||||
attributes:
|
||||
label: Brief Summary
|
||||
description: |
|
||||
Provide an overview of the problem, include any information that may help us triage this issue.
|
||||
Provide screenshots if possible, but do NOT show sensitive data (use View -> Allow Screen Capture).
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: steps
|
||||
attributes:
|
||||
label: Steps to Reproduce
|
||||
description: Provide a simple set of steps to reproduce this bug.
|
||||
placeholder: |
|
||||
1.
|
||||
2.
|
||||
3.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: expected_vs_actual
|
||||
attributes:
|
||||
label: Expected Versus Actual Behavior
|
||||
description: Tell us what you expected to happen and what actually happened.
|
||||
|
||||
- type: textarea
|
||||
id: debug_info
|
||||
attributes:
|
||||
label: KeePassXC Debug Information
|
||||
placeholder: "Paste the output of: Help -> About -> Debug Info"
|
||||
render: Text
|
||||
|
||||
- type: dropdown
|
||||
id: os
|
||||
attributes:
|
||||
label: Operating System
|
||||
description: Select your operating system.
|
||||
options:
|
||||
- Windows
|
||||
- Linux
|
||||
- macOS
|
||||
- Other (BSD, Haiku, etc)
|
||||
|
||||
- type: dropdown
|
||||
id: desktop_env
|
||||
attributes:
|
||||
label: Linux Desktop Environment
|
||||
description: If on Linux, please select your desktop environment.
|
||||
options:
|
||||
- Gnome
|
||||
- KDE
|
||||
- XFCE
|
||||
- Mate / Cinnamon
|
||||
- Sway
|
||||
- i3
|
||||
- Other
|
||||
|
||||
- type: dropdown
|
||||
id: window_system
|
||||
attributes:
|
||||
label: Linux Windowing System
|
||||
description: If on Linux, please select your windowing system.
|
||||
options:
|
||||
- X11
|
||||
- Wayland
|
||||
19
.github/ISSUE_TEMPLATE/feature-request.md
vendored
@@ -1,19 +0,0 @@
|
||||
---
|
||||
name: Feature Request
|
||||
about: tell us about a new feature you want
|
||||
title:
|
||||
labels: new feature
|
||||
assignees: ''
|
||||
|
||||
---
|
||||
## Summary
|
||||
[TIP]: # ( DO NOT include screenshots of your actual database! )
|
||||
[NOTE]: # ( Provide a brief overview of what the new feature is all about )
|
||||
|
||||
|
||||
## Examples
|
||||
[NOTE]: # ( Show us a picture or mock-up of your proposal )
|
||||
|
||||
|
||||
## Context
|
||||
[NOTE]: # ( Why does this feature matter to you? What unique circumstances do you have? )
|
||||
34
.github/ISSUE_TEMPLATE/feature_request.yml
vendored
Normal file
@@ -0,0 +1,34 @@
|
||||
name: Feature Request
|
||||
description: Tell us about a new feature you want.
|
||||
type: Feature
|
||||
|
||||
body:
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Have you searched for an existing feature request?
|
||||
description: Use the issue search box to see if one already exists for the feature you want.
|
||||
options:
|
||||
- label: Yes, I tried searching
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: summary
|
||||
attributes:
|
||||
label: Brief Summary
|
||||
description: |
|
||||
Provide an overview of the feature you are interested in adding.
|
||||
Provide screenshots if possible, but do NOT show sensitive data (use View -> Allow Screen Capture).
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: example
|
||||
attributes:
|
||||
label: Example
|
||||
description: Provide an example of how this feature would be used.
|
||||
|
||||
- type: textarea
|
||||
id: context
|
||||
attributes:
|
||||
label: Context
|
||||
description: Why does this feature matter to you? What unique circumstances do you have?
|
||||
85
.github/ISSUE_TEMPLATE/prerelease_bug_report.yml
vendored
Normal file
@@ -0,0 +1,85 @@
|
||||
name: Pre-Release Bug Report
|
||||
description: Report an issue with pre-release code (e.g. snapshot builds).
|
||||
type: Bug
|
||||
labels: PRE-RELEASE BUG
|
||||
assignees: droidmonkey
|
||||
|
||||
body:
|
||||
- type: checkboxes
|
||||
attributes:
|
||||
label: Have you searched for an existing issue?
|
||||
description: |
|
||||
Use the issue search box to see if one already exists for the bug you encountered.
|
||||
Also take a moment to review our pinned issues.
|
||||
options:
|
||||
- label: Yes, I tried searching and reviewed the pinned issues
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: summary
|
||||
attributes:
|
||||
label: Brief Summary
|
||||
description: |
|
||||
Provide an overview of the problem, include any information that may help us triage this issue.
|
||||
Provide screenshots if possible, but do NOT show sensitive data (use View -> Allow Screen Capture).
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: steps
|
||||
attributes:
|
||||
label: Steps to Reproduce
|
||||
description: Provide a simple set of steps to reproduce this bug.
|
||||
placeholder: |
|
||||
1.
|
||||
2.
|
||||
3.
|
||||
validations:
|
||||
required: true
|
||||
|
||||
- type: textarea
|
||||
id: expected_vs_actual
|
||||
attributes:
|
||||
label: Expected Versus Actual Behavior
|
||||
description: Tell us what you expected to happen and what actually happened.
|
||||
|
||||
- type: textarea
|
||||
id: debug_info
|
||||
attributes:
|
||||
label: KeePassXC Debug Information
|
||||
placeholder: "Paste the output of: Help -> About -> Debug Info"
|
||||
render: Text
|
||||
|
||||
- type: dropdown
|
||||
id: os
|
||||
attributes:
|
||||
label: Operating System
|
||||
description: Select your operating system.
|
||||
options:
|
||||
- Windows
|
||||
- Linux
|
||||
- macOS
|
||||
- Other (BSD, Haiku, etc)
|
||||
|
||||
- type: dropdown
|
||||
id: desktop_env
|
||||
attributes:
|
||||
label: Linux Desktop Environment
|
||||
description: If on Linux, please select your desktop environment.
|
||||
options:
|
||||
- Gnome
|
||||
- KDE
|
||||
- XFCE
|
||||
- Mate / Cinnamon
|
||||
- Sway
|
||||
- i3
|
||||
- Other
|
||||
|
||||
- type: dropdown
|
||||
id: window_system
|
||||
attributes:
|
||||
label: Linux Windowing System
|
||||
description: If on Linux, please select your windowing system.
|
||||
options:
|
||||
- X11
|
||||
- Wayland
|
||||
@@ -1,39 +0,0 @@
|
||||
---
|
||||
name: Release Preview Bug report
|
||||
about: report a bug with a release preview (e.g., 2.6.0-beta1)
|
||||
title:
|
||||
labels: PRE-RELEASE BUG
|
||||
assignees: droidmonkey
|
||||
|
||||
---
|
||||
## Overview
|
||||
[TIP]: # ( DO NOT include screenshots of your actual database! )
|
||||
[NOTE]: # ( Give a BRIEF summary about your problem )
|
||||
|
||||
|
||||
## Steps to Reproduce
|
||||
[NOTE]: # ( Provide a simple set of steps to reproduce this bug. )
|
||||
1.
|
||||
2.
|
||||
3.
|
||||
|
||||
## Expected Behavior
|
||||
[NOTE]: # ( Tell us what you expected to happen )
|
||||
|
||||
|
||||
## Actual Behavior
|
||||
[NOTE]: # ( Tell us what actually happens )
|
||||
|
||||
|
||||
## Context
|
||||
[NOTE]: # ( Give us any additional information you may have. )
|
||||
|
||||
|
||||
[NOTE]: # ( Paste debug info from Help → About here )
|
||||
KeePassXC - VERSION
|
||||
Revision: REVISION
|
||||
|
||||
[NOTE]: # ( Pick choices based on your environment )
|
||||
Operating System: Windows/Linux/macOS
|
||||
Desktop Env: Gnome/KDE/XFCE/Mate/Cinnamon
|
||||
Windowing System: X11/Wayland
|
||||
11
.github/PULL_REQUEST_TEMPLATE.md
vendored
@@ -1,15 +1,16 @@
|
||||
[NOTE]: # ( Describe your changes in detail, why is this change required? )
|
||||
[NOTE]: # ( Explain large or complex code modifications. )
|
||||
[NOTE]: # ( If it fixes an open issue, please add "Fixes #XXX" )
|
||||
[NOTE]: # ( Describe your changes in detail. Explain large or complex code modifications. )
|
||||
[NOTE]: # ( If it fixes an open issue, please add "Fixes #XXX". )
|
||||
[NOTE]: # ( If you used Generative AI to write the majority of your code, you must state this. )
|
||||
|
||||
|
||||
## Screenshots
|
||||
[TIP]: # ( Do not include screenshots of your actual database! )
|
||||
[NOTE]: # ( Do not include screenshots of your actual database! )
|
||||
[TIP]: # ( Use View -> Allow Screen Capture )
|
||||
|
||||
|
||||
## Testing strategy
|
||||
[NOTE]: # ( Please describe in detail how you tested your changes. )
|
||||
[TIP]: # ( We expect new code to be covered by unit tests and documented with doc blocks! )
|
||||
[TIP]: # ( We expect new code to be covered by unit tests and include helpful comments. )
|
||||
|
||||
|
||||
## Type of change
|
||||
|
||||
44
.github/copilot-instructions.md
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
This repository is a C++ (C++20) Qt-based password manager. The important domain concepts are
|
||||
Database, Group, and Entry (KDBX format). Key areas to know before making changes are below.
|
||||
|
||||
Quick reference (common commands)
|
||||
- Configure + build (preferred: CMake presets)
|
||||
- Windows (PowerShell): `cmake --preset x64-debug`
|
||||
- Build: `cmake --build --preset x64-debug` or `cmake --build . -j <n>` from the build dir
|
||||
- Formatting (required before commits):
|
||||
- `cmake --build . --target format` (runs clang-format)
|
||||
- Tests:
|
||||
- Run all tests: `ctest -j <n>` from build dir
|
||||
- Run single test (verbose): `ctest -R <Test Name> -V`
|
||||
- Translations & i18n (release tooling):
|
||||
- Update translation sources: `python ./release-tool.py i18n lupdate`
|
||||
|
||||
Big-picture architecture (where to look)
|
||||
- src/core: core data model (Database, Groups, Entries). Example: `src/core/Database.h`
|
||||
- src/format: KDBX readers/writers and import/export logic. (sensitive - avoid casual edits)
|
||||
- src/crypto: cryptographic primitives and key derivation. (sensitive - avoid casual edits)
|
||||
- src/gui: Qt UI layers, widgets, main window and app lifecycle (entry: `src/main.cpp`, `src/gui/MainWindow.cpp`)
|
||||
- src/sshagent, src/browser, src/fdosecrets, src/quickunlock: integration adapters for external systems
|
||||
- tests/ and tests/gui/: QTest-based unit and GUI tests (follow existing test patterns)
|
||||
|
||||
Project-specific conventions & patterns
|
||||
- Language/features: C++20, heavy use of Qt signal/slot idioms and QObject-derived classes.
|
||||
- Build: use provided CMake commands to configure and build the project successfully.
|
||||
- Formatting: a CMake target (`format`) runs clang-format — run it before committing.
|
||||
- Translations: translation files are generated/updated via the release tool — run it before committing.
|
||||
- UI files: .ui changes are non-trivial; prefer proposing .ui edits rather than committing wholesale .ui changes unless very simple.
|
||||
- Sensitive areas: `src/crypto` and `src/format` contain security-sensitive logic — avoid refactors that change algorithms without expert review.
|
||||
|
||||
Concrete examples (where to copy patterns)
|
||||
- Signal connections: see `src/keeshare/ShareObserver.cpp` (connect to Database signals like `groupAdded` / `modified`).
|
||||
- Opening/locking DBs: `src/gui/DatabaseTabWidget.*` and `src/gui/DatabaseWidget.*` show typical lifecycle and `emitActiveDatabaseChanged()`.
|
||||
- Format/validation: use `src/format/KdbxReader.cpp` and `Kdbx4Reader.cpp` for error handling patterns when reading DBs.
|
||||
|
||||
Rules for automated agents
|
||||
- Do not change cryptographic or serialization logic unless the change is narrowly scoped and you run tests.
|
||||
- When adding features, create relevant unit tests within existing files in `tests/`.
|
||||
- Always run code formatting, translation update, and tests before submitting commits.
|
||||
- All tests related to your change must pass before committing.
|
||||
- Reference real files in PR descriptions (e.g., "changed src/core/Database.h and tests/TestDatabase.cpp").
|
||||
|
||||
If anything above is unclear or you want more detail about a specific area (build matrix, CI, or release-tool commands), tell me which part and I will expand.
|
||||
4
.github/pull.yml
vendored
@@ -3,10 +3,6 @@
|
||||
# pull from: https://github.com/keepassxreboot/keepassxc
|
||||
version: "1"
|
||||
rules:
|
||||
- base: master
|
||||
upstream: keepassxreboot:master
|
||||
mergeMethod: hardreset
|
||||
|
||||
- base: develop
|
||||
upstream: keepassxreboot:develop
|
||||
mergeMethod: rebase
|
||||
|
||||
70
.github/workflows/codeql.yml
vendored
Normal file
@@ -0,0 +1,70 @@
|
||||
name: "CodeQL"
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- 'develop'
|
||||
- 'release/**'
|
||||
pull_request:
|
||||
schedule:
|
||||
- cron: '5 16 * * 3'
|
||||
|
||||
jobs:
|
||||
analyze:
|
||||
name: Analyze
|
||||
runs-on: ${{ (matrix.language == 'swift' && 'macos-latest') || 'ubuntu-latest' }}
|
||||
timeout-minutes: ${{ (matrix.language == 'swift' && 120) || 360 }}
|
||||
permissions:
|
||||
actions: read
|
||||
contents: read
|
||||
security-events: write
|
||||
|
||||
strategy:
|
||||
fail-fast: false
|
||||
matrix:
|
||||
language: [ 'cpp' ]
|
||||
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python', 'ruby' ]
|
||||
# Use only 'java' to analyze code written in Java, Kotlin or both
|
||||
# Use only 'javascript' to analyze code written in JavaScript, TypeScript or both
|
||||
# Learn more about CodeQL language support at https://aka.ms/codeql-docs/language-support
|
||||
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- if: matrix.language == 'cpp'
|
||||
name: Install dependencies
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install build-essential cmake g++
|
||||
sudo apt install qtbase5-dev qtbase5-private-dev qttools5-dev qttools5-dev-tools libqt5svg5-dev libargon2-dev libkeyutils-dev libminizip-dev libbotan-2-dev libqrencode-dev zlib1g-dev asciidoctor libreadline-dev libpcsclite-dev libusb-1.0-0-dev libxi-dev libxtst-dev libqt5x11extras5-dev
|
||||
|
||||
# Initializes the CodeQL tools for scanning.
|
||||
- name: Initialize CodeQL
|
||||
uses: github/codeql-action/init@v3
|
||||
with:
|
||||
languages: ${{ matrix.language }}
|
||||
# If you wish to specify custom queries, you can do so here or in a config file.
|
||||
# By default, queries listed here will override any specified in a config file.
|
||||
# Prefix the list here with "+" to use these queries and those in the config file.
|
||||
|
||||
# For more details on CodeQL's query packs, refer to: https://docs.github.com/en/code-security/code-scanning/automatically-scanning-your-code-for-vulnerabilities-and-errors/configuring-code-scanning#using-queries-in-ql-packs
|
||||
queries: security-and-quality
|
||||
|
||||
- if: matrix.language == 'cpp'
|
||||
name: Build C++
|
||||
run: |
|
||||
mkdir build && cd build
|
||||
cmake -DWITH_XC_ALL=ON -DWITH_TESTS=OFF ..
|
||||
make -j $(nproc)
|
||||
|
||||
# Autobuild attempts to build any compiled languages (C/C++, C#, Go, Java, or Swift).
|
||||
# If this step fails, then you should remove it and run the build manually (see below)
|
||||
- if: matrix.language != 'cpp'
|
||||
name: Autobuild
|
||||
uses: github/codeql-action/autobuild@v3
|
||||
|
||||
- name: Perform CodeQL Analysis
|
||||
uses: github/codeql-action/analyze@v3
|
||||
with:
|
||||
category: "/language:${{matrix.language}}"
|
||||
29
.github/workflows/copilot-setup-steps.yml
vendored
Normal file
@@ -0,0 +1,29 @@
|
||||
name: "Copilot Setup Steps"
|
||||
|
||||
# Setup the environment for Copilot agents to run in
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
paths:
|
||||
- .github/workflows/copilot-setup-steps.yml
|
||||
pull_request:
|
||||
paths:
|
||||
- .github/workflows/copilot-setup-steps.yml
|
||||
|
||||
jobs:
|
||||
copilot-setup-steps:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
# Needed to clone the repository
|
||||
permissions:
|
||||
contents: read
|
||||
|
||||
# Install dependencies
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Install dependencies
|
||||
run: |
|
||||
sudo apt update
|
||||
sudo apt install --no-install-recommends build-essential cmake g++ ninja-build qtbase5-dev qtbase5-private-dev qttools5-dev qttools5-dev-tools libqt5svg5-dev libargon2-dev libkeyutils-dev libminizip-dev libbotan-2-dev libqrencode-dev zlib1g-dev asciidoctor libreadline-dev libpcsclite-dev libusb-1.0-0-dev libxi-dev libxtst-dev libqt5x11extras5-dev
|
||||
8
.gitignore
vendored
@@ -24,5 +24,11 @@ desktop.ini
|
||||
# MSVC Files
|
||||
CMakeSettings.json
|
||||
CMakePresets.json
|
||||
CMakeUserPresets.json
|
||||
.vs/
|
||||
out/
|
||||
out/
|
||||
\.clangd
|
||||
|
||||
# vcpkg
|
||||
vcpkg_installed*/
|
||||
|
||||
|
||||
29
.tx/config
@@ -1,14 +1,21 @@
|
||||
[main]
|
||||
host = https://www.transifex.com
|
||||
host = https://app.transifex.com
|
||||
|
||||
[keepassxc.share-translations-keepassxc-en-ts--develop]
|
||||
source_file = share/translations/keepassxc_en.ts
|
||||
file_filter = share/translations/keepassxc_<lang>.ts
|
||||
source_lang = en
|
||||
type = QT
|
||||
[o:keepassxc:p:keepassxc:r:share-translations-keepassxc-en-ts--develop]
|
||||
file_filter = share/translations/keepassxc_<lang>.ts
|
||||
source_file = share/translations/keepassxc_en.ts
|
||||
type = QT
|
||||
minimum_perc = 60
|
||||
resource_name = keepassxc_en.ts (develop)
|
||||
replace_edited_strings = false
|
||||
keep_translations = false
|
||||
|
||||
[o:keepassxc:p:keepassxc:r:share-translations-keepassxc-en-ts--master]
|
||||
file_filter = share/translations/keepassxc_<lang>.ts
|
||||
source_file = share/translations/keepassxc_en.ts
|
||||
type = QT
|
||||
minimum_perc = 60
|
||||
resource_name = keepassxc_en.ts (2.7.x stable)
|
||||
replace_edited_strings = false
|
||||
keep_translations = false
|
||||
|
||||
[keepassxc.share-translations-keepassxc-en-ts--master]
|
||||
source_file = share/translations/keepassxc_en.ts
|
||||
file_filter = share/translations/keepassxc_<lang>.ts
|
||||
source_lang = en
|
||||
type = QT
|
||||
|
||||
399
CHANGELOG.md
@@ -1,6 +1,396 @@
|
||||
# Changelog
|
||||
|
||||
## Release 2.7.0 (2022-02-26)
|
||||
## 2.8.0 (Pending)
|
||||
* Placeholder for future release notes
|
||||
|
||||
## 2.7.11 (2025-11-23)
|
||||
|
||||
### Changes
|
||||
- Add image, HTML, Markdown preview, and text editing support to inline attachment viewer [#12085, #12244, #12654]
|
||||
- Add database merge confirmation dialog [#10173]
|
||||
- Add option to auto-generate a password for new entries [#12593]
|
||||
- Add support for group sync in KeeShare [#11593]
|
||||
- Add {UUID} placeholder for use in references [#12511]
|
||||
- Add “Wait for Enter” search option [#12263]
|
||||
- Add keyboard shortcut to “Jump to Group” from search results [#12225]
|
||||
- Add predefined search for TOTP entries [#12199]
|
||||
- Add confirmation when closing database via ESC key [#11963]
|
||||
- Add support for escaping placeholder expressions [#11904]
|
||||
- Reduce tab indentation width in notes fields [#11919]
|
||||
- Cap default Argon2 parallelism when creating a new database [#11853]
|
||||
- Database lock after inactivity now enabled by default and set to 900 seconds [#12689, #12609]
|
||||
- Copying TOTP now opens setup dialog if none is configured for entry [#12584]
|
||||
- Make double click action configurable [#12322]
|
||||
- Remove unused “Last Accessed” from GUI [#12602]
|
||||
- Auto-Type: Add more granular confirmation settings [#12370]
|
||||
- Auto-Type: Add URL typing preset and add copy options to menu [#12341]
|
||||
- Browser: Do not allow sites automatically if entry added from browser extension [#12413]
|
||||
- Browser: Add options to restrict exposed groups [#9852, #12119]
|
||||
- Bitwarden Import: Add support for timestamps and password history [#12588]
|
||||
- macOS: Add Liquid Glass icon [#12642]
|
||||
- macOS: Remove theme-based menubar icon toggle [#12685]
|
||||
- macOS: Add Window and Help menus [#12357]
|
||||
- Windows: Add option to add KeePassXC to PATH during installation [#12171]
|
||||
|
||||
### Fixes
|
||||
- Fix window geometry not being restored properly when KeePassXC starts in tray [#12683]
|
||||
- Fix potential database truncation when using direct write save method with YubiKeys [#11841]
|
||||
- Fix issue with database backup saving [#11874]
|
||||
- Fix UI lockups during startup with multiple tabs [#12053]
|
||||
- Fix keyboard shortcuts when menubar is hidden [#12431]
|
||||
- Fix clipboard being cleared on exit even if no password was copied [#12603]
|
||||
- Fix single-instance detection when username contains invalid filename characters [#12559]
|
||||
- Fix “Search Wait for Enter” setting not being save [#12614]
|
||||
- Fix hotkey accelerators not being escaped properly on database tabs [#12630]
|
||||
- Fix confusing error if user cancels out of key file edit dialog [#12639]
|
||||
- Fix issues with saved searches and “Press Enter to Search” option [#12314]
|
||||
- Fix URL wildcard matching [#12257]
|
||||
- Fix TOTP visibility on unlock and settings change [#12220]
|
||||
- Fix KeeShare entries with reference attributes not updating [#11809]
|
||||
- Fix sort order not being maintained when toggling filters in database reports [#11849]
|
||||
- Fix several UI font and layout issues [#11967, #12102]
|
||||
- Prevent mouse wheel scroll on edit username field [#12398]
|
||||
- Improve base translation consistency [#12432]
|
||||
- Improve inactivity timer [#12246]
|
||||
- Documentation improvements [#12373, #12506]
|
||||
- Browser: Fix ordering of clientDataJSON in Passkey response object [#12120]
|
||||
- Browser: Fix URL matching for additional URLs [#12196]
|
||||
- Browser: Fix group settings inheritance [#12368]
|
||||
- Browser: Allow read-only native messaging config files [#12236]
|
||||
- Browser: Optimise entry iteration in browser access control dialog [#11817]
|
||||
- Browser: Fix “Do not ask permission for HTTP Basic Auth” option [#11871]
|
||||
- Browser: Fix native messaging path for Tor Browser launcher on Linux [#12005]
|
||||
- Auto-Type: Fix empty window behaviour [#12622]
|
||||
- Auto-Type: Take delays into account when typing TOTP [#12691]
|
||||
- SSH Agent: Fix out-of-memory crash with malformed SSH keys [#12606]
|
||||
- CSV Import: Fix modified and creation time import [#12379]
|
||||
- CSV Import: Fix duplication of root groups on import [#12240]
|
||||
- Proton Pass Import: Fix email addresses not being imported when no username set [#11888]
|
||||
- macOS: Fix secure input getting stuck [#11928]
|
||||
- Windows: Prevent launch as SYSTEM user from MSI installer [#12705]
|
||||
- Windows: Remove broken check for MSVC Redistributable from MSI installer [#11950]
|
||||
- Linux: Fix startup delay due to StartupNotify setting in desktop file [#12306]
|
||||
- Linux: Fix memory initialisation when --pw-stdin is used with a pipe [#12050]
|
||||
|
||||
## 2.7.10 (2025-03-02)
|
||||
|
||||
### Changes
|
||||
* Allow adjusting application font size [#11567]
|
||||
* Add Proton Pass importer [#11197]
|
||||
* Support KeePass2 TOTP settings [#11229]
|
||||
* Add New/Preview Entry Attachments dialog and functionality [#11637, #11699, #11650]
|
||||
* Add database name, color, and icon options for unlock view [#10819, #11725]
|
||||
* Show entry background color as column [#6798]
|
||||
* Use icons for password strength [#9844]
|
||||
* Add "Group Full Path" column in entry view [#10278]
|
||||
* Passphrase "MIXED case" Type [#11255]
|
||||
* Allow deleting extension plugin data from Browser Statistics [#11218]
|
||||
* Add --minimized option to keepassxc [#11693]
|
||||
* Implement T-CONV and T-REPLACE-RX entry placeholders [#11453]
|
||||
* Option to disable opening browser when URL field double-clicked [#11332]
|
||||
* Overhaul action states and add icons to toolbar [#11047]
|
||||
* Show character count in password generator dialog [#10940]
|
||||
* Add ability to expire entries from context menu [#8731]
|
||||
* Add copy field shortcuts to Auto-Type select dialog [#11518]
|
||||
* Passkeys: Add support for selecting group on creation [#11260]
|
||||
* Browser: Refactor Access Control Dialog [#9607]
|
||||
* Browser: Add support for URL wildcards and exact URL [#9835, #11752]
|
||||
* Browser: Allow groups to restrict by browser integration key [#9852]
|
||||
* CLI: Add `-d` dry-run shortcut to merge command [#11192]
|
||||
* CLI: HTML export [#11590]
|
||||
* macOS: Add option to disable database lock when switching user [#9707]
|
||||
* SSH Agent: Implement feature to clear all identities [#10649]
|
||||
|
||||
### Fixes
|
||||
* Major enhancements to documentation [#11745, #10875]
|
||||
* Various UI and style fixes [#11535, #11672, #11511, #11445, #11426, #11273, #11455, #11321, #11594, #11539, #11351, #11354, #10748, #11602, #11303, #11291, #10091, #9417]
|
||||
* Various improvements to tags [#11676, #11652, #11625]
|
||||
* Reset splitter sizes on database unlock [#11014]
|
||||
* Remember sort order in Auto-type popup dialog [#9508]
|
||||
* Fix database password clearing when modifying key file / hardware key [#11001]
|
||||
* Fix issues with reloading and handling of externally modified db file [#10612]
|
||||
* Support passkeys with Bitwarden import [#11401]
|
||||
* Fix various quirks with CSV import [#11787]
|
||||
* Show Auto-Type select dialog even if window title is empty [#11603]
|
||||
* Refactor hardware key code to avoid deadlock [#11703, #10872]
|
||||
* Show a clear error if hardware key is found slots are not configured [#11609]
|
||||
* Fix signal/slot disconnect when opening import wizard [#11039]
|
||||
* Fix setting window title as modified [#11542]
|
||||
* Fix assert hit when viewing entry history [#11413]
|
||||
* Fix multiple crashes on Linux [#11513]
|
||||
* Fix backup file path time substitution [#10834]
|
||||
* Prevent long-running threads from deadlocking the program with only 1 CPU [#11155]
|
||||
* Hide the menubar when menus lose focus (if toggled off) [#11355, #11605]
|
||||
* CLI: Restore the original codepage on windows [#11470]
|
||||
* Passkeys: Various fixes [#10934, #10951]
|
||||
* Browser: Fix cancel with database unlock dialog [#11435]
|
||||
* Browser: Resolve references in Access Confirm dialog [#11055]
|
||||
* SSH Agent: Add timeout to streams to prevent deadlock [#11290]
|
||||
* macOS: Replace legacy code for screen recording permissions [#11428]
|
||||
* macOS: Implement Secure Input Mode [#11623]
|
||||
* macOS: Fix showing ambigious name in settings [#11373]
|
||||
* macOS: Fix copy-to-clipboard shortcut in entry preview widget [#10966]
|
||||
* Linux: Prevent multiple lock requests [#11306]
|
||||
* Snap: Prevent need for snap helper script to configure browser extension [#10924]
|
||||
* Windows: Detect outdated VC Redist with MSI installer [#11469]
|
||||
* Windows: Additional exclusion fields for clipboard [#11521]
|
||||
|
||||
## 2.7.9 (2024-06-19)
|
||||
|
||||
### Changes
|
||||
* Passkeys: Ability to easily remove a passkey from an entry [#10777]
|
||||
* Snap: Use new desktop portal for native messaging integration [#10906]
|
||||
|
||||
### Fixes
|
||||
* Improve entry placeholder/reference feature [#10846]
|
||||
* Improve CSV importing when title field isn't specified [#10843]
|
||||
* Improve encrypted Bitwarden importing [#10800]
|
||||
* Improve database settings UX [#10821]
|
||||
* Improve handling of clipboard actions from entry preview [#10810]
|
||||
* Improve group/entry view resize behavior and set sensible defaults [#10641]
|
||||
* Passkeys: Fix incorrect username fill [#10874]
|
||||
* Passkeys: Return additional data to the extension [#10857]
|
||||
* Fix password clear timer inconsistency on unlock view [#10708]
|
||||
* Fix portability check [#10760]
|
||||
* Fix page overflow on HTML exports [#10735]
|
||||
* Fix broken builds when using system provided zxcvbn [#10717]
|
||||
* Fix copy password button when text is selected [#10853]
|
||||
* Fix tab ordering on application settings pages [#10907]
|
||||
* SSH Agent: Fix broken decrypt button [#10638]
|
||||
* Windows: Fix ALT Auto-Type modifier [#10795]
|
||||
* Windows: Fix wrong DACL memory size allocation [#10712]
|
||||
* macOS: Fix monospace font sizing [#10739]
|
||||
* Flatpak: Fix configuration settings off-by-one error [#10688]
|
||||
* BSD: Fix compiling with libusb implementation [#10736]
|
||||
|
||||
## 2.7.8 (2024-05-05)
|
||||
|
||||
### Changes
|
||||
- Add hotkey for showing search help [#10591]
|
||||
- Add hotkey for group switching (Ctrl+Shift+PgUp/PgDown) [#10625]
|
||||
- Add per-database auto-save delay setting [#9100]
|
||||
- Add setting to hide menubar [#10341]
|
||||
- Improve Bitwarden 1PUX import and support organization collections [#10499]
|
||||
- Show advanced settings checkbox only for settings that have them [#6513]
|
||||
- Remove obsolete setting for requiring repeated password entry [#9722]
|
||||
- Passkeys: Allow registering Passkeys to existing entries [#10408]
|
||||
- Passkeys: Show warning about data being unencrypted before Passkey export [#10411]
|
||||
- Passkeys: Support NFC and USB transports [#10402]
|
||||
- Passkeys: Pass extension JSON data to browser [#10615]
|
||||
- SSH Agent: Do not use entries from recycle bin [#10518]
|
||||
- Linux: Change hotkey sequence used for {CLEARFIELD} Auto-Type [#10008]
|
||||
- Windows: Improve DACL memory access protection [#10618]
|
||||
|
||||
### Fixes
|
||||
- Fix crash when deleting history items [#10451]
|
||||
- Fix crash on screen lock or computer sleep [#10458]
|
||||
- Fix search field not being focused after unlock [#10459]
|
||||
- Fix loss of window focus when Auto-Type needs to unlock a database [#10555]
|
||||
- Fix inconsistent TOTP visibility on unlock [#10009]
|
||||
- Fix CSV import skipping over single-name groups [#10575]
|
||||
- Fix key file folder being remembered even if disabled in settings [#10636]
|
||||
- Fix issues with entry editing and database locking [#10667]
|
||||
- Fix key file text when provided on command line [#10642]
|
||||
- Fix issues with hardware key auto detection [#10663]
|
||||
- Do not override monospace font size [#10282]
|
||||
- Perform group sort only when group view is in focus [#10202]
|
||||
- Do not show decimals for attachment sizes in Bytes [#10595]
|
||||
- Prevent merging of global custom data when merging databases [#10452]
|
||||
- Fix minor translation issues [#10635]
|
||||
- Passkeys: Fix StrongBox incompatibility [#10420]
|
||||
- Passkeys: Set RP ID to effective domain if unset instead of returning an error [#10384]
|
||||
- Passkeys: Various UI fixes and improvements [#10427, #10608, #10609]
|
||||
- AppImage: Fix URL opening [#10624]
|
||||
- Flatpak: Fix application autostart [#10563]
|
||||
- Linux/macOS: Fix button sizes on modal alert popups [#10500]
|
||||
- Linux: Fix clipboard clear on Wayland [#10500]
|
||||
- Windows: Preserve file-hidden attribute [#10343]
|
||||
|
||||
## 2.7.7 (2024-03-09)
|
||||
|
||||
### Changes
|
||||
- Support USB Hotplug for Hardware Key interface [#10092]
|
||||
- Support 1PUX and Bitwarden import [#9815]
|
||||
- Browser: Add support for PassKeys [#8825, #9987, #10318]
|
||||
- Build System: Move to vcpkg manifest mode [#10088]
|
||||
|
||||
### Fixes
|
||||
- Fix multiple TOTP issues [#9874]
|
||||
- Fix focus loss on save when the editor is not visible anymore [#10075]
|
||||
- Fix visual when removing entry from history [#9947]
|
||||
- Fix first entry is not selected when a search is performed [#9868]
|
||||
- Prevent scrollbars on entry drag/drop [#9747]
|
||||
- Prevent duplicate characters in "Also choose from" field of password generator [#9803]
|
||||
- Security: Prevent byte-by-byte and attachment inference side channel attacks [#10266]
|
||||
- Browser: Fix raising Update Entry messagebox [#9853]
|
||||
- Browser: Fix bugs when returning credentials [#9136]
|
||||
- Browser: Fix crash on database open from browser [#9939]
|
||||
- Browser: Fix support for referenced URL fields [#8788]
|
||||
- MacOS: Fix crash when changing highlight/accent color [#10348]
|
||||
- MacOS: Fix TouchID appearing even though lid is closed [#10092]
|
||||
- Windows: Fix terminating KeePassXC processes with MSI installer [#9822]
|
||||
- FdoSecrets: Fix database merge crash when enabled [#10136]
|
||||
|
||||
## 2.7.6 (2023-08-15)
|
||||
|
||||
### Changes
|
||||
- Significant improvement to visual when drag/drop entries [#9698]
|
||||
- Automatically prompt for Quick Unlock when showing unlock dialog [#9697]
|
||||
- Improve colorful lock icon and fix file MIME icon on KDE [#9632]
|
||||
- Ability to search by entry UUID [#9571]
|
||||
- Add challenge-response support for NitroKey 3 [#9631]
|
||||
- Auto-Type: Disable entry level Auto-Type when disabled at group/entry [#9672]
|
||||
- Browser: Show warning when adding duplicate URL's to entry [#9588][#9635]
|
||||
- Browser: Improve error message when proxy cannot be found [#9385]
|
||||
|
||||
### Fixes
|
||||
- Fix crash on exit on macOS [#9620]
|
||||
- Fix crash on search if entry doesn't have a group [#9633]
|
||||
- Fix several issues with Quick Unlock [#9697]
|
||||
- Enable save button when not auto-saving non-data changes [#9634]
|
||||
- Several UI/UX fixes [#9647]
|
||||
- Move toolbar back to top of window when disabling movement [#9699]
|
||||
- Browser: Fix closing password generator dialog with X button [#9636]
|
||||
- Browser: Fix handling of expired credentials [#9595]
|
||||
- Windows: Prevent white flicker when launching application [#9637]
|
||||
- Linux: Fix warning message about allow screencapture [#9638]
|
||||
- FdoSecrets: Fix access confirmation dialog showing even when disabled [#9690]
|
||||
|
||||
## 2.7.5 (2023-05-14)
|
||||
|
||||
### Changes
|
||||
- Add menu option to allow screenshots [#8841]
|
||||
- Add support for Botan 3 [#9388]
|
||||
- Increase max TOTP step to 24 hours [#9149]
|
||||
- Improve HTML export layout [#8987]
|
||||
- Turn search reset off by default [#9153]
|
||||
- Use QClipboard::clear() instead of setting blank text [#9148]
|
||||
- Hide group column header choice when not in search [#9171]
|
||||
- Improve look of KeePassXC logo and icons [#9355]
|
||||
- Add keyboard shortcuts for app and database settings [#9007]
|
||||
- Hide rename button from attachments preview panel [#8842]
|
||||
- Linux: Set SingleMainWindow in .desktop file [#7430]
|
||||
|
||||
### Fixes
|
||||
- Fix crash when search clears while creating new entry [#9230]
|
||||
- Fix crash when using Windows Hello in a Remote Desktop session [#9006]
|
||||
- Fix crash in Group Edit after enabling Browser Integration [#8778]
|
||||
- Fix canceling quick unlock when it is unavailable [#9034]
|
||||
- Set password input field font correctly [#8732]
|
||||
- Greatly improve performance when rendering entry view [#9398]
|
||||
- Fix various accessibility issues [#9138]
|
||||
- Fix arrows size when expand/collapse a group [#9096]
|
||||
- Select the clone instead of the original after cloning an entry [#9070]
|
||||
- Fix bugs with preview widget [#9170]
|
||||
- Fix status bar update when switching to other DB [#9073]
|
||||
- Fix database settings spin box bug [#9101]
|
||||
- Fix Ctrl+Tab shortcut to cycle databases in unlock dialog [#8839]
|
||||
- Fix TOTP QR code maintaining square ratio [#9027]
|
||||
- Fix Auto-Type configuration page on custom sequence selection [#8752]
|
||||
- Fix unexpected behavior of `--lock` when KeePassXC is not running [#8889]
|
||||
- Make open folder icon exempt from "Apply group icon to entry" [#9205]
|
||||
- Allow setting default file open directory with env var [#9192]
|
||||
- SSH Agent: Fix support for AES-256/GCM openssh keys [#8968]
|
||||
- Browser: Fix Native Messaging script path with BSD OS's [#8835]
|
||||
- MacOS: Fix text selection for Auto-Type clear field [#9066]
|
||||
- MacOS: Don't rely on AppleInterfaceStyle for theme switching [#8615]
|
||||
- Windows: Remove registry detection of desktop shortcut [#9380]
|
||||
|
||||
## 2.7.4 (2022-10-29)
|
||||
|
||||
### Changes
|
||||
- Add 2 months expiration preset [#8687]
|
||||
- CLI: Add Unicode support on Windows [#8618]
|
||||
|
||||
### Fixes
|
||||
- Fix crash on macOS when unlocking database [#8676]
|
||||
- Fix display of passwords in preview panel [#8633]
|
||||
- Fix clicking links in entry preview panel [#8644]
|
||||
- Prevent expired entries search if no results returned [#8643]
|
||||
- Browser: Revert code causing connection problems [#8665]
|
||||
- Browser: Fix socket file symbolic link on Linux [#8656]
|
||||
- Flatpak: Fix launching browser proxy service [#8680]
|
||||
- SSH Agent: Fix pageant support on Windows [#8619]
|
||||
|
||||
## 2.7.3 (2022-10-23)
|
||||
|
||||
### Changes
|
||||
- Enhance Tags Support and Add Saved Searches [#8435, #8607]
|
||||
- Significant improvements to entry preview panel [#7993]
|
||||
- Add password strength indicator to all password fields [#7885]
|
||||
- Limit zxcvbn entropy estimation length to 128 characters [#7748]
|
||||
- Try full URL path when fetching favicon [#8565]
|
||||
- Hide usernames in preview panel when hidden in entry view [#8608]
|
||||
- Enable dark title bar on windows when accent color is not used [#8498]
|
||||
- Add option to display passwords in color in preview panel [#7097]
|
||||
- Add XML Export option to GUI [#8524]
|
||||
- Increase entropy required for a "good" password rating to 75 [#8523]
|
||||
- Add shortcut to copy password with TOTP appended [#8443]
|
||||
- Show entry count in status bar [#8435]
|
||||
- Allow KeePassXC to be built without X11 [#8147]
|
||||
- Enable use of VivoKey Apex and Dangerous Things FlexSecure tokens [#8332]
|
||||
- Add setting for number of recent files [#8239]
|
||||
- Add Ctrl+Tab shortcut to cycle databases in unlock dialog [#8168]
|
||||
- Replace offensive words in eff_large.wordlist [#7968]
|
||||
- Auto-Type: PICKCHARS can specify attribute and ignore BEEP [#8118]
|
||||
- Linux: Add isHardwareKeySupported and refreshHardwareKeys to DBus methods [#8055]
|
||||
- Add config variable to specify default database file name [#8042]
|
||||
- Support numeric aware sorting on Windows and macOS [#8363]
|
||||
- CLI: Add `db-edit` command [#8400]
|
||||
- CLI: Add option to display all attributes with `show` command [#8256]
|
||||
- CLI: Show UUID and tags with `show` and `clip` commands [#8241]
|
||||
- Browser: Move socket into separate directory on Linux [#8030]
|
||||
- Browser: Add group setting to omit WWW subdomain when matching URLs [#7988]
|
||||
- FdoSecrets: Ask to unlock the database when creating items [#8022, #8028]
|
||||
- FdoSecrets: Skip entries in recycle bin when searching [#8021]
|
||||
|
||||
### Fixes
|
||||
- Fix potential deadlock in UI when saving [#8606]
|
||||
- Fix newlines when copying notes from preview panel [#8542]
|
||||
- Fix dark mode detection on Linux [#8477]
|
||||
- Fix crash when deleting items in recycle bin while searching [#8117]
|
||||
- Fix crash when trying to close database during unlock [#8144]
|
||||
- Fix tabbing around the interface [#8435, #8520]
|
||||
- Fix OPVault import when there are multiple OTP fields [#8436]
|
||||
- Fix various Windows Hello bugs [#8354]
|
||||
- Fix use of Apple Watch for Quick Unlock [#8311]
|
||||
- Better handling of "Lock on Minimize" setting [#8202]
|
||||
- Check for write permission before entering portable mode [#8447]
|
||||
- Correct regex escape logic to prevent parse errors [#7778]
|
||||
- Normalize slashes and file case for last used databases [#7864, #7214]
|
||||
- Link ykcore against pthread [#7807]
|
||||
- Auto-Type: Fix menu entries in selection dialog on Windows [#7987]
|
||||
- Auto-Type: Fix use of modifiers under macOS [#8111]
|
||||
- CLI: Fix output when using clip with the -t flag [#8271]
|
||||
- Browser: Use asynchronous access confirm dialog [#8273]
|
||||
- Browser: Always send database locked/unlocked status [#8114]
|
||||
|
||||
## 2.7.1 (2022-04-05)
|
||||
|
||||
### Changes
|
||||
- Show when tags are changed in entry history [#7638]
|
||||
- Improve tags editing and allow spaces in tags [#7708]
|
||||
- Improve layout of entry preview panel [#7767]
|
||||
- Incorporate patches to support Flatpak distribution [#7728]
|
||||
- Add expiration presets for 12 and 24 hours [#7738]
|
||||
|
||||
### Fixes
|
||||
- Fix crash when building history change list [#7638]
|
||||
- Fix hiding password on database unlock [#7725]
|
||||
- Fix AES KDF slow transform speed [#7755]
|
||||
- Auto-Type: Correct timing issue on macOS and Linux that prevented typing [#7588]
|
||||
- Auto-Type: Fix use of Ctrl/Alt/Shift/Win modifiers on Windows [#7629]
|
||||
- Auto-Type: Reduce/eliminate delay when searching for entries [#7598]
|
||||
- Auto-Type: Map ASCII dead keys on Linux for international keyboards [#7614]
|
||||
- CLI: Fix detection of hardware keys (YubiKey) [#7593]
|
||||
- CLI: Add missing parameter `-c` to add/edit entries command [#7594]
|
||||
- Secret Service: Fix crash when multiple prompts are shown [#7786]
|
||||
- SSH Agent: Fix default agent selection on Windows [#7764]
|
||||
- Fix database unlock dialog not being the top window on Linux [#7771]
|
||||
- Fix drag/drop entries between tabs on Wayland [#7628]
|
||||
- Fix compiling with minizip-ng [#7638]
|
||||
|
||||
## 2.7.0 (2022-03-21)
|
||||
|
||||
### Major Additions
|
||||
- Implement KDBX 4.1 [#7114]
|
||||
@@ -35,7 +425,7 @@
|
||||
- Browser: Add search 'by-path' url to API [#5535]
|
||||
- Browser: search for entries by UUID to API [#4763]
|
||||
- Browser: Support auto-download of favicon on entry addition [#7179]
|
||||
- Auto-Type: Major improvements to Auto-Type [#5864][#7463][#7435][#7391][#7129][#6400][#6364][#6361][#5283]
|
||||
- Auto-Type: Major improvements to Auto-Type [#5864][#7463][#7435][#7391][#7129][#6400][#6364][#6361][#5283][#7507]
|
||||
- Auto-Type: Fix typing to virtual machines on Windows [#7366]
|
||||
- Auto-Type: Re-implement X11 keysym emulation [#7098]
|
||||
- Auto-Type: Support multiple Xkb layouts [#6247]
|
||||
@@ -55,6 +445,7 @@
|
||||
- Improve macOS and Windows platform integration [#5851]
|
||||
- Lock only the current database by default [#6652]
|
||||
- Show expired entries on DB unlock [#7290]
|
||||
- Update D-Bus adaptor interface class name to match definition file [#7523]
|
||||
|
||||
### Other Changes and Fixes
|
||||
- Add countdown progress bar to TOTP preview [#6930]
|
||||
@@ -89,6 +480,8 @@
|
||||
- Fix adaptive icon painting [#5989][#6033]
|
||||
- Fix favicon download from URL with non-standard port [#5509]
|
||||
- Ignore recycle bin on KeePassHTTP migration [#5481]
|
||||
- Fix keepassxc-cr-recovery utility [#7521]
|
||||
- Fix Auto-Type not working when audio recording indicator is active on macOS 12.2+ [#7526]
|
||||
|
||||
## 2.6.6 (2021-06-12)
|
||||
|
||||
@@ -800,7 +1193,7 @@
|
||||
- Compare window title to entry URLs #556
|
||||
- Implemented inline error messages #162
|
||||
- Ignore group expansion and other minor changes when making database "dirty" #464
|
||||
- Updated license and copyright information on souce files #632
|
||||
- Updated license and copyright information on source files #632
|
||||
- Added contributors list to about dialog #629
|
||||
|
||||
## 2.1.4 (2017-04-09)
|
||||
|
||||
180
CMakeLists.txt
@@ -14,9 +14,10 @@
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
cmake_minimum_required(VERSION 3.3.0)
|
||||
cmake_minimum_required(VERSION 3.10.0)
|
||||
|
||||
project(KeePassXC)
|
||||
set(APP_ID "org.keepassxc.${PROJECT_NAME}")
|
||||
|
||||
if(NOT CMAKE_BUILD_TYPE)
|
||||
set(CMAKE_BUILD_TYPE "RelWithDebInfo" CACHE STRING
|
||||
@@ -33,6 +34,7 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
|
||||
# Support Visual Studio Code
|
||||
include(CMakeToolsHelpers OPTIONAL)
|
||||
include(FeatureSummary)
|
||||
include(KPXCMacDeployHelpers)
|
||||
|
||||
include(CheckCCompilerFlag)
|
||||
include(CheckCXXCompilerFlag)
|
||||
@@ -51,14 +53,43 @@ set(WITH_XC_ALL OFF CACHE BOOL "Build in all available plugins")
|
||||
option(WITH_XC_AUTOTYPE "Include Auto-Type." ON)
|
||||
option(WITH_XC_NETWORKING "Include networking code (e.g. for downloading website icons)." OFF)
|
||||
option(WITH_XC_BROWSER "Include browser integration with keepassxc-browser." OFF)
|
||||
option(WITH_XC_BROWSER_PASSKEYS "Passkeys support for browser integration." OFF)
|
||||
option(WITH_XC_YUBIKEY "Include YubiKey support." OFF)
|
||||
option(WITH_XC_SSHAGENT "Include SSH agent support." OFF)
|
||||
option(WITH_XC_KEESHARE "Sharing integration with KeeShare" OFF)
|
||||
option(WITH_XC_UPDATECHECK "Include automatic update checks; disable for controlled distributions" ON)
|
||||
if(UNIX AND NOT APPLE)
|
||||
option(WITH_XC_FDOSECRETS "Implement freedesktop.org Secret Storage Spec server side API." OFF)
|
||||
set(WITH_XC_X11 ON CACHE BOOL "Enable building with X11 deps")
|
||||
endif()
|
||||
option(WITH_XC_DOCS "Enable building of documentation" ON)
|
||||
if(WIN32 OR APPLE)
|
||||
set(WITH_XC_CODESIGN_IDENTITY "" CACHE STRING "Certificate to be used for signing binaries before packaging.")
|
||||
if(WIN32)
|
||||
set(WITH_XC_CODESIGN_TIMESTAMP_URL "http://timestamp.sectigo.com" CACHE STRING "Timestamp URL for Windows code signing.")
|
||||
elseif(APPLE)
|
||||
set(WITH_XC_NOTARY_KEYCHAIN_PROFILE "" CACHE STRING "Keychain profile name for stored Apple notarization credentials.")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(APPLE)
|
||||
# Perform the platform checks before applying the stricter compiler flags.
|
||||
# Otherwise the kSecAccessControlTouchIDCurrentSet deprecation warning will result in an error.
|
||||
try_compile(XC_APPLE_COMPILER_SUPPORT_BIOMETRY
|
||||
${CMAKE_CURRENT_BINARY_DIR}/tiometry_test/
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/cmake/compiler-checks/macos/control_biometry_support.mm)
|
||||
message(STATUS "Biometry compiler support: ${XC_APPLE_COMPILER_SUPPORT_BIOMETRY}")
|
||||
|
||||
try_compile(XC_APPLE_COMPILER_SUPPORT_TOUCH_ID
|
||||
${CMAKE_CURRENT_BINARY_DIR}/touch_id_test/
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/cmake/compiler-checks/macos/control_touch_id_support.mm)
|
||||
message(STATUS "Touch ID compiler support: ${XC_APPLE_COMPILER_SUPPORT_TOUCH_ID}")
|
||||
|
||||
try_compile(XC_APPLE_COMPILER_SUPPORT_WATCH
|
||||
${CMAKE_CURRENT_BINARY_DIR}/tiometry_test/
|
||||
${CMAKE_CURRENT_SOURCE_DIR}/cmake/compiler-checks/macos/control_watch_support.mm)
|
||||
message(STATUS "Apple watch compiler support: ${XC_APPLE_COMPILER_SUPPORT_WATCH}")
|
||||
endif()
|
||||
|
||||
if(WITH_CCACHE)
|
||||
# Use the Compiler Cache (ccache) program
|
||||
@@ -75,6 +106,7 @@ if(WITH_XC_ALL)
|
||||
set(WITH_XC_AUTOTYPE ON)
|
||||
set(WITH_XC_NETWORKING ON)
|
||||
set(WITH_XC_BROWSER ON)
|
||||
set(WITH_XC_BROWSER_PASSKEYS ON)
|
||||
set(WITH_XC_YUBIKEY ON)
|
||||
set(WITH_XC_SSHAGENT ON)
|
||||
set(WITH_XC_KEESHARE ON)
|
||||
@@ -89,8 +121,13 @@ if(NOT WITH_XC_NETWORKING AND WITH_XC_UPDATECHECK)
|
||||
set(WITH_XC_UPDATECHECK OFF)
|
||||
endif()
|
||||
|
||||
if(UNIX AND NOT APPLE AND NOT WITH_XC_X11)
|
||||
message(STATUS "Disabling WITH_XC_AUTOTYPE because WITH_XC_X11 is disabled")
|
||||
set(WITH_XC_AUTOTYPE OFF)
|
||||
endif()
|
||||
|
||||
set(KEEPASSXC_VERSION_MAJOR "2")
|
||||
set(KEEPASSXC_VERSION_MINOR "7")
|
||||
set(KEEPASSXC_VERSION_MINOR "8")
|
||||
set(KEEPASSXC_VERSION_PATCH "0")
|
||||
set(KEEPASSXC_VERSION "${KEEPASSXC_VERSION_MAJOR}.${KEEPASSXC_VERSION_MINOR}.${KEEPASSXC_VERSION_PATCH}")
|
||||
set(OVERRIDE_VERSION "" CACHE STRING "Override the KeePassXC Version for Snapshot builds")
|
||||
@@ -117,7 +154,8 @@ execute_process(COMMAND git tag --points-at HEAD
|
||||
WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}
|
||||
OUTPUT_VARIABLE GIT_TAG
|
||||
ERROR_QUIET)
|
||||
if(GIT_TAG)
|
||||
string(REGEX REPLACE "latest" "" GIT_TAG "${GIT_TAG}")
|
||||
if(GIT_TAG MATCHES "[0-9]+\.[0-9]+\.[0-9]+")
|
||||
string(STRIP "${GIT_TAG}" GIT_TAG)
|
||||
set(OVERRIDE_VERSION ${GIT_TAG})
|
||||
elseif(EXISTS ${CMAKE_SOURCE_DIR}/.version)
|
||||
@@ -126,14 +164,14 @@ endif()
|
||||
|
||||
string(REGEX REPLACE "(\r?\n)+" "" OVERRIDE_VERSION "${OVERRIDE_VERSION}")
|
||||
if(OVERRIDE_VERSION)
|
||||
if(OVERRIDE_VERSION MATCHES "^[\\.0-9]+-(alpha|beta)[0-9]+$")
|
||||
set(KEEPASSXC_BUILD_TYPE PreRelease)
|
||||
if(OVERRIDE_VERSION MATCHES "^[\\.0-9]+-beta[0-9]*")
|
||||
set(KEEPASSXC_BUILD_TYPE "PreRelease")
|
||||
set(KEEPASSXC_VERSION ${OVERRIDE_VERSION})
|
||||
elseif(OVERRIDE_VERSION MATCHES "^[\\.0-9]+$")
|
||||
set(KEEPASSXC_BUILD_TYPE Release)
|
||||
set(KEEPASSXC_BUILD_TYPE "Release")
|
||||
set(KEEPASSXC_VERSION ${OVERRIDE_VERSION})
|
||||
else()
|
||||
set(KEEPASSXC_BUILD_TYPE Snapshot)
|
||||
set(KEEPASSXC_BUILD_TYPE "Snapshot")
|
||||
set(KEEPASSXC_VERSION ${OVERRIDE_VERSION})
|
||||
endif()
|
||||
else()
|
||||
@@ -157,11 +195,13 @@ message(STATUS "Setting up build for KeePassXC v${KEEPASSXC_VERSION}\n")
|
||||
# Distribution info
|
||||
set(KEEPASSXC_DIST ON)
|
||||
set(KEEPASSXC_DIST_TYPE "Other" CACHE STRING "KeePassXC Distribution Type")
|
||||
set_property(CACHE KEEPASSXC_DIST_TYPE PROPERTY STRINGS Snap AppImage Other)
|
||||
set_property(CACHE KEEPASSXC_DIST_TYPE PROPERTY STRINGS Snap AppImage Flatpak Other)
|
||||
if(KEEPASSXC_DIST_TYPE STREQUAL "Snap")
|
||||
set(KEEPASSXC_DIST_SNAP ON)
|
||||
elseif(KEEPASSXC_DIST_TYPE STREQUAL "AppImage")
|
||||
set(KEEPASSXC_DIST_APPIMAGE ON)
|
||||
elseif(KEEPASSXC_DIST_TYPE STREQUAL "Flatpak")
|
||||
set(KEEPASSXC_DIST_FLATPAK ON)
|
||||
elseif(KEEPASSXC_DIST_TYPE STREQUAL "Other")
|
||||
unset(KEEPASSXC_DIST)
|
||||
endif()
|
||||
@@ -172,6 +212,16 @@ if(${CMAKE_VERSION} VERSION_GREATER_EQUAL "3.14.0")
|
||||
check_pie_supported()
|
||||
endif()
|
||||
|
||||
# Find Botan early since the version affects subsequent compiler options
|
||||
find_package(Botan REQUIRED)
|
||||
if(BOTAN_VERSION VERSION_GREATER_EQUAL "3.0.0")
|
||||
set(WITH_XC_BOTAN3 TRUE)
|
||||
elseif(BOTAN_VERSION VERSION_LESS "2.11.0")
|
||||
# Check for minimum Botan version
|
||||
message(FATAL_ERROR "Botan 2.11.0 or higher is required")
|
||||
endif()
|
||||
include_directories(SYSTEM ${BOTAN_INCLUDE_DIR})
|
||||
|
||||
# Create position independent code for shared libraries and executables
|
||||
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||
|
||||
@@ -179,17 +229,23 @@ if("${CMAKE_SIZEOF_VOID_P}" EQUAL "4")
|
||||
set(IS_32BIT TRUE)
|
||||
endif()
|
||||
|
||||
set(CLANG_COMPILER_ID_REGEX "^(Apple)?[Cc]lang$")
|
||||
if("${CMAKE_C_COMPILER}" MATCHES "clang$"
|
||||
OR "${CMAKE_EXTRA_GENERATOR_C_SYSTEM_DEFINED_MACROS}" MATCHES "__clang__"
|
||||
OR "${CMAKE_C_COMPILER_ID}" MATCHES ${CLANG_COMPILER_ID_REGEX})
|
||||
set(CMAKE_COMPILER_IS_CLANG 1)
|
||||
endif()
|
||||
if("${CMAKE_CXX_COMPILER}" MATCHES "clang-cl(.exe)?$")
|
||||
# clang-cl uses MSVC compiler flags
|
||||
set(MSVC 1)
|
||||
set(CMAKE_COMPILER_IS_CLANG_MSVC 1)
|
||||
else()
|
||||
set(CLANG_COMPILER_ID_REGEX "^(Apple)?[Cc]lang$")
|
||||
if("${CMAKE_C_COMPILER}" MATCHES "clang$"
|
||||
OR "${CMAKE_EXTRA_GENERATOR_C_SYSTEM_DEFINED_MACROS}" MATCHES "__clang__"
|
||||
OR "${CMAKE_C_COMPILER_ID}" MATCHES ${CLANG_COMPILER_ID_REGEX})
|
||||
set(CMAKE_COMPILER_IS_CLANG 1)
|
||||
endif()
|
||||
|
||||
if("${CMAKE_CXX_COMPILER}" MATCHES "clang(\\+\\+)?$"
|
||||
OR "${CMAKE_EXTRA_GENERATOR_CXX_SYSTEM_DEFINED_MACROS}" MATCHES "__clang__"
|
||||
OR "${CMAKE_CXX_COMPILER_ID}" MATCHES ${CLANG_COMPILER_ID_REGEX})
|
||||
set(CMAKE_COMPILER_IS_CLANGXX 1)
|
||||
if("${CMAKE_CXX_COMPILER}" MATCHES "clang(\\+\\+)?$"
|
||||
OR "${CMAKE_EXTRA_GENERATOR_CXX_SYSTEM_DEFINED_MACROS}" MATCHES "__clang__"
|
||||
OR "${CMAKE_CXX_COMPILER_ID}" MATCHES ${CLANG_COMPILER_ID_REGEX})
|
||||
set(CMAKE_COMPILER_IS_CLANGXX 1)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
macro(add_gcc_compiler_cxxflags FLAGS)
|
||||
@@ -244,6 +300,9 @@ macro(check_add_gcc_compiler_flag FLAG)
|
||||
endmacro(check_add_gcc_compiler_flag)
|
||||
|
||||
add_definitions(-DQT_NO_EXCEPTIONS -DQT_STRICT_ITERATORS -DQT_NO_CAST_TO_ASCII)
|
||||
if(NOT IS_DEBUG_BUILD)
|
||||
add_definitions(-DQT_NO_DEBUG_OUTPUT)
|
||||
endif()
|
||||
|
||||
if(WITH_APP_BUNDLE)
|
||||
add_definitions(-DWITH_APP_BUNDLE)
|
||||
@@ -264,6 +323,10 @@ if(CMAKE_BUILD_TYPE_LOWER STREQUAL "debug")
|
||||
check_add_gcc_compiler_flag("-Wshadow-compatible-local")
|
||||
check_add_gcc_compiler_flag("-Wshadow-local")
|
||||
add_gcc_compiler_flags("-Werror")
|
||||
# This is needed since compiling against Botan3 requires compiling against C++20
|
||||
if(WITH_XC_BOTAN3)
|
||||
add_gcc_compiler_cxxflags("-Wno-error=deprecated-enum-enum-conversion -Wno-error=deprecated")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if (NOT HAIKU)
|
||||
@@ -302,14 +365,18 @@ check_add_gcc_compiler_flag("-Wcast-align")
|
||||
|
||||
if(UNIX AND NOT APPLE)
|
||||
check_add_gcc_compiler_flag("-Qunused-arguments")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--no-add-needed -Wl,--as-needed -Wl,--no-undefined")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--as-needed -Wl,--no-undefined")
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-z,relro,-z,now -pie")
|
||||
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--no-add-needed -Wl,--as-needed")
|
||||
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--as-needed")
|
||||
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,-z,relro,-z,now")
|
||||
endif()
|
||||
|
||||
set(CMAKE_C_STANDARD 99)
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
if(WITH_XC_BOTAN3)
|
||||
set(CMAKE_CXX_STANDARD 20)
|
||||
else()
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
endif()
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
|
||||
check_cxx_compiler_flag("-fsized-deallocation" CXX_HAS_fsized_deallocation)
|
||||
@@ -342,10 +409,14 @@ if (MSVC)
|
||||
message(FATAL_ERROR "Only Microsoft Visual Studio 17 and newer are supported!")
|
||||
endif()
|
||||
add_compile_options(/permissive- /utf-8)
|
||||
if(IS_DEBUG_BUILD)
|
||||
add_compile_options(/Zf)
|
||||
if(MSVC_TOOLSET_VERSION GREATER 141)
|
||||
add_compile_definitions(/fsanitize=address)
|
||||
# Clang-cl does not support /MP, /Zf, or /fsanitize=address
|
||||
if (NOT CMAKE_COMPILER_IS_CLANG_MSVC)
|
||||
add_compile_options(/MP)
|
||||
if(IS_DEBUG_BUILD)
|
||||
add_compile_options(/Zf)
|
||||
if(MSVC_TOOLSET_VERSION GREATER 141)
|
||||
add_compile_definitions(/fsanitize=address)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
@@ -361,7 +432,7 @@ if(WIN32)
|
||||
# By default MSVC enables NXCOMPAT
|
||||
add_compile_options(/guard:cf)
|
||||
add_link_options(/DYNAMICBASE /HIGHENTROPYVA /GUARD:CF)
|
||||
else(MINGW)
|
||||
else()
|
||||
set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,--nxcompat -Wl,--dynamicbase")
|
||||
set(CMAKE_MODULE_LINKER_FLAGS "${CMAKE_MODULE_LINKER_FLAGS} -Wl,--nxcompat -Wl,--dynamicbase")
|
||||
# Enable high entropy ASLR for 64-bit builds
|
||||
@@ -371,6 +442,8 @@ if(WIN32)
|
||||
endif()
|
||||
endif()
|
||||
endif()
|
||||
# Determine if we can link against the Windows SDK, used for Windows Hello support
|
||||
find_library(WINSDK WindowsApp.lib)
|
||||
endif()
|
||||
|
||||
if(APPLE AND WITH_APP_BUNDLE OR WIN32)
|
||||
@@ -413,7 +486,7 @@ if(WITH_COVERAGE)
|
||||
append_coverage_compiler_flags()
|
||||
|
||||
set(COVERAGE_EXCLUDES
|
||||
"'^(.+/)?(thirdparty|zxcvbn)/.*'"
|
||||
"'^(.+/)?thirdparty/.*'"
|
||||
"'^(.+/)?main\\.cpp$$'"
|
||||
"'^(.+/)?cli/keepassxc-cli\\.cpp$$'"
|
||||
"'^(.+/)?proxy/keepassxc-proxy\\.cpp$$'")
|
||||
@@ -439,27 +512,34 @@ include(CLangFormat)
|
||||
|
||||
set(QT_COMPONENTS Core Network Concurrent Gui Svg Widgets Test LinguistTools)
|
||||
if(UNIX AND NOT APPLE)
|
||||
find_package(Qt5 COMPONENTS ${QT_COMPONENTS} DBus X11Extras REQUIRED)
|
||||
if(WITH_XC_X11)
|
||||
list(APPEND QT_COMPONENTS X11Extras)
|
||||
endif()
|
||||
find_package(Qt5 COMPONENTS ${QT_COMPONENTS} DBus REQUIRED)
|
||||
elseif(APPLE)
|
||||
find_package(Qt5 COMPONENTS ${QT_COMPONENTS} REQUIRED HINTS
|
||||
/usr/local/opt/qt/lib/cmake
|
||||
/usr/local/Cellar/qt/*/lib/cmake
|
||||
/opt/homebrew/opt/qt/lib/cmake
|
||||
/usr/local/opt/qt@5/lib/cmake
|
||||
/usr/local/Cellar/qt@5/*/lib/cmake
|
||||
/opt/homebrew/opt/qt@5/lib/cmake
|
||||
ENV PATH)
|
||||
find_package(Qt5 COMPONENTS MacExtras HINTS
|
||||
/usr/local/opt/qt/lib/cmake
|
||||
/usr/local/Cellar/qt/*/lib/cmake
|
||||
/opt/homebrew/opt/qt/lib/cmake
|
||||
/usr/local/opt/qt@5/lib/cmake
|
||||
/usr/local/Cellar/qt@5/*/lib/cmake
|
||||
/opt/homebrew/opt/qt@5/lib/cmake
|
||||
ENV PATH)
|
||||
else()
|
||||
find_package(Qt5 COMPONENTS ${QT_COMPONENTS} REQUIRED)
|
||||
endif()
|
||||
|
||||
if(Qt5Core_VERSION VERSION_LESS "5.2.0")
|
||||
message(FATAL_ERROR "Qt version 5.2.0 or higher is required")
|
||||
if(Qt5Core_VERSION VERSION_LESS "5.12.0")
|
||||
message(FATAL_ERROR "Qt version 5.12.0 or higher is required")
|
||||
endif()
|
||||
|
||||
get_filename_component(Qt5_PREFIX ${Qt5_DIR}/../../.. REALPATH)
|
||||
if(APPLE)
|
||||
# Add includes under Qt5 Prefix in case Qt6 is also installed
|
||||
include_directories(SYSTEM ${Qt5_PREFIX}/include)
|
||||
endif()
|
||||
|
||||
# Process moc automatically
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
@@ -475,6 +555,7 @@ if(APPLE)
|
||||
message(FATAL_ERROR "macdeployqt is required to build on macOS")
|
||||
endif()
|
||||
message(STATUS "Using macdeployqt: ${MACDEPLOYQT_EXE}")
|
||||
set(MACDEPLOYQT_EXTRA_BINARIES "")
|
||||
elseif(WIN32)
|
||||
find_program(WINDEPLOYQT_EXE windeployqt HINTS ${Qt5_PREFIX}/bin ${Qt5_PREFIX}/tools/qt5/bin ENV PATH)
|
||||
if(NOT WINDEPLOYQT_EXE)
|
||||
@@ -487,12 +568,10 @@ endif()
|
||||
# Make sure we don't enable asserts there.
|
||||
set_property(DIRECTORY APPEND PROPERTY COMPILE_DEFINITIONS_NONE QT_NO_DEBUG)
|
||||
|
||||
# Find Botan2
|
||||
find_package(Botan2 REQUIRED)
|
||||
if(BOTAN2_VERSION VERSION_LESS "2.11.0")
|
||||
message(FATAL_ERROR "Botan2 2.11.0 or higher is required")
|
||||
endif()
|
||||
include_directories(SYSTEM ${BOTAN2_INCLUDE_DIR})
|
||||
# Find Argon2 -- Botan 2.18 and below does not support threaded Argon2
|
||||
find_library(ARGON2_LIBRARIES NAMES argon2)
|
||||
find_path(ARGON2_INCLUDE_DIR NAMES argon2.h PATH_SUFFIXES local/include)
|
||||
include_directories(SYSTEM ${ARGON2_INCLUDE_DIR})
|
||||
|
||||
# Find zlib
|
||||
find_package(ZLIB REQUIRED)
|
||||
@@ -501,9 +580,18 @@ if(ZLIB_VERSION_STRING VERSION_LESS "1.2.0")
|
||||
endif()
|
||||
include_directories(SYSTEM ${ZLIB_INCLUDE_DIR})
|
||||
|
||||
# Find Minizip
|
||||
find_package(Minizip REQUIRED)
|
||||
|
||||
if(WITH_XC_YUBIKEY)
|
||||
find_package(PCSC REQUIRED)
|
||||
include_directories(SYSTEM ${PCSC_INCLUDE_DIRS})
|
||||
|
||||
if(UNIX AND NOT APPLE)
|
||||
find_library(LIBUSB_LIBRARIES NAMES usb-1.0 REQUIRED)
|
||||
find_path(LIBUSB_INCLUDE_DIR NAMES libusb.h PATH_SUFFIXES "libusb-1.0" "libusb" REQUIRED)
|
||||
include_directories(SYSTEM ${LIBUSB_INCLUDE_DIR})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
if(UNIX)
|
||||
@@ -516,7 +604,7 @@ if(UNIX)
|
||||
HAVE_MALLOC_H)
|
||||
|
||||
check_cxx_source_compiles("#include <malloc.h>
|
||||
int main() { malloc_usable_size(NULL, 0); return 0; }"
|
||||
int main() { malloc_usable_size(NULL); return 0; }"
|
||||
HAVE_MALLOC_USABLE_SIZE)
|
||||
|
||||
check_cxx_source_compiles("#include <sys/resource.h>
|
||||
@@ -538,6 +626,12 @@ endif()
|
||||
|
||||
include_directories(SYSTEM ${ZLIB_INCLUDE_DIR})
|
||||
|
||||
find_library(ZXCVBN_LIBRARIES zxcvbn)
|
||||
if(NOT ZXCVBN_LIBRARIES)
|
||||
add_subdirectory(src/thirdparty/zxcvbn)
|
||||
set(ZXCVBN_LIBRARIES zxcvbn)
|
||||
endif(NOT ZXCVBN_LIBRARIES)
|
||||
|
||||
add_subdirectory(src)
|
||||
add_subdirectory(share)
|
||||
if(WITH_TESTS)
|
||||
|
||||
74
COPYING
@@ -1,5 +1,5 @@
|
||||
KeePassXC - http://www.keepassxc.org/
|
||||
Copyright (C) 2016-2020 KeePassXC Team <team@keepassxc.org>
|
||||
Copyright (C) 2016-2023 KeePassXC Team <team@keepassxc.org>
|
||||
|
||||
This program is free software: you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
@@ -27,28 +27,24 @@ Copyright: 2010-2012, Felix Geyer <debfx@fobos.de>
|
||||
2000-2008, Tom Sato <VEF00200@nifty.ne.jp>
|
||||
2013, Laszlo Papp <lpapp@kde.org>
|
||||
2013, David Faure <faure@kde.org>
|
||||
2016-2020, KeePassXC Team <team@keepassxc.org>
|
||||
2016-2023, KeePassXC Team <team@keepassxc.org>
|
||||
License: GPL-2 or GPL-3
|
||||
|
||||
Comment: The "KeePassXC Team" in every copyright notice is formed by the following people:
|
||||
- droidmonkey
|
||||
- phoerious
|
||||
- TheZ3ro <io@thezero.org>
|
||||
- varjolintu
|
||||
- hifi
|
||||
- louib
|
||||
- weslly
|
||||
Every other contributor is listed on https://github.com/keepassxreboot/keepassxc/graphs/contributors
|
||||
|
||||
Files: cmake/CodeCoverage.cmake
|
||||
Copyright: 2012 - 2015, Lars Bilke
|
||||
License: BSD-3-clause
|
||||
|
||||
Files: cmake/FindYubiKey.cmake
|
||||
Copyright: 2014 Kyle Manna <kyle@kylemanna.com>
|
||||
License: GPL-2 or GPL-3
|
||||
|
||||
Files: cmake/FindBotan2.cmake
|
||||
Copyright: 2018 Ribose Inc.
|
||||
License: BSD-2-clause
|
||||
Files: cmake/FindBotan.cmake
|
||||
Copyright: none
|
||||
License: LGPL-2.1
|
||||
|
||||
Files: cmake/GenerateProductVersion.cmake
|
||||
Copyright: 2015 halex2005 <akharlov@gmail.com>
|
||||
@@ -141,13 +137,29 @@ Files: share/icons/badges/2_Expired.svg
|
||||
share/icons/database/C46_Help.svg
|
||||
share/icons/database/C53_Apply.svg
|
||||
share/icons/database/C61_Services.svg
|
||||
share/icons/application/scalable/actions/proton.svg
|
||||
Copyright: 2022 KeePassXC Team <team@keepassxc.org>
|
||||
License: MIT
|
||||
|
||||
Files: share/icons/application/scalable/actions/chevron-double-down.svg
|
||||
Files: share/icons/application/scalable/actions/application-exit.svg
|
||||
share/icons/application/scalable/actions/arrow-collapse-down.svg
|
||||
share/icons/application/scalable/actions/attributes-copy.svg
|
||||
share/icons/application/scalable/actions/auto-type.svg
|
||||
share/icons/application/scalable/actions/bitwarden.svg
|
||||
share/icons/application/scalable/actions/bugreport.svg
|
||||
share/icons/application/scalable/actions/chevron-double-down.svg
|
||||
share/icons/application/scalable/actions/chevron-double-right.svg
|
||||
share/icons/application/scalable/actions/clipboard-text.svg
|
||||
share/icons/application/scalable/actions/configure.svg
|
||||
share/icons/application/scalable/actions/csv.svg
|
||||
share/icons/application/scalable/actions/database-change-key.svg
|
||||
share/icons/application/scalable/actions/database-lock.svg
|
||||
share/icons/application/scalable/actions/database-lock-all.svg
|
||||
share/icons/application/scalable/actions/database-merge.svg
|
||||
share/icons/application/scalable/actions/database-search.svg
|
||||
share/icons/application/scalable/actions/database-settings.svg
|
||||
share/icons/application/scalable/actions/dialog-close.svg
|
||||
share/icons/application/scalable/actions/dialog-ok.svg
|
||||
share/icons/application/scalable/actions/document-close.svg
|
||||
share/icons/application/scalable/actions/document-edit.svg
|
||||
share/icons/application/scalable/actions/document-export.svg
|
||||
@@ -159,45 +171,66 @@ Files: share/icons/application/scalable/actions/chevron-double-down.svg
|
||||
share/icons/application/scalable/actions/document-save.svg
|
||||
share/icons/application/scalable/actions/document-save-as.svg
|
||||
share/icons/application/scalable/actions/document-save-copy.svg
|
||||
share/icons/application/scalable/actions/donate.svg
|
||||
share/icons/application/scalable/actions/edit-clear-locationbar-ltr.svg
|
||||
share/icons/application/scalable/actions/edit-clear-locationbar-rtl.svg
|
||||
share/icons/application/scalable/actions/entry-clone.svg
|
||||
share/icons/application/scalable/actions/entry-delete.svg
|
||||
share/icons/application/scalable/actions/entry-restore.svg
|
||||
share/icons/application/scalable/actions/entry-edit.svg
|
||||
share/icons/application/scalable/actions/entry-expire.svg
|
||||
share/icons/application/scalable/actions/entry-new.svg
|
||||
share/icons/application/scalable/actions/favicon-download.svg
|
||||
share/icons/application/scalable/actions/fingerprint.svg
|
||||
share/icons/application/scalable/actions/group-clone.svg
|
||||
share/icons/application/scalable/actions/getting-started.svg
|
||||
share/icons/application/scalable/actions/group-delete.svg
|
||||
share/icons/application/scalable/actions/group-edit.svg
|
||||
share/icons/application/scalable/actions/group-clone.svg
|
||||
share/icons/application/scalable/actions/group-empty-trash.svg
|
||||
share/icons/application/scalable/actions/group-new.svg
|
||||
share/icons/application/scalable/actions/hammer-wrench.svg
|
||||
share/icons/application/scalable/actions/health.svg
|
||||
share/icons/application/scalable/actions/help-about.svg
|
||||
share/icons/application/scalable/actions/key-enter.svg
|
||||
share/icons/application/scalable/actions/lock-question.svg
|
||||
share/icons/application/scalable/actions/keyboard-shortcuts.svg
|
||||
share/icons/application/scalable/actions/message-close.svg
|
||||
share/icons/application/scalable/actions/move-down.svg
|
||||
share/icons/application/scalable/actions/move-up.svg
|
||||
share/icons/application/scalable/actions/object-locked.svg
|
||||
share/icons/application/scalable/actions/object-unlocked.svg
|
||||
share/icons/application/scalable/actions/onepassword.svg
|
||||
share/icons/application/scalable/actions/paperclip.svg
|
||||
share/icons/application/scalable/actions/password-copy.svg
|
||||
share/icons/application/scalable/actions/password-generate.svg
|
||||
share/icons/application/scalable/actions/passkey.svg
|
||||
share/icons/application/scalable/actions/password-generator.svg
|
||||
share/icons/application/scalable/actions/password-show-off.svg
|
||||
share/icons/application/scalable/actions/password-show-on.svg
|
||||
share/icons/application/scalable/actions/qrcode.svg
|
||||
share/icons/application/scalable/actions/refresh.svg
|
||||
share/icons/application/scalable/actions/remote-sync.svg
|
||||
share/icons/application/scalable/actions/reports.svg
|
||||
share/icons/application/scalable/actions/reports-exclude.svg
|
||||
share/icons/application/scalable/actions/sort-alphabetical-ascending.svg
|
||||
share/icons/application/scalable/actions/sort-alphabetical-descending.svg
|
||||
share/icons/application/scalable/actions/statistics.svg
|
||||
share/icons/application/scalable/actions/system-help.svg
|
||||
share/icons/application/scalable/actions/system-search.svg
|
||||
share/icons/application/scalable/actions/system-software-update.svg
|
||||
share/icons/application/scalable/actions/tag.svg
|
||||
share/icons/application/scalable/actions/tag-multiple.svg
|
||||
share/icons/application/scalable/actions/tag-search.svg
|
||||
share/icons/application/scalable/actions/totp.svg
|
||||
share/icons/application/scalable/actions/totp-copy.svg
|
||||
share/icons/application/scalable/actions/totp-copy-password.svg
|
||||
share/icons/application/scalable/actions/totp-edit.svg
|
||||
share/icons/application/scalable/actions/totp-invalid.svg
|
||||
share/icons/application/scalable/actions/trash.svg
|
||||
share/icons/application/scalable/actions/url-copy.svg
|
||||
share/icons/application/scalable/actions/user-guide.svg
|
||||
share/icons/application/scalable/actions/username-copy.svg
|
||||
share/icons/application/scalable/actions/view-history.svg
|
||||
share/icons/application/scalable/actions/web.svg
|
||||
share/icons/application/scalable/actions/yubikey-refresh.svg
|
||||
share/icons/application/scalable/apps/internet-web-browser.svg
|
||||
share/icons/application/scalable/apps/keepassxc.svg
|
||||
share/icons/application/scalable/apps/keepassxc-dark.svg
|
||||
@@ -212,9 +245,12 @@ Files: share/icons/application/scalable/actions/chevron-double-down.svg
|
||||
share/icons/application/scalable/status/dialog-information.svg
|
||||
share/icons/application/scalable/status/dialog-warning.svg
|
||||
share/icons/application/scalable/status/security-high.svg
|
||||
Copyright: 2019 Austin Andrews <http://templarian.com/>
|
||||
License: SIL OPEN FONT LICENSE Version 1.1
|
||||
Comment: Taken from Material Design icon set (https://github.com/templarian/MaterialDesign/)
|
||||
share/icons/application/scalable/actions/lock-open-alert.svg
|
||||
share/icons/application/scalable/actions/lock-open.svg
|
||||
share/icons/application/scalable/actions/lock.svg
|
||||
Copyright: 2023 Pictogrammers <https://pictogrammers.com/docs/general/about/>
|
||||
License: Apache-2.0
|
||||
Comment: Some icons are modified to fit KeePassXC design (https://pictogrammers.com/library/mdi/)
|
||||
|
||||
Files: src/streams/qtiocompressor.*
|
||||
src/streams/QtIOCompressor
|
||||
@@ -222,7 +258,7 @@ Files: src/streams/qtiocompressor.*
|
||||
Copyright: 2009-2012, Nokia Corporation and/or its subsidiary(-ies)
|
||||
License: LGPL-2.1 or GPL-3
|
||||
|
||||
Files: src/zxcvbn/zxcvbn.*
|
||||
Files: src/thirdparty/zxcvbn/zxcvbn.*
|
||||
Copyright: 2015-2017, Tony Evans
|
||||
License: MIT
|
||||
|
||||
|
||||
191
INSTALL.md
@@ -6,142 +6,137 @@ For more information, see also the [_Building KeePassXC_](https://github.com/kee
|
||||
|
||||
The [QuickStart Guide](https://keepassxc.org/docs/KeePassXC_GettingStarted.html) gets you started using KeePassXC on your Windows, macOS, or Linux computer using pre-compiled binaries from the [downloads page](https://keepassxc.org/download).
|
||||
|
||||
Build Dependencies
|
||||
==================
|
||||
|
||||
The following tools must exist within your PATH:
|
||||
|
||||
* make
|
||||
* cmake (>= 3.3.0)
|
||||
* g++ (>= 4.7) or clang++ (>= 6.0)
|
||||
* asciidoctor
|
||||
|
||||
The following libraries are required:
|
||||
|
||||
* Qt 5 (>= 5.9.5): qtbase5, qtbase5-private, libqt5svg5, qttools5, qt5-image-formats-plugins
|
||||
* botan (>= 2.12)
|
||||
* zlib
|
||||
* minizip
|
||||
* readline (for completion in cli)
|
||||
* libqt5x11extras5, libxi, and libxtst (for auto-type on X11)
|
||||
* qrencode
|
||||
* libusb-1.0, pcsclite (optional to support YubiKey on Linux)
|
||||
|
||||
Prepare the Building Environment
|
||||
Toolchain and Build Dependencies
|
||||
================================
|
||||
|
||||
* [Building Environment on Linux](https://github.com/keepassxreboot/keepassxc/wiki/Set-up-Build-Environment-on-Linux)
|
||||
* [Building Environment on Windows](https://github.com/keepassxreboot/keepassxc/wiki/Set-up-Build-Environment-on-Windows)
|
||||
* [Building Environment on MacOS](https://github.com/keepassxreboot/keepassxc/wiki/Set-up-Build-Environment-on-macOS)
|
||||
The following build tools must exist within your PATH:
|
||||
|
||||
* cmake (>= 3.10.0)
|
||||
* make (>= 4.2) or ninja (>= 1.10)
|
||||
* g++ (>= 4.9) or clang++ (>= 6.0)
|
||||
* asciidoctor (>= 2.0)
|
||||
|
||||
* Besides a working C++ toolchain, KeePassXC also has a number of direct build and runtime dependencies. For detailed information about how to install them, please refer to the GitHub wiki:
|
||||
|
||||
* [Set up Build Environment on Linux](https://github.com/keepassxreboot/keepassxc/wiki/Set-up-Build-Environment-on-Linux)
|
||||
* [Set up Build Environment on Windows](https://github.com/keepassxreboot/keepassxc/wiki/Set-up-Build-Environment-on-Windows)
|
||||
* [Set up Build Environment on macOS](https://github.com/keepassxreboot/keepassxc/wiki/Set-up-Build-Environment-on-macOS)
|
||||
|
||||
Build Steps
|
||||
===========
|
||||
We recommend using the release tool to perform builds, please read up-to-date instructions [on our wiki](https://github.com/keepassxreboot/keepassxc/wiki/Building-KeePassXC#building-using-the-release-tool).
|
||||
|
||||
To compile from source, open a **Terminal (on Linux/MacOS)** or a **MSYS2-MinGW shell (on Windows)**<br/>
|
||||
**Note:** on Windows you can also use MSVC to build natively, we recommend Visual Studio 2019
|
||||
To compile from source, open a **Terminal (Linux/MacOS)**, the **MSVC Tools Command Prompt (Windows)**, or **MSYS2-MinGW shell (Windows)**. For code development on Windows, you can use Visual Studio 2022, Visual Studio Code, or CLion.
|
||||
|
||||
First, download the KeePassXC [source tarball](https://keepassxc.org/download#source)
|
||||
or check out the latest version from our [Git repository](https://github.com/keepassxreboot/keepassxc).
|
||||
1. Download the KeePassXC [source tarball](https://keepassxc.org/download#source) or check out the latest version from our [Git repository](https://github.com/keepassxreboot/keepassxc).
|
||||
|
||||
To clone the project from Git, `cd` to a suitable location and run
|
||||
To clone the project from Git, `cd` to a suitable location and run
|
||||
|
||||
```bash
|
||||
git clone https://github.com/keepassxreboot/keepassxc.git
|
||||
```
|
||||
```
|
||||
git clone https://github.com/keepassxreboot/keepassxc.git
|
||||
```
|
||||
|
||||
This will clone the entire contents of the repository and check out the current `develop` branch.
|
||||
This will clone the entire contents of the repository and check out the current `develop` branch.
|
||||
|
||||
To update the project from within the project's folder, you can run the following command:
|
||||
To update the project from within the project's folder, you can run the following command:
|
||||
|
||||
```bash
|
||||
git pull
|
||||
```
|
||||
```
|
||||
git pull
|
||||
```
|
||||
|
||||
For a stable build, it is recommended to checkout the master branch.
|
||||
For a stable build, it is recommended to check out the `latest` tag.
|
||||
|
||||
```bash
|
||||
git checkout master
|
||||
```
|
||||
```
|
||||
git checkout latest
|
||||
```
|
||||
|
||||
NOTE: See the [Windows Build Instructions](https://github.com/keepassxreboot/keepassxc/wiki/Building-KeePassXC#windows) for building with MSVC.
|
||||
2. Navigate to the directory where you have downloaded KeePassXC and run:
|
||||
|
||||
Navigate to the directory where you have downloaded KeePassXC and type these commands:
|
||||
```
|
||||
mkdir build
|
||||
cd build
|
||||
cmake -DWITH_XC_ALL=ON ..
|
||||
make
|
||||
```
|
||||
|
||||
If you have `vcpkg` installed, add `-DCMAKE_TOOLCHAIN_FILE=${VCPKG_ROOT}/scripts/buildsystems/vcpkg.cmake` to the `cmake` command to automatically download and install all required build and runtime dependencies locally to your build directory before compiling KeePassXC. Using `vcpkg` is the preferred way to install dependencies on macOS and required on Windows if using the MSVC toolchain.
|
||||
|
||||
For more detailed build instructions for each platform, please refer to the [GitHub wiki](https://github.com/keepassxreboot/keepassxc/wiki/Building-KeePassXC).
|
||||
|
||||
Note: These steps place the compiled KeePassXC binary inside the `./build/src/` directory (`src/KeePassXC.app/Contents/MacOS` on macOS).
|
||||
|
||||
## MacOS Build Notes
|
||||
|
||||
If you installed Qt@5 via Homebrew and CMake fails to find your Qt installation, you can specify it manually by adding the following parameter:
|
||||
|
||||
`-DCMAKE_PREFIX_PATH=$(brew --prefix qt@5)/lib/cmake`
|
||||
|
||||
When building with ASAN support on macOS, you need to use `export ASAN_OPTIONS=detect_leaks=0` before running the tests (LSAN is no supported on macOS).
|
||||
|
||||
## Windows Build Notes
|
||||
|
||||
If you are using MSYS2, you have to add ```-G "MSYS Makefiles"``` at the beginning of the cmake command.
|
||||
|
||||
CMake Configuration Options
|
||||
==========================
|
||||
|
||||
## Recommended CMake Build Parameters
|
||||
|
||||
```
|
||||
mkdir build
|
||||
cd build
|
||||
cmake -DWITH_XC_ALL=ON ..
|
||||
make
|
||||
-DCMAKE_VERBOSE_MAKEFILE=ON
|
||||
-DCMAKE_BUILD_TYPE=<RelWithDebInfo/Debug/Release>
|
||||
-DWITH_GUI_TESTS=ON
|
||||
```
|
||||
|
||||
NOTE: If you are using MSYS2, you may have to add ```-G "MSYS Makefiles"``` to the beginning of the cmake command.
|
||||
## Additional CMake Parameters
|
||||
|
||||
These steps place the compiled KeePassXC binary inside the `./build/src/` directory.
|
||||
(Note the cmake notes/options below.)
|
||||
KeePassXC comes with a variety of build options that can turn on/off features. Most notably, we allow you to build the application with all TCP/IP networking code disabled. Please note that we still require and link against Qt5's network library in order to use local named pipes on all operating systems. Each of these build options are supplied at the time of calling cmake:
|
||||
|
||||
**Cmake Notes:**
|
||||
```
|
||||
-DWITH_XC_AUTOTYPE=[ON|OFF] Enable/Disable Auto-Type (default: ON)
|
||||
-DWITH_XC_YUBIKEY=[ON|OFF] Enable/Disable YubiKey HMAC-SHA1 authentication support (default: OFF)
|
||||
-DWITH_XC_BROWSER=[ON|OFF] Enable/Disable KeePassXC-Browser extension support (default: OFF)
|
||||
-DWITH_XC_BROWSER_PASSKEYS=[ON|OFF] Enable/Disable Passkeys support for browser integration (default: OFF)
|
||||
-DWITH_XC_NETWORKING=[ON|OFF] Enable/Disable Networking support (e.g., favicon downloading) (default: OFF)
|
||||
-DWITH_XC_SSHAGENT=[ON|OFF] Enable/Disable SSHAgent support (default: OFF)
|
||||
-DWITH_XC_FDOSECRETS=[ON|OFF] (Linux Only) Enable/Disable Freedesktop.org Secrets Service support (default:OFF)
|
||||
-DWITH_XC_KEESHARE=[ON|OFF] Enable/Disable KeeShare group synchronization extension (default: OFF)
|
||||
-DWITH_XC_ALL=[ON|OFF] Enable/Disable compiling all plugins above (default: OFF)
|
||||
|
||||
* Common cmake parameters
|
||||
-DWITH_XC_UPDATECHECK=[ON|OFF] Enable/Disable automatic updating checking (requires WITH_XC_NETWORKING) (default: ON)
|
||||
|
||||
```
|
||||
-DCMAKE_INSTALL_PREFIX=/usr/local
|
||||
-DCMAKE_VERBOSE_MAKEFILE=ON
|
||||
-DCMAKE_BUILD_TYPE=<RelWithDebInfo/Debug/Release>
|
||||
-DWITH_GUI_TESTS=ON
|
||||
```
|
||||
-DWITH_TESTS=[ON|OFF] Enable/Disable building of unit tests (default: ON)
|
||||
-DWITH_GUI_TESTS=[ON|OFF] Enable/Disable building of GUI tests (default: OFF)
|
||||
-DWITH_DEV_BUILD=[ON|OFF] Enable/Disable deprecated method warnings (default: OFF)
|
||||
-DWITH_ASAN=[ON|OFF] Enable/Disable address sanitizer checks (Linux / macOS only) (default: OFF)
|
||||
-DWITH_COVERAGE=[ON|OFF] Enable/Disable coverage tests (GCC only) (default: OFF)
|
||||
-DWITH_APP_BUNDLE=[ON|OFF] Enable Application Bundle for macOS (default: ON)
|
||||
|
||||
* cmake accepts the following options:
|
||||
|
||||
```
|
||||
-DWITH_XC_AUTOTYPE=[ON|OFF] Enable/Disable Auto-Type (default: ON)
|
||||
-DWITH_XC_YUBIKEY=[ON|OFF] Enable/Disable YubiKey HMAC-SHA1 authentication support (default: OFF)
|
||||
-DWITH_XC_BROWSER=[ON|OFF] Enable/Disable KeePassXC-Browser extension support (default: OFF)
|
||||
-DWITH_XC_NETWORKING=[ON|OFF] Enable/Disable Networking support (e.g., favicon downloading) (default: OFF)
|
||||
-DWITH_XC_SSHAGENT=[ON|OFF] Enable/Disable SSHAgent support (default: OFF)
|
||||
-DWITH_XC_FDOSECRETS=[ON|OFF] (Linux Only) Enable/Disable Freedesktop.org Secrets Service support (default:OFF)
|
||||
-DWITH_XC_KEESHARE=[ON|OFF] Enable/Disable KeeShare group synchronization extension (default: OFF)
|
||||
-DWITH_XC_ALL=[ON|OFF] Enable/Disable compiling all plugins above (default: OFF)
|
||||
|
||||
-DWITH_XC_UPDATECHECK=[ON|OFF] Enable/Disable automatic updating checking (requires WITH_XC_NETWORKING) (default: ON)
|
||||
|
||||
-DWITH_TESTS=[ON|OFF] Enable/Disable building of unit tests (default: ON)
|
||||
-DWITH_GUI_TESTS=[ON|OFF] Enable/Disable building of GUI tests (default: OFF)
|
||||
-DWITH_DEV_BUILD=[ON|OFF] Enable/Disable deprecated method warnings (default: OFF)
|
||||
-DWITH_ASAN=[ON|OFF] Enable/Disable address sanitizer checks (Linux / macOS only) (default: OFF)
|
||||
-DWITH_COVERAGE=[ON|OFF] Enable/Disable coverage tests (GCC only) (default: OFF)
|
||||
-DWITH_APP_BUNDLE=[ON|OFF] Enable Application Bundle for macOS (default: ON)
|
||||
|
||||
-DKEEPASSXC_BUILD_TYPE=[Snapshot|PreRelease|Release] Set the build type to show/hide stability warnings (default: "Snapshot")
|
||||
-DKEEPASSXC_DIST_TYPE=[Snap|AppImage|Other] Specify the distribution method (default: "Other")
|
||||
-DOVERRIDE_VERSION=[X.X.X] Specify a version number when building. Used with snapshot builds (default: "")
|
||||
-DGIT_HEAD_OVERRIDE=[XXXXXXX] Specify the 7 digit git commit ref for this build. Used with distribution builds (default: "")
|
||||
```
|
||||
|
||||
* If you are on MacOS you must add this parameter to **Cmake**, with the Qt version you have installed<br/> `-DCMAKE_PREFIX_PATH=/usr/local/Cellar/qt5/5.6.2/lib/cmake/`
|
||||
|
||||
:exclamation: When building with ASan support on macOS, you need to use `export ASAN_OPTIONS=detect_leaks=0` before running the tests (no LSan support in macOS).
|
||||
-DKEEPASSXC_BUILD_TYPE=[Snapshot|PreRelease|Release] Set the build type to show/hide stability warnings (default: "Snapshot")
|
||||
-DKEEPASSXC_DIST_TYPE=[Snap|AppImage|Other] Specify the distribution method (default: "Other")
|
||||
-DOVERRIDE_VERSION=[X.X.X] Specify a version number when building. Used with snapshot builds (default: "")
|
||||
-DGIT_HEAD_OVERRIDE=[XXXXXXX] Specify the 7 digit git commit ref for this build. Used with distribution builds (default: "")
|
||||
```
|
||||
|
||||
Installation
|
||||
============
|
||||
|
||||
After you have successfully built KeePassXC, install the binary by executing the following:
|
||||
|
||||
```bash
|
||||
```
|
||||
sudo make install
|
||||
```
|
||||
|
||||
You can specify the destination dir with
|
||||
```
|
||||
DESTDIR=X
|
||||
```
|
||||
|
||||
|
||||
Packaging
|
||||
=========
|
||||
|
||||
You can create a package to redistribute KeePassXC (zip, deb, rpm, dmg, etc..). Refer to [keepassxc-packaging](https://github.com/keepassxreboot/keepassxc-packaging)
|
||||
You can create a package to redistribute KeePassXC (zip, deb, rpm, dmg, etc..). Refer to [keepassxc-packaging](https://github.com/keepassxreboot/keepassxc-packaging) for packaging scripts.
|
||||
|
||||
To package using CMake, run the following command using whichever [generators](https://cmake.org/cmake/help/latest/manual/cpack-generators.7.html) you would like to package with.
|
||||
|
||||
```
|
||||
cpack -G "ZIP;WIX"
|
||||
```
|
||||
|
||||
Testing
|
||||
=======
|
||||
@@ -151,7 +146,7 @@ You can perform tests on the built executables with:
|
||||
make test ARGS+="--output-on-failure"
|
||||
```
|
||||
|
||||
If you are not currently running on an X Server or Wayland, run the tests as follows:
|
||||
On Linux, if you are not currently running on an X Server or Wayland, run the tests as follows:
|
||||
```
|
||||
make test ARGS+="-E test\(cli\|gui\) --output-on-failure"
|
||||
xvfb-run -e errors -a --server-args="-screen 0 1024x768x24" make test ARGS+="-R test\(cli\|gui\) --output-on-failure"
|
||||
|
||||
14
README.md
@@ -1,4 +1,5 @@
|
||||
# <img src="https://keepassxc.org/images/keepassxc-logo.svg" width="40" height="40"/> KeePassXC
|
||||
# <img src="https://keepassxc.org/assets/img/keepassxc.svg" width="40" height="40"/> KeePassXC
|
||||
[](https://bestpractices.coreinfrastructure.org/projects/6326)
|
||||
[/statusIcon)](https://ci.keepassxc.org/?guest=1)
|
||||
[](https://codecov.io/gh/keepassxreboot/keepassxc)
|
||||
[](https://github.com/keepassxreboot/keepassxc/releases/)
|
||||
@@ -21,12 +22,13 @@ KeePassXC has numerous features for novice and power users alike. Our goal is to
|
||||
* Password generator
|
||||
* Auto-Type passwords into applications
|
||||
* Browser integration with Google Chrome, Mozilla Firefox, Microsoft Edge, Chromium, Vivaldi, Brave, and Tor-Browser
|
||||
* Support for passkeys using the browser integration
|
||||
* Entry icon download
|
||||
* Import databases from CSV, 1Password, and KeePass1 formats
|
||||
* Import databases from CSV, 1Password, Bitwarden, Proton Pass, and KeePass1 formats
|
||||
|
||||
### Advanced
|
||||
* Database reports (password health, HIBP, and statistics)
|
||||
* Database export to CSV and HTML formats
|
||||
* Database export to CSV, XML, and HTML formats
|
||||
* TOTP storage and generation
|
||||
* Field references between entries
|
||||
* File attachments and custom attributes
|
||||
@@ -35,7 +37,7 @@ KeePassXC has numerous features for novice and power users alike. Our goal is to
|
||||
* Command line interface (keepassxc-cli)
|
||||
* Auto-Open databases
|
||||
* KeeShare shared databases (import, export, and synchronize)
|
||||
* SSH Agent
|
||||
* SSH Agent integration
|
||||
* FreeDesktop.org Secret Service (replace Gnome keyring, etc.)
|
||||
* Additional encryption choices: Twofish and ChaCha20
|
||||
|
||||
@@ -54,6 +56,10 @@ You may directly contribute your own code by submitting a pull request. Please r
|
||||
|
||||
Contributors are required to adhere to the project's [Code of Conduct](CODE-OF-CONDUCT.md).
|
||||
|
||||
## Generative AI
|
||||
|
||||
Generative AI is fast becoming a first-party feature in most development environments, including GitHub itself. If the majority of a code submission is made using Generative AI (e.g., agent-based or vibe coding) then **we will document that in the pull request.** All code submissions go through a rigorous review process regardless of the development workflow or submitter.
|
||||
|
||||
## License
|
||||
|
||||
KeePassXC code is licensed under GPL-2 or GPL-3. Additional licensing for third-party files is detailed in [COPYING](./COPYING).
|
||||
|
||||
46
SECURITY.md
Normal file
@@ -0,0 +1,46 @@
|
||||
### Reporting Security Issues
|
||||
|
||||
The KeePassXC team takes security vulnerabilities very seriously and appreciates your responsible disclosure efforts. We will make every effort to acknowledge your contributions and handle them promptly.
|
||||
|
||||
To report a security issue, please use one of the following methods:
|
||||
|
||||
- **GitHub Security Advisory:** Use the ["Report a Vulnerability"](https://github.com/keepassxreboot/keepassxc/security/advisories/new) tab on our GitHub repository.
|
||||
- **Private Matrix Message:** Contact any of the following KeePassXC team members privately (also encrypted):
|
||||
- [@droidmonkey_kpxc](https://matrix.to/#/@droidmonkey_kpxc:matrix.org)
|
||||
- [@varjolintu](https://matrix.to/#/@varjolintu:matrix.org)
|
||||
- [@phoerious](https://matrix.to/#/@phoerious:matrix.org)
|
||||
- **Send an Email:** Send your report to team@keepassxc.org. We recommend encrypting the email if possible.
|
||||
|
||||
Please **DO NOT** use public channels (e.g., GitHub issues, Matrix chat channels) for initial reporting of bona fide security vulnerabilities.
|
||||
|
||||
Once you report a security issue, our team will respond with the next steps. After our initial reply, we will keep you informed of the progress towards a fix and full announcement. We may ask for additional information or guidance during this process. If we disagree that your report constitutes a genuine security vulnerability, we will inform you and close the report. Your report may be turned into an issue for further tracking.
|
||||
|
||||
If you discover vulnerabilities in third-party modules used by KeePassXC, please report them to the maintainers of the respective modules. If the vulnerability impacts KeePassXC directly, we encourage you to notify us using the above methods. We will validate if the vulnerability is exploitable from KeePassXC code; please note that not all vulnerabilities are actually exploitable and do not constitute an immediate concern for the KeePassXC application.
|
||||
|
||||
### Example Security Vulnerabilities
|
||||
|
||||
When reporting, please ensure the issue falls under what can be considered a genuine security vulnerability for KeePassXC. Some examples include:
|
||||
|
||||
- Unauthorized access to sensitive user data (e.g., passwords).
|
||||
- Remote code execution or escalation of privileges.
|
||||
- Bypassing authentication or encryption mechanisms.
|
||||
- Broken or improperly implemented encryption methods.
|
||||
|
||||
### Counter Examples
|
||||
|
||||
The following issues are **not** considered security vulnerabilities:
|
||||
|
||||
- Bugs caused by locally modifying the application (e.g., injecting DLLs, altering code).
|
||||
- Crashes or misbehavior resulting from normal use (report this as a normal issue).
|
||||
- Vulnerabilities found in third-party modules (should be reported to the module’s maintainers).
|
||||
|
||||
### CVE Reporting Policy
|
||||
|
||||
Please **DO NOT** submit a report to a Common Vulnerabilities and Exposures (CVE) Numbering Authority (CNA) before confirming the security vulnerability with the KeePassXC team. If we do not respond to your report within 30 days, this restriction no longer applies.
|
||||
|
||||
|
||||
### Other Communication
|
||||
|
||||
For other inquiries (e.g., developer questions, user questions), please use the public channels on Matrix:
|
||||
- **User's Channel:** [#keepassxc:mozilla.org](https://matrix.to/#/#keepassxc:mozilla.org)
|
||||
- **Developer's Channel:** [#keepassxc-dev:mozilla.org](https://matrix.to/#/#keepassxc-dev:mozilla.org)
|
||||
@@ -16,9 +16,8 @@
|
||||
set(EXCLUDED_DIRS
|
||||
# third-party directories
|
||||
src/thirdparty
|
||||
src/zxcvbn
|
||||
# objective-c directories
|
||||
src/touchid
|
||||
src/quickunlock/touchid
|
||||
src/autotype/mac
|
||||
src/gui/osutils/macutils)
|
||||
|
||||
|
||||
65
cmake/FindBotan.cmake
Normal file
@@ -0,0 +1,65 @@
|
||||
# - Find botan
|
||||
# Find the botan cryptographic library
|
||||
#
|
||||
# This module defines the following variables:
|
||||
# BOTAN_FOUND - True if library and include directory are found
|
||||
# If set to TRUE, the following are also defined:
|
||||
# BOTAN_INCLUDE_DIRS - The directory where to find the header file
|
||||
# BOTAN_LIBRARIES - Where to find the library files
|
||||
#
|
||||
# This file is in the public domain (https://github.com/vistle/vistle/blob/master/cmake/Modules/FindBOTAN.cmake)
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
|
||||
set(BOTAN_VERSIONS botan-3 botan-2)
|
||||
set(BOTAN_NAMES botan-3 botan-2 botan)
|
||||
set(BOTAN_NAMES_DEBUG botand-3 botand-2 botand botan botan-3)
|
||||
|
||||
find_path(
|
||||
BOTAN_INCLUDE_DIR
|
||||
NAMES botan/build.h
|
||||
PATH_SUFFIXES ${BOTAN_VERSIONS}
|
||||
DOC "The Botan include directory")
|
||||
if(BOTAN_INCLUDE_DIR)
|
||||
file(READ "${BOTAN_INCLUDE_DIR}/botan/build.h" build)
|
||||
string(REGEX MATCH "BOTAN_VERSION_MAJOR ([0-9]*)" _ ${build})
|
||||
set(BOTAN_VERSION_MAJOR ${CMAKE_MATCH_1})
|
||||
string(REGEX MATCH "BOTAN_VERSION_MINOR ([0-9]*)" _ ${build})
|
||||
set(BOTAN_VERSION_MINOR ${CMAKE_MATCH_1})
|
||||
string(REGEX MATCH "BOTAN_VERSION_PATCH ([0-9]*)" _ ${build})
|
||||
set(BOTAN_VERSION_PATCH ${CMAKE_MATCH_1})
|
||||
set(BOTAN_VERSION "${BOTAN_VERSION_MAJOR}.${BOTAN_VERSION_MINOR}.${BOTAN_VERSION_PATCH}")
|
||||
endif()
|
||||
|
||||
find_library(
|
||||
BOTAN_LIBRARY
|
||||
NAMES ${BOTAN_NAMES}
|
||||
PATH_SUFFIXES release/lib lib
|
||||
DOC "The Botan (release) library")
|
||||
if(WIN32 AND NOT MINGW)
|
||||
find_library(
|
||||
BOTAN_LIBRARY_DEBUG
|
||||
NAMES ${BOTAN_NAMES_DEBUG}
|
||||
PATH_SUFFIXES debug/lib lib
|
||||
DOC "The Botan debug library")
|
||||
find_package_handle_standard_args(
|
||||
Botan
|
||||
REQUIRED_VARS BOTAN_LIBRARY BOTAN_LIBRARY_DEBUG BOTAN_INCLUDE_DIR
|
||||
VERSION_VAR BOTAN_VERSION)
|
||||
else()
|
||||
find_package_handle_standard_args(
|
||||
Botan
|
||||
REQUIRED_VARS BOTAN_LIBRARY BOTAN_INCLUDE_DIR
|
||||
VERSION_VAR BOTAN_VERSION)
|
||||
endif()
|
||||
|
||||
if(BOTAN_FOUND)
|
||||
set(BOTAN_INCLUDE_DIRS ${BOTAN_INCLUDE_DIR})
|
||||
if(WIN32 AND NOT MINGW)
|
||||
set(BOTAN_LIBRARIES optimized ${BOTAN_LIBRARY} debug ${BOTAN_LIBRARY_DEBUG})
|
||||
else()
|
||||
set(BOTAN_LIBRARIES ${BOTAN_LIBRARY})
|
||||
endif()
|
||||
endif()
|
||||
|
||||
mark_as_advanced(BOTAN_INCLUDE_DIR BOTAN_LIBRARY BOTAN_LIBRARY_DEBUG)
|
||||
@@ -1,106 +0,0 @@
|
||||
# Copyright (c) 2018 Ribose Inc.
|
||||
# All rights reserved.
|
||||
#
|
||||
# Redistribution and use in source and binary forms, with or without
|
||||
# modification, are permitted provided that the following conditions
|
||||
# are met:
|
||||
# 1. Redistributions of source code must retain the above copyright
|
||||
# notice, this list of conditions and the following disclaimer.
|
||||
# 2. Redistributions in binary form must reproduce the above copyright
|
||||
# notice, this list of conditions and the following disclaimer in the
|
||||
# documentation and/or other materials provided with the distribution.
|
||||
#
|
||||
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
# ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
|
||||
# TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
||||
# PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS OR CONTRIBUTORS
|
||||
# BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
|
||||
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
|
||||
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
|
||||
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
|
||||
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
# POSSIBILITY OF SUCH DAMAGE.
|
||||
|
||||
#.rst:
|
||||
# FindBotan2
|
||||
# -----------
|
||||
#
|
||||
# Find the botan-2 library.
|
||||
#
|
||||
# IMPORTED Targets
|
||||
# ^^^^^^^^^^^^^^^^
|
||||
#
|
||||
# This module defines :prop_tgt:`IMPORTED` targets:
|
||||
#
|
||||
# ``Botan2::Botan2``
|
||||
# The botan-2 library, if found.
|
||||
#
|
||||
# Result variables
|
||||
# ^^^^^^^^^^^^^^^^
|
||||
#
|
||||
# This module defines the following variables:
|
||||
#
|
||||
# ::
|
||||
#
|
||||
# BOTAN2_FOUND - true if the headers and library were found
|
||||
# BOTAN2_INCLUDE_DIRS - where to find headers
|
||||
# BOTAN2_LIBRARIES - list of libraries to link
|
||||
# BOTAN2_VERSION - library version that was found, if any
|
||||
|
||||
# find the headers
|
||||
find_path(BOTAN2_INCLUDE_DIR
|
||||
NAMES botan/version.h
|
||||
PATH_SUFFIXES botan-2
|
||||
)
|
||||
|
||||
# find the library
|
||||
find_library(BOTAN2_LIBRARY NAMES botan-2 libbotan-2 botan)
|
||||
|
||||
# determine the version
|
||||
if(BOTAN2_INCLUDE_DIR AND EXISTS "${BOTAN2_INCLUDE_DIR}/botan/build.h")
|
||||
file(STRINGS "${BOTAN2_INCLUDE_DIR}/botan/build.h" botan2_version_str
|
||||
REGEX "^#define[\t ]+(BOTAN_VERSION_[A-Z]+)[\t ]+[0-9]+")
|
||||
|
||||
string(REGEX REPLACE ".*#define[\t ]+BOTAN_VERSION_MAJOR[\t ]+([0-9]+).*"
|
||||
"\\1" _botan2_version_major "${botan2_version_str}")
|
||||
string(REGEX REPLACE ".*#define[\t ]+BOTAN_VERSION_MINOR[\t ]+([0-9]+).*"
|
||||
"\\1" _botan2_version_minor "${botan2_version_str}")
|
||||
string(REGEX REPLACE ".*#define[\t ]+BOTAN_VERSION_PATCH[\t ]+([0-9]+).*"
|
||||
"\\1" _botan2_version_patch "${botan2_version_str}")
|
||||
set(BOTAN2_VERSION "${_botan2_version_major}.${_botan2_version_minor}.${_botan2_version_patch}"
|
||||
CACHE INTERNAL "The version of Botan which was detected")
|
||||
endif()
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
find_package_handle_standard_args(Botan2
|
||||
REQUIRED_VARS BOTAN2_LIBRARY BOTAN2_INCLUDE_DIR
|
||||
VERSION_VAR BOTAN2_VERSION
|
||||
)
|
||||
|
||||
if(BOTAN2_FOUND)
|
||||
set(BOTAN2_INCLUDE_DIRS ${BOTAN2_INCLUDE_DIR} ${PC_BOTAN2_INCLUDE_DIRS})
|
||||
set(BOTAN2_LIBRARIES ${BOTAN2_LIBRARY})
|
||||
endif()
|
||||
|
||||
if(BOTAN2_FOUND AND NOT TARGET Botan2::Botan2)
|
||||
# create the new library target
|
||||
add_library(Botan2::Botan2 UNKNOWN IMPORTED)
|
||||
# set the required include dirs for the target
|
||||
if(BOTAN2_INCLUDE_DIRS)
|
||||
set_target_properties(Botan2::Botan2
|
||||
PROPERTIES
|
||||
INTERFACE_INCLUDE_DIRECTORIES "${BOTAN2_INCLUDE_DIRS}"
|
||||
)
|
||||
endif()
|
||||
# set the required libraries for the target
|
||||
if(EXISTS "${BOTAN2_LIBRARY}")
|
||||
set_target_properties(Botan2::Botan2
|
||||
PROPERTIES
|
||||
IMPORTED_LINK_INTERFACE_LANGUAGES "C"
|
||||
IMPORTED_LOCATION "${BOTAN2_LIBRARY}"
|
||||
)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
mark_as_advanced(BOTAN2_INCLUDE_DIR BOTAN2_LIBRARY)
|
||||
@@ -21,16 +21,38 @@ endif()
|
||||
|
||||
if(NOT PCSC_FOUND)
|
||||
# Search for PC/SC headers on Mac and Windows
|
||||
|
||||
# Additional search paths for Windows if not running in Visual Studio environment
|
||||
if (WIN32)
|
||||
# Resolve the ambiguity of using two names for one architecture
|
||||
if(CMAKE_SYSTEM_PROCESSOR STREQUAL "AMD64" OR CMAKE_SYSTEM_PROCESSOR STREQUAL "x64")
|
||||
set(ARCH_DIR "x64")
|
||||
else()
|
||||
set(ARCH_DIR "${CMAKE_SYSTEM_PROCESSOR}")
|
||||
endif()
|
||||
|
||||
# Locate Windows SDK Paths
|
||||
if (CMAKE_WINDOWS_KITS_10_DIR)
|
||||
set(WINSDKROOTC_INCLUDE "${CMAKE_WINDOWS_KITS_10_DIR}/Include/${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}/um")
|
||||
set(WINSDKROOTC_LIB "${CMAKE_WINDOWS_KITS_10_DIR}/LIB/${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}/um/${ARCH_DIR}")
|
||||
else()
|
||||
set(WINSDKROOTC_INCLUDE "$ENV{ProgramFiles\(x86\)}/Windows Kits/10/Include/${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}/um")
|
||||
set(WINSDKROOTC_LIB "$ENV{ProgramFiles\(x86\)}/Windows Kits/10/LIB/${CMAKE_VS_WINDOWS_TARGET_PLATFORM_VERSION}/um/${ARCH_DIR}")
|
||||
endif()
|
||||
endif()
|
||||
|
||||
find_path(PCSC_INCLUDE_DIRS winscard.h
|
||||
HINTS
|
||||
${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES}
|
||||
/usr/include/PCSC
|
||||
${CMAKE_C_IMPLICIT_INCLUDE_DIRECTORIES}
|
||||
/usr/include/PCSC
|
||||
${WINSDKROOTC_INCLUDE}
|
||||
PATH_SUFFIXES PCSC)
|
||||
|
||||
# MAC library is PCSC, Windows library is WinSCard
|
||||
find_library(PCSC_LIBRARIES NAMES pcsclite libpcsclite WinSCard PCSC
|
||||
HINTS
|
||||
${CMAKE_C_IMPLICIT_LINK_DIRECTORIES})
|
||||
${CMAKE_C_IMPLICIT_LINK_DIRECTORIES}
|
||||
${WINSDKROOTC_LIB})
|
||||
endif()
|
||||
|
||||
include(FindPackageHandleStandardArgs)
|
||||
|
||||
@@ -15,12 +15,12 @@
|
||||
|
||||
find_path(QRENCODE_INCLUDE_DIR NAMES qrencode.h)
|
||||
|
||||
if (VCPKG_INSTALLED_DIR)
|
||||
find_library(QRENCODE_LIBRARY_RELEASE qrencode)
|
||||
find_library(QRENCODE_LIBRARY_DEBUG qrencoded)
|
||||
set(QRENCODE_LIBRARY optimized ${QRENCODE_LIBRARY_RELEASE} debug ${QRENCODE_LIBRARY_DEBUG})
|
||||
if(WIN32 AND NOT MINGW)
|
||||
find_library(QRENCODE_LIBRARY_RELEASE qrencode)
|
||||
find_library(QRENCODE_LIBRARY_DEBUG qrencoded)
|
||||
set(QRENCODE_LIBRARY optimized ${QRENCODE_LIBRARY_RELEASE} debug ${QRENCODE_LIBRARY_DEBUG})
|
||||
else()
|
||||
find_library(QRENCODE_LIBRARY qrencode)
|
||||
find_library(QRENCODE_LIBRARY qrencode)
|
||||
endif()
|
||||
|
||||
mark_as_advanced(QRENCODE_LIBRARY QRENCODE_INCLUDE_DIR)
|
||||
|
||||
61
cmake/KPXCMacDeployHelpers.cmake
Normal file
@@ -0,0 +1,61 @@
|
||||
# Running macdeployqt on a POST_BUILD copied binaries is pointless when using CPack because
|
||||
# the copied binaries will be overridden by the corresponding install(TARGETS) commands.
|
||||
# That's why we run macdeployqt using install(CODE) on the already installed binaries.
|
||||
# The precondition is that all install(TARGETS) calls have to be called before this function is
|
||||
# called.
|
||||
# macdeloyqt is called only once, but it is given all executables that should be processed.
|
||||
function(kpxc_run_macdeployqt_at_install_time)
|
||||
set(NO_VALUE_OPTIONS)
|
||||
set(SINGLE_VALUE_OPTIONS
|
||||
APP_NAME
|
||||
)
|
||||
set(MULTI_VALUE_OPTIONS
|
||||
EXTRA_BINARIES
|
||||
)
|
||||
cmake_parse_arguments(PARSE_ARGV 0 ARG
|
||||
"${NO_VALUE_OPTIONS}" "${SINGLE_VALUE_OPTIONS}" "${MULTI_VALUE_OPTIONS}"
|
||||
)
|
||||
|
||||
set(ESCAPED_PREFIX "\${CMAKE_INSTALL_PREFIX}")
|
||||
set(APP_BUNDLE_NAME "${ARG_APP_NAME}.app")
|
||||
set(APP_BUNDLE_PATH "${ESCAPED_PREFIX}/${APP_BUNDLE_NAME}")
|
||||
|
||||
# Collect extra binaries and plugins that should be handled by macdpeloyqt.
|
||||
set(EXTRA_BINARIES "")
|
||||
foreach(EXTRA_BINARY ${ARG_EXTRA_BINARIES})
|
||||
set(INSTALLED_BINARY_PATH "${ESCAPED_PREFIX}/${EXTRA_BINARY}")
|
||||
list(APPEND EXTRA_BINARIES "-executable=${INSTALLED_BINARY_PATH}")
|
||||
endforeach()
|
||||
|
||||
list(JOIN EXTRA_BINARIES " " EXTRA_BINARIES_STR)
|
||||
|
||||
if(CMAKE_VERSION VERSION_GREATER "3.14")
|
||||
set(COMMAND_ECHO "COMMAND_ECHO STDOUT")
|
||||
else()
|
||||
set(COMMAND_ECHO "")
|
||||
endif()
|
||||
|
||||
set(COMMAND_ARGS
|
||||
${MACDEPLOYQT_EXE}
|
||||
${APP_BUNDLE_PATH}
|
||||
|
||||
# Adjusts dependency rpaths of extra binaries
|
||||
${EXTRA_BINARIES_STR}
|
||||
|
||||
# Silences warnings on subsequent re-installations
|
||||
-always-overwrite
|
||||
)
|
||||
|
||||
install(CODE
|
||||
"
|
||||
execute_process(
|
||||
COMMAND ${COMMAND_ARGS}
|
||||
${COMMAND_ECHO}
|
||||
RESULT_VARIABLE EXIT_CODE
|
||||
)
|
||||
if(NOT EXIT_CODE EQUAL 0)
|
||||
message(FATAL_ERROR
|
||||
\"Running ${COMMAND_ARGS} failed with exit code \${EXIT_CODE}.\")
|
||||
endif()
|
||||
")
|
||||
endfunction()
|
||||
101
cmake/MacOSCodesign.cmake.in
Normal file
@@ -0,0 +1,101 @@
|
||||
# Copyright (C) 2025 KeePassXC Team <team@keepassxc.org>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 2 or (at your option)
|
||||
# version 3 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
|
||||
# CPACK_PACKAGE_FILES is set only during POST_BUILD
|
||||
if(NOT CPACK_PACKAGE_FILES) # PRE_BUILD: Sign binaries
|
||||
|
||||
set(PROGNAME "@PROGNAME@")
|
||||
set(CODESIGN_IDENTITY "@WITH_XC_CODESIGN_IDENTITY@")
|
||||
set(ENTITLEMENTS @MACOSX_BUNDLE_APPLE_ENTITLEMENTS@)
|
||||
set(APP_DIR "${CPACK_TEMPORARY_INSTALL_DIRECTORY}/ALL_IN_ONE/${PROGNAME}.app")
|
||||
|
||||
if(NOT CODESIGN_IDENTITY)
|
||||
message(FATAL_ERROR "No codesign identity specified.")
|
||||
endif()
|
||||
|
||||
message(STATUS "Codesign identity used: ${CODESIGN_IDENTITY}")
|
||||
message(STATUS "Signing ${PROGNAME}.app, this may take while...")
|
||||
|
||||
# Sign all binaries
|
||||
execute_process(
|
||||
COMMAND xcrun codesign --sign=${CODESIGN_IDENTITY} --force --options=runtime --deep "${APP_DIR}"
|
||||
RESULT_VARIABLE SIGN_RESULT
|
||||
OUTPUT_VARIABLE SIGN_OUTPUT
|
||||
ERROR_VARIABLE SIGN_ERROR
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
ERROR_STRIP_TRAILING_WHITESPACE
|
||||
ECHO_OUTPUT_VARIABLE
|
||||
)
|
||||
if (NOT SIGN_RESULT EQUAL 0)
|
||||
message(FATAL_ERROR "Signing binaries failed: ${SIGN_ERROR}")
|
||||
endif()
|
||||
|
||||
# (Re-)Sign main executable with --entitlements
|
||||
execute_process(
|
||||
COMMAND xcrun codesign --sign=${CODESIGN_IDENTITY} --force --options=runtime --entitlements=${ENTITLEMENTS} "${APP_DIR}/Contents/MacOS/${PROGNAME}"
|
||||
RESULT_VARIABLE SIGN_RESULT
|
||||
OUTPUT_VARIABLE SIGN_OUTPUT
|
||||
ERROR_VARIABLE SIGN_ERROR
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
ERROR_STRIP_TRAILING_WHITESPACE
|
||||
ECHO_OUTPUT_VARIABLE
|
||||
)
|
||||
if (NOT SIGN_RESULT EQUAL 0)
|
||||
message(FATAL_ERROR "Signing main binary failed: ${SIGN_ERROR}")
|
||||
endif()
|
||||
|
||||
message(STATUS "${PROGNAME}.app signed successfully.")
|
||||
|
||||
else() # POST_BUILD: Notarize DMG
|
||||
set(KEYCHAIN_PROFILE "@WITH_XC_NOTARY_KEYCHAIN_PROFILE@")
|
||||
if(NOT KEYCHAIN_PROFILE)
|
||||
message(FATAL_ERROR "No notarization credentials keychain profile specified.")
|
||||
endif()
|
||||
|
||||
foreach(DMG_FILE ${CPACK_PACKAGE_FILES})
|
||||
# Submit for notarization
|
||||
message(STATUS "Submitting DMG bundle for notarization, this may take while...")
|
||||
execute_process(
|
||||
COMMAND xcrun notarytool submit --keychain-profile=${KEYCHAIN_PROFILE} --wait "${DMG_FILE}"
|
||||
RESULT_VARIABLE NOTARIZE_RESULT
|
||||
OUTPUT_VARIABLE NOTARIZE_OUTPUT
|
||||
ERROR_VARIABLE NOTARIZE_ERROR
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
ERROR_STRIP_TRAILING_WHITESPACE
|
||||
ECHO_OUTPUT_VARIABLE
|
||||
)
|
||||
if (NOT NOTARIZE_RESULT EQUAL 0)
|
||||
message(FATAL_ERROR "Notarization failed: ${NOTARIZE_ERROR}")
|
||||
endif()
|
||||
message(STATUS "DMG bundle notarized successfully.")
|
||||
|
||||
# Staple tickets
|
||||
message(STATUS "Stapling notarization ticket...")
|
||||
execute_process(
|
||||
COMMAND xcrun stapler staple "${DMG_FILE}" && xcrun stapler validate "${DMG_FILE}"
|
||||
RESULT_VARIABLE STAPLE_RESULT
|
||||
OUTPUT_VARIABLE STAPLE_OUTPUT
|
||||
ERROR_VARIABLE STAPLE_ERROR
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
ERROR_STRIP_TRAILING_WHITESPACE
|
||||
ECHO_OUTPUT_VARIABLE
|
||||
)
|
||||
if (NOT STAPLE_RESULT EQUAL 0)
|
||||
message(FATAL_ERROR "Stapling failed: ${STAPLE_ERROR}")
|
||||
endif()
|
||||
message(STATUS "DMG bundle notarization ticket stapled successfully.")
|
||||
endforeach()
|
||||
endif()
|
||||
@@ -1,3 +0,0 @@
|
||||
if (CMAKE_INSTALL_PREFIX MATCHES "/ZIP/")
|
||||
file(TOUCH "${CMAKE_INSTALL_PREFIX}/.portable")
|
||||
endif()
|
||||
79
cmake/WindowsCodesign.cmake.in
Normal file
@@ -0,0 +1,79 @@
|
||||
# Copyright (C) 2025 KeePassXC Team <team@keepassxc.org>
|
||||
#
|
||||
# This program is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU General Public License as published by
|
||||
# the Free Software Foundation, either version 2 or (at your option)
|
||||
# version 3 of the License.
|
||||
#
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU General Public License
|
||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
set(INSTALL_DIR ${CPACK_TEMPORARY_INSTALL_DIRECTORY})
|
||||
set(CODESIGN_IDENTITY @WITH_XC_CODESIGN_IDENTITY@)
|
||||
set(TIMESTAMP_URL @WITH_XC_CODESIGN_TIMESTAMP_URL@)
|
||||
|
||||
if(CPACK_PACKAGE_FILES)
|
||||
# This variable is set only during POST_BUILD, reset SIGN_FILES first
|
||||
set(SIGN_FILES "")
|
||||
foreach(PACKAGE_FILE ${CPACK_PACKAGE_FILES})
|
||||
# Check each package file to see if it can be signed
|
||||
if(PACKAGE_FILE MATCHES "\\.msix?$" OR PACKAGE_FILE MATCHES "\\.exe$")
|
||||
message(STATUS "Adding ${PACKAGE_FILE} for signature")
|
||||
list(APPEND SIGN_FILES "${PACKAGE_FILE}")
|
||||
endif()
|
||||
endforeach()
|
||||
else()
|
||||
# Setup portable zip file if building one
|
||||
if(INSTALL_DIR MATCHES "/ZIP/")
|
||||
file(TOUCH "${INSTALL_DIR}/.portable")
|
||||
message(STATUS "Injected portable marker into ZIP file.")
|
||||
endif()
|
||||
|
||||
# Find all dll and exe files in the install directory
|
||||
file(GLOB_RECURSE SIGN_FILES
|
||||
RELATIVE "${INSTALL_DIR}"
|
||||
"${INSTALL_DIR}/*.dll"
|
||||
"${INSTALL_DIR}/*.exe"
|
||||
)
|
||||
endif()
|
||||
|
||||
# Sign relevant binaries if requested
|
||||
if(CODESIGN_IDENTITY AND SIGN_FILES)
|
||||
# Find signtool in PATH or error out
|
||||
find_program(SIGNTOOL signtool.exe QUIET)
|
||||
if(NOT SIGNTOOL)
|
||||
message(FATAL_ERROR "signtool.exe not found in PATH, correct or unset WITH_XC_CODESIGN_IDENTITY")
|
||||
endif()
|
||||
|
||||
# Check that a certificate thumbprint was provided or error out
|
||||
if(CODESIGN_IDENTITY STREQUAL "auto")
|
||||
message(STATUS "Signing using best available certificate.")
|
||||
set(CERT_OPTS /a)
|
||||
else ()
|
||||
message(STATUS "Signing using certificate with fingerprint ${CODESIGN_IDENTITY}.")
|
||||
set(CERT_OPTS /sha1 ${CODESIGN_IDENTITY})
|
||||
endif()
|
||||
|
||||
message(STATUS "Signing binary files, this may take a while...")
|
||||
# Use cmd /c to enable pop-up for pin entry if needed
|
||||
execute_process(
|
||||
COMMAND cmd /c ${SIGNTOOL} sign /fd SHA256 ${CERT_OPTS} /tr ${TIMESTAMP_URL} /td SHA256 /d ${CPACK_PACKAGE_FILE_NAME} ${SIGN_FILES}
|
||||
WORKING_DIRECTORY "${INSTALL_DIR}"
|
||||
RESULT_VARIABLE SIGN_RESULT
|
||||
OUTPUT_VARIABLE SIGN_OUTPUT
|
||||
ERROR_VARIABLE SIGN_ERROR
|
||||
OUTPUT_STRIP_TRAILING_WHITESPACE
|
||||
ERROR_STRIP_TRAILING_WHITESPACE
|
||||
ECHO_OUTPUT_VARIABLE
|
||||
)
|
||||
if(NOT SIGN_RESULT EQUAL 0)
|
||||
message(FATAL_ERROR "Signing binary files failed: ${SIGN_ERROR}")
|
||||
endif()
|
||||
|
||||
message(STATUS "Binary files signed successfully.")
|
||||
endif()
|
||||
5
cmake/compiler-checks/macos/control_biometry_support.mm
Normal file
@@ -0,0 +1,5 @@
|
||||
#include <Security/Security.h>
|
||||
|
||||
int main() {
|
||||
return static_cast<int>(kSecAccessControlBiometryCurrentSet);
|
||||
}
|
||||
5
cmake/compiler-checks/macos/control_touch_id_support.mm
Normal file
@@ -0,0 +1,5 @@
|
||||
#include <Security/Security.h>
|
||||
|
||||
int main() {
|
||||
return static_cast<int>(kSecAccessControlTouchIDCurrentSet);
|
||||
}
|
||||
5
cmake/compiler-checks/macos/control_watch_support.mm
Normal file
@@ -0,0 +1,5 @@
|
||||
#include <Security/Security.h>
|
||||
|
||||
int main() {
|
||||
return static_cast<int>(kSecAccessControlWatch);
|
||||
}
|
||||
19
codecov.yaml
@@ -1,8 +1,27 @@
|
||||
codecov:
|
||||
require_ci_to_pass: false
|
||||
coverage:
|
||||
range: 60..80
|
||||
round: nearest
|
||||
precision: 2
|
||||
status:
|
||||
project:
|
||||
default:
|
||||
target: auto
|
||||
threshold: 0.5%
|
||||
paths:
|
||||
- "src"
|
||||
patch:
|
||||
default:
|
||||
target: 50%
|
||||
threshold: 0%
|
||||
informational: true
|
||||
paths:
|
||||
- "src"
|
||||
fixes:
|
||||
- "*/src/::"
|
||||
ignore:
|
||||
- "src/gui/styles/**"
|
||||
- "src/thirdparty/**"
|
||||
comment:
|
||||
require_changes: true
|
||||
|
||||
@@ -7,6 +7,7 @@ KeePassXC Team <team@keepassxc.org>
|
||||
:imagesdir: images
|
||||
:stylesheet: styles/dark.css
|
||||
:toc: left
|
||||
:experimental:
|
||||
ifdef::backend-pdf[]
|
||||
:title-page:
|
||||
:title-logo-image: {imagesdir}/kpxc_logo.png
|
||||
@@ -26,8 +27,8 @@ include::topics/DownloadInstall.adoc[tags=*;!advanced]
|
||||
|
||||
include::topics/UserInterface.adoc[tags=*;!advanced]
|
||||
|
||||
include::topics/PasswordGenerator.adoc[tags=*;!advanced]
|
||||
|
||||
include::topics/DatabaseOperations.adoc[tags=*;!advanced]
|
||||
|
||||
include::topics/BrowserPlugin.adoc[tags=*;!advanced]
|
||||
include::topics/PasswordGenerator.adoc[tags=*;!advanced]
|
||||
|
||||
include::topics/BrowserIntegration.adoc[tags=*;!advanced]
|
||||
|
||||
@@ -6,6 +6,8 @@ KeePassXC Team <team@keepassxc.org>
|
||||
:imagesdir: images
|
||||
:stylesheet: styles/dark.css
|
||||
:toc: left
|
||||
:sectanchors:
|
||||
:experimental:
|
||||
ifdef::backend-pdf[]
|
||||
:title-page:
|
||||
:title-logo-image: {imagesdir}/kpxc_logo.png
|
||||
@@ -23,15 +25,19 @@ include::topics/UserInterface.adoc[tags=*]
|
||||
|
||||
include::topics/DatabaseOperations.adoc[tags=*]
|
||||
|
||||
include::topics/ImportExport.adoc[tags=*]
|
||||
|
||||
include::topics/PasswordGenerator.adoc[tags=*]
|
||||
|
||||
include::topics/BrowserPlugin.adoc[tags=*]
|
||||
include::topics/ImportExport.adoc[tags=*]
|
||||
|
||||
include::topics/KeeShare.adoc[tags=*]
|
||||
|
||||
include::topics/BrowserIntegration.adoc[tags=*]
|
||||
|
||||
include::topics/Passkeys.adoc[tags=*]
|
||||
|
||||
include::topics/AutoType.adoc[tags=*]
|
||||
|
||||
include::topics/KeeShare.adoc[tags=*]
|
||||
include::topics/SecretService.adoc[tags=*]
|
||||
|
||||
include::topics/SSHAgent.adoc[tags=*]
|
||||
|
||||
|
||||
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 31 KiB |
|
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 82 KiB After Width: | Height: | Size: 78 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 36 KiB After Width: | Height: | Size: 54 KiB |
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 36 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 10 KiB |
BIN
docs/images/browser_custom_browser_configuration.png
Normal file
|
After Width: | Height: | Size: 48 KiB |
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 47 KiB |
|
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 9.4 KiB After Width: | Height: | Size: 8.8 KiB |
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 10 KiB |
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 23 KiB After Width: | Height: | Size: 21 KiB |
BIN
docs/images/browser_group_settings.png
Normal file
|
After Width: | Height: | Size: 47 KiB |
BIN
docs/images/browser_integration_additional_attribute.png
Normal file
|
After Width: | Height: | Size: 49 KiB |
BIN
docs/images/browser_integration_clear_sites.png
Normal file
|
After Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 59 KiB |
BIN
docs/images/browser_statistics.png
Normal file
|
After Width: | Height: | Size: 77 KiB |
|
Before Width: | Height: | Size: 92 KiB After Width: | Height: | Size: 88 KiB |
|
Before Width: | Height: | Size: 6.5 KiB After Width: | Height: | Size: 6.1 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 29 KiB |
|
Before Width: | Height: | Size: 108 KiB After Width: | Height: | Size: 64 KiB |
|
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 100 KiB |
BIN
docs/images/database_maintenance.png
Normal file
|
After Width: | Height: | Size: 89 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 24 KiB |
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 35 KiB |
|
Before Width: | Height: | Size: 30 KiB After Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 52 KiB |
|
Before Width: | Height: | Size: 33 KiB After Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 55 KiB After Width: | Height: | Size: 84 KiB |
|
Before Width: | Height: | Size: 60 KiB After Width: | Height: | Size: 42 KiB |
|
Before Width: | Height: | Size: 17 KiB After Width: | Height: | Size: 16 KiB |
|
Before Width: | Height: | Size: 38 KiB After Width: | Height: | Size: 33 KiB |
|
Before Width: | Height: | Size: 116 KiB After Width: | Height: | Size: 77 KiB |
|
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 46 KiB |
|
Before Width: | Height: | Size: 117 KiB After Width: | Height: | Size: 131 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 27 KiB |
|
Before Width: | Height: | Size: 53 KiB |
|
Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 9.2 KiB |
BIN
docs/images/import_wizard.png
Normal file
|
After Width: | Height: | Size: 115 KiB |
|
Before Width: | Height: | Size: 58 KiB After Width: | Height: | Size: 56 KiB |
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 80 KiB After Width: | Height: | Size: 45 KiB |
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 23 KiB |
|
Before Width: | Height: | Size: 66 KiB After Width: | Height: | Size: 63 KiB |
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.1 KiB |
|
Before Width: | Height: | Size: 95 KiB After Width: | Height: | Size: 92 KiB |
|
Before Width: | Height: | Size: 31 KiB After Width: | Height: | Size: 30 KiB |
|
Before Width: | Height: | Size: 117 KiB After Width: | Height: | Size: 84 KiB |
|
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 38 KiB |
|
Before Width: | Height: | Size: 50 KiB After Width: | Height: | Size: 57 KiB |
|
Before Width: | Height: | Size: 42 KiB After Width: | Height: | Size: 40 KiB |
|
Before Width: | Height: | Size: 27 KiB After Width: | Height: | Size: 39 KiB |
BIN
docs/images/passkeys_all_passkeys.png
Normal file
|
After Width: | Height: | Size: 142 KiB |
BIN
docs/images/passkeys_authentication_dialog.png
Normal file
|
After Width: | Height: | Size: 62 KiB |
BIN
docs/images/passkeys_enable_from_extension.png
Normal file
|
After Width: | Height: | Size: 69 KiB |
BIN
docs/images/passkeys_export_dialog.png
Normal file
|
After Width: | Height: | Size: 62 KiB |
BIN
docs/images/passkeys_github_1.png
Normal file
|
After Width: | Height: | Size: 111 KiB |