<component type="desktop-application">
<id>com.github.paolostivanin.OTPClient.desktop</id>
<name>OTPClient</name>
<summary>Application for managing TOTP/HOTP tokens with built-in encryption</summary>
<project_license>GPL-3.0+</project_license>
<developer_name>Paolo Stivanin</developer_name>
<description>
<p>Highly secure and easy to use OTP client written in C/GTK3 that supports both TOTP and HOTP and has the following features:</p>
<ul>
<li>integration with the OS' secret service provider via libsecret</li>
<li>support both TOTP and HOTP</li>
<li>support setting custom digits (between 4 and 10 inclusive)</li>
<li>support setting a custom period (between 10 and 120 seconds inclusive)</li>
<li>support SHA1, SHA256 and SHA512 algorithms</li>
<li>support for Steam codes</li>
<li>import and export encrypted/plain andOTP backup</li>
<li>import and export encrypted/plain Aegis backup</li>
<li>import and export plain FreeOTPPlus backup (key URI format only)</li>
<li>import of Google's migration QR codes</li>
<li>local database is encrypted using AES256-GCM (PBKDF2 with SHA512 and 100k iterations) and, while decrypted, it's stored in a secure memory area allocated by GCrypt.</li>
</ul>
</description>
<pkgname>otpclient</pkgname>
<launchable type="desktop-id">com.github.paolostivanin.OTPClient.desktop</launchable>
<icon type="remote" width="48" height="48">com/github/paolostivanin.OTPClient.desktop/6cd145edc16b400782b6692ca05b58ce/icons/48x48/otpclient_com.github.paolostivanin.OTPClient.png</icon>
<icon type="cached" width="64" height="64">otpclient_com.github.paolostivanin.OTPClient.png</icon>
<icon type="remote" width="64" height="64">com/github/paolostivanin.OTPClient.desktop/6cd145edc16b400782b6692ca05b58ce/icons/64x64/otpclient_com.github.paolostivanin.OTPClient.png</icon>
<icon type="remote" width="128" height="128">com/github/paolostivanin.OTPClient.desktop/6cd145edc16b400782b6692ca05b58ce/icons/128x128/otpclient_com.github.paolostivanin.OTPClient.png</icon>
<icon type="stock">com.github.paolostivanin.OTPClient</icon>
<url type="homepage">https://github.com/paolostivanin/OTPClient</url>
<url type="bugtracker">https://github.com/paolostivanin/OTPClient/issues</url>
<categories>
<category>System</category>
<category>Security</category>
</categories>
<provides>
<binary>otpclient</binary>
</provides>
<screenshots>
<screenshot type="default">
<caption>Empty main window</caption>
<image type="source" width="501" height="590">com/github/paolostivanin.OTPClient.desktop/6cd145edc16b400782b6692ca05b58ce/screenshots/image-1_orig.png</image>
<image type="thumbnail" width="224" height="263">com/github/paolostivanin.OTPClient.desktop/6cd145edc16b400782b6692ca05b58ce/screenshots/image-1_224x263.png</image>
</screenshot>
<screenshot>
<caption>Add menu</caption>
<image type="source" width="501" height="590">com/github/paolostivanin.OTPClient.desktop/6cd145edc16b400782b6692ca05b58ce/screenshots/image-2_orig.png</image>
<image type="thumbnail" width="224" height="263">com/github/paolostivanin.OTPClient.desktop/6cd145edc16b400782b6692ca05b58ce/screenshots/image-2_224x263.png</image>
</screenshot>
<screenshot>
<caption>General menu</caption>
<image type="source" width="501" height="590">com/github/paolostivanin.OTPClient.desktop/6cd145edc16b400782b6692ca05b58ce/screenshots/image-3_orig.png</image>
<image type="thumbnail" width="224" height="263">com/github/paolostivanin.OTPClient.desktop/6cd145edc16b400782b6692ca05b58ce/screenshots/image-3_224x263.png</image>
</screenshot>
<screenshot>
<caption>Settings menu</caption>
<image type="source" width="352" height="405">com/github/paolostivanin.OTPClient.desktop/6cd145edc16b400782b6692ca05b58ce/screenshots/image-4_orig.png</image>
<image type="thumbnail" width="224" height="257">com/github/paolostivanin.OTPClient.desktop/6cd145edc16b400782b6692ca05b58ce/screenshots/image-4_224x257.png</image>
</screenshot>
</screenshots>
<keywords>
<keyword>otp</keyword>
<keyword>totp</keyword>
<keyword>hotp</keyword>
<keyword>2fa</keyword>
<keyword>2factor</keyword>
<keyword>2fa-client</keyword>
<keyword>2step</keyword>
<keyword>twostep</keyword>
</keywords>
<releases>
<release type="stable" version="4.2.0" timestamp="1766448000">
<description>
<p>OTPClient 4.2.0 the followin improvements:</p>
<ul>
<li>ADDED: interactive search (ctrl-f)</li>
<li>IMPROVED: search now matches query against type, account label, and issuer uniformly</li>
<li>IMPROVED: Streamlined treeview model population to read JSON directly with safe defaults</li>
<li>IMPROVED: Simplified OTP update flow and tightened reorder/delete safety and cleanup</li>
<li>IMPROVED: Centralized app/db default initialization and early cleanup paths in app.c</li>
<li>IMPROVED: Tightened error handling by clearing config migration errors and freeing the config path</li>
<li>IMPROVED: Made early-exit cleanup safer by avoiding double-freeing the database key</li>
<li>IMPROVED: Added a helper to clear password entries and reset visibility on successful submit</li>
<li>IMPROVED: Cleared old/new password fields before the dialog closes to avoid brief exposure</li>
<li>IMPROVED: Initialized settings defaults when the config load fails and persisted them to otpclient.cfg</li>
<li>IMPROVED: Added warning dialog only when saving fallback defaults fails</li>
<li>IMPROVED: cli: improve robustness and correctness in string and file handling</li>
<li>FIXED: duplicate windows and tray icons on re-activation (#409)</li>
</ul>
</description>
</release>
<release type="stable" version="4.1.1" timestamp="1747094400">
<description>
<p>OTPClient 4.1.1 the following improvements:</p>
<ul>
<li>FIXED: build issue on Flatpak</li>
</ul>
</description>
</release>
<release type="stable" version="4.1.0" timestamp="1746576000">
<description>
<p>OTPClient 4.1.0 the following improvements:</p>
<ul>
<li>ADDED: minimize to tray with ayatana-appindicator3 (#386 thanks a lot @len-foss)</li>
<li>IMPROVED: only show memlock warning dialog when secure memory is unavailable (#397)</li>
<li>IMPROVED: allow creating a database via CLI (#392)</li>
<li>FIX: allow using different databases in flatpak (#372)</li>
<li>CHANGED: removed andOTP support</li>
</ul>
</description>
</release>
<release type="stable" version="4.0.2" timestamp="1722902400">
<description>
<p>OTPClient 4.0.2 brings an important fix:</p>
<ul>
<li>FIX: importing data on a first run (#376)</li>
</ul>
</description>
</release>
</releases>
<content_rating type="oars-1.0">
<content_attribute id="violence-cartoon">none</content_attribute>
<content_attribute id="violence-fantasy">none</content_attribute>
<content_attribute id="violence-realistic">none</content_attribute>
<content_attribute id="violence-bloodshed">none</content_attribute>
<content_attribute id="violence-sexual">none</content_attribute>
<content_attribute id="drugs-alcohol">none</content_attribute>
<content_attribute id="drugs-narcotics">none</content_attribute>
<content_attribute id="drugs-tobacco">none</content_attribute>
<content_attribute id="sex-nudity">none</content_attribute>
<content_attribute id="sex-themes">none</content_attribute>
<content_attribute id="language-profanity">none</content_attribute>
<content_attribute id="language-humor">none</content_attribute>
<content_attribute id="language-discrimination">none</content_attribute>
<content_attribute id="social-chat">none</content_attribute>
<content_attribute id="social-info">none</content_attribute>
<content_attribute id="social-audio">none</content_attribute>
<content_attribute id="social-location">none</content_attribute>
<content_attribute id="social-contacts">none</content_attribute>
<content_attribute id="money-purchasing">none</content_attribute>
<content_attribute id="money-gambling">none</content_attribute>
</content_rating>
</component>