diff --git a/README.md b/README.md index cf21736..ad3decf 100644 --- a/README.md +++ b/README.md @@ -942,6 +942,15 @@ ow + toggle 시각 언어로 통일했습니다. - 같은 파일의 컨텍스트 hover 팝업도 과한 진단성 문자열을 걷고, 현재 모델 오늘 사용량과 compact 상태만 보여주는 짧은 2줄 요약으로 유지되게 다듬었습니다. - 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0 - 업데이트: 2026-04-05 20:34 (KST) +- Cowork/Code 상단 활동 배지도 더 조용하게 만들었습니다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 의 `UpdateTaskSummaryIndicators()` 는 이제 실제 진행 중 대화나 활성 작업이 있을 때만 `RuntimeActivityBadge` 를 보이게 합니다. idle 상태에서는 상단 보조 메타가 남아 있지 않습니다. +- 같은 파일의 `UpdateAgentProgressBar(...)` 에 남아 있던 미사용 debug 체크 변수도 제거해 상태 갱신 경로를 조금 더 단순화했습니다. +- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0 +- 업데이트: 2026-04-05 20:40 (KST) +- `claw-code` 기준으로 남아 있던 plan 도구 레거시도 더 잘랐습니다. [AgentTabSettingsResolver.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/AgentTabSettingsResolver.cs) 는 이제 저장값과 무관하게 `enter_plan_mode`, `exit_plan_mode` 를 항상 비활성 목록에 넣습니다. plan mode 도구는 완전 레거시 호환 영역으로만 남고 실제 code 실행 경로에는 개입하지 않습니다. +- [AppStateService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/AppStateService.cs) 의 운영 상태 요약도 더 `claw-code`처럼 조용하게 맞췄습니다. 기본 `RuntimeActivityBadge` 와 상단 strip 은 이제 실제 실행/권한 대기/백그라운드 작업이 있을 때만 살아나며, 단순 queue/재시도 대기만으로는 기본 헤더를 흔들지 않습니다. +- 이번 정리 후 추정 parity 는 `core engine 92% / main transcript UI 97% / Cowork·Code runtime UX 97% / internal settings 92% / overall 96%` 정도로 재평가했습니다. +- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0 +- 업데이트: 2026-04-05 20:48 (KST) --- diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md index 90a5319..0f80e44 100644 --- a/docs/DEVELOPMENT.md +++ b/docs/DEVELOPMENT.md @@ -4710,3 +4710,8 @@ ow + toggle ?쒓컖 ?몄뼱濡??ㅼ떆 ?뺣젹?덈떎. - 이번 묶음 후 추정 parity는 `core engine 91% / main transcript UI 97% / Cowork·Code runtime UX 97% / internal settings 92% / overall 96%` 정도로 재평가했습니다. - 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\` 경고 0 / 오류 0 - 업데이트: 2026-04-05 20:34 (KST) +- `claw-code` 기준의 레거시 plan 도구 경로도 더 정리했습니다. [AgentTabSettingsResolver.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/AgentTabSettingsResolver.cs) 는 이제 persisted 설정과 무관하게 `enter_plan_mode`, `exit_plan_mode` 를 항상 비활성 목록에 포함합니다. 숨겨진 설정값이 code 실행 경로에 다시 영향을 주지 않게 한 변경입니다. +- [AppStateService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/AppStateService.cs) 의 `GetOperationalStatus(...)` 도 기본 노출을 더 줄였습니다. queue/재시도 대기만 남은 상태로는 `RuntimeActivityBadge` 와 상단 strip 을 켜지 않고, 실제 실행/권한 대기/백그라운드 작업만 기본 헤더 메타를 살리도록 맞췄습니다. +- 이번 묶음 후 추정 parity 는 `core engine 92% / main transcript UI 97% / Cowork·Code runtime UX 97% / internal settings 92% / overall 96%` 정도로 재평가했습니다. +- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\` 경고 0 / 오류 0 +- 업데이트: 2026-04-05 20:48 (KST) diff --git a/src/AxCopilot/Services/Agent/AgentTabSettingsResolver.cs b/src/AxCopilot/Services/Agent/AgentTabSettingsResolver.cs index 3b50382..807b32f 100644 --- a/src/AxCopilot/Services/Agent/AgentTabSettingsResolver.cs +++ b/src/AxCopilot/Services/Agent/AgentTabSettingsResolver.cs @@ -21,11 +21,10 @@ internal static class AgentTabSettingsResolver public static IEnumerable EnumerateCodeTabDisabledTools(CodeSettings code) { - if (!code.EnablePlanModeTools) - { - yield return "enter_plan_mode"; - yield return "exit_plan_mode"; - } + // Plan mode tools are legacy compatibility only and stay disabled + // regardless of any persisted value. + yield return "enter_plan_mode"; + yield return "exit_plan_mode"; if (!code.EnableWorktreeTools) { diff --git a/src/AxCopilot/Services/AppStateService.cs b/src/AxCopilot/Services/AppStateService.cs index 89e199d..f9584b9 100644 --- a/src/AxCopilot/Services/AppStateService.cs +++ b/src/AxCopilot/Services/AppStateService.cs @@ -544,9 +544,7 @@ public sealed class AppStateService var latestDeniedPermission = GetLatestDeniedPermission(); var showRuntimeBadge = taskSummary.HasActiveTasks - || queueSummary.QueuedCount > 0 - || queueSummary.RunningCount > 0 - || queueSummary.BlockedCount > 0 + || taskSummary.PendingPermissionCount > 0 || backgroundSummary.ActiveCount > 0; var runtimeLabel = taskSummary.PendingPermissionCount > 0 @@ -582,20 +580,6 @@ public sealed class AppStateService stripKind = "failed_run"; stripText = $"최근 실패 {FormatDate(taskSummary.LatestFailedRun.UpdatedAt)}"; } - else if (queueSummary.RunningCount > 0 || queueSummary.QueuedCount > 0) - { - stripKind = "queue"; - stripText = queueSummary.RunningCount > 0 - ? $"큐 실행 중 {queueSummary.RunningCount} · 다음 {Truncate(queueSummary.NextItem?.Text, 24)}" - : $"대기열 {queueSummary.QueuedCount} · 다음 {Truncate(queueSummary.NextItem?.Text, 24)}"; - } - else if (queueSummary.BlockedCount > 0) - { - stripKind = "queue_blocked"; - stripText = queueSummary.NextReadyAt.HasValue - ? $"재시도 대기 {queueSummary.BlockedCount} · {FormatDate(queueSummary.NextReadyAt.Value)}" - : $"재시도 대기 {queueSummary.BlockedCount}"; - } else if (backgroundSummary.ActiveCount > 0) { stripKind = "background"; diff --git a/src/AxCopilot/Views/ChatWindow.xaml.cs b/src/AxCopilot/Views/ChatWindow.xaml.cs index 28d40a7..e1fcf2b 100644 --- a/src/AxCopilot/Views/ChatWindow.xaml.cs +++ b/src/AxCopilot/Views/ChatWindow.xaml.cs @@ -9275,9 +9275,11 @@ public partial class ChatWindow : Window private void UpdateTaskSummaryIndicators() { var status = _appState.GetOperationalStatus(_activeTab); + var hasLiveRuntimeActivity = !string.Equals(_activeTab, "Chat", StringComparison.OrdinalIgnoreCase) + && (_runningConversationCount > 0 || _appState.ActiveTasks.Count > 0); if (RuntimeActivityBadge != null) - RuntimeActivityBadge.Visibility = status.ShowRuntimeBadge + RuntimeActivityBadge.Visibility = status.ShowRuntimeBadge && hasLiveRuntimeActivity ? Visibility.Visible : Visibility.Collapsed; @@ -17913,8 +17915,6 @@ public partial class ChatWindow : Window private void UpdateAgentProgressBar(AgentEvent evt) { - var isDebugLogLevel = string.Equals(_settings.Settings.Llm.AgentLogLevel, "debug", StringComparison.OrdinalIgnoreCase); - switch (evt.Type) { case AgentEventType.Planning when evt.Steps is { Count: > 0 }: