Skip to content

Release v1.8.0 #1197

@annejan

Description

@annejan

QtPass v1.8.0 Release Checklist

Tracks everything needed to ship v1.8.0. Following the same shape as #1092.


1. Pre-release preparation

2. Version bump (current: 1.7.0 → 1.8.0)

  • qtpass.priVERSION = 1.8.0
  • qtpass.specVersion:
  • qtpass.issAppVerName=
  • DoxyfilePROJECT_NUMBER
  • gh-pages branch — downloads.html
  • gh-pages branch — index.html
  • gh-pages branch — getting-started.html
  • gh-pages branch — changelog.html (add release notes)
  • gh-pages branch — changelog.1.4.html / old.html

3. Changelog

  • Update CHANGELOG.md with release date and grouped entries

Notable changes since 1.7.0:

New features

Bug fixes

Internal / housekeeping


4. Test plan — new features

Run each block on Linux (Qt 6.x), macOS (Qt 6.x) and Windows (Qt 6.x). Spot-check Qt 5.15 on Linux for the "still builds and runs" smoke pass.
All scenarios assume a working pass store with at least one folder and one password entry, and a usable GPG keyring.

4.1 Share submenu (#1162, closes #422)

Right-click on a folder in the password tree:

  • Submenu Share appears, containing: Re-encrypt all passwords, Export my public key..., Add recipient..., What is this?
  • Re-encrypt all passwords is enabled when a .gpg-id file exists and gpg (or pass) is resolvable, disabled otherwise
  • Triggering Re-encrypt all passwords runs pass init on the folder and re-encrypts the contents; verify entries still decrypt afterwards
  • Export my public key... opens the export dialog; chosen file is a valid ASCII-armored key (gpg --import can read it back)
  • Add recipient... opens the user/recipient dialog scoped to the chosen folder; toggling a recipient updates the folder's .gpg-id
  • What is this? opens the help dialog; the body links Export my public key / Import teammates' public keys / Re-encrypt passwords (verify the post-docs: Import wording correction #1194 wording reads "into your GPG keyring")
  • Right-click on a file does not show the Share submenu (folder-only)

4.2 Import key dialog (#1170, closes #1167)

Open the Users dialog, click Import key:

  • From File... opens a file picker filtered to *.asc; selecting a non-armored file shows the "ASCII-armored only" warning rather than corrupting it via QString::fromUtf8
  • From Clipboard populates the input area with the clipboard contents; an empty clipboard does not wipe text the user already typed
  • The Import button is disabled while the input area is empty and enables as soon as there's text
  • Pasting a valid ASCII-armored public key and clicking Import succeeds; gpg --status-fd 1 --import --batch --yes is invoked and the imported key id (or fingerprint) is parsed from the IMPORT_OK / IMPORTED status lines (locale-independent)
  • After a successful import the dialog closes and the Users dialog refreshes; the just-imported key is selected (matches against key_id with bidirectional endsWith so 16-char long-id and 40-char fingerprint both match)
  • Filter is cleared without double-populating the list (signal-blocked)
  • An obviously broken key (random bytes, truncated armor) surfaces the GPG error message in a dialog rather than silently failing

4.3 Process output panel (#1172 / #1192 / #1193, closes #252)

Toggle via Configuration → Show process output (default OFF):

Default OFF

Setting ON

  • A QDockWidget titled Process Output appears at the bottom of the window
  • Dock can be floated (float button in the title bar) and moved to the top dock area; cannot be moved to left/right (allowed-areas check)
  • Dock has no close X — toggle is via the setting only (intentional, see feat: move process output panel to a QDockWidget; add scroll hysteresis (#252) #1193 review thread)
  • Dock can be resized taller by dragging the splitter — no 150 px ceiling

Output content

  • Each line is prefixed with the executed command name (git push, gpg --import, etc.)
  • Lines are color-coded: stderr / non-zero-exit lines render in red, normal lines in the palette text colour
  • Password commands are filtered: trigger a show password and verify nothing decrypted ends up in the panel (security regression watch)
  • Clear button empties the panel, resets the line counter, and re-arms auto-scroll
  • Auto-scroll: panel scrolls to the bottom on new output by default
  • Scrolling up with the wheel pauses auto-scroll; scrolling back down to the bottom re-arms it
  • Hysteresis: dragging the slider, briefly overshooting maximum, and releasing above the bottom keeps auto-scroll off (the feat: move process output panel to a QDockWidget; add scroll hysteresis (#252) #1193 fix); only an explicit sliderReleased at the bottom re-arms
  • Line cap at 1000: paste-something-noisy or run a long git log; oldest lines get trimmed from the top while the newest remain

4.4 focusInput / launch UX (#1187#1191)

Cold-start the app a few times:

4.5 Drag-and-drop (#1196 — test coverage of existing feature)

Smoke-test the existing drag-and-drop feature once per backend (pass / git-only / no-backend) — the unit suite covers dispatch already, this is the manual sanity sweep:

  • Folder → folder moves the source under the destination
  • File → folder moves the file into the destination
  • File → file shows the overwrite-confirm dialog; "Yes" overwrites, "No" is a no-op
  • Folder → file is rejected with no UI side-effect

4.6 Build / lint / tests

  • make distclean && qmake6 && make -j4 — no warnings, no errors (Qt 6)
  • qmake && make -j4 — same on Qt 5.15
  • make check — all 12 suites green on Linux; integration suite skipped on Windows is expected
  • doxygen Doxyfile — zero warnings (CI enforces this)
  • clang-format --style=file --dry-run --Werror on touched files — clean
  • npx prettier --check '**/*.md' '**/*.yml' — clean
  • act push -W .github/workflows/linter.yml -j build — green locally

5. Build artifacts

  • Linux source tarball (git archive --prefix=qtpass-1.8.0/ -o qtpass-1.8.0.tar.gz HEAD)
  • macOS DMG (./scripts/release-mac.sh)
  • Windows installer (via GitHub Actions / qtpass.iss)

6. Git tag & GitHub release

  • Create and push signed tag: git tag -a v1.8.0 -m "QtPass v1.8.0 Release" && git push origin v1.8.0
  • Create GitHub release with release notes: gh release create v1.8.0 --title "QtPass v1.8.0" --notes-file CHANGELOG.md qtpass-1.8.0.tar.gz

7. GitHub Pages update (gh-pages branch)

  • Update all version references in HTML files
  • Add v1.8.0 section to changelog.html
  • Commit and push to gh-pages

8. Post-release

  • Announce on relevant channels
  • Update Weblate with any new source strings (Process Output dock title, Import key dialog labels, Share submenu items)
  • Close this issue

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions