8cc15994343be42e87bab2a40702c13e965c80b8
soSave had no re-entrancy guard: a second click while the first run awaited encryption/POST ran the whole save again -> two POSTs, two entries. Wrapped in a soSaving latch (same class as the sync-button guard); body moved to soSaveInner so every early validation return releases the latch via finally. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Description
full local password manager
Languages
Pascal
46.7%
JavaScript
35.4%
HTML
9.4%
CSS
4.9%
PHP
2.1%
Other
1.4%