All changes, fixes and new features at a glance.
root.destroy() with _quit() → os._exit(0) so the process fully exits before the installer tries to overwrite the .exe; added /FORCECLOSEAPPLICATIONS flag as fallback_macro_loop was reading tame_delay instead of its own delay; macro now has its own configurable startup delayos._exit(0) after stopping all threads, listeners and the tray icon — no orphaned processes remainNone in __init__Program Files\ (not writable) to %APPDATA%\SoupMacro\--clean to PyInstaller and pre-build artifact cleanup to prevent stale buildsCloseApplications=yes so the installer can replace the running .exe