- add installer asset detection in update service
- add 'Download and install (setup)' action in update dialog
- bump app version to 2.1.2 and extend update service test
- replace any preloaded PySide6 modules with local stubs before importing updater_gui
- prevent headless linux failures from libGL dependency during unit tests
- stub PySide6 in test_updater_gui to run on linux runner without libGL
- close main app immediately after launching updater, without blocking OK dialog
- added retry-based file copy, rollback restart, and version marker validation in updater GUI
- added build step to write dist/version.txt for post-update validation
- added unit tests for updater helpers
- added dedicated GUI updater executable and integrated launch path from main app
- added stable/beta update channel selection with persisted settings and checker support
- expanded CI/release validation to include updater and full test discovery
- quote env vars in cmd script for paths with spaces
- add update_error.log diagnostics and timeout while waiting for app exit
- bump APP_VERSION to 1.7.0 and update updater tests