• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

IJHack / QtPass
64%

Build:
DEFAULT BRANCH: main
Repo Added 12 Mar 2017 11:37AM UTC
Files 88
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

LAST BUILD ON BRANCH main
branch: SELECT
CHANGE BRANCH
x
  • No branch selected
  • 1.3
  • CMake
  • HEAD
  • Noettore-feature/renameEntry
  • add-coverage-to-docs
  • add-unit-tests-coverage
  • ai-findings-autofix/FAQ.md
  • ai-findings-autofix/localization-localization_sv_SE.ts
  • ai-findings-autofix/opencode-skills-qtpass-localization-SKILL.md
  • ai-findings-autofix/sign-release-assets.sh
  • ai-findings-autofix/src-executor.cpp
  • ai-findings-autofix/src-imitatepass.cpp
  • ai-findings-autofix/src-mainwindow.cpp
  • ai-findings-autofix/src-pass.cpp
  • ai-findings-autofix/src-passworddialog.cpp
  • ai-findings-autofix/src-passworddisplaypanel.cpp
  • ai-findings-autofix/src-qprogressindicator.cpp
  • ai-findings-autofix/src-qtpasssettings.h
  • ai-findings-autofix/src-settingsconstants.cpp
  • ai-findings-autofix/src-src.pro
  • ai-findings-autofix/src-storemodel.cpp
  • ai-findings-autofix/src-storemodel.h
  • ai-findings-autofix/src-trayicon.cpp
  • ai-findings-autofix/src-usersdialog.cpp
  • ai-findings-autofix/src-util.cpp
  • ai-findings-autofix/tests-auto-configdialog-configdialog.pro
  • ai-findings-autofix/tests-auto-executor-tst_executor.cpp
  • ai-findings-autofix/tests-auto-exportpublickeydialog-exportpublickeydialog.pro
  • ai-findings-autofix/tests-auto-gpgkeystate-tst_gpgkeystate.cpp
  • ai-findings-autofix/tests-auto-keygendialog-keygendialog.pro
  • ai-findings-autofix/tests-auto-locale-tst_locale.cpp
  • ai-findings-autofix/tests-auto-model-tst_storemodel.cpp
  • ai-findings-autofix/tests-auto-settings-tst_settings.cpp
  • ai-findings-autofix/tests-auto-simpletransaction-tst_simpletransaction.cpp
  • ai-findings-autofix/tests-auto-trayicon-trayicon.pro
  • ai-findings-autofix/tests-auto-ui-tst_ui.cpp
  • ai-findings-autofix/tests-auto-util-tst_util.cpp
  • chore/bump-super-linter-v8
  • chore/ci-path-filtering
  • chore/desktop-translations
  • chore/editorconfig
  • chore/expand-skills
  • chore/improve-gpgkeystate-tests
  • chore/locales-and-translation-fixes
  • chore/plist-boolean-true
  • chore/remove-dead-code-copyDir
  • chore/rename-ar_MA-to-ar
  • chore/rename-mainwindow-members-m-prefix
  • chore/rename-single-variant-locales
  • chore/test-pro-cleanup
  • chore/tst-settings-and-util-nits
  • chore/untrack-test-binaries
  • chore/update-gitignore-and-skills
  • chore/update-localization
  • chore/update-localization-strings
  • chore/update-skills-learnings
  • ci/validate-qt611-build
  • ci/validate-release-macos-qt611
  • clang-tidy-clazy
  • cleanup/as-const-and-qapp
  • codeantai-changesd408a9d3eaa4cc4ef949208738241d1a937f2349lrvwl
  • codeantai-changesd408a9d3eaa4cc4ef949208738241d1a937f2349vqfqc
  • codecov-tests
  • codefactor-fixes
  • coderabbitai/utg/3a62426
  • coderabbitai/utg/9048d2b
  • coderabbitai/utg/ebfd172
  • coverity-fixes
  • coverity_scan
  • dependabot/github_actions/codecov/codecov-action-6
  • develop
  • docs/add-ai-findings-to-skills
  • docs/add-all-docstrings
  • docs/add-filecontent-docstrings
  • docs/add-qtpass-docstrings
  • docs/faq-improvements
  • docs/improve-markdown
  • docs/keygendialog-ownership
  • docs/qmake6-docs
  • docs/signing-key-help
  • docs/update-agents
  • docs/update-skills
  • docs/windows-getting-started
  • feat/1034-status-bar
  • feat/239-droplogic-tests
  • feat/252-process-output-area
  • feat/252-process-output-polish
  • feat/422-share-folder
  • feat/add-spanish-regional-variants
  • feat/integration-tests
  • feat/multi-template-support
  • feat/open-in-browser-1516
  • feat/ssh-auth-sock-543
  • feat/template-dropdown
  • feat/template-ui
  • feat_totp
  • feature/auto-detect-git
  • feature/gpg-ed25519
  • feature/pass-grep-109
  • feature/reencrypt-button
  • fix-skills-headers
  • fix/1034-profile-creation
  • fix/1034-status-bar-v3
  • fix/112-git-per-profile
  • fix/1145-add-profile-knowledge
  • fix/1145-agents-update
  • fix/132-edit-template-fields
  • fix/1598-keygen-start-failure-feedback
  • fix/247-gpg-key-expired-error-message
  • fix/248-profile-change-stale-path
  • fix/422-share-actions
  • fix/450-user-manager-forgets-checked-keys
  • fix/780-validate-custom-charset
  • fix/927-signed-commit
  • fix/add-integration-tests
  • fix/add-missing-docs
  • fix/address-ai-findings
  • fix/ai-findings-10-more
  • fix/ai-findings-main-cpp
  • fix/ai-findings-pass-storemodel
  • fix/ai-findings-util-cpp
  • fix/ai-findings-util-tests
  • fix/ai-github-skill-findings
  • fix/ai-test-findings
  • fix/audit-imitatepass-mainwindow
  • fix/audit-p1-quick
  • fix/audit-quality-sweep
  • fix/boolean-clarity-gpgkeystate
  • fix/browser-context-menu-transparency
  • fix/checkConfig-comment
  • fix/chi-square-constant-naming
  • fix/clang-format-docstrings
  • fix/clang-format-tst-integration
  • fix/clang-tidy-bugprone
  • fix/clang-tidy-cleanup
  • fix/clangd-findings
  • fix/cleanup-frameLayout-reserve
  • fix/cleanup-todos
  • fix/clear-explicit-spacer
  • fix/clipboard-autoclear-navigation
  • fix/clipboard-type-comment
  • fix/code-quality-findings-v2
  • fix/code-quality-fixes
  • fix/code-quality-issues
  • fix/code-quality-storemodel-settings
  • fix/code-review-findings-mainwindow
  • fix/codeql-findings-tst-util
  • fix/config-validation-refactor
  • fix/configdialog-settings-corruption
  • fix/constructor-docs
  • fix/copilot-findings
  • fix/copilot-findings-2
  • fix/copilot-test-findings
  • fix/coverity-scan-issues
  • fix/coverity-scan-issues-2
  • fix/dark-mode-unused-func
  • fix/desktop-file-name
  • fix/estonian-translation
  • fix/executor-failed-to-start
  • fix/faq-openssh-url
  • fix/faq-typos
  • fix/fieldheight-comment
  • fix/flaky-bounded-random
  • fix/focusinput-defer-show-latch
  • fix/focusinput-pre-show-activation
  • fix/focusinput-race-on-fresh-init
  • fix/gpg-id-permissions
  • fix/gpg-id-validation
  • fix/gpg-keygen-timeout
  • fix/gpg-keygen-timeout-v2
  • fix/hide-git-directory
  • fix/imitatepass-git-reencrypt
  • fix/import-key-dialog
  • fix/improve-gpg-tests
  • fix/improve-gpgkeystate-tests-v2
  • fix/improve-util-tests
  • fix/integration-tests-ci-gpg-agent
  • fix/invalidate-filter-deprecation
  • fix/isValidKeyId-complexity
  • fix/keygen-dialog-use-after-free
  • fix/keygen-feedback
  • fix/klipper-password-hint
  • fix/let-wm-handle-dialog-position
  • fix/locale-fallback
  • fix/locale-test-improvements
  • fix/localization-cleanup
  • fix/main-cpp-ai-findings
  • fix/malformed-comment-spelling
  • fix/memory-leak-qr-popup-dialog
  • fix/misc-high-batch4
  • fix/misra-precedence
  • fix/modernize-util
  • fix/nesting-depth
  • fix/nesting-depth-2
  • fix/new-locales-cleanup
  • fix/password-generation
  • fix/passworddialog-header-docs
  • fix/passworddisplaypanel-nullcheck-cache
  • fix/path-traversal-hardening
  • fix/plist-duplicate-nsprincipalclass
  • fix/plist-remove-deprecated-keys
  • fix/post-merge-cleanups
  • fix/profile-ux-improvements
  • fix/protocol-regex-global
  • fix/qprogressindicator-license
  • fix/qstring-assertions
  • fix/qt5-metatype-guard
  • fix/qt6-compat-and-style
  • fix/qt610-filter-change
  • fix/qtpasssettings-ai-findings
  • fix/random-password-test
  • fix/rebase-to-main
  • fix/reencryption-security
  • fix/refactor-complex-methods
  • fix/regex-optimization-test-cleanup
  • fix/remaining-test-issues
  • fix/remove-redundant-move-resize
  • fix/remove-stale-todos
  • fix/resolve-all-todos
  • fix/review-findings-cleanup
  • fix/segfault-focusInput-null-check
  • fix/settings-comment
  • fix/sign-release-improvements
  • fix/sign-release-nullglob
  • fix/signing-key-tooltip-clarity
  • fix/simpletransaction-test-findings
  • fix/simpletransaction-test-v2
  • fix/simpletransaction-test-v3
  • fix/simpletransaction-test-v4
  • fix/simpletransaction-test-v5
  • fix/simpletransaction-test-v6
  • fix/single-app-conditional
  • fix/slots-signals-style
  • fix/spelling-comments
  • fix/spelling-docs-qtpasssettings
  • fix/spelling-typos
  • fix/split-plural-grep-message
  • fix/ssh-auth-sock-override-warn
  • fix/stack-allocated-qfileinfo
  • fix/store-matches-single-pass
  • fix/storemodel-mime-type-rfc
  • fix/tautology-gpg-test
  • fix/template-field-parsing
  • fix/test-ai-findings
  • fix/test-assertions
  • fix/test-cleanup-verification
  • fix/test-constants-messages
  • fix/test-file-open-verification
  • fix/test-file-operation-verification
  • fix/test-file-operations
  • fix/test-improvements
  • fix/test-naming-cleanup
  • fix/test-profile-defaults
  • fix/test-tautologies
  • fix/test-timeout-cleanup
  • fix/test-util-findings
  • fix/tests-cxx17-make-unique
  • fix/theme-aware-button-icons
  • fix/transparent-context-menu
  • fix/trayicon-close-always-quits
  • fix/tst-util-more-findings
  • fix/ui-null-check
  • fix/ui-processoutput-misplaced
  • fix/unchecked-return
  • fix/unused-out-parameter
  • fix/userinfo-docs
  • fix/usersdialog-ai-findings
  • fix/usersdialog-cpp-ai-findings
  • fix/usersdialog-docstrings
  • fix/usersdialog-expiry-check
  • fix/usersdialog-foreach-ref
  • fix/usersdialog-message
  • fix/usersdialog-params
  • fix/usersdialog-perf
  • fix/usersdialog-readability
  • fix/usersdialog-static-vars
  • fix/util-and-qtpass-cleanup
  • fix/util-comment-and-tests
  • fix/util-readability
  • fix/util-redundant-and-docs
  • fix/wsl-wslpath-shim
  • generic-skills
  • i18n/add-6-languages
  • i18n/add-bn
  • i18n/add-fa
  • i18n/add-hi
  • i18n/add-mr
  • i18n/add-pa_IN
  • i18n/add-sw
  • i18n/add-te
  • i18n/add-th
  • i18n/add-ur
  • i18n/add-vi
  • insecure_password_generation
  • licensing-update
  • localization-updates-with-qwen
  • main
  • master
  • more-tests
  • perf/usersdialog-optimizations
  • pr/771
  • qtpass-test-skill
  • refactor/appsettings-member-cache
  • refactor/appsettings-serializer-1511
  • refactor/cleanup-1510
  • refactor/clipboard-mime-helper
  • refactor/configdialog-appsettings-1511
  • refactor/configdialog-snapshot
  • refactor/delete-dead-getters
  • refactor/delete-dead-setters
  • refactor/executor-env-qprocessenvironment
  • refactor/grep-controller-1512
  • refactor/grep-dialect-doc-1513
  • refactor/init-executables-appsettings
  • refactor/init-fresh-install-appsettings
  • refactor/inject-userdialog
  • refactor/int-string-roundtrip-tests
  • refactor/listkeys-parsing
  • refactor/mainwindow-appsettings-snapshots
  • refactor/mainwindow-naming
  • refactor/no-defaults-on-virtuals
  • refactor/pass-execute-hook-1513
  • refactor/pass-inject-appsettings
  • refactor/passbackendfactory-1513
  • refactor/password-display-panel-1512
  • refactor/passworddisplaypanel-readability
  • refactor/pathvalidator-1514
  • refactor/qtpass-appsettings-snapshots
  • refactor/qtpass-init-snapshot
  • refactor/qtpasssettings-loadsave-facade-1511
  • refactor/realpass-movecopy-1513
  • refactor/select-profile-appsettings
  • refactor/settings-tests-bool-roundtrip
  • refactor/simplify-gpgconf-resolver
  • refactor/sshauthsock-module-1514
  • refactor/storemodel-drop-1514
  • refactor/storemodel-rootindex-1512
  • refactor/templateio-1514
  • refactor/uistate-watchdog-1512
  • refactor/usersdialog-colors
  • refactor/usersdialog-constructor
  • refactor/util-raw-string
  • refactor/wire-appsettings-dialogs
  • refactor/wire-appsettings-util-dialogs
  • refactor/wire-passstore-static-chain
  • release
  • release/1.6.0
  • release/v1.7.0
  • signing-script
  • skill/add-merge-check-to-pr-checklist
  • skill/add-prettier-check-to-pr-checklist
  • skill/fix-patterns
  • skill/fix-pr-checklist-v3
  • test-coverage-v2
  • test/add-util-tests
  • test/configdialog-keygendialog-tests
  • test/coverage-improvements
  • test/coverage-v2
  • test/executor-async-tests
  • test/executor-coverage
  • test/executor-review-fix
  • test/gpgkeystate-coverage
  • test/gpgkeystate-passwordconfig-tests
  • test/gpgkeystate-storemodel-tests
  • test/grepsearchcontroller-cleanup
  • test/gui-e2e-modal-edit
  • test/gui-e2e-tree-decrypt
  • test/mainwindow-unit-tests
  • test/more-coverage
  • test/more-coverage-fixes
  • test/more-edge-case-tests
  • test/more-filecontent-coverage
  • test/multi-recipient-e2e
  • test/passbackendfactory-unit-tests
  • test/passwordconfig-filecontent-tests
  • test/passworddisplaypanel-cleanup
  • test/settings-cleanup
  • test/settings-coverage
  • test/userinfo-coverage
  • test/userinfo-profileinit-tests
  • test/usersdialog-list-filter
  • test/util-comment-fix
  • test/util-template-tests
  • tests/configdialog
  • tests/configdialog-ssh-auth-sock-validation
  • tests/grep-skips-undecryptable
  • tests/keygendialog
  • tests/passworddialog-gaps
  • tests/storemodel-drop
  • tests/trayicon
  • v1.2.0
  • v1.2.1
  • v1.2.2
  • v1.2.3
  • v1.3.0
  • v1.3.1
  • v1.3.2
  • weblate-qtpass-qtpass

25 Aug 2026 05:55PM UTC coverage: 64.257% (+1.4%) from 62.904%
32880739204

push

github

web-flow
feat: native RFC 6238 TOTP, replacing the pass-otp shell-out (#1625)

* feat: implement native TOTP storage and generation for the OTP field

QtPass advertised OTP support, but it was only a shell-out to the
third-party pass-otp extension: RealPass::OtpGenerate ran `pass otp`,
ImitatePass::OtpGenerate was a stub, ConfigDialog disabled the feature
when the extension was missing and hid the checkbox entirely on Windows,
and updateOtpButtonVisibility() hid the toolbar action on Windows and
macOS. OTP therefore never worked on Windows, never worked in
gpg2/git-direct mode, and needed a Unix package most users lack.

Generate one-time passwords in-process instead, using only QtCore
(QMessageAuthenticationCode + QCryptographicHash), so no dependency is
added. The configuration is stored as an otpauth:// URI in the OTP
template field, and bare otpauth:// lines written by pass-otp are still
read for compatibility.

New modules, ported and trimmed from KeePassXC:

- Base32 (src/base32.*): RFC 4648 codec. Failure is an empty QByteArray
  rather than KeePassXC's QVariant-nullness idiom. Two fixes over the
  original: encode() no longer sign-extends bytes >= 0x80 (which
  corrupted neighbouring bytes of the 40-bit quantum), and decode()
  rejects impossible pad counts instead of returning wrong-length data.
- Totp (src/totp.*): RFC 6238, SHA-1/256/512 plus the Steam encoder.
  parse() returns std::optional<Settings> and validates everything, so
  Settings is valid by construction and generate() cannot fail — this
  replaces KeePassXC's "return the localized error string in place of
  the code, plus a bool* out-param" convention. Also fixes its modulus
  overflow at ten digits (pow() into a quint32), applies the digits and
  period clamps on every path, and rejects otpauth://hotp/, which
  KeePassXC would answer with a plausible-looking wrong code.
- OtpCodeWidget (src/otpcodewidget.*): the live row. Its refresh timer
  is a child of the widget it updates, so Pass... (continued)

409 of 502 new or added lines in 11 files covered. (81.47%)

38 existing lines in 6 files now uncovered.

4622 of 7193 relevant lines covered (64.26%)

56.35 hits per line

Relevant lines Covered
Build:
Build:
7193 RELEVANT LINES 4622 COVERED LINES
56.35 HITS PER LINE
Source Files on main
  • Tree
  • List 88
  • Changed 20
  • Source Changed 16
  • Coverage Changed 13
Coverage ∆ File Lines Relevant Covered Missed Hits/Line

Recent builds

Builds Branch Commit Type Ran Committer Via Coverage
32880739204 main feat: native RFC 6238 TOTP, replacing the pass-otp shell-out (#1625) * feat: implement native TOTP storage and generation for the OTP field QtPass advertised OTP support, but it was only a shell-out to the third-party pass-otp extension: RealPas... push 25 Aug 2026 06:01PM UTC web-flow github
64.26
32879240496 feat_totp Merge aca3f47ed into 3f4b12cb0 Pull #1625 25 Aug 2026 05:50PM UTC web-flow github
64.26
32878309850 feat_totp Merge 79a9b3435 into 3f4b12cb0 Pull #1625 25 Aug 2026 05:38PM UTC web-flow github
64.25
32877107209 feat_totp Merge d0ca44ddb into 3f4b12cb0 Pull #1625 25 Aug 2026 05:26PM UTC web-flow github
64.27
32872154665 feat_totp Merge b2233e119 into 3f4b12cb0 Pull #1625 25 Aug 2026 04:36PM UTC web-flow github
64.25
31856062896 feat_totp Merge ed3af813b into 00df77cf5 Pull #1625 15 Aug 2026 01:22AM UTC web-flow github
64.25
31854855567 feat_totp Merge 8d801e699 into 00df77cf5 Pull #1625 15 Aug 2026 01:13AM UTC web-flow github
64.25
31852190586 feat_totp Merge 524f1eddc into 00df77cf5 Pull #1625 15 Aug 2026 12:18AM UTC web-flow github
64.25
31851554849 feat_totp Merge 6a7629119 into 00df77cf5 Pull #1625 14 Aug 2026 11:55PM UTC web-flow github
64.25
31851053622 ci/validate-release-macos-qt611 Merge 013cd351b into 00df77cf5 Pull #1630 14 Aug 2026 11:43PM UTC web-flow github
62.9
See All Builds (2085)
  • Repo on GitHub
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc