ブログ Engineering

Making Passman's KeePass CSV Importer Understand KeePassXC

英語の記事. Passman's KeePass CSV importer only knew KeePass 1/2 column names. The merged fix adds KeePassXC headers, skips empty rows and handles group paths.

JavaScriptnextcloud/passmanKeePassXCCSV importpassword managers

A three-year-old import bug, fixed and then extended by the maintainer.

短い答え

Importing a KeePassXC CSV into Passman with the "KeePass csv" importer added no credentials. The importer only recognized KeePass 1/2 column names. The fix maps KeePassXC headers (Group, Title, Username, Password, URL, Notes) alongside the legacy ones, skips rows without a title, splits group paths on both / and \, and ignores unparseable expiry dates. A maintainer then added support for more OTP formats and better label extraction. It was merged as PR #876 and closed issue #762.

The problem

Issue #762, opened in March 2023, walked through a KeePassXC export of four accounts in nested groups. Passman reported "Read progress 3/4" and then said "It does not seem that you have any passwords."

The fix

var getLabel = function (row) {
    return row.account || row.title || null;
};
...
var parsed_csv = PassmanImporter.readCsv(file_data).filter(function (row) {
    return getLabel(row) !== null;
});
...
_credential.username = row.login_name || row.username || null;
_credential.url = row.web_site || row.url || null;
_credential.description = row.comments || row.notes || null;

Group paths from either group or group_tree are split on / or \ and turned into de-duplicated tags.

By the numbers

  • Repository: nextcloud/passman, 829 stars (Nov 3, 2026), JavaScript, AGPL-3.0
  • Files changed: 1
  • Lines: +110 / -21 (the PR author's commit was +48 / -22; the maintainer's commit was +64 / -1)
  • Commits: 2 (1 from the PR author, 1 from the maintainer)
  • Opened: Aug 21, 2026. Merged: Aug 24, 2026. Time to merge: 3 days, 3 hours
  • Review: approved and merged by the maintainer

How the review went

The maintainer added a commit, "enhance KeePass CSV importer to support additional OTP formats and improve label extraction", then approved and merged the PR.

よくある質問

Do KeePass 1/2 exports still import?

Yes. The legacy column names are still read first.

Where can I read more?

See the pull request and the original issue.

目標

The people most likely to try a password manager are the ones migrating from another one. A working import path is the front door.

ループを実行

本番環境のシグナルをレビュー済みの修正に変える。

無料トライアルで、Prilog が実際のインシデントをコードレベルの Pull Request に結びつける方法をご確認ください。