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
JavaScript
51.8%
Pascal
30.5%
CSS
7.4%
HTML
6.3%
PHP
3.2%
Other
0.7%