v3.3.0
Added
- In-place updates for changed entries -- re-running
kp2bwnow syncs
KeePass edits onto existing Bitwarden items instead of skipping them. Changed
notes, passwords, usernames, URIs and custom fields are written via an
idempotentPUT(an unchanged entry issues no request). Collection
membership is only ever added, never removed, and a Bitwarden-sidefavorite
flag or a passkey absent from KeePass is preserved. Opt out with--no-update
(env:KP2BW_UPDATE=0) to restore the previous skip-only behavior.
Fixed
- Updated KeePass notes never reached Bitwarden (#11) -- editing an entry's
notes (e.g. pasting in new recovery keys) without touching credentials left
the existing Bitwarden item unchanged, forcing a full vault purge to
re-import. Existing items are now updated in place on re-run. - Long notes not attached to (or refreshed on) previously imported entries
(#11) -- notes over 10k chars migrate to anotes.txtattachment, but
previously imported (skipped) entries never received it, and an edited
attachment that kept the same filename was never updated. Re-runs now upload
any attachment an existing item is missing and refresh one whose content
changed (the stale copy is removed only after the replacement uploads), all
without creating duplicates. Applies to every attachment kp2bw manages --
long notes, long custom fields, and real KeePass file attachments. - A single rejected attachment aborted the whole migration (#11) -- an
attachment the server refused (for example a.jpgrejected for premium or
storage-quota reasons) raised an opaqueHTTP 400that stopped everything.
Upload failures are now non-fatal: the real server message is surfaced
instead of just the status code, and the migration continues with the
remaining entries.
What's Changed
- ci(deps): bump actions/checkout from 5 to 6.0.2 by @dependabot[bot] in #18
- fix: update existing Bitwarden entries on re-run (#11) by @kjanat in #19 — thanks @gamix-git for reporting #11 🙏
Full Changelog: v3.2.0...v3.3.0