mirror of
https://github.com/keepassxreboot/keepassxc.git
synced 2025-12-04 15:39:34 +01:00
Compare commits
11 Commits
f927c4c41a
...
592d553ff8
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
592d553ff8 | ||
|
|
a709f14cf3 | ||
|
|
9031cb530e | ||
|
|
ebf0676661 | ||
|
|
6130a64be5 | ||
|
|
9814037fd3 | ||
|
|
8c8ae49240 | ||
|
|
1e370b8ab8 | ||
|
|
cd9bb483fe | ||
|
|
2cc2c905b5 | ||
|
|
d9ccf767d0 |
@@ -32,7 +32,9 @@ To configure Auto-Type sequences for your entries, perform the following steps:
|
||||
|
||||
1. Navigate to the entries list and open the desired entry for editing. Click the _Auto-Type_ item from the left-hand menu bar *(1)*. Press the kbd:[+] button *(2)* to add a new sequence entry. Select the desired window using the drop-down menu, or simply type a window title in the box *(3)*.
|
||||
+
|
||||
TIP: You can use an asterisk (`\*`) to match any value (e.g., when a window title contains a dynamic filename or website name). Set the window title to `*` to match all windows. Leave the window title blank to offer additional default Auto-Type sequences, such as custom attributes.
|
||||
TIP: You can use an asterisk (`\*`) as a wildcard (e.g., when a window title contains a dynamic file or website name). Set the window title to `*` to match all windows. Leave the window title blank to offer additional sequences for every matching window. This is useful for typing individual custom attributes, for example.
|
||||
+
|
||||
TIP: To use a standard regular expression for window title matching, the window title must start and end with two forward slashes (e.g., `//^Secure Login - .*$//`).
|
||||
+
|
||||
.Auto-Type entry sequences
|
||||
image::autotype_entry_sequences.png[]
|
||||
|
||||
@@ -1,65 +1,58 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!--Copyright 2017 KeePassXC Team <team@keepassxc.org> -->
|
||||
<?xml version='1.0' encoding='utf-8'?>
|
||||
<!--Copyright 2025 KeePassXC Team <team@keepassxc.org> -->
|
||||
<component type="desktop-application">
|
||||
<!--Created with jdAppStreamEdit 9.2-->
|
||||
<id>org.keepassxc.KeePassXC.desktop</id>
|
||||
<name>KeePassXC</name>
|
||||
<summary>Secure and Full-featured Password Manager</summary>
|
||||
<summary xml:lang="de">Sicherer und voll ausgestatteter Passwort-Manager</summary>
|
||||
<developer id="org.keepassxc">
|
||||
<name>KeePassXC Team</name>
|
||||
</developer>
|
||||
<metadata_license>CC-BY-3.0</metadata_license>
|
||||
<project_license>GPL-3.0+</project_license>
|
||||
<summary>Community-driven port of the Windows application “KeePass Password Safe”</summary>
|
||||
<summary xml:lang="de">Von der Community entwickelter Port der Windows Anwendung “KeePass Password Safe”</summary>
|
||||
<developer_name>KeePassXC Team</developer_name>
|
||||
<project_license>GPL-3.0-or-later</project_license>
|
||||
<update_contact>team@keepassxc.org</update_contact>
|
||||
<description>
|
||||
<p>
|
||||
KeePassXC is an application for people with extremely high demands on secure
|
||||
personal data management. It has a light interface, is cross-platform and
|
||||
published under the terms of the GNU General Public License.
|
||||
</p>
|
||||
<p xml:lang="de">
|
||||
KeePassXC ist eine Anwendung für Menschen, die extrem hohe Anforderungen
|
||||
an die sichere Verwaltung von persönlichen Daten stellen. Sie hat eine leichtgewichtige
|
||||
Benutzeroberfläche, ist auf vielen verschiedenen Plattformen verfügbar und
|
||||
wird unter den Bedingungen der GNU General Public License veröffentlicht.
|
||||
</p>
|
||||
<p>KeePassXC is a modern, secure, and open-source password manager for your most sensitive information.
|
||||
Designed for people with extremely high demands of secure personal data management. You can store
|
||||
many different types of information, such as usernames, passwords, URLs, attachments, and notes in
|
||||
an offline, encrypted file. Major features include: Auto-Type into any window, browser integration,
|
||||
password generator, advanced search, comprehensive reports, FDO Secret Service integration, SSH agent
|
||||
key management, and many more!</p>
|
||||
<p xml:lang="de">KeePassXC ist ein moderner, sicherer Open-Source-Passwortmanager für Ihre sensibelsten Daten,
|
||||
entwickelt für Anwender mit höchsten Ansprüchen an die sichere Verwaltung persönlicher Daten.
|
||||
Sie können verschiedenste Informationen wie Benutzernamen, Passwörter, URLs, Anhänge und Notizen offline in
|
||||
einer verschlüsselten Datei speichern. Zu den wichtigsten Funktionen gehören: Automatisches
|
||||
Einfügen in beliebige Fenster, Browserintegration, Passwortgenerator, umfangreiche Suche, umfassende Berichte,
|
||||
Integration mit dem FDO-Secret-Service, SSH-Agent-Schlüsselverwaltung und vieles mehr!</p>
|
||||
</description>
|
||||
|
||||
<launchable type="desktop-id">org.keepassxc.KeePassXC.desktop</launchable>
|
||||
|
||||
<url type="homepage">https://keepassxc.org</url>
|
||||
<url type="bugtracker">https://github.com/keepassxreboot/keepassxc/issues</url>
|
||||
<url type="faq">https://keepassxc.org/docs#faq</url>
|
||||
<url type="help">https://keepassxc.org/docs</url>
|
||||
<url type="translate">https://www.transifex.com/keepassxc/keepassxc</url>
|
||||
<url type="vcs-browser">https://github.com/keepassxreboot/keepassxc</url>
|
||||
<url type="contribute">https://keepassxc.org/docs#contribute</url>
|
||||
|
||||
<screenshots>
|
||||
<screenshot type="default">
|
||||
<image>https://keepassxc.org/assets/img/screenshots/database_view.png</image>
|
||||
<caption>Organize with Groups and Entries</caption>
|
||||
<image type="source">https://keepassxc.org/assets/img/screenshots/database_view.png</image>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://keepassxc.org/assets/img/screenshots/unlock_database.png</image>
|
||||
<caption>Unlock database</caption>
|
||||
<image type="source">https://keepassxc.org/assets/img/screenshots/unlock_database.png</image>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://keepassxc.org/assets/img/screenshots/edit_entry_icons.png</image>
|
||||
<caption>Icon Selection for Entry</caption>
|
||||
<image type="source">https://keepassxc.org/assets/img/screenshots/edit_entry_icons.png</image>
|
||||
</screenshot>
|
||||
<screenshot>
|
||||
<image>https://keepassxc.org/assets/img/screenshots/password_generator_advanced.png</image>
|
||||
<caption>Password Generator</caption>
|
||||
<image type="source">https://keepassxc.org/assets/img/screenshots/password_generator_advanced.png</image>
|
||||
</screenshot>
|
||||
</screenshots>
|
||||
|
||||
<releases>
|
||||
<release version="2.8.0" date="2025-01-01">
|
||||
<release version="2.8.0" date="2025-01-01" type="development">
|
||||
<description>
|
||||
<ul>
|
||||
<li>Placeholder for future release notes</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="2.7.10" date="2025-03-02">
|
||||
<release version="2.7.10" date="2025-03-02" type="stable">
|
||||
<description>
|
||||
<ul>
|
||||
<li>Allow adjusting application font size [#11567]</li>
|
||||
@@ -122,7 +115,7 @@
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="2.7.9" date="2024-06-19">
|
||||
<release version="2.7.9" date="2024-06-19" type="stable">
|
||||
<description>
|
||||
<ul>
|
||||
<li>Passkeys: Ability to easily remove a passkey from an entry [#10777]</li>
|
||||
@@ -150,7 +143,7 @@
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="2.7.8" date="2024-05-05">
|
||||
<release version="2.7.8" date="2024-05-05" type="stable">
|
||||
<description>
|
||||
<ul>
|
||||
<li>Add hotkey for showing search help [#10591]</li>
|
||||
@@ -193,7 +186,7 @@
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="2.7.7" date="2024-03-09">
|
||||
<release version="2.7.7" date="2024-03-09" type="stable">
|
||||
<description>
|
||||
<ul>
|
||||
<li>Support USB Hotplug for Hardware Key interface [#10092]</li>
|
||||
@@ -218,7 +211,7 @@
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="2.7.6" date="2023-08-15">
|
||||
<release version="2.7.6" date="2023-08-15" type="stable">
|
||||
<description>
|
||||
<ul>
|
||||
<li>Significant improvement to visual when drag/drop entries [#9698]</li>
|
||||
@@ -243,7 +236,7 @@
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="2.7.5" date="2023-05-14">
|
||||
<release version="2.7.5" date="2023-05-14" type="stable">
|
||||
<description>
|
||||
<ul>
|
||||
<li>Add menu option to allow screenshots [#8841]</li>
|
||||
@@ -280,7 +273,7 @@
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="2.7.4" date="2022-10-29">
|
||||
<release version="2.7.4" date="2022-10-29" type="stable">
|
||||
<description>
|
||||
<ul>
|
||||
<li>Add 2 months expiration preset [#8687]</li>
|
||||
@@ -296,7 +289,7 @@
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="2.7.3" date="2022-10-23">
|
||||
<release version="2.7.3" date="2022-10-23" type="stable">
|
||||
<description>
|
||||
<ul>
|
||||
<li>Enhance Tags Support and Add Saved Searches [#8435, #8607]</li>
|
||||
@@ -349,7 +342,7 @@
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="2.7.1" date="2022-04-05">
|
||||
<release version="2.7.1" date="2022-04-05" type="stable">
|
||||
<description>
|
||||
<ul>
|
||||
<li>Show when tags are changed in entry history [#7638]</li>
|
||||
@@ -374,7 +367,7 @@
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="2.7.0" date="2022-03-21">
|
||||
<release version="2.7.0" date="2022-03-21" type="stable">
|
||||
<description>
|
||||
<ul>
|
||||
<li>Implement KDBX 4.1 [#7114]</li>
|
||||
@@ -465,7 +458,7 @@
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="2.6.6" date="2021-06-11">
|
||||
<release version="2.6.6" date="2021-06-11" type="stable">
|
||||
<description>
|
||||
<ul>
|
||||
<li>Fix focusing search when pressing hotkey [#6603]</li>
|
||||
@@ -475,7 +468,7 @@
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="2.6.5" date="2021-06-07">
|
||||
<release version="2.6.5" date="2021-06-07" type="stable">
|
||||
<description>
|
||||
<ul>
|
||||
<li>Show search bar when toolbar is hidden or in overflow [#6279]</li>
|
||||
@@ -501,7 +494,7 @@
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="2.6.4" date="2021-01-31">
|
||||
<release version="2.6.4" date="2021-01-31" type="stable">
|
||||
<description>
|
||||
<ul>
|
||||
<li>Automatically adapt to light/dark system theme changes (Windows/macOS only) [#6034]</li>
|
||||
@@ -518,7 +511,7 @@
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="2.6.3" date="2021-01-12">
|
||||
<release version="2.6.3" date="2021-01-12" type="stable">
|
||||
<description>
|
||||
<ul>
|
||||
<li>Support Argon2id KDF [#5778]</li>
|
||||
@@ -545,7 +538,7 @@
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="2.6.2" date="2020-10-21">
|
||||
<release version="2.6.2" date="2020-10-21" type="stable">
|
||||
<description>
|
||||
<ul>
|
||||
<li>Add option to keep window always on top to view menu [#5542]</li>
|
||||
@@ -580,7 +573,7 @@
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="2.6.1" date="2020-08-19">
|
||||
<release version="2.6.1" date="2020-08-19" type="stable">
|
||||
<description>
|
||||
<ul>
|
||||
<li>Add menu entries for auto-typing only username or only password [#4891]</li>
|
||||
@@ -618,7 +611,7 @@
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="2.6.0" date="2020-07-06">
|
||||
<release version="2.6.0" date="2020-07-06" type="stable">
|
||||
<description>
|
||||
<ul>
|
||||
<li>Custom Light and Dark themes [#4110, #4769, #4791, #4892, #4915]</li>
|
||||
@@ -692,564 +685,20 @@
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="2.5.4" date="2020-04-09">
|
||||
<description>
|
||||
<ul>
|
||||
<li>Return keyboard focus after saving database edits [#4287]</li>
|
||||
<li>Windows: Use bare minimum settings in portable version [#4131]</li>
|
||||
<li>Windows: Use SHA256 code signing [#4129]</li>
|
||||
<li>macOS: Fix code signing incompatibility in latest macOS release [#4564]</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="2.5.3" date="2020-01-19">
|
||||
<description>
|
||||
<ul>
|
||||
<li>Fix a possible database lockout when removing a YubiKey from a KDBX 3.1 database [#4147]</li>
|
||||
<li>Fix crash if Auto-Type is performed on a new entry [#4150]</li>
|
||||
<li>Fix crash when all entries are deleted from a group [#4156]</li>
|
||||
<li>Improve the reliability of clipboard clearing on Gnome [#4165]</li>
|
||||
<li>Do not check cmd:// URLs for valid URL syntax anymore [#4172]</li>
|
||||
<li>Prevent unnecessary merges for databases on network shares [#4153]</li>
|
||||
<li>Browser: Prevent native messaging proxy from blocking application shutdown [#4155]</li>
|
||||
<li>Browser: Improve website URL matching [#4134, #4177]</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="2.5.2" date="2020-01-04">
|
||||
<description>
|
||||
<ul>
|
||||
<li>Browser: Show UI warning when entering invalid URLs [#3912]</li>
|
||||
<li>Browser: Option to use an entry only for HTTP auth [#3927]</li>
|
||||
<li>Disable the user interface when merging or saving the database [#3991]</li>
|
||||
<li>Ability to hide protected attribute after reveal [#3877]</li>
|
||||
<li>Remove mention of "snaps" in Windows and macOS [#3879]</li>
|
||||
<li>CLI: Merge parameter for source database key file (--key-file-from) [#3961]</li>
|
||||
<li>Improve GUI tests reliability on Hi-DPI displays [#4075]</li>
|
||||
<li>Disable deprecation warnings to allow building with Qt 5.14+ [#4075]</li>
|
||||
<li>OPVault: Use 'otp' attribute for TOTP field imports [#4075]</li>
|
||||
<li>Fix crashes when saving a database to cloud storage [#3991]</li>
|
||||
<li>Fix crash when pressing enter twice while opening database [#3885]</li>
|
||||
<li>Fix handling of HTML when displayed in the entry preview panel [#3910]</li>
|
||||
<li>Fix start minimized to tray on Linux [#3899]</li>
|
||||
<li>Fix Auto Open with key file only databases [#4075]</li>
|
||||
<li>Fix escape key closing the standalone password generator [#3892]</li>
|
||||
<li>macOS: Fix monospace font usage in password field and notes [#4075]</li>
|
||||
<li>macOS: Fix building on macOS 10.9 to 10.11 [#3946]</li>
|
||||
<li>Fix TOTP setup dialog not closing on database lock [#4075]</li>
|
||||
<li>Browser: Fix condition where additional URLs are ignored [#4033]</li>
|
||||
<li>Browser: Fix subdomain matching to return only relevant site entries [#3854]</li>
|
||||
<li>Secret Service: Fix multiple crashes and incompatibilities [#3871, #4009, #4074]</li>
|
||||
<li>Secret Service: Fix searching of entries [#4008, #4036]</li>
|
||||
<li>Secret Service: Fix behavior when exposed group is recycled [#3914]</li>
|
||||
<li>CLI: Release the database instance before exiting interactive mode [#3889]</li>
|
||||
<li>Fix (most) memory leaks in tests [#3922]</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="2.5.1" date="2019-11-11">
|
||||
<description>
|
||||
<ul>
|
||||
<li>Add programmatic use of the EntrySearcher [#3760]</li>
|
||||
<li>Explicitly clear database memory upon locking even if the object is not deleted immediately [#3824]</li>
|
||||
<li>macOS: Add ability to perform notarization of built package [#3827]</li>
|
||||
<li>Reduce file hash checking to every 30 seconds to correct performance issues [#3724]</li>
|
||||
<li>Correct formatting of notes in entry preview widget [#3727]</li>
|
||||
<li>Improve performance and UX of database statistics page [#3780]</li>
|
||||
<li>Improve interface for key file selection to discourage use of the database file [#3807]</li>
|
||||
<li>Hide Auto-Type sequences column when not needed [#3794]</li>
|
||||
<li>macOS: Revert back to using Carbon API for hotkey detection [#3794]</li>
|
||||
<li>CLI: Do not show protected fields by default [#3710]</li>
|
||||
<li>Secret Service: Correct issues interfacing with various applications [#3761]</li>
|
||||
<li>Fix building without additional features [#3693]</li>
|
||||
<li>Fix handling TOTP secret keys that require padding [#3764]</li>
|
||||
<li>Fix database unlock dialog password field focus [#3764]</li>
|
||||
<li>Correctly label open databases as locked on launch [#3764]</li>
|
||||
<li>Prevent infinite recursion when two databases AutoOpen each other [#3764]</li>
|
||||
<li>Browser: Fix incorrect matching of invalid URLs [#3759]</li>
|
||||
<li>Properly stylize the application name on Linux [#3775]</li>
|
||||
<li>Show application icon on Plasma Wayland sessions [#3777]</li>
|
||||
<li>macOS: Check for Auto-Type permissions on use instead of at launch [#3794]</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="2.5.0" date="2019-10-26">
|
||||
<description>
|
||||
<ul>
|
||||
<li>Add 'Paper Backup' aka 'Export to HTML file' to the 'Database' menu [#3277]</li>
|
||||
<li>Add statistics panel with information about the database (number of entries, number of unique passwords, etc.) to the Database Settings dialog [#2034]</li>
|
||||
<li>Add offline user manual accessible via the 'Help' menu [#3274]</li>
|
||||
<li>Add support for importing 1Password OpVault files [#2292]</li>
|
||||
<li>Implement Freedesktop.org secret storage DBus protocol so that KeePassXC can be used as a vault service by libsecret [#2726]</li>
|
||||
<li>Add support for OnlyKey as an alternative to YubiKeys (requires yubikey-personalization >= 1.20.0) [#3352]</li>
|
||||
<li>Add group sorting feature [#3282]</li>
|
||||
<li>Add feature to download favicons for all entries at once [#3169]</li>
|
||||
<li>Add word case option to passphrase generator [#3172]</li>
|
||||
<li>Add support for RFC6238-compliant TOTP hashes [#2972]</li>
|
||||
<li>Add UNIX man page for main program [#3665]</li>
|
||||
<li>Add 'Monospaced font' option to the notes field [#3321]</li>
|
||||
<li>Add support for key files in auto open [#3504]</li>
|
||||
<li>Add search field for filtering entries in Auto-Type dialog [#2955]</li>
|
||||
<li>Complete usernames based on known usernames from other entries [#3300]</li>
|
||||
<li>Parse hyperlinks in the notes field of the entry preview pane [#3596]</li>
|
||||
<li>Allow abbreviation of field names in entry search [#3440]</li>
|
||||
<li>Allow setting group icons recursively [#3273]</li>
|
||||
<li>Add copy context menu for username and password in Auto-Type dialog [#3038]</li>
|
||||
<li>Drop to background after copying a password to the clipboard [#3253]</li>
|
||||
<li>Add 'Lock databases' entry to tray icon menu [#2896]</li>
|
||||
<li>Add option to minimize window after unlocking [#3439]</li>
|
||||
<li>Add option to minimize window after opening a URL [#3302]</li>
|
||||
<li>Request accessibility permissions for Auto-Type on macOS [#3624]</li>
|
||||
<li>Browser: Add initial support for multiple URLs [#3558]</li>
|
||||
<li>Browser: Add entry-specific browser integration settings [#3444]</li>
|
||||
<li>Add offline HIBP checker (requires a downloaded HIBP dump) [#2707]</li>
|
||||
<li>CLI: Add 'flatten' option to the 'ls' command [#3276]</li>
|
||||
<li>CLI: Add password generation options to `Add` and `Edit` commands [#3275]</li>
|
||||
<li>CLI: Add XML import [#3572]</li>
|
||||
<li>CLI: Add CSV export to the 'export' command [#3278]</li>
|
||||
<li>CLI: Add `-y --yubikey` option for YubiKey [#3416]</li>
|
||||
<li>CLI: Add `--dry-run` option for merging databases [#3254]</li>
|
||||
<li>CLI: Add group commands (mv, mkdir and rmdir) [#3313].</li>
|
||||
<li>CLI: Add interactive shell mode command `open` [#3224]</li>
|
||||
<li>Redesign database unlock dialog [ [#3287]</li>
|
||||
<li>Rework the entry preview panel [ [#3306]</li>
|
||||
<li>Move notes to General tab on Group Preview Panel [#3336]</li>
|
||||
<li>Enable entry actions when editing an entry and cleanup entry context menu [#3641]</li>
|
||||
<li>Improve detection of external database changes [#2389]</li>
|
||||
<li>Warn if user is trying to use a KDBX file as a key file [#3625]</li>
|
||||
<li>Add option to disable KeePassHTTP settings migrations prompt [#3349, #3344]</li>
|
||||
<li>Re-enabled Wayland support (no Auto-Type yet) [#3520, #3341]</li>
|
||||
<li>Add icon to 'Toggle Window' action in tray icon menu [[3244]</li>
|
||||
<li>Merge custom data between databases only when necessary [#3475]</li>
|
||||
<li>Improve various file-handling related issues when picking files using the system's file dialog [#3473]</li>
|
||||
<li>Add 'New Entry' context menu when no entries are selected [#3671]</li>
|
||||
<li>Reduce default Argon2 settings from 128 MiB and one thread per CPU core to 64 MiB and two threads to account for lower-spec mobile hardware [#3672]</li>
|
||||
<li>Browser: Remove unused 'Remember' checkbox for HTTP Basic Auth [#3371]</li>
|
||||
<li>Browser: Show database name when pairing with a new browser [#3638]</li>
|
||||
<li>Browser: Show URL in allow access dialog [#3639]</li>
|
||||
<li>CLI: The password length option `-l` for the CLI commands `Add` and `Edit` is now `-L` [#3275]</li>
|
||||
<li>CLI: The `-u` shorthand for the `--upper` password generation option has been renamed to `-U` [#3275]</li>
|
||||
<li>CLI: Rename command `extract` to `export`. [#3277]</li>
|
||||
<li>Improve accessibility for assistive technologies [#3409]</li>
|
||||
<li>Correctly unlock all databases if `--pw-stdin` is provided [#2916]</li>
|
||||
<li>Fix password generator issues with special characters [#3303]</li>
|
||||
<li>Fix KeePassXC interrupting shutdown procedure [#3666]</li>
|
||||
<li>Fix password visibility toggle button state on unlock dialog [#3312]</li>
|
||||
<li>Fix potential data loss if database is reloaded while user is editing an entry [#3656]</li>
|
||||
<li>Fix hard-coded background color in search help popup [#3001]</li>
|
||||
<li>Fix font choice for password preview [#3425]</li>
|
||||
<li>Fix handling of read-only files when autosave is enabled [#3408]</li>
|
||||
<li>Handle symlinks correctly when atomic saves are disabled [#3463]</li>
|
||||
<li>Enable HighDPI icon scaling on Linux [#3332]</li>
|
||||
<li>Make Auto-Type on macOS more robust and remove old Carbon API calls [#3634, #3347]</li>
|
||||
<li>Hide Share tab if KeePassXC is compiled without KeeShare support and other minor KeeShare improvements [#3654, #3291, #3029, #3031, #3236]</li>
|
||||
<li>Correctly bring window to the front when clicking tray icon on macOS [#3576]</li>
|
||||
<li>Correct application shortcut created by MSI Installer on Windows [#3296]</li>
|
||||
<li>Fix crash when removing custom data [#3508]</li>
|
||||
<li>Fix placeholder resolution in URLs [#3281]</li>
|
||||
<li>Fix various inconsistencies and platform-dependent compilation bugs [#3664, #3662, #3660, #3655, #3649, #3417, #3357, #3319, #3318, #3304]</li>
|
||||
<li>Browser: Fix potential leaking of entries through the browser integration API if multiple databases are opened [#3480]</li>
|
||||
<li>Browser: Fix password entropy calculation [#3107]</li>
|
||||
<li>Browser: Fix Windows registry settings for portable installation [#3603]</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="2.4.3" date="2019-06-12">
|
||||
<description>
|
||||
<ul>
|
||||
<li>Fix library loading issues in the Snap and macOS releases [#3247]</li>
|
||||
<li>Fix various keyboard navigation issues [#3248]</li>
|
||||
<li>Fix main window toggling regression when clicking the tray icon on KDE [#3258]</li>
|
||||
<li>Add documentation for keyboard shortcuts to source code distribution [#3215]</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="2.4.2" date="2019-05-31">
|
||||
<description>
|
||||
<ul>
|
||||
<li>Improve resilience against memory attacks - overwrite memory before free [#3020]</li>
|
||||
<li>Prevent infinite save loop when location is unavailable [#3026]</li>
|
||||
<li>Attempt to fix quitting application when shutdown or logout issued [#3199]</li>
|
||||
<li>Support merging database custom data [#3002]</li>
|
||||
<li>Fix opening URL's with non-http schemes [#3153]</li>
|
||||
<li>Fix data loss due to not reading all database attachments if duplicates exist [#3180]</li>
|
||||
<li>Fix entry context menu disabling when using keyboard navigation [#3199]</li>
|
||||
<li>Fix behaviors when canceling an entry edit [#3199]</li>
|
||||
<li>Fix processing of tray icon click and doubleclick [#3112]</li>
|
||||
<li>Update group in preview widget when focused [#3199]</li>
|
||||
<li>Prefer DuckDuckGo service over direct icon download (increases resolution) [#2996]</li>
|
||||
<li>Remove apply button in application settings [#3019]</li>
|
||||
<li>Use winqtdeploy on Windows to correct deployment issues [#3025]</li>
|
||||
<li>Don't mark entry edit as modified when attribute selection changes [#3041]</li>
|
||||
<li>Use console code page CP_UTF8 on Windows if supported [#3050]</li>
|
||||
<li>Snap: Fix locking database with session lock [#3046]</li>
|
||||
<li>Snap: Fix theming across Linux distributions [#3057]</li>
|
||||
<li>Snap: Use SNAP_USER_COMMON and SNAP_USER_DATA directories [#3131]</li>
|
||||
<li>KeeShare: Automatically enable WITH_XC_KEESHARE_SECURE if quazip is found [#3088]</li>
|
||||
<li>macOS: Fix toolbar text when in dark mode [#2998]</li>
|
||||
<li>macOS: Lock database on switching user [#3097]</li>
|
||||
<li>macOS: Fix global Auto-Type when the database is locked [#3138]</li>
|
||||
<li>Browser: Close popups when database is locked [#3093]</li>
|
||||
<li>Browser: Add tests [#3016]</li>
|
||||
<li>Browser: Don't create default group if custom group is enabled [#3127]</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="2.4.1" date="2019-04-12">
|
||||
<description>
|
||||
<ul>
|
||||
<li>Fix database deletion when using unsafe saves to a different file system [#2889]</li>
|
||||
<li>Fix opening databases with legacy key files that contain '/' [#2872]</li>
|
||||
<li>Fix opening database files from the command line [#2919]</li>
|
||||
<li>Fix crash when editing master key [#2836]</li>
|
||||
<li>Fix multiple issues with apply button behavior [#2947]</li>
|
||||
<li>Fix issues on application startup (tab order, --pw-stdin, etc.) [#2830]</li>
|
||||
<li>Fix building without WITH_XC_KEESHARE</li>
|
||||
<li>Fix reference entry coloring on macOS dark mode [#2984]</li>
|
||||
<li>Hide window when performing entry auto-type on macOS [#2969]</li>
|
||||
<li>Improve UX of update checker; reduce checks to every 7 days [#2968]</li>
|
||||
<li>KeeShare improvements [#2946, #2978, #2824]</li>
|
||||
<li>Re-enable Ctrl+C to copy password from search box [#2947]</li>
|
||||
<li>Add KeePassXC-Browser integration for Brave browser [#2933]</li>
|
||||
<li>SSH Agent: Re-Add keys on database unlock [#2982]</li>
|
||||
<li>SSH Agent: Only remove keys on app exit if they are removed on lock [#2985]</li>
|
||||
<li>CLI: Add --no-password option [#2708]</li>
|
||||
<li>CLI: Improve database extraction to XML [#2698]</li>
|
||||
<li>CLI: Don't call mandb on build [#2774]</li>
|
||||
<li>CLI: Add debug info [#2714]</li>
|
||||
<li>Improve support for Snap theming [#2832]</li>
|
||||
<li>Add support for building on Haiku OS [#2859]</li>
|
||||
<li>Ctrl+PgDn now goes to the next tab and Ctrl+PgUp to the previous</li>
|
||||
<li>Fix compiling on GCC 5 / Xenial [#2990]</li>
|
||||
<li>Add .gitrev output to tarball for third-party builds [#2970]</li>
|
||||
<li>Add WITH_XC_UPDATECHECK compile flag to enable/disable the update checker [#2968]</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="2.4.0" date="2019-03-19">
|
||||
<description>
|
||||
<ul>
|
||||
<li>New Database Wizard [#1952]</li>
|
||||
<li>Advanced Search [#1797]</li>
|
||||
<li>Automatic update checker [#2648]</li>
|
||||
<li>KeeShare database synchronization [#2109, #1992, #2738, #2742, #2746, #2739]</li>
|
||||
<li>Improve favicon fetching; transition to Duck-Duck-Go [#2795, #2011, #2439]</li>
|
||||
<li>Remove KeePassHttp support [#1752]</li>
|
||||
<li>CLI: output info to stderr for easier scripting [#2558]</li>
|
||||
<li>CLI: Add --quiet option [#2507]</li>
|
||||
<li>CLI: Add create command [#2540]</li>
|
||||
<li>CLI: Add recursive listing of entries [#2345]</li>
|
||||
<li>CLI: Fix stdin/stdout encoding on Windows [#2425]</li>
|
||||
<li>SSH Agent: Support OpenSSH for Windows [#1994]</li>
|
||||
<li>macOS: TouchID Quick Unlock [#1851]</li>
|
||||
<li>macOS: Multiple improvements; include CLI in DMG [#2165, #2331, #2583]</li>
|
||||
<li>Linux: Prevent Klipper from storing secrets in clipboard [#1969]</li>
|
||||
<li>Linux: Use polling based file watching for NFS [#2171]</li>
|
||||
<li>Linux: Enable use of browser plugin in Snap build [#2802]</li>
|
||||
<li>TOTP QR Code Generator [#1167]</li>
|
||||
<li>High-DPI Scaling for 4k screens [#2404]</li>
|
||||
<li>Make keyboard shortcuts more consistent [#2431]</li>
|
||||
<li>Warn user if deleting referenced entries [#1744]</li>
|
||||
<li>Allow toolbar to be hidden and repositioned [#1819, #2357]</li>
|
||||
<li>Increase max allowed database timeout to 12 hours [#2173]</li>
|
||||
<li>Password generator uses existing password length by default [#2318]</li>
|
||||
<li>Improve alert message box button labels [#2376]</li>
|
||||
<li>Show message when a database merge makes no changes [#2551]</li>
|
||||
<li>Browser Integration Enhancements [#1497, #2253, #1904, #2232, #1850, #2218, #2391, #2396, #2542, #2622, #2637, #2790]</li>
|
||||
<li>Overall Code Improvements [#2316, #2284, #2351, #2402, #2410, #2419, #2422, #2443, #2491, #2506, #2610, #2667, #2709, #2731]</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="2.3.4" date="2018-08-21">
|
||||
<description>
|
||||
<ul>
|
||||
<li>Show all URL schemes in entry view [#1768]</li>
|
||||
<li>Disable merge when database is locked [#1975]</li>
|
||||
<li>Fix intermittent crashes with favorite icon downloads [#1980]</li>
|
||||
<li>Provide potential crash warning to Qt 5.5.x users [#2211]</li>
|
||||
<li>Disable apply button when creating new entry/group to prevent data loss [#2204]</li>
|
||||
<li>Allow for 12 hour timeout to lock idle database [#2173]</li>
|
||||
<li>Multiple SSH Agent fixes [#1981, #2117]</li>
|
||||
<li>Multiple Browser Integration enhancements [#1993, #2003, #2055, #2116, #2159, #2174, #2185]</li>
|
||||
<li>Fix browser proxy application not closing properly [#2142]</li>
|
||||
<li>Add real names and Patreon supporters to about dialog [#2214]</li>
|
||||
<li>Add settings button to toolbar, Donate button, and Report a Bug button to help menu [#2214]</li>
|
||||
<li>Enhancements to release-tool to appsign intermediate build products [#2101]</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="2.3.3" date="2018-05-09">
|
||||
<description>
|
||||
<ul>
|
||||
<li>Fix crash when browser integration is enabled [#1923]</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="2.3.2" date="2018-05-07">
|
||||
<description>
|
||||
<ul>
|
||||
<li>Enable high entropy ASLR on Windows [#1747]</li>
|
||||
<li>Enhance favicon fetching [#1786]</li>
|
||||
<li>Fix crash on Windows due to autotype [#1691]</li>
|
||||
<li>Fix dark tray icon changing all icons [#1680]</li>
|
||||
<li>Fix --pw-stdin not using getPassword function [#1686]</li>
|
||||
<li>Fix placeholders being resolved in notes [#1907]</li>
|
||||
<li>Enable auto-type start delay to be configurable [#1908]</li>
|
||||
<li>Browser: Fix native messaging reply size [#1719]</li>
|
||||
<li>Browser: Increase maximum buffer size [#1720]</li>
|
||||
<li>Browser: Enhance usability and functionality [#1810, #1822, #1830, #1884, #1906]</li>
|
||||
<li>SSH Agent: Parse aes-256-cbc/ctr keys [#1682]</li>
|
||||
<li>SSH Agent: Enhance usability and functionality [#1677, #1679, #1681, #1787]</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="2.3.1" date="2018-03-06">
|
||||
<description>
|
||||
<ul>
|
||||
<li>Fix unnecessary automatic upgrade to KDBX 4.0 and prevent challenge-response key being stripped [#1568]</li>
|
||||
<li>Abort saving and show an error message when challenge-response fails [#1659]</li>
|
||||
<li>Support inner stream protection on all string attributes [#1646]</li>
|
||||
<li>Fix favicon downloads not finishing on some websites [#1657]</li>
|
||||
<li>Fix freeze due to invalid STDIN data [#1628]</li>
|
||||
<li>Correct issue with encrypted RSA SSH keys [#1587]</li>
|
||||
<li>Fix crash on macOS due to QTBUG-54832 [#1607]</li>
|
||||
<li>Show error message if ssh-agent communication fails [#1614]</li>
|
||||
<li>Fix --pw-stdin and filename parameters being ignored [#1608]</li>
|
||||
<li>Fix Auto-Type syntax check not allowing spaces and special characters [#1626]</li>
|
||||
<li>Fix reference placeholders in combination with Auto-Type [#1649]</li>
|
||||
<li>Fix qtbase translations not being loaded [#1611]</li>
|
||||
<li>Fix startup crash on Windows due to missing SVG libraries [#1662]</li>
|
||||
<li>Correct database tab order regression [#1610]</li>
|
||||
<li>Fix GCC 8 compilation error [#1612]</li>
|
||||
<li>Fix copying of advanced attributes on KDE [#1640]</li>
|
||||
<li>Fix member initialization of CategoryListWidgetDelegate [#1613]</li>
|
||||
<li>Fix inconsistent toolbar icon sizes and provide higher-quality icons [#1616]</li>
|
||||
<li>Improve preview panel geometry [#1609]</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="2.3.0" date="2018-02-27">
|
||||
<description>
|
||||
<ul>
|
||||
<li>Add support for KDBX 4.0, Argon2 and ChaCha20 [#148, #1179, #1230, #1494]</li>
|
||||
<li>Add SSH Agent feature [#1098, #1450, #1463]</li>
|
||||
<li>Add preview panel with details of the selected entry [#879, #1338]</li>
|
||||
<li>Add more and configurable columns to entry table and allow copying of values by double click [#1305]</li>
|
||||
<li>Add KeePassXC-Browser API as a replacement for KeePassHTTP [#608]</li>
|
||||
<li>Deprecate KeePassHTTP [#1392]</li>
|
||||
<li>Add support for Steam one-time passwords [#1206]</li>
|
||||
<li>Add support for multiple Auto-Type sequences for a single entry [#1390]</li>
|
||||
<li>Adjust YubiKey HMAC-SHA1 challenge-response key generation for KDBX 4.0 [#1060]</li>
|
||||
<li>Replace qHttp with cURL for website icon downloads [#1460]</li>
|
||||
<li>Remove lock file [#1231]</li>
|
||||
<li>Add option to create backup file before saving [#1385]</li>
|
||||
<li>Ask to save a generated password before closing the entry password generator [#1499]</li>
|
||||
<li>Resolve placeholders recursively [#1078]</li>
|
||||
<li>Add Auto-Type button to the toolbar [#1056]</li>
|
||||
<li>Improve window focus handling for Auto-Type dialogs [#1204, #1490]</li>
|
||||
<li>Auto-Type dialog and password generator can now be exited with ESC [#1252, #1412]</li>
|
||||
<li>Add optional dark tray icon [#1154]</li>
|
||||
<li>Add new "Unsafe saving" option to work around saving problems with file sync services [#1385]</li>
|
||||
<li>Add IBus support to AppImage and additional image formats to Windows builds [#1534, #1537]</li>
|
||||
<li>Add diceware password generator to CLI [#1406]</li>
|
||||
<li>Add --key-file option to CLI [#816, #824]</li>
|
||||
<li>Add DBus interface for opening and closing KeePassXC databases [#283]</li>
|
||||
<li>Add KDBX compression options to database settings [#1419]</li>
|
||||
<li>Discourage use of old fixed-length key files in favor of arbitrary files [#1326, #1327]</li>
|
||||
<li>Correct reference resolution in entry fields [#1486]</li>
|
||||
<li>Fix window state and recent databases not being remembered on exit [#1453]</li>
|
||||
<li>Correct history item generation when configuring TOTP for an entry [#1446]</li>
|
||||
<li>Correct multiple TOTP bugs [#1414]</li>
|
||||
<li>Automatic saving after every change is now a default [#279]</li>
|
||||
<li>Allow creation of new entries during search [#1398]</li>
|
||||
<li>Correct menu issues on macOS [#1335]</li>
|
||||
<li>Allow compilation on OpenBSD [#1328]</li>
|
||||
<li>Improve entry attachments view [#1139, #1298]</li>
|
||||
<li>Fix auto lock for Gnome and Xfce [#910, #1249]</li>
|
||||
<li>Don't remember key files in file dialogs when the setting is disabled [#1188]</li>
|
||||
<li>Improve database merging and conflict resolution [#807, #1165]</li>
|
||||
<li>Fix macOS pasteboard issues [#1202]</li>
|
||||
<li>Improve startup times on some platforms [#1205]</li>
|
||||
<li>Hide the notes field by default [#1124]</li>
|
||||
<li>Toggle main window by clicking tray icon with the middle mouse button [#992]</li>
|
||||
<li>Fix custom icons not copied over when databases are merged [#1008]</li>
|
||||
<li>Allow use of DEL key to delete entries [#914]</li>
|
||||
<li>Correct intermittent crash due to stale history items [#1527]</li>
|
||||
<li>Sanitize newline characters in title, username and URL fields [#1502]</li>
|
||||
<li>Reopen previously opened databases in correct order [#774]</li>
|
||||
<li>Use system's zxcvbn library if available [#701]</li>
|
||||
<li>Implement various i18n improvements [#690, #875, #1436]</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="2.2.4" date="2017-12-13">
|
||||
<description>
|
||||
<ul>
|
||||
<li>Prevent database corruption when locked [#1219]</li>
|
||||
<li>Fixes apply button not saving new entries [#1141]</li>
|
||||
<li>Switch to Consolas font on Windows for password edit [#1229]</li>
|
||||
<li>Multiple fixes to AppImage deployment [#1115, #1228]</li>
|
||||
<li>Fixes multiple memory leaks [#1213]</li>
|
||||
<li>Resize message close to 16x16 pixels [#1253]</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="2.2.2" date="2017-10-22">
|
||||
<description>
|
||||
<p>Changes included in this release:</p>
|
||||
<ul>
|
||||
<li>Fixed entries with empty URLs being reported to KeePassHTTP clients [#1031]</li>
|
||||
<li>Fixed YubiKey detection and enabled CLI tool for AppImage binary [#1100]</li>
|
||||
<li>Added AppStream description [#1082]</li>
|
||||
<li>Improved TOTP compatibility and added new Base32 implementation [#1069]</li>
|
||||
<li>Fixed error handling when processing invalid cipher stream [#1099]</li>
|
||||
<li>Fixed double warning display when opening a database [#1037]</li>
|
||||
<li>Fixed unlocking databases with --pw-stdin [#1087]</li>
|
||||
<li>Added ability to override QT_PLUGIN_PATH environment variable for AppImages [#1079]</li>
|
||||
<li>Fixed transform seed not being regenerated when saving the database [#1068]</li>
|
||||
<li>Fixed only one YubiKey slot being polled [#1048]</li>
|
||||
<li>Corrected an issue with entry icons while merging [#1008]</li>
|
||||
<li>Corrected desktop and tray icons in Snap package [#1030]</li>
|
||||
<li>Fixed screen lock and Google fallback settings [#1029]</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="2.2.1" date="2017-10-01">
|
||||
<description>
|
||||
<p>Changes included in this release:</p>
|
||||
<ul>
|
||||
<li>Corrected multiple snap issues [#934, #1011]</li>
|
||||
<li>Corrected multiple custom icon issues [#708, #719, #994]</li>
|
||||
<li>Corrected multiple Yubikey issues [#880]</li>
|
||||
<li>Fixed single instance preventing load on occasion [#997]</li>
|
||||
<li>Keep entry history when merging databases [#970]</li>
|
||||
<li>Prevent data loss if passwords were mismatched [#1007]</li>
|
||||
<li>Fixed crash after merge [#941]</li>
|
||||
<li>Added configurable auto-type default delay [#703]</li>
|
||||
<li>Unlock database dialog window comes to front [#663]</li>
|
||||
<li>Translation and compiling fixes</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="2.2.0" date="2017-06-23">
|
||||
<description>
|
||||
<p>Changes included in this release:</p>
|
||||
<ul>
|
||||
<li>Added YubiKey 2FA integration for unlocking databases [#127]</li>
|
||||
<li>Added TOTP support [#519]</li>
|
||||
<li>Added CSV import tool [#146, #490]</li>
|
||||
<li>Added KeePassXC CLI tool [#254]</li>
|
||||
<li>Added diceware password generator [#373]</li>
|
||||
<li>Added support for entry references [#370, #378]</li>
|
||||
<li>Added support for Twofish encryption [#167]</li>
|
||||
<li>Enabled DEP and ASLR for in-memory protection [#371]</li>
|
||||
<li>Enabled single instance mode [#510]</li>
|
||||
<li>Enabled portable mode [#645]</li>
|
||||
<li>Enabled database lock on screensaver and session lock [#545]</li>
|
||||
<li>Redesigned welcome screen with common features and recent databases [#292]</li>
|
||||
<li>Multiple updates to search behavior [#168, #213, #374, #471, #603, #654]</li>
|
||||
<li>Added auto-type fields {CLEARFIELD}, {SPACE}, {{}, {}} [#267, #427, #480]</li>
|
||||
<li>Fixed auto-type errors on Linux [#550]</li>
|
||||
<li>Prompt user prior to executing a cmd:// URL [#235]</li>
|
||||
<li>Entry attributes can be protected (hidden) [#220]</li>
|
||||
<li>Added extended ascii to password generator [#538]</li>
|
||||
<li>Added new database icon to toolbar [#289]</li>
|
||||
<li>Added context menu entry to empty recycle bin in databases [#520]</li>
|
||||
<li>Added "apply" button to entry and group edit windows [#624]</li>
|
||||
<li>Added macOS tray icon and enabled minimize on close [#583]</li>
|
||||
<li>Fixed issues with unclean shutdowns [#170, #580]</li>
|
||||
<li>Changed keyboard shortcut to create new database to CTRL+SHIFT+N [#515]</li>
|
||||
<li>Compare window title to entry URLs [#556]</li>
|
||||
<li>Implemented inline error messages [#162]</li>
|
||||
<li>Ignore group expansion and other minor changes when making database "dirty" [#464]</li>
|
||||
<li>Updated license and copyright information on source files [#632]</li>
|
||||
<li>Added contributors list to about dialog [#629]</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="2.1.4" date="2017-04-09">
|
||||
<description>
|
||||
<p>Changes included in this release:</p>
|
||||
<ul>
|
||||
<li>Bumped KeePassHTTP version to 1.8.4.2</li>
|
||||
<li>KeePassHTTP confirmation window comes to foreground [#466]</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="2.1.3" date="2017-03-03">
|
||||
<description>
|
||||
<p>Changes included in this release:</p>
|
||||
<ul>
|
||||
<li>Fix possible overflow in zxcvbn library [#363]</li>
|
||||
<li>Revert HiDPI setting to avoid problems on laptop screens [#332]</li>
|
||||
<li>Set file meta properties in Windows executable [#330]</li>
|
||||
<li>Suppress error message when auto-reloading a locked database [#345]</li>
|
||||
<li>Improve usability of question dialog when database is already locked by a different instance [#346]</li>
|
||||
<li>Fix compiler warnings in QHttp library [#351]</li>
|
||||
<li>Use unified toolbar on Mac OS X [#361]</li>
|
||||
<li>Fix an issue on X11 where the main window would be raised instead of closed on Alt+F4 [#362]</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="2.1.2" date="2017-02-17">
|
||||
<description>
|
||||
<p>Changes included in this release:</p>
|
||||
<ul>
|
||||
<li>Ask for save location when creating a new database [#302]</li>
|
||||
<li>Remove Libmicrohttpd dependency to clean up the code and ensure better OS X compatibility [#317, #265]</li>
|
||||
<li>Prevent Qt from degrading Wifi network performance on certain platforms [#318]</li>
|
||||
<li>Visually refine user interface on OS X and other platforms [#299]</li>
|
||||
<li>Remove unusable tray icon setting on OS X [#293]</li>
|
||||
<li>Fix compositing glitches on Ubuntu and prevent flashing when minimizing to the tray at startup [#307]</li>
|
||||
<li>Fix AppImage tray icon on Ubuntu [#277, #273]</li>
|
||||
<li>Fix global menu disappearing after restoring KeePassXC from the tray on Ubuntu [#276]</li>
|
||||
<li>Fix result order in entry search [#320]</li>
|
||||
<li>Enable HiDPI scaling on supported platforms [#315]</li>
|
||||
<li>Remove empty directories from installation target [#282]</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="2.1.1" date="2017-02-06">
|
||||
<description>
|
||||
<p>Changes included in this release:</p>
|
||||
<ul>
|
||||
<li>Enabled HTTP plugin build; plugin is disabled by default and limited to localhost [#147]</li>
|
||||
<li>Escape HTML in dialog boxes [#247]</li>
|
||||
<li>Corrected crashes in favicon download and password generator [#233, #226]</li>
|
||||
<li>Increase font size of password meter [#228]</li>
|
||||
<li>Fixed compatibility with Qt 5.8 [#211]</li>
|
||||
<li>Use consistent button heights in password generator [#229]</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
<release version="2.1.0" date="2017-01-22">
|
||||
<description>
|
||||
<p>Changes included in this release:</p>
|
||||
<ul>
|
||||
<li>Show unlock dialog when using autotype on a closed database [#10, #89]</li>
|
||||
<li>Show different tray icon when database is locked [#37, #46]</li>
|
||||
<li>Support autotype on Windows and OS X [#42, #60, #63]</li>
|
||||
<li>Add delay feature to autotype [#76, #77]</li>
|
||||
<li>Add password strength meter [#84, #92]</li>
|
||||
<li>Add option for automatically locking the database when minimizing the window [#57]</li>
|
||||
<li>Add feature to download favicons and use them as entry icons [#30]</li>
|
||||
<li>Automatically reload and merge database when the file changed on disk [#22, #33, #93]</li>
|
||||
<li>Add tool for merging two databases [#22, #47, #143]</li>
|
||||
<li>Add --pw-stdin commandline option to unlock the database by providing a password on STDIN [#54]</li>
|
||||
<li>Add utility script for reading the database password from KWallet [#55]</li>
|
||||
<li>Fix some KeePassHTTP settings not being remembered [#34, #65]</li>
|
||||
<li>Make search box persistent [#15, #67, #157]</li>
|
||||
<li>Enhance search feature by scoping the search to selected group [#16, #118]</li>
|
||||
<li>Improve interaction between search field and entry list [#131, #141]</li>
|
||||
<li>Add stand-alone password-generator [#18, #92]</li>
|
||||
<li>Don't require password repetition when password is visible [#27, #92]</li>
|
||||
<li>Add support for entry attributes in autotype sequences [#107]</li>
|
||||
<li>Always focus password field when opening the database unlock widget [#116, #117]</li>
|
||||
<li>Fix compilation errors on various platforms [#53, #126, #130]</li>
|
||||
<li>Restructure and improve kdbx-extract utility [#160]</li>
|
||||
</ul>
|
||||
</description>
|
||||
</release>
|
||||
</releases>
|
||||
<content_rating type="oars-1.0" />
|
||||
<url type="homepage">https://keepassxc.org</url>
|
||||
<url type="bugtracker">https://github.com/keepassxreboot/keepassxc/issues</url>
|
||||
<url type="faq">https://keepassxc.org/docs/#faq</url>
|
||||
<url type="help">https://keepassxc.org/docs/</url>
|
||||
<url type="donation">https://keepassxc.org/donate/</url>
|
||||
<url type="translate">https://explore.transifex.com/keepassxc/keepassxc/</url>
|
||||
<url type="contact">https://keepassxc.org/team/#contact</url>
|
||||
<url type="vcs-browser">https://github.com/keepassxreboot/keepassxc</url>
|
||||
<url type="contribute">https://keepassxc.org/docs/#contribute</url>
|
||||
<content_rating type="oars-1.1"/>
|
||||
<launchable type="desktop-id">org.keepassxc.KeePassXC.desktop</launchable>
|
||||
<branding>
|
||||
<color type="primary" scheme_preference="light">#5b982a</color>
|
||||
<color type="primary" scheme_preference="dark">#5b982a</color>
|
||||
</branding>
|
||||
</component>
|
||||
|
||||
@@ -39,7 +39,7 @@ Exec=keepassxc %f
|
||||
TryExec=keepassxc
|
||||
Icon=@APP_ICON_NAME@
|
||||
StartupWMClass=keepassxc
|
||||
StartupNotify=true
|
||||
StartupNotify=false
|
||||
Terminal=false
|
||||
Type=Application
|
||||
Version=1.5
|
||||
|
||||
@@ -157,6 +157,25 @@
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>AppKit</name>
|
||||
<message>
|
||||
<source>Window</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Minimize</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Zoom</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Bring All to Front</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
</context>
|
||||
<context>
|
||||
<name>ApplicationSettingsWidget</name>
|
||||
<message>
|
||||
@@ -561,10 +580,6 @@
|
||||
<source>Export settings…</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open browser on double clicking URL field in entry view</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Font size:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
@@ -577,6 +592,26 @@
|
||||
<source>Skip confirmation for main window Auto-Type actions</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Double-click action for URL:</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Double-click action for URL field</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Edit entry</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Open entry URL in browser</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Copy entry URL to clipboard</source>
|
||||
<translation type="unfinished"></translation>
|
||||
</message>
|
||||
<message>
|
||||
<source>Auto-generate password for new entries</source>
|
||||
<translation type="unfinished"></translation>
|
||||
|
||||
@@ -372,16 +372,30 @@ bool NativeMessageInstaller::createNativeMessageFile(SupportedBrowsers browser)
|
||||
|
||||
QFile scriptFile(path);
|
||||
if (!scriptFile.open(QIODevice::WriteOnly)) {
|
||||
qWarning() << "Browser Plugin: Failed to open native message file for writing at " << scriptFile.fileName();
|
||||
if (!scriptFile.open(QIODevice::ReadOnly)) {
|
||||
qWarning() << "Browser Plugin: Failed to open native message file at " << scriptFile.fileName();
|
||||
qWarning() << scriptFile.errorString();
|
||||
return false;
|
||||
}
|
||||
|
||||
// We failed to write to `scriptFile`, but we can read it, so we assume that it's a read-only file.
|
||||
// Consider success if the read-only file already contains the content we would have written.
|
||||
QJsonDocument expectedDoc(constructFile(browser));
|
||||
QJsonDocument actualDoc = QJsonDocument::fromJson(scriptFile.readAll());
|
||||
|
||||
if (expectedDoc != actualDoc) {
|
||||
qWarning() << "Browser Plugin: Unexpected (read-only) native message file at " << scriptFile.fileName();
|
||||
qWarning() << "Expected contents: " << expectedDoc;
|
||||
return false;
|
||||
}
|
||||
} else {
|
||||
QJsonDocument doc(constructFile(browser));
|
||||
if (scriptFile.write(doc.toJson()) < 0) {
|
||||
qWarning() << "Browser Plugin: Failed to write native message file at " << scriptFile.fileName();
|
||||
qWarning() << scriptFile.errorString();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -105,7 +105,9 @@ namespace Utils
|
||||
SetConsoleMode(hIn, mode);
|
||||
#else
|
||||
struct termios t;
|
||||
tcgetattr(STDIN_FILENO, &t);
|
||||
if (tcgetattr(STDIN_FILENO, &t) < 0) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (enable) {
|
||||
t.c_lflag |= ECHO;
|
||||
|
||||
@@ -67,6 +67,7 @@ static const QHash<Config::ConfigKey, ConfigDirective> configStrings = {
|
||||
{Config::SearchLimitGroup,{QS("SearchLimitGroup"), Roaming, false}},
|
||||
{Config::MinimizeOnOpenUrl,{QS("MinimizeOnOpenUrl"), Roaming, false}},
|
||||
{Config::OpenURLOnDoubleClick, {QS("OpenURLOnDoubleClick"), Roaming, true}},
|
||||
{Config::URLDoubleClickAction, {QS("URLDoubleClickAction"), Roaming, 0}},
|
||||
{Config::HideWindowOnCopy,{QS("HideWindowOnCopy"), Roaming, false}},
|
||||
{Config::MinimizeOnCopy,{QS("MinimizeOnCopy"), Roaming, true}},
|
||||
{Config::AutoGeneratePasswordForNewEntries,{QS("AutoGeneratePasswordForNewEntries"), Roaming, false}},
|
||||
@@ -118,6 +119,7 @@ static const QHash<Config::ConfigKey, ConfigDirective> configStrings = {
|
||||
{Config::GUI_CheckForUpdates, {QS("GUI/CheckForUpdates"), Roaming, true}},
|
||||
{Config::GUI_CheckForUpdatesNextCheck, {QS("GUI/CheckForUpdatesNextCheck"), Local, 0}},
|
||||
{Config::GUI_CheckForUpdatesIncludeBetas, {QS("GUI/CheckForUpdatesIncludeBetas"), Roaming, false}},
|
||||
{Config::GUI_SearchWaitForEnter, {QS("GUI/SearchWaitForEnter"), Roaming, false}},
|
||||
{Config::GUI_ShowExpiredEntriesOnDatabaseUnlock, {QS("GUI/ShowExpiredEntriesOnDatabaseUnlock"), Roaming, true}},
|
||||
{Config::GUI_ShowExpiredEntriesOnDatabaseUnlockOffsetDays, {QS("GUI/ShowExpiredEntriesOnDatabaseUnlockOffsetDays"), Roaming, 3}},
|
||||
{Config::GUI_FontSizeOffset, {QS("GUI/FontSizeOffset"), Local, 0}},
|
||||
@@ -491,6 +493,15 @@ void Config::migrate()
|
||||
remove(GUI_ListViewState);
|
||||
}
|
||||
|
||||
// Migrate from boolean OpenURLOnDoubleClick to enum URLDoubleClickAction
|
||||
if (m_settings->contains(configStrings[OpenURLOnDoubleClick].name)
|
||||
&& !m_settings->contains(configStrings[URLDoubleClickAction].name)) {
|
||||
bool openUrlOnDoubleClick = get(OpenURLOnDoubleClick).toBool();
|
||||
// Convert: true (open browser) -> 0, false (edit entry) -> 2
|
||||
set(URLDoubleClickAction, openUrlOnDoubleClick ? 0 : 2);
|
||||
// Keep the old setting for now for compatibility
|
||||
}
|
||||
|
||||
m_settings->setValue("ConfigVersion", CONFIG_VERSION);
|
||||
sync();
|
||||
}
|
||||
|
||||
@@ -50,6 +50,7 @@ public:
|
||||
SearchLimitGroup,
|
||||
MinimizeOnOpenUrl,
|
||||
OpenURLOnDoubleClick,
|
||||
URLDoubleClickAction,
|
||||
HideWindowOnCopy,
|
||||
MinimizeOnCopy,
|
||||
MinimizeAfterUnlock,
|
||||
@@ -99,7 +100,7 @@ public:
|
||||
GUI_CompactMode,
|
||||
GUI_CheckForUpdates,
|
||||
GUI_CheckForUpdatesIncludeBetas,
|
||||
SearchWaitForEnter,
|
||||
GUI_SearchWaitForEnter,
|
||||
GUI_ShowExpiredEntriesOnDatabaseUnlock,
|
||||
GUI_ShowExpiredEntriesOnDatabaseUnlockOffsetDays,
|
||||
GUI_FontSizeOffset,
|
||||
|
||||
@@ -334,12 +334,15 @@ QList<QString> Entry::autoTypeSequences(const QString& windowTitle) const
|
||||
};
|
||||
|
||||
QList<QString> sequenceList;
|
||||
QList<QString> emptyWindowSequences;
|
||||
|
||||
// Add window association matches
|
||||
const auto assocList = autoTypeAssociations()->getAll();
|
||||
for (const auto& assoc : assocList) {
|
||||
auto window = resolveMultiplePlaceholders(assoc.window);
|
||||
if (!assoc.window.isEmpty() && windowMatches(window)) {
|
||||
if (assoc.window.isEmpty()) {
|
||||
emptyWindowSequences << assoc.sequence;
|
||||
} else if (windowMatches(window)) {
|
||||
if (!assoc.sequence.isEmpty()) {
|
||||
sequenceList << assoc.sequence;
|
||||
} else {
|
||||
@@ -358,6 +361,11 @@ QList<QString> Entry::autoTypeSequences(const QString& windowTitle) const
|
||||
sequenceList << effectiveAutoTypeSequence();
|
||||
}
|
||||
|
||||
// If any associations were made, include the empty window associations
|
||||
if (!sequenceList.isEmpty()) {
|
||||
sequenceList.append(emptyWindowSequences);
|
||||
}
|
||||
|
||||
return sequenceList;
|
||||
}
|
||||
|
||||
|
||||
@@ -426,6 +426,29 @@ namespace Tools
|
||||
return filename.trimmed();
|
||||
}
|
||||
|
||||
QString cleanUsername()
|
||||
{
|
||||
#if defined(Q_OS_WIN)
|
||||
QString userName = qgetenv("USERNAME");
|
||||
if (userName.isEmpty()) {
|
||||
userName = qgetenv("USER");
|
||||
}
|
||||
#else
|
||||
QString userName = qgetenv("USER");
|
||||
if (userName.isEmpty()) {
|
||||
userName = qgetenv("USERNAME");
|
||||
}
|
||||
#endif
|
||||
// Sanitize username for file safety
|
||||
userName = userName.trimmed();
|
||||
// Replace <>:"/\|?* with _
|
||||
userName.replace(QRegularExpression(R"([<>:\"\/\\|?*])"), "_");
|
||||
// Remove trailing dots and spaces
|
||||
userName.replace(QRegularExpression(R"([.\s]+$)"), "");
|
||||
|
||||
return userName;
|
||||
}
|
||||
|
||||
QVariantMap qo2qvm(const QObject* object, const QStringList& ignoredProperties)
|
||||
{
|
||||
QVariantMap result;
|
||||
|
||||
@@ -48,6 +48,7 @@ namespace Tools
|
||||
QString envSubstitute(const QString& filepath,
|
||||
QProcessEnvironment environment = QProcessEnvironment::systemEnvironment());
|
||||
QString cleanFilename(QString filename);
|
||||
QString cleanUsername();
|
||||
|
||||
template <class T> QSet<T> asSet(const QList<T>& a)
|
||||
{
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
#include "Application.h"
|
||||
|
||||
#include "core/Bootstrap.h"
|
||||
#include "core/Tools.h"
|
||||
#include "gui/MainWindow.h"
|
||||
#include "gui/MessageBox.h"
|
||||
#include "gui/osutils/OSUtils.h"
|
||||
@@ -31,6 +32,7 @@
|
||||
#include <QLocalSocket>
|
||||
#include <QLockFile>
|
||||
#include <QPixmapCache>
|
||||
#include <QRegularExpression>
|
||||
#include <QSocketNotifier>
|
||||
#include <QStandardPaths>
|
||||
|
||||
@@ -63,20 +65,19 @@ Application::Application(int& argc, char** argv)
|
||||
registerUnixSignals();
|
||||
#endif
|
||||
|
||||
QString userName = qgetenv("USER");
|
||||
if (userName.isEmpty()) {
|
||||
userName = qgetenv("USERNAME");
|
||||
}
|
||||
QString identifier = "keepassxc";
|
||||
if (!userName.isEmpty()) {
|
||||
identifier += "-" + userName;
|
||||
// Build identifier
|
||||
auto identifier = QStringLiteral("keepassxc");
|
||||
auto username = Tools::cleanUsername();
|
||||
if (!username.isEmpty()) {
|
||||
identifier += QChar('-') + username;
|
||||
}
|
||||
#ifdef QT_DEBUG
|
||||
// In DEBUG mode don't interfere with Release instances
|
||||
identifier += "-DEBUG";
|
||||
// In DEBUG mode don’t interfere with Release instances
|
||||
identifier += QStringLiteral("-DEBUG");
|
||||
#endif
|
||||
QString lockName = identifier + ".lock";
|
||||
m_socketName = identifier + ".socket";
|
||||
|
||||
QString lockName = identifier + QStringLiteral(".lock");
|
||||
m_socketName = identifier + QStringLiteral(".socket");
|
||||
|
||||
// According to documentation we should use RuntimeLocation on *nixes, but even Qt doesn't respect
|
||||
// this and creates sockets in TempLocation, so let's be consistent.
|
||||
|
||||
@@ -211,7 +211,7 @@ void ApplicationSettingsWidget::loadSettings()
|
||||
m_generalUi->autoReloadOnChangeCheckBox->setChecked(config()->get(Config::AutoReloadOnChange).toBool());
|
||||
m_generalUi->minimizeAfterUnlockCheckBox->setChecked(config()->get(Config::MinimizeAfterUnlock).toBool());
|
||||
m_generalUi->minimizeOnOpenUrlCheckBox->setChecked(config()->get(Config::MinimizeOnOpenUrl).toBool());
|
||||
m_generalUi->openUrlOnDoubleClick->setChecked(config()->get(Config::OpenURLOnDoubleClick).toBool());
|
||||
m_generalUi->urlDoubleClickComboBox->setCurrentIndex(config()->get(Config::URLDoubleClickAction).toInt());
|
||||
m_generalUi->hideWindowOnCopyCheckBox->setChecked(config()->get(Config::HideWindowOnCopy).toBool());
|
||||
hideWindowOnCopyCheckBoxToggled(m_generalUi->hideWindowOnCopyCheckBox->isChecked());
|
||||
m_generalUi->minimizeOnCopyRadioButton->setChecked(config()->get(Config::MinimizeOnCopy).toBool());
|
||||
@@ -389,7 +389,7 @@ void ApplicationSettingsWidget::saveSettings()
|
||||
config()->set(Config::AutoReloadOnChange, m_generalUi->autoReloadOnChangeCheckBox->isChecked());
|
||||
config()->set(Config::MinimizeAfterUnlock, m_generalUi->minimizeAfterUnlockCheckBox->isChecked());
|
||||
config()->set(Config::MinimizeOnOpenUrl, m_generalUi->minimizeOnOpenUrlCheckBox->isChecked());
|
||||
config()->set(Config::OpenURLOnDoubleClick, m_generalUi->openUrlOnDoubleClick->isChecked());
|
||||
config()->set(Config::URLDoubleClickAction, m_generalUi->urlDoubleClickComboBox->currentIndex());
|
||||
config()->set(Config::HideWindowOnCopy, m_generalUi->hideWindowOnCopyCheckBox->isChecked());
|
||||
config()->set(Config::MinimizeOnCopy, m_generalUi->minimizeOnCopyRadioButton->isChecked());
|
||||
config()->set(Config::DropToBackgroundOnCopy, m_generalUi->dropToBackgroundOnCopyRadioButton->isChecked());
|
||||
|
||||
@@ -554,15 +554,60 @@
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="openUrlOnDoubleClick">
|
||||
<layout class="QHBoxLayout" name="urlDoubleClickLayout">
|
||||
<item>
|
||||
<widget class="QLabel" name="urlDoubleClickLabel">
|
||||
<property name="text">
|
||||
<string>Open browser on double clicking URL field in entry view</string>
|
||||
<string>Double-click action for URL:</string>
|
||||
</property>
|
||||
<property name="checked">
|
||||
<bool>true</bool>
|
||||
<property name="buddy">
|
||||
<cstring>urlDoubleClickComboBox</cstring>
|
||||
</property>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QComboBox" name="urlDoubleClickComboBox">
|
||||
<property name="focusPolicy">
|
||||
<enum>Qt::StrongFocus</enum>
|
||||
</property>
|
||||
<property name="accessibleName">
|
||||
<string>Double-click action for URL field</string>
|
||||
</property>
|
||||
<property name="sizeAdjustPolicy">
|
||||
<enum>QComboBox::AdjustToContents</enum>
|
||||
</property>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Open entry URL in browser</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Copy entry URL to clipboard</string>
|
||||
</property>
|
||||
</item>
|
||||
<item>
|
||||
<property name="text">
|
||||
<string>Edit entry</string>
|
||||
</property>
|
||||
</item>
|
||||
</widget>
|
||||
</item>
|
||||
<item>
|
||||
<spacer name="urlDoubleClickSpacer">
|
||||
<property name="orientation">
|
||||
<enum>Qt::Horizontal</enum>
|
||||
</property>
|
||||
<property name="sizeHint" stdset="0">
|
||||
<size>
|
||||
<width>40</width>
|
||||
<height>20</height>
|
||||
</size>
|
||||
</property>
|
||||
</spacer>
|
||||
</item>
|
||||
</layout>
|
||||
</item>
|
||||
<item>
|
||||
<widget class="QCheckBox" name="useGroupIconOnEntryCreationCheckBox">
|
||||
<property name="text">
|
||||
@@ -1439,7 +1484,7 @@
|
||||
<tabstop>alternativeSaveComboBox</tabstop>
|
||||
<tabstop>ConfirmMoveEntryToRecycleBinCheckBox</tabstop>
|
||||
<tabstop>EnableCopyOnDoubleClickCheckBox</tabstop>
|
||||
<tabstop>openUrlOnDoubleClick</tabstop>
|
||||
<tabstop>urlDoubleClickComboBox</tabstop>
|
||||
<tabstop>useGroupIconOnEntryCreationCheckBox</tabstop>
|
||||
<tabstop>minimizeOnOpenUrlCheckBox</tabstop>
|
||||
<tabstop>hideWindowOnCopyCheckBox</tabstop>
|
||||
|
||||
@@ -1583,12 +1583,21 @@ void DatabaseWidget::entryActivationSignalReceived(Entry* entry, EntryModel::Mod
|
||||
// case EntryModel::Attachments:
|
||||
// break;
|
||||
case EntryModel::Url:
|
||||
if (!entry->url().isEmpty() && config()->get(Config::OpenURLOnDoubleClick).toBool()) {
|
||||
if (!entry->url().isEmpty()) {
|
||||
switch (config()->get(Config::URLDoubleClickAction).toInt()) {
|
||||
case 2: // Edit entry
|
||||
switchToEntryEdit(entry);
|
||||
break;
|
||||
case 1: // Copy entry URL to clipboard
|
||||
setClipboardTextAndMinimize(entry->resolveMultiplePlaceholders(entry->url()));
|
||||
break;
|
||||
case 0: // Open entry URL in browser (default)
|
||||
default:
|
||||
openUrlForEntry(entry);
|
||||
break;
|
||||
}
|
||||
// Note, order matters here. We want to fall into the default case.
|
||||
[[fallthrough]];
|
||||
}
|
||||
break;
|
||||
default:
|
||||
switchToEntryEdit(entry);
|
||||
}
|
||||
|
||||
@@ -93,6 +93,10 @@ MainWindow::MainWindow()
|
||||
|
||||
m_ui->setupUi(this);
|
||||
|
||||
#ifdef Q_OS_MACOS
|
||||
macUtils()->configureWindowAndHelpMenus(this, m_ui->menuHelp);
|
||||
#endif
|
||||
|
||||
#if defined(Q_OS_UNIX) && !defined(Q_OS_MACOS) && !defined(QT_NO_DBUS)
|
||||
new MainWindowAdaptor(this);
|
||||
QDBusConnection dbus = QDBusConnection::sessionBus();
|
||||
|
||||
@@ -72,10 +72,10 @@ SearchWidget::SearchWidget(QWidget* parent)
|
||||
m_actionLimitGroup->setChecked(config()->get(Config::SearchLimitGroup).toBool());
|
||||
|
||||
m_actionWaitForEnter = m_searchMenu->addAction(
|
||||
tr("Press Enter to search"), this, [](bool state) { config()->set(Config::SearchWaitForEnter, state); });
|
||||
tr("Press Enter to search"), this, [](bool state) { config()->set(Config::GUI_SearchWaitForEnter, state); });
|
||||
m_actionWaitForEnter->setObjectName("actionSearchWaitForEnter");
|
||||
m_actionWaitForEnter->setCheckable(true);
|
||||
m_actionWaitForEnter->setChecked(config()->get(Config::SearchWaitForEnter).toBool());
|
||||
m_actionWaitForEnter->setChecked(config()->get(Config::GUI_SearchWaitForEnter).toBool());
|
||||
|
||||
m_ui->searchIcon->setIcon(icons()->icon("system-search"));
|
||||
m_ui->searchEdit->addAction(m_ui->searchIcon, QLineEdit::LeadingPosition);
|
||||
|
||||
@@ -21,6 +21,8 @@
|
||||
|
||||
#include <QColor>
|
||||
#include <QObject>
|
||||
#include <QMenu>
|
||||
#include <QMainWindow>
|
||||
#include <unistd.h>
|
||||
|
||||
class QWindow;
|
||||
@@ -45,6 +47,7 @@ public:
|
||||
bool enableScreenRecording();
|
||||
void toggleForegroundApp(bool foreground);
|
||||
void setWindowSecurity(QWindow* window, bool state);
|
||||
void configureWindowAndHelpMenus(QMainWindow* mainWindow, QMenu* helpMenu);
|
||||
|
||||
signals:
|
||||
void userSwitched();
|
||||
|
||||
@@ -42,5 +42,6 @@
|
||||
- (bool) enableScreenRecording;
|
||||
- (void) toggleForegroundApp:(bool) foreground;
|
||||
- (void) setWindowSecurity:(NSWindow*) window state:(bool) state;
|
||||
- (void) configureWindowAndHelpMenus:(QMainWindow*) mainWindow helpMenu:(QMenu*) helpMenu;
|
||||
|
||||
@end
|
||||
|
||||
@@ -18,6 +18,8 @@
|
||||
|
||||
#import "AppKitImpl.h"
|
||||
#import <QWindow>
|
||||
#import <QMenu>
|
||||
#import <QMenuBar>
|
||||
#import <Cocoa/Cocoa.h>
|
||||
#if __clang_major__ >= 13 && MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_VERSION_12_3
|
||||
#import <ScreenCaptureKit/ScreenCaptureKit.h>
|
||||
@@ -231,8 +233,29 @@
|
||||
[window setSharingType: state ? NSWindowSharingNone : NSWindowSharingReadOnly];
|
||||
}
|
||||
|
||||
- (void) configureWindowAndHelpMenus:(QMainWindow*) mainWindow helpMenu:(QMenu*) helpMenu
|
||||
{
|
||||
QMenu *qtWindowMenu = new QMenu(AppKit::tr("Window"));
|
||||
NSMenu *nsWindowMenu = qtWindowMenu->toNSMenu();
|
||||
|
||||
QString minimizeStr = AppKit::tr("Minimize");
|
||||
[nsWindowMenu addItemWithTitle:minimizeStr.toNSString() action:@selector(performMiniaturize:) keyEquivalent:@""];
|
||||
QString zoomStr = AppKit::tr("Zoom");
|
||||
[nsWindowMenu addItemWithTitle:zoomStr.toNSString() action:@selector(performZoom:) keyEquivalent:@""];
|
||||
[nsWindowMenu addItem:[NSMenuItem separatorItem]];
|
||||
QString bringAllToFrontStr = AppKit::tr("Bring All to Front");
|
||||
[nsWindowMenu addItemWithTitle:bringAllToFrontStr.toNSString() action:@selector(arrangeInFront:) keyEquivalent:@""];
|
||||
|
||||
NSApp.windowsMenu = nsWindowMenu;
|
||||
|
||||
mainWindow->menuBar()->insertMenu(helpMenu->menuAction(), qtWindowMenu);
|
||||
|
||||
NSApp.helpMenu = helpMenu->toNSMenu();
|
||||
}
|
||||
|
||||
@end
|
||||
|
||||
|
||||
//
|
||||
// ------------------------- C++ Trampolines -------------------------
|
||||
//
|
||||
@@ -312,3 +335,8 @@ void AppKit::setWindowSecurity(QWindow* window, bool state)
|
||||
auto view = reinterpret_cast<NSView*>(window->winId());
|
||||
[static_cast<id>(self) setWindowSecurity:view.window state:state];
|
||||
}
|
||||
|
||||
void AppKit::configureWindowAndHelpMenus(QMainWindow* window, QMenu* helpMenu)
|
||||
{
|
||||
[static_cast<id>(self) configureWindowAndHelpMenus:window helpMenu:helpMenu];
|
||||
}
|
||||
|
||||
@@ -24,6 +24,7 @@
|
||||
#include <QStandardPaths>
|
||||
#include <QTimer>
|
||||
#include <QWindow>
|
||||
#include <QMenu>
|
||||
|
||||
#include <ApplicationServices/ApplicationServices.h>
|
||||
|
||||
@@ -202,6 +203,11 @@ void MacUtils::registerNativeEventFilter()
|
||||
::InstallApplicationEventHandler(MacUtils::hotkeyHandler, 1, &eventSpec, this, nullptr);
|
||||
}
|
||||
|
||||
void MacUtils::configureWindowAndHelpMenus(QMainWindow* mainWindow, QMenu* helpMenu)
|
||||
{
|
||||
return m_appkit->configureWindowAndHelpMenus(mainWindow, helpMenu);
|
||||
}
|
||||
|
||||
bool MacUtils::registerGlobalShortcut(const QString& name, Qt::Key key, Qt::KeyboardModifiers modifiers, QString* error)
|
||||
{
|
||||
auto keycode = qtToNativeKeyCode(key);
|
||||
|
||||
@@ -54,6 +54,8 @@ public:
|
||||
|
||||
void registerNativeEventFilter() override;
|
||||
|
||||
void configureWindowAndHelpMenus(QMainWindow* mainWindow, QMenu* helpMenu);
|
||||
|
||||
bool registerGlobalShortcut(const QString& name,
|
||||
Qt::Key key,
|
||||
Qt::KeyboardModifiers modifiers,
|
||||
|
||||
@@ -156,7 +156,7 @@ void NixUtils::setLaunchAtStartup(bool enable)
|
||||
<< QStringLiteral("TryExec=") << executeablePathOrName << '\n'
|
||||
<< QStringLiteral("Icon=") << QApplication::applicationName().toLower() << '\n'
|
||||
<< QStringLiteral("StartupWMClass=keepassxc") << '\n'
|
||||
<< QStringLiteral("StartupNotify=true") << '\n'
|
||||
<< QStringLiteral("StartupNotify=false") << '\n'
|
||||
<< QStringLiteral("Terminal=false") << '\n'
|
||||
<< QStringLiteral("Type=Application") << '\n'
|
||||
<< QStringLiteral("Version=1.0") << '\n'
|
||||
|
||||
@@ -56,9 +56,9 @@ namespace
|
||||
// but those cases with high probability constructed examples and very rare in real usage
|
||||
const auto* sourceReference = sourceDb->rootGroup()->findEntryByUuid(targetEntry->uuid());
|
||||
const auto resolvedValue = sourceReference->resolveMultiplePlaceholders(standardValue);
|
||||
targetEntry->setUpdateTimeinfo(false);
|
||||
targetEntry->beginUpdate();
|
||||
targetEntry->attributes()->set(attribute, resolvedValue, targetEntry->attributes()->isProtected(attribute));
|
||||
targetEntry->setUpdateTimeinfo(true);
|
||||
targetEntry->endUpdate();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -125,6 +125,20 @@ void TestAutoType::init()
|
||||
m_entry5->setPassword("example5");
|
||||
m_entry5->setTitle("some title");
|
||||
m_entry5->setUrl("http://example.org");
|
||||
|
||||
m_entry6 = new Entry();
|
||||
m_entry6->setGroup(m_group);
|
||||
m_entry6->setPassword("example6");
|
||||
m_entry6->setTitle("empty window test");
|
||||
association.window = "";
|
||||
association.sequence = "{S:Empty Window}";
|
||||
m_entry6->autoTypeAssociations()->add(association);
|
||||
association.window = "non-matching window";
|
||||
association.sequence = "should not match";
|
||||
m_entry6->autoTypeAssociations()->add(association);
|
||||
association.window = "*notepad*";
|
||||
association.sequence = "{USERNAME}";
|
||||
m_entry6->autoTypeAssociations()->add(association);
|
||||
}
|
||||
|
||||
void TestAutoType::cleanup()
|
||||
@@ -446,3 +460,13 @@ void TestAutoType::testAutoTypeEffectiveSequences()
|
||||
QCOMPARE(entry6->defaultAutoTypeSequence(), sequenceOrphan);
|
||||
QCOMPARE(entry6->effectiveAutoTypeSequence(), QString());
|
||||
}
|
||||
|
||||
void TestAutoType::testAutoTypeEmptyWindowAssociation()
|
||||
{
|
||||
auto assoc = m_entry6->autoTypeSequences("Windows Notepad");
|
||||
QCOMPARE(assoc.size(), 2);
|
||||
QVERIFY(assoc.contains("{S:Empty Window}"));
|
||||
|
||||
assoc = m_entry6->autoTypeSequences("Some Other Window");
|
||||
QVERIFY(assoc.isEmpty());
|
||||
}
|
||||
|
||||
@@ -51,6 +51,7 @@ private slots:
|
||||
void testAutoTypeResults_data();
|
||||
void testAutoTypeSyntaxChecks();
|
||||
void testAutoTypeEffectiveSequences();
|
||||
void testAutoTypeEmptyWindowAssociation();
|
||||
|
||||
private:
|
||||
AutoTypePlatformInterface* m_platform;
|
||||
@@ -64,6 +65,7 @@ private:
|
||||
Entry* m_entry3;
|
||||
Entry* m_entry4;
|
||||
Entry* m_entry5;
|
||||
Entry* m_entry6;
|
||||
};
|
||||
|
||||
#endif // KEEPASSX_TESTAUTOTYPE_H
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
|
||||
#include "TestConfig.h"
|
||||
|
||||
#include <QSettings>
|
||||
#include <QTest>
|
||||
|
||||
#include "config-keepassx-tests.h"
|
||||
@@ -40,3 +41,39 @@ void TestConfig::testUpgrade()
|
||||
|
||||
tempFile.remove();
|
||||
}
|
||||
|
||||
void TestConfig::testURLDoubleClickMigration()
|
||||
{
|
||||
// Test migration from OpenURLOnDoubleClick to URLDoubleClickAction
|
||||
TemporaryFile tempFile;
|
||||
tempFile.open();
|
||||
|
||||
// Create a config with old setting = true (open browser)
|
||||
QSettings oldConfig(tempFile.fileName(), QSettings::IniFormat);
|
||||
oldConfig.setValue("OpenURLOnDoubleClick", true);
|
||||
oldConfig.sync();
|
||||
tempFile.close();
|
||||
|
||||
Config::createConfigFromFile(tempFile.fileName());
|
||||
|
||||
// Should migrate to URLDoubleClickAction = 0 (open browser)
|
||||
QCOMPARE(config()->get(Config::URLDoubleClickAction).toInt(), 0);
|
||||
|
||||
tempFile.remove();
|
||||
|
||||
// Test migration from OpenURLOnDoubleClick = false (edit entry)
|
||||
TemporaryFile tempFile2;
|
||||
tempFile2.open();
|
||||
|
||||
QSettings oldConfig2(tempFile2.fileName(), QSettings::IniFormat);
|
||||
oldConfig2.setValue("OpenURLOnDoubleClick", false);
|
||||
oldConfig2.sync();
|
||||
tempFile2.close();
|
||||
|
||||
Config::createConfigFromFile(tempFile2.fileName());
|
||||
|
||||
// Should migrate to URLDoubleClickAction = 2 (edit entry)
|
||||
QCOMPARE(config()->get(Config::URLDoubleClickAction).toInt(), 2);
|
||||
|
||||
tempFile2.remove();
|
||||
}
|
||||
|
||||
@@ -25,6 +25,7 @@ class TestConfig : public QObject
|
||||
Q_OBJECT
|
||||
private slots:
|
||||
void testUpgrade();
|
||||
void testURLDoubleClickMigration();
|
||||
};
|
||||
|
||||
#endif // KEEPASSX_TESTCONFIG_H
|
||||
|
||||
@@ -428,3 +428,26 @@ void TestTools::testIsTextMimeType()
|
||||
QVERIFY(!Tools::isTextMimeType(noText));
|
||||
}
|
||||
}
|
||||
|
||||
// Test sanitization logic for Tools::cleanUsername
|
||||
void TestTools::testCleanUsername()
|
||||
{
|
||||
// Test vars
|
||||
QFETCH(QString, input);
|
||||
QFETCH(QString, expected);
|
||||
|
||||
qputenv("USER", input.toUtf8());
|
||||
qputenv("USERNAME", input.toUtf8());
|
||||
QCOMPARE(Tools::cleanUsername(), expected);
|
||||
}
|
||||
|
||||
void TestTools::testCleanUsername_data()
|
||||
{
|
||||
QTest::addColumn<QString>("input");
|
||||
QTest::addColumn<QString>("expected");
|
||||
|
||||
QTest::newRow("Leading and trailing spaces") << " user " << "user";
|
||||
QTest::newRow("Special characters") << R"(user<>:"/\|?*name)" << "user_________name";
|
||||
QTest::newRow("Trailing dots and spaces") << "username... " << "username";
|
||||
QTest::newRow("Combination of issues") << R"( user<>:"/\|?*name... )" << "user_________name";
|
||||
}
|
||||
|
||||
@@ -41,6 +41,8 @@ private slots:
|
||||
void testGetMimeType();
|
||||
void testGetMimeTypeByFileInfo();
|
||||
void testIsTextMimeType();
|
||||
void testCleanUsername();
|
||||
void testCleanUsername_data();
|
||||
};
|
||||
|
||||
#endif // KEEPASSX_TESTTOOLS_H
|
||||
|
||||
Reference in New Issue
Block a user