모델 프로파일 기반 Cowork/Code 루프와 진행 UX 고도화 반영
- 등록 모델 실행 프로파일을 검증 게이트, 문서 fallback, post-tool verification까지 확장 적용 - Cowork/Code 진행 카드에 계획/도구/검증/압축/폴백/재시도 단계 메타를 추가해 대기 상태 가시성 강화 - OpenAI/vLLM tool 요청에 병렬 도구 호출 힌트를 추가하고 회귀 프롬프트 문서를 프로파일 기준으로 전면 정리 - 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0 / 오류 0)
This commit is contained in:
@@ -13,14 +13,18 @@ public partial class LauncherWindow
|
||||
|
||||
internal void StartWidgetUpdates()
|
||||
{
|
||||
PerformanceMonitorService.Instance.StartPolling();
|
||||
SyncWidgetPollingState();
|
||||
PomodoroService.Instance.StateChanged -= OnPomoStateChanged;
|
||||
PomodoroService.Instance.StateChanged += OnPomoStateChanged;
|
||||
|
||||
_vm.UpdateWidgets();
|
||||
UpdateWidgetVisibility();
|
||||
UpdateBatteryWidget();
|
||||
_ = RefreshWeatherAsync();
|
||||
RefreshVisibleWidgets(forceWeatherRefresh: true);
|
||||
|
||||
if (!ShouldRunWidgetTimer())
|
||||
{
|
||||
_widgetTimer?.Stop();
|
||||
return;
|
||||
}
|
||||
|
||||
if (_widgetTimer == null)
|
||||
{
|
||||
@@ -30,11 +34,19 @@ public partial class LauncherWindow
|
||||
};
|
||||
_widgetTimer.Tick += (_, _) =>
|
||||
{
|
||||
_vm.UpdateWidgets();
|
||||
UpdateWidgetVisibility();
|
||||
if (_vm.Widget_PerfText.Length > 0 && _widgetBatteryTick++ % 30 == 0)
|
||||
if (!ShouldRunWidgetTimer())
|
||||
{
|
||||
_widgetTimer?.Stop();
|
||||
SyncWidgetPollingState();
|
||||
UpdateWidgetVisibility();
|
||||
return;
|
||||
}
|
||||
|
||||
SyncWidgetPollingState();
|
||||
RefreshVisibleWidgets(forceWeatherRefresh: false);
|
||||
if (ShouldShowBatteryWidget() && _widgetBatteryTick++ % 30 == 0)
|
||||
UpdateBatteryWidget();
|
||||
if (_widgetWeatherTick++ % 120 == 0)
|
||||
if (ShouldShowWeatherWidget() && _widgetWeatherTick++ % 120 == 0)
|
||||
_ = RefreshWeatherAsync();
|
||||
};
|
||||
}
|
||||
@@ -54,12 +66,64 @@ public partial class LauncherWindow
|
||||
{
|
||||
Dispatcher.InvokeAsync(() =>
|
||||
{
|
||||
_vm.UpdateWidgets();
|
||||
RefreshVisibleWidgets(forceWeatherRefresh: false);
|
||||
UpdatePomoWidgetStyle();
|
||||
UpdateWidgetVisibility();
|
||||
});
|
||||
}
|
||||
|
||||
private void RefreshVisibleWidgets(bool forceWeatherRefresh)
|
||||
{
|
||||
var launcher = CurrentApp?.SettingsService?.Settings?.Launcher;
|
||||
if (launcher == null)
|
||||
return;
|
||||
|
||||
_vm.UpdateWidgets(
|
||||
includePerf: launcher.ShowWidgetPerf,
|
||||
includePomo: launcher.ShowWidgetPomo,
|
||||
includeNote: launcher.ShowWidgetNote,
|
||||
includeCalendar: launcher.ShowWidgetCalendar,
|
||||
includeServerStatus: false);
|
||||
|
||||
UpdateWidgetVisibility();
|
||||
|
||||
if (ShouldShowBatteryWidget())
|
||||
UpdateBatteryWidget();
|
||||
if (forceWeatherRefresh && ShouldShowWeatherWidget())
|
||||
_ = RefreshWeatherAsync();
|
||||
}
|
||||
|
||||
private void SyncWidgetPollingState()
|
||||
{
|
||||
if (ShouldShowPerfWidget())
|
||||
PerformanceMonitorService.Instance.StartPolling();
|
||||
else
|
||||
PerformanceMonitorService.Instance.StopPolling();
|
||||
}
|
||||
|
||||
private bool ShouldRunWidgetTimer()
|
||||
{
|
||||
var launcher = CurrentApp?.SettingsService?.Settings?.Launcher;
|
||||
if (launcher == null)
|
||||
return false;
|
||||
|
||||
return launcher.ShowWidgetPerf
|
||||
|| launcher.ShowWidgetPomo
|
||||
|| launcher.ShowWidgetNote
|
||||
|| launcher.ShowWidgetWeather
|
||||
|| launcher.ShowWidgetCalendar
|
||||
|| launcher.ShowWidgetBattery;
|
||||
}
|
||||
|
||||
private bool ShouldShowPerfWidget()
|
||||
=> CurrentApp?.SettingsService?.Settings?.Launcher?.ShowWidgetPerf ?? false;
|
||||
|
||||
private bool ShouldShowWeatherWidget()
|
||||
=> CurrentApp?.SettingsService?.Settings?.Launcher?.ShowWidgetWeather ?? false;
|
||||
|
||||
private bool ShouldShowBatteryWidget()
|
||||
=> (CurrentApp?.SettingsService?.Settings?.Launcher?.ShowWidgetBattery ?? false) && _vm.Widget_BatteryVisible;
|
||||
|
||||
private void UpdatePomoWidgetStyle()
|
||||
{
|
||||
if (WgtPomo == null)
|
||||
@@ -100,6 +164,10 @@ public partial class LauncherWindow
|
||||
|
||||
if (WidgetBar != null)
|
||||
WidgetBar.Visibility = hasAny ? Visibility.Visible : Visibility.Collapsed;
|
||||
|
||||
SyncWidgetPollingState();
|
||||
if (!hasAny)
|
||||
_widgetTimer?.Stop();
|
||||
}
|
||||
|
||||
private void WgtPerf_Click(object sender, System.Windows.Input.MouseButtonEventArgs e)
|
||||
|
||||
Reference in New Issue
Block a user