263799adcd84afceef5a2a4d76c83a88a3e1b979
migrateUsernamesAtRest only swept state.entries (live rows), so a soft-deleted entry kept its cleartext username in the DB until purge. Now it also fetches + decrypts the trash (GET /entries?deleted=1) and includes those rows in the sweep. The PUT updates the row's fields without touching `deleted`, so the entry stays in the trash; trashed rows aren't in the sync snapshot, so no churn. Surfaced by a lingering cleartext username on a trashed test entry. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Description
full local password manager
Languages
JavaScript
51.8%
Pascal
30.5%
CSS
7.4%
HTML
6.3%
PHP
3.2%
Other
0.7%