mirror of
https://github.com/yusufipk/dikte.git
synced 2026-09-11 10:56:10 +00:00
history.jsonl and meetings.jsonl were rewritten read-modify-replace from two threads with nothing between them, so a dictation landing during a trim, or a meeting status landing during a delete, was silently gone; one lock now wraps every touch of either file. The config rename gets a flush and fsync in front of it, because a rename that survives a power loss ahead of its data is an empty settings file, and a corrupt file is set aside as config.json.broken instead of being quietly replaced by defaults on the next save, API keys and all. Every replace retries briefly on Windows, where an antivirus or a sync tool holds a fresh file for a beat and one PermissionError out of a Qt slot takes the whole application down. Co-Authored-By: Claude Fable 5 <[email protected]>