doc/devdocs/core/settings/viewmodels.md
The view models are located within the Settings.UI.Library project.
settingsRepository, the moduleSettingsRepository if it exists and the delegates for IPC communication.settingsRepository contains the general configurations of all powertoys whereas the moduleSettingsRepository is specific to the module. This is to ensure that the configuration details are shared amongst the viewmodels without having to re-open the settings.json file.OnPropertyChanged event is invoked and the view model sends a corresponding IPC message to the runner which would perform the designated action such as dispatching the change to the modules or enabling/disabling the powertoy, etc.GeneralViewModel is different from the rest of the view models with regard to the IPC communication wherein it sends special IPC messages to the runner to check for updates and to restart as admin.SettingsRepositorySettingsRepository is a generic singleton which contains the configurations for each view model.SettingsRepository is to ensure that the settings process does not try to access the settings.json files directly but rather does it through this class which encapsulates all the file operations from the view models.settings.json within the module. This must be taken care of when encapsulated within the settingsRepository.SettingsRepository to access the General Settings config.SettingsRepository to access the module properties.