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

IJHack / QtPass / 35158407238
93%

Build:
DEFAULT BRANCH: main
Ran 16 Sep 2026 10:41PM UTC
Jobs 1
Files 96
Run time 1min
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

16 Sep 2026 10:35PM UTC coverage: 72.336% (+0.05%) from 72.284%
35158407238

push

github

web-flow
Initialise new profiles without the active store's backend (#1782)

* Initialise new profiles without the active store's backend (#1774)

initializeNewProfiles() ran UsersDialog::accept() -> Pass::Init() and
GitInit() on the shared backend, whose settings snapshot, PASSWORD_STORE_DIR
and process queue belong to the active store: pass init nested the new
.gpg-id under the active store and git init ran there. Making the store
switch effective on that backend is not safe either (a late pass init
would re-encrypt the active store).

ProfileInit::initialise() now does the work synchronously and only inside
the new directory: writes .gpg-id (enabled keys, owner-only), signs it when
a signing key is configured, and with git runs init/add/commit through a
QProcess of its own. Existing *.gpg files are left alone and the user is
told to re-encrypt from within that profile. UsersDialog gained
setInitOnAccept(false) + selectedUsers() so it can hand the selection back
instead of calling Pass::Init.

Found on the way: a folder without .gpg-id made loadRecipients() call
listKeys() with an empty filter, which lists the whole keyring, so every
key came up pre-selected in the first-run wizard and for new profiles.

Closes #1774.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01JuQsrHonihp1nARE7bzstc

* Profile init: per-profile signing key, WSL-safe gpg path, no OK without a recipient

- initializeNewProfiles() signs the new .gpg-id with the profile's own
  signingKey column, the way the profile switch applies it, not with the
  active store's key.
- ProfileInit::signGpgId() hands gpg a wslpath-translated file name when
  the executable is WSL-routed; Executor::translatePathForWsl() is the
  former ImitatePass helper made static so both can use it.
- UsersDialog: OK is disabled until a key is ticked and accept() refuses an
  empty selection. Now that a new store no longer comes up with the whole
  keyring pre-selec... (continued)

67 of 107 new or added lines in 7 files covered. (62.62%)

11 existing lines in 2 files now uncovered.

5478 of 7573 relevant lines covered (72.34%)

60.52 hits per line

Uncovered Changes

Lines Coverage ∆ File
21
72.37
-27.63% src/profileinit.cpp
13
59.37
-0.54% src/configdialog.cpp
5
96.18
-3.82% src/executor.cpp
1
50.0
-50.0% src/usersdialog.h

Coverage Regressions

Lines Coverage ∆ File
9
0.0
0.0% src/qrc_qmake_qmake_qm_files.cpp
2
59.37
-0.54% src/configdialog.cpp
Jobs
ID Job ID Ran Files Coverage
1 35158407238.1 16 Sep 2026 10:41PM UTC 96
72.34
GitHub Action Run
Source Files on build 35158407238
  • Tree
  • List 96
  • Changed 9
  • Source Changed 8
  • Coverage Changed 9
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #35158407238
  • 98db7318 on github
  • Prev Build on main (#35154928274)
  • Next Build on main (#35159963146)
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