902048a172
Savers now serialize to in-memory HISTORY_FILE_DATA on the UI thread, then Prettify + file writes + git stage/diff/commit run on a background thread via GetKiCadThreadPool(). An atomic skip-if-busy flag prevents overlapping saves; WaitForPendingSave() ensures clean shutdown. Extracted FormatBoardToFormatter and FormatSchematicToFormatter so SaveToHistory can serialize without touching disk. PROJECT savers use sourcePath for file-copy semantics since project files are small.