feat: Enhance Face AI upload functionality and UI
Some checks failed
Build Windows Avalonia / build (push) Failing after 1m48s
Release Windows Avalonia / build (push) Failing after 1m41s
Release Windows Avalonia / release (push) Has been skipped

- Updated MainWindow.axaml to increase height and add new UI elements for SSH upload configuration.
- Implemented commands for opening source and destination paths in file explorer.
- Added FaceUploadPath and SSH configuration properties to DataModel and AiSettingsViewModel.
- Introduced validation for FaceUploadPath format and commands for uploading face encoder output.
- Enhanced PickerPreferenceService to manage SSH credentials and upload preferences.
- Updated settings persistence to include FaceUploadPath and SSH preferences.
- Added tests for FaceUploadPath validation and upload command enabling logic.
This commit is contained in:
Maddo 2026-06-06 11:54:21 +02:00
commit e9142df97c
22 changed files with 1477 additions and 84 deletions

View file

@ -115,6 +115,105 @@ public class AiSettingsViewModel : ViewModelBase
}
}
private string _faceUploadPath = string.Empty;
public string FaceUploadPath
{
get => _faceUploadPath;
set
{
_faceUploadPath = value;
NotifyPropertyChanged();
}
}
private bool _faceUploadDryRun;
public bool FaceUploadDryRun
{
get => _faceUploadDryRun;
set
{
_faceUploadDryRun = value;
NotifyPropertyChanged();
}
}
private string _faceSshUsername = string.Empty;
public string FaceSshUsername
{
get => _faceSshUsername;
set
{
_faceSshUsername = value;
NotifyPropertyChanged();
}
}
private string _faceSshPassword = string.Empty;
public string FaceSshPassword
{
get => _faceSshPassword;
set
{
_faceSshPassword = value;
NotifyPropertyChanged();
}
}
private string _faceSshAddress = string.Empty;
public string FaceSshAddress
{
get => _faceSshAddress;
set
{
_faceSshAddress = value;
NotifyPropertyChanged();
}
}
private string _faceSshPort = "22";
public string FaceSshPort
{
get => _faceSshPort;
set
{
_faceSshPort = value;
NotifyPropertyChanged();
}
}
private string _faceSshPathA = string.Empty;
public string FaceSshPathA
{
get => _faceSshPathA;
set
{
_faceSshPathA = value;
NotifyPropertyChanged();
}
}
private string _faceSshPathB = string.Empty;
public string FaceSshPathB
{
get => _faceSshPathB;
set
{
_faceSshPathB = value;
NotifyPropertyChanged();
}
}
private bool _isFaceUploadRunning;
public bool IsFaceUploadRunning
{
get => _isFaceUploadRunning;
set
{
_isFaceUploadRunning = value;
NotifyPropertyChanged();
}
}
private bool _faceRecursive;
public bool FaceRecursive
{