코워크·코드 하단 메모리 표기 제거 및 footer 정리\n\n- Cowork/Code 하단 작업 바의 메모리 상태 칩을 항상 숨기도록 조정\n- 메모리 상태 버튼 비노출 시 tooltip과 팝업 진입도 함께 차단\n- README와 DEVELOPMENT 문서에 2026-04-07 03:03 (KST) 기준 변경 이력 반영\n- dotnet build 검증 완료 (경고 0, 오류 0)
Some checks failed
Release Gate / gate (push) Has been cancelled
Some checks failed
Release Gate / gate (push) Has been cancelled
This commit is contained in:
@@ -1455,3 +1455,6 @@ MIT License
|
||||
- 업데이트: 2026-04-07 02:56 (KST)
|
||||
- AX Agent 내부 설정 개발자 탭의 `워크플로우 시각화`가 숨은 개발자 모드 의존 때문에 실제로 창을 띄우지 않던 문제를 수정했습니다. 이제 토글을 켜면 즉시 워크플로우 분석기 창이 열리고, 끄면 창이 숨겨집니다.
|
||||
- 일반 설정에만 남아 있던 `문서 미리보기 자동 표시` 옵션을 AX Agent 내부 설정 공통 탭에도 복원해, Cowork/Code에서 프리뷰 자동 열기 정책을 내부 설정에서 바로 바꿀 수 있게 했습니다.
|
||||
- 업데이트: 2026-04-07 03:03 (KST)
|
||||
- Cowork/Code 하단 작업 바의 메모리 상태 칩을 숨겼습니다. 이제 footer에는 폴더, 권한, Git 같은 작업 상태만 남고 메모리 관련 표기는 노출되지 않습니다.
|
||||
- 메모리 상태 버튼이 비노출일 때는 관련 팝업도 열리지 않도록 정리해, 상태 갱신이나 탭 전환 중 다시 나타나는 일이 없게 했습니다.
|
||||
|
||||
@@ -5311,3 +5311,9 @@ ow + toggle ?쒓컖 ?몄뼱濡??ㅼ떆 ?뺣젹?덈떎.
|
||||
- 내부 설정 공통 탭의 자동 프리뷰 콤보 값을 `Llm.AutoPreview`와 동기화하고, 변경 시 바로 저장되도록 `CmbOverlayAutoPreview_SelectionChanged`를 추가했다.
|
||||
- [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml)
|
||||
- AX Agent 내부 설정 공통 탭에 `문서 미리보기` 콤보를 추가해 `자동 표시 / 수동 / 비활성화`를 내부 설정에서 직접 제어할 수 있게 했다.
|
||||
|
||||
## 2026-04-07 03:03 (KST)
|
||||
|
||||
- [ChatWindow.FooterPresentation.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.FooterPresentation.cs)
|
||||
- Cowork/Code 하단 작업 바의 메모리 상태 칩을 항상 숨기도록 조정했다.
|
||||
- 메모리 상태 버튼이 비노출일 때는 상태 문자열과 tooltip을 초기화하고, 클릭으로 상세 팝업이 열리지 않게 막아 footer에서 메모리 표기가 다시 노출되지 않도록 정리했다.
|
||||
|
||||
@@ -25,7 +25,7 @@ public partial class ChatWindow
|
||||
? "문서 작성, 데이터 분석, 파일 작업을 요청하세요. 필요하면 작업 폴더 파일도 함께 참고합니다."
|
||||
: "문서 작성, 데이터 분석, 파일 작업을 요청하세요. 작업 폴더를 선택하면 관련 파일도 함께 참고합니다.",
|
||||
"Code" => hasFolder
|
||||
? "코드 수정, 원인 분석, 빌드·테스트를 요청하세요. 작업 폴더 코드를 참고하고, 상단 저장소 배너로 브랜치와 변경 상태를 함께 봅니다."
|
||||
? "코드 수정, 원인 분석, 빌드·테스트를 요청하세요. 작업 폴더 코드를 참고하고 저장소 상태도 함께 보여줍니다."
|
||||
: "작업 폴더를 선택한 뒤 코드 수정, 원인 분석, 빌드·테스트를 요청하세요.",
|
||||
_ => "질문, 요약, 초안 작성, 아이디어 정리를 요청하세요.",
|
||||
};
|
||||
@@ -47,9 +47,9 @@ public partial class ChatWindow
|
||||
return preset.Description.Trim();
|
||||
|
||||
if (string.Equals(_activeTab, "Cowork", StringComparison.OrdinalIgnoreCase))
|
||||
return "선택된 작업 유형에 맞는 문서·데이터·파일 작업 흐름으로 이어집니다.";
|
||||
return "선택한 작업 유형에 맞춰 문서·데이터·파일 작업 흐름으로 이어집니다.";
|
||||
|
||||
return "선택된 대화 주제에 맞는 응답 방향과 초안 흐름으로 이어집니다.";
|
||||
return "선택한 대화 주제에 맞춰 응답 방향과 초안 흐름이 정리됩니다.";
|
||||
}
|
||||
|
||||
private void UpdateFolderBar()
|
||||
@@ -85,7 +85,13 @@ public partial class ChatWindow
|
||||
UpdateMemoryStatusUi();
|
||||
RefreshContextUsageVisual();
|
||||
ScheduleGitBranchRefresh();
|
||||
UpdateGitBranchUi(_currentGitBranchName, GitBranchFilesText?.Text ?? "", GitBranchAddedText?.Text ?? "", GitBranchDeletedText?.Text ?? "", _currentGitTooltip ?? "", BtnGitBranch?.Visibility ?? Visibility.Collapsed);
|
||||
UpdateGitBranchUi(
|
||||
_currentGitBranchName,
|
||||
GitBranchFilesText?.Text ?? "",
|
||||
GitBranchAddedText?.Text ?? "",
|
||||
GitBranchDeletedText?.Text ?? "",
|
||||
_currentGitTooltip ?? "",
|
||||
BtnGitBranch?.Visibility ?? Visibility.Collapsed);
|
||||
}
|
||||
|
||||
private void UpdateDataUsageUI()
|
||||
@@ -98,54 +104,10 @@ public partial class ChatWindow
|
||||
if (BtnMemoryStatus == null || MemoryStatusLabel == null)
|
||||
return;
|
||||
|
||||
if (_activeTab == "Chat")
|
||||
{
|
||||
BtnMemoryStatus.Visibility = Visibility.Collapsed;
|
||||
MemoryStatusSeparator.Visibility = Visibility.Collapsed;
|
||||
return;
|
||||
}
|
||||
|
||||
var app = System.Windows.Application.Current as App;
|
||||
var memory = app?.MemoryService;
|
||||
if (memory == null || !_settings.Settings.Llm.EnableAgentMemory)
|
||||
{
|
||||
MemoryStatusLabel.Text = "메모리 꺼짐";
|
||||
BtnMemoryStatus.ToolTip = "에이전트 메모리가 비활성화되어 있습니다.";
|
||||
BtnMemoryStatus.Visibility = Visibility.Visible;
|
||||
MemoryStatusSeparator.Visibility = Visibility.Visible;
|
||||
return;
|
||||
}
|
||||
|
||||
var workFolder = GetCurrentWorkFolder();
|
||||
memory.Load(workFolder);
|
||||
var docs = memory.InstructionDocuments;
|
||||
var learned = memory.All.Count;
|
||||
|
||||
MemoryStatusLabel.Text = docs.Count > 0 || learned > 0
|
||||
? $"메모리 {docs.Count} · 학습 {learned}"
|
||||
: "메모리 없음";
|
||||
|
||||
var lines = docs
|
||||
.Take(4)
|
||||
.Select(doc =>
|
||||
{
|
||||
var priority = doc.Priority > 0 ? $"우선순위 {doc.Priority}" : "우선순위 미정";
|
||||
var description = string.IsNullOrWhiteSpace(doc.Description) ? "" : $" · {doc.Description}";
|
||||
return $"[{doc.Label}] {priority}{description}";
|
||||
})
|
||||
.ToList();
|
||||
|
||||
if (docs.Count > lines.Count)
|
||||
lines.Add($"외 {docs.Count - lines.Count}개 규칙");
|
||||
|
||||
var includePolicy = _settings.Settings.Llm.AllowExternalMemoryIncludes
|
||||
? "외부 include 허용"
|
||||
: "외부 include 차단";
|
||||
BtnMemoryStatus.ToolTip = lines.Count == 0
|
||||
? $"계층형 규칙이 없습니다.\n학습 메모리 {learned}개\n{includePolicy}"
|
||||
: $"계층형 규칙 {docs.Count}개 · 학습 메모리 {learned}개\n{string.Join("\n", lines)}\n{includePolicy}";
|
||||
BtnMemoryStatus.Visibility = Visibility.Visible;
|
||||
MemoryStatusSeparator.Visibility = Visibility.Visible;
|
||||
BtnMemoryStatus.Visibility = Visibility.Collapsed;
|
||||
MemoryStatusSeparator.Visibility = Visibility.Collapsed;
|
||||
MemoryStatusLabel.Text = "메모리 없음";
|
||||
BtnMemoryStatus.ToolTip = null;
|
||||
}
|
||||
|
||||
private void BtnMemoryStatus_Click(object sender, RoutedEventArgs e)
|
||||
@@ -153,6 +115,9 @@ public partial class ChatWindow
|
||||
if (BtnMemoryStatus == null)
|
||||
return;
|
||||
|
||||
if (BtnMemoryStatus.Visibility != Visibility.Visible)
|
||||
return;
|
||||
|
||||
_memoryStatusPopup?.SetCurrentValue(Popup.IsOpenProperty, false);
|
||||
|
||||
var app = System.Windows.Application.Current as App;
|
||||
@@ -164,9 +129,7 @@ public partial class ChatWindow
|
||||
memory.Load(workFolder);
|
||||
var docs = memory.InstructionDocuments;
|
||||
var learned = memory.All.Count;
|
||||
var includePolicy = _settings.Settings.Llm.AllowExternalMemoryIncludes
|
||||
? "외부 include 허용"
|
||||
: "외부 include 차단";
|
||||
var includePolicy = _settings.Settings.Llm.AllowExternalMemoryIncludes ? "외부 include 허용" : "외부 include 차단";
|
||||
var auditEnabled = _settings.Settings.Llm.EnableAuditLog;
|
||||
var recentIncludeEntries = AuditLogService.LoadRecent("MemoryInclude", maxCount: 5, daysBack: 3);
|
||||
|
||||
@@ -236,7 +199,7 @@ public partial class ChatWindow
|
||||
{
|
||||
panel.Children.Add(new TextBlock
|
||||
{
|
||||
Text = "감사 로그가 꺼져 있어 include 이력이 기록되지 않습니다.",
|
||||
Text = "감사 로그가 꺼져 있어 include 이력을 기록하지 않습니다.",
|
||||
FontSize = 11,
|
||||
Foreground = secondaryText,
|
||||
TextWrapping = TextWrapping.Wrap,
|
||||
@@ -247,7 +210,7 @@ public partial class ChatWindow
|
||||
{
|
||||
panel.Children.Add(new TextBlock
|
||||
{
|
||||
Text = "최근 3일 include 감사 기록이 없습니다.",
|
||||
Text = "최근 3일간 include 감사 기록이 없습니다.",
|
||||
FontSize = 11,
|
||||
Foreground = secondaryText,
|
||||
Margin = new Thickness(8, 0, 8, 6),
|
||||
@@ -282,9 +245,7 @@ public partial class ChatWindow
|
||||
return path;
|
||||
|
||||
var directory = Path.GetDirectoryName(path);
|
||||
return string.IsNullOrWhiteSpace(directory)
|
||||
? fileName
|
||||
: $"{fileName} · {directory}";
|
||||
return string.IsNullOrWhiteSpace(directory) ? fileName : $"{fileName} · {directory}";
|
||||
}
|
||||
catch
|
||||
{
|
||||
@@ -330,12 +291,7 @@ public partial class ChatWindow
|
||||
});
|
||||
}
|
||||
|
||||
return new Border
|
||||
{
|
||||
Background = Brushes.Transparent,
|
||||
CornerRadius = new CornerRadius(8),
|
||||
Child = stack,
|
||||
};
|
||||
return new Border { Background = Brushes.Transparent, CornerRadius = new CornerRadius(8), Child = stack };
|
||||
}
|
||||
|
||||
private Border BuildMemoryPopupAuditRow(AuditEntry entry, Brush primaryText, Brush secondaryText, Brush okBrush, Brush warnBrush, Brush dangerBrush)
|
||||
@@ -369,12 +325,7 @@ public partial class ChatWindow
|
||||
Margin = new Thickness(0, 2, 0, 0),
|
||||
});
|
||||
|
||||
return new Border
|
||||
{
|
||||
Background = Brushes.Transparent,
|
||||
CornerRadius = new CornerRadius(8),
|
||||
Child = stack,
|
||||
};
|
||||
return new Border { Background = Brushes.Transparent, CornerRadius = new CornerRadius(8), Child = stack };
|
||||
}
|
||||
|
||||
private string? BuildMemoryContextEvidenceText()
|
||||
|
||||
Reference in New Issue
Block a user