- Replace 4 bare `except:` with `except Exception:` (load_settings,
get_txt, get_icon_idx_for_file, process_file cleanup block) so
SystemExit and KeyboardInterrupt are no longer swallowed
- Replace 2 print() calls with logger.error() (__init__ MSAL init,
ensure_valid_token) so errors appear in the configurable log output
- Sanitize item['name'] with os.path.basename() in on_download_clicked
and _download_folder_recursive_sync to prevent path traversal from
server-controlled filenames
- Add 8 new unit tests covering all Task 7 changes
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>