- 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>
19 tests covering:
- I2/I3: STRINGS dict entries (System tab label, status_loading_items)
- I1/C-1/S-2: nav_gen guard logic in _finalize_list_loading
(matching gen applies, stale gen discards, None bypasses guard,
old zero default now correctly treated as stale)
- C1: url=None initialization order in _fetch_tree_children_bg
- S2: dead SITE branch absent from _append_list_items
- S-1: is_breadcrumb parameter removed from _navigate_to_item_data
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>