a05b8114d4
Host: - FolderResolver: walks Outlook Stores/Folders by stored StoreId + backslash-separated FolderPath; RCWs released at each hop - FolderWatcher: rooted Items references in a Subscription list (preventing the GC from silently dropping the COM event sink), HashSet<EntryID> dedup, marshals category stamping back to the WPF dispatcher. Per-folder mode: AutoFile when MatchingService returns a confident unique match AND confidence ≥ ConfidenceThreshold; otherwise stamps "Needs filing" - FolderTreeBuilder: one-shot STA traversal (max depth 4, max 500 entries) into Core-side FolderTreeNode list UI: - FolderTreeNode in Core for cross-project transport - FolderRowViewModel: per-row IsWatched / Mode / ConfidenceThreshold - SettingsViewModel.LoadFolderTree(tree) merges existing AppSettings.WatchedFolders into the loaded list - Save now writes WatchedFolders alongside URL/creds - SettingsDialog: new "תיקיות" tab with a DataGrid (checkbox + mode combo per folder) AddInHost: - Builds FolderResolver + FolderWatcher inside TryInitializeCrm, applies Settings.WatchedFolders on startup and after Save - LaunchSettings: invokes FolderTreeBuilder, passes the flat list to the ViewModel, and re-applies the watch list after the dialog closes Core/UI/Tests green (38 tests). Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>