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

IJHack / QtPass / 36411484084
93%

Build:
DEFAULT BRANCH: main
Ran 28 Sep 2026 10:50AM UTC
Jobs 1
Files 117
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

28 Sep 2026 10:44AM UTC coverage: 92.898% (-0.03%) from 92.924%
36411484084

push

github

web-flow
PasswordDialog: keep the entry when saving it fails (#1951)

* PasswordDialog: keep the entry when saving it fails

The dialog closed as soon as OK was pressed and started the insert on its
way out; gpg ran after exec() had returned. When that failed (a missing
or expired recipient key, the empty .gpg-id of #1944, a refused path)
the error was shown and what was typed was gone.

accept() now starts the insert itself and stays open, fields and OK
locked, "Saving…" in the status line, until the backend reports:
- finishedInsert closes the dialog as accepted;
- the new Pass::insertFailed (emitted next to processErrorExit for a
  failed PASS_INSERT, as generateGPGKeysFailed is for key generation)
  unlocks the fields, which still hold the entry, and shows the reason;
- a refusal before anything starts comes through critical() during the
  Insert() call and is handled the same way.
A new entry that is on disk after a failure was written and only a later
git step failed; the dialog then closes and the main window reports git.
An existing entry OK'd before its decrypt arrived now leaves the dialog
open instead of closing without saving.

FieldLabel also consumes Enter: confirming a field rename used to reach
the dialog's default button and save and close the whole entry.

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

* PasswordDialog: wait out a pending save; the backend says what was written

Review follow-ups:
- Cancel, Esc and the window's close button are refused while an insert
  is in flight (reject() override, Cancel disabled): a failure after the
  dialog was gone had nothing left to hand back.
- The template box and Ctrl+T are locked while saving; another template
  would rebuild the field rows under the pending insert.
- "The file is there now" was no proof that this insert wrote it: another
  writer could create the name meanwhile. insertFailed() now carries
  `writ... (continued)

72 of 77 new or added lines in 7 files covered. (93.51%)

44 existing lines in 4 files now uncovered.

9065 of 9758 relevant lines covered (92.9%)

191.64 hits per line

Uncovered Changes

Lines Coverage ∆ File
3
97.25
-2.75% src/realpass.cpp
1
80.0
-20.0% src/pass.h
1
98.99
-0.15% src/passworddialog.cpp

Coverage Regressions

Lines Coverage ∆ File
23
74.36
0.53% src/moc_pass.cpp
11
63.33
-2.18% src/moc_passworddialog.cpp
9
0.0
0.0% src/qrc_qmake_qmake_qm_files.cpp
1
86.42
-1.23% src/nativegrep.cpp
Jobs
ID Job ID Ran Files Coverage
1 36411484084.1 28 Sep 2026 10:50AM UTC 117
92.9
GitHub Action Run
Source Files on build 36411484084
  • Tree
  • List 117
  • Changed 12
  • Source Changed 11
  • Coverage Changed 11
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #36411484084
  • c8e1bad1 on github
  • Prev Build on main (#36048524480)
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