- draft queue 패널은 기본 상태에서 실행/다음/실패가 없으면 숨기도록 조정 - 컨텍스트 사용량 hover 팝업을 현재 모델 사용량과 compact 상태 2줄 요약으로 축소 - README와 DEVELOPMENT 이력에 claw-code parity 기준 상태를 반영 - 검증: 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:
@@ -934,6 +934,10 @@ ow + toggle 시각 언어로 통일했습니다.
|
|||||||
- 이 정리로 `retry / follow-up / branch follow-up / steering` 큐 생성 시 현재 대화 교체, 세션 반영, 후속 queue UI 갱신 지점이 하나로 모였고, 이후 queue 정책 조정도 같은 helper 한 군데만 손보면 되게 됐습니다.
|
- 이 정리로 `retry / follow-up / branch follow-up / steering` 큐 생성 시 현재 대화 교체, 세션 반영, 후속 queue UI 갱신 지점이 하나로 모였고, 이후 queue 정책 조정도 같은 helper 한 군데만 손보면 되게 됐습니다.
|
||||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||||
- 업데이트: 2026-04-05 20:21 (KST)
|
- 업데이트: 2026-04-05 20:21 (KST)
|
||||||
|
- 하단 보조 UI도 더 `claw-code`처럼 최소 노출로 조정했습니다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 의 draft queue는 기본 상태에서 `실행 / 다음 / 실패`가 하나도 없으면 아예 접히도록 바꿨습니다. 완료/보류만 남은 경우에는 기본 화면에서 보이지 않습니다.
|
||||||
|
- 같은 파일의 컨텍스트 사용량 hover 팝업도 긴 진단 문자열 대신 2줄 요약으로 정리했습니다. 현재 모델의 오늘 사용량과 `compact 후 첫 응답 대기` 또는 자동 압축 시작 임계치만 보여주도록 줄여 하단 작업 바 밀도를 더 가볍게 맞췄습니다.
|
||||||
|
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0
|
||||||
|
- 업데이트: 2026-04-05 20:27 (KST)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -4700,3 +4700,8 @@ ow + toggle ?쒓컖 ?몄뼱濡??ㅼ떆 ?뺣젹?덈떎.
|
|||||||
- 이번 묶음 후 추정 parity는 `core engine 91% / main transcript UI 96% / Cowork·Code runtime UX 95% / internal settings 92% / overall 95%` 정도로 재평가했습니다.
|
- 이번 묶음 후 추정 parity는 `core engine 91% / main transcript UI 96% / Cowork·Code runtime UX 95% / internal settings 92% / overall 95%` 정도로 재평가했습니다.
|
||||||
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\` 경고 0 / 오류 0
|
- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\` 경고 0 / 오류 0
|
||||||
- 업데이트: 2026-04-05 20:21 (KST)
|
- 업데이트: 2026-04-05 20:21 (KST)
|
||||||
|
- 하단 보조 UI도 더 최소 노출로 조정했습니다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 의 `RebuildDraftQueuePanel(...)` 은 기본 상태에서 `running / queued / failed` 가 모두 0이면 queue 패널을 숨기도록 바뀌었습니다. 완료/보류만 남아 있는 정리성 상태는 기본 transcript 아래를 차지하지 않게 한 변경입니다.
|
||||||
|
- 같은 파일의 `RefreshContextUsageVisual()` 은 hover 팝업 텍스트를 2줄 요약으로 축소했습니다. 긴 `compact history / session stats / post-compaction usage / top models` 문자열은 기본 hover 경로에서 제거하고, 현재 모델 오늘 사용량과 `compact 후 첫 응답 대기` 또는 자동 압축 시작 임계치만 노출하도록 바꿨습니다.
|
||||||
|
- 이번 묶음 후 추정 parity는 `core engine 91% / main transcript UI 97% / Cowork·Code runtime UX 96% / 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:27 (KST)
|
||||||
|
|||||||
@@ -18681,9 +18681,6 @@ private static (string icon, string label, string bgHex, string fgHex) GetDecisi
|
|||||||
var currentModelPromptTokens = GetUsageValue(todayUsage.ModelPromptTokens, currentModelUsageKey);
|
var currentModelPromptTokens = GetUsageValue(todayUsage.ModelPromptTokens, currentModelUsageKey);
|
||||||
var currentModelCompletionTokens = GetUsageValue(todayUsage.ModelCompletionTokens, currentModelUsageKey);
|
var currentModelCompletionTokens = GetUsageValue(todayUsage.ModelCompletionTokens, currentModelUsageKey);
|
||||||
var currentModelTotalTokens = currentModelPromptTokens + currentModelCompletionTokens;
|
var currentModelTotalTokens = currentModelPromptTokens + currentModelCompletionTokens;
|
||||||
var currentModelPostPromptTokens = GetUsageValue(todayUsage.PostCompactionPromptTokens, currentModelUsageKey);
|
|
||||||
var currentModelPostCompletionTokens = GetUsageValue(todayUsage.PostCompactionCompletionTokens, currentModelUsageKey);
|
|
||||||
var currentModelPostTotalTokens = currentModelPostPromptTokens + currentModelPostCompletionTokens;
|
|
||||||
TokenUsagePercentText.Text = percentText;
|
TokenUsagePercentText.Text = percentText;
|
||||||
TokenUsageSummaryText.Text = $"컨텍스트 {percentText}";
|
TokenUsageSummaryText.Text = $"컨텍스트 {percentText}";
|
||||||
TokenUsageHintText.Text =
|
TokenUsageHintText.Text =
|
||||||
@@ -18692,45 +18689,6 @@ private static (string icon, string label, string bgHex, string fgHex) GetDecisi
|
|||||||
? $" · 오늘 {FormatTokenCount(currentModelTotalTokens)}"
|
? $" · 오늘 {FormatTokenCount(currentModelTotalTokens)}"
|
||||||
: "");
|
: "");
|
||||||
CompactNowLabel.Text = compactLabel;
|
CompactNowLabel.Text = compactLabel;
|
||||||
var compactHistory = _lastCompactionAt.HasValue && _lastCompactionBeforeTokens.HasValue && _lastCompactionAfterTokens.HasValue
|
|
||||||
? $"\n최근 압축: {(_lastCompactionWasAutomatic ? "자동" : "수동")} · {_lastCompactionAt.Value:HH:mm:ss}\n" +
|
|
||||||
$"절감: {_lastCompactionBeforeTokens.Value:N0} → {_lastCompactionAfterTokens.Value:N0} tokens " +
|
|
||||||
$"(-{Math.Max(0, _lastCompactionBeforeTokens.Value - _lastCompactionAfterTokens.Value):N0}, " +
|
|
||||||
$"{Services.TokenEstimator.Format(_lastCompactionBeforeTokens.Value)} → {Services.TokenEstimator.Format(_lastCompactionAfterTokens.Value)})\n" +
|
|
||||||
$"단계: {(!string.IsNullOrWhiteSpace(_lastCompactionStageSummary) ? _lastCompactionStageSummary : "기본")}"
|
|
||||||
: "";
|
|
||||||
|
|
||||||
var compactSession = _sessionCompactionCount > 0
|
|
||||||
? $"\n세션 누적: {_sessionCompactionCount:N0}회 (자동 {_sessionAutomaticCompactionCount:N0} / 수동 {_sessionManualCompactionCount:N0})\n" +
|
|
||||||
$"세션 절감: {Services.TokenEstimator.Format(_sessionCompactionSavedTokens)} tokens\n" +
|
|
||||||
$"세션 메모리 {_sessionMemoryCompactionCount:N0}회 · 경계 {_sessionMicrocompactBoundaryCount:N0}건 · snip {_sessionSnipCompactionCount:N0}건"
|
|
||||||
: "";
|
|
||||||
var postCompactionUsage = _sessionPostCompactionResponseCount > 0
|
|
||||||
? $"\ncompact 이후 응답: {_sessionPostCompactionResponseCount:N0}회\n" +
|
|
||||||
$"compact 이후 사용량: {Services.TokenEstimator.Format(_sessionPostCompactionPromptTokens)} + {Services.TokenEstimator.Format(_sessionPostCompactionCompletionTokens)} = {Services.TokenEstimator.Format(_sessionPostCompactionPromptTokens + _sessionPostCompactionCompletionTokens)} tokens"
|
|
||||||
: "";
|
|
||||||
var pendingPostCompaction = _pendingPostCompaction ? "\ncompact 후 첫 응답 대기 중" : "";
|
|
||||||
var currentModelUsageText = !string.IsNullOrWhiteSpace(currentModelUsageKey)
|
|
||||||
? $"\n현재 모델: {currentService} · {currentModel}\n" +
|
|
||||||
$"오늘 모델 사용량: {FormatTokenCount(currentModelPromptTokens)} + {FormatTokenCount(currentModelCompletionTokens)} = {FormatTokenCount(currentModelTotalTokens)} tokens" +
|
|
||||||
(currentModelPostTotalTokens > 0
|
|
||||||
? $"\n현재 모델 compact 이후: {FormatTokenCount(currentModelPostPromptTokens)} + {FormatTokenCount(currentModelPostCompletionTokens)} = {FormatTokenCount(currentModelPostTotalTokens)} tokens"
|
|
||||||
: "")
|
|
||||||
: "";
|
|
||||||
var topModelsText = BuildTopModelUsageSummary(todayUsage);
|
|
||||||
|
|
||||||
TokenUsageCard.ToolTip =
|
|
||||||
$"상태: {summary}\n" +
|
|
||||||
$"사용량: {currentTokens:N0} / {maxContextTokens:N0} tokens ({percentText})\n" +
|
|
||||||
$"간단 표기: {Services.TokenEstimator.Format(currentTokens)} / {Services.TokenEstimator.Format(maxContextTokens)}\n" +
|
|
||||||
$"자동 압축 시작: {triggerPercent}%\n" +
|
|
||||||
$"현재 입력 초안 포함" +
|
|
||||||
currentModelUsageText +
|
|
||||||
topModelsText +
|
|
||||||
compactHistory +
|
|
||||||
compactSession +
|
|
||||||
postCompactionUsage +
|
|
||||||
pendingPostCompaction;
|
|
||||||
|
|
||||||
if (TokenUsagePopupTitle != null)
|
if (TokenUsagePopupTitle != null)
|
||||||
TokenUsagePopupTitle.Text = $"컨텍스트 창 {percentText}";
|
TokenUsagePopupTitle.Text = $"컨텍스트 창 {percentText}";
|
||||||
@@ -18738,9 +18696,13 @@ private static (string icon, string label, string bgHex, string fgHex) GetDecisi
|
|||||||
TokenUsagePopupUsage.Text = $"{Services.TokenEstimator.Format(currentTokens)}/{Services.TokenEstimator.Format(maxContextTokens)}";
|
TokenUsagePopupUsage.Text = $"{Services.TokenEstimator.Format(currentTokens)}/{Services.TokenEstimator.Format(maxContextTokens)}";
|
||||||
if (TokenUsagePopupDetail != null)
|
if (TokenUsagePopupDetail != null)
|
||||||
{
|
{
|
||||||
TokenUsagePopupDetail.Text = currentModelTotalTokens > 0
|
var usageLine = currentModelTotalTokens > 0
|
||||||
? $"오늘 {currentService} · {currentModel} 사용량 {FormatTokenCount(currentModelTotalTokens)}"
|
? $"{currentService} · {currentModel} 오늘 {FormatTokenCount(currentModelTotalTokens)}"
|
||||||
: $"{summary} · 자동 압축 시작 {triggerPercent}%";
|
: $"{summary} · 오늘 모델 사용량 없음";
|
||||||
|
var compactLine = _pendingPostCompaction
|
||||||
|
? "compact 후 첫 응답 대기 중"
|
||||||
|
: $"자동 압축 시작 {triggerPercent}%";
|
||||||
|
TokenUsagePopupDetail.Text = $"{usageLine}\n{compactLine}";
|
||||||
}
|
}
|
||||||
if (TokenUsagePopupCompact != null)
|
if (TokenUsagePopupCompact != null)
|
||||||
{
|
{
|
||||||
@@ -19686,8 +19648,20 @@ private static (string icon, string label, string bgHex, string fgHex) GetDecisi
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
DraftQueuePanel.Visibility = Visibility.Visible;
|
|
||||||
var summary = _appState.GetDraftQueueSummary(_activeTab);
|
var summary = _appState.GetDraftQueueSummary(_activeTab);
|
||||||
|
var shouldShowQueue =
|
||||||
|
IsDraftQueueExpanded()
|
||||||
|
|| summary.RunningCount > 0
|
||||||
|
|| summary.QueuedCount > 0
|
||||||
|
|| summary.FailedCount > 0;
|
||||||
|
|
||||||
|
if (!shouldShowQueue)
|
||||||
|
{
|
||||||
|
DraftQueuePanel.Visibility = Visibility.Collapsed;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
DraftQueuePanel.Visibility = Visibility.Visible;
|
||||||
DraftQueuePanel.Children.Add(CreateDraftQueueSummaryStrip(summary, IsDraftQueueExpanded()));
|
DraftQueuePanel.Children.Add(CreateDraftQueueSummaryStrip(summary, IsDraftQueueExpanded()));
|
||||||
if (!IsDraftQueueExpanded())
|
if (!IsDraftQueueExpanded())
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user