composer 상태줄 언어와 상태 표현 통일
Some checks failed
Release Gate / gate (push) Has been cancelled

- 하단 composer 상태줄에서 모델·데이터 활용·권한·브랜치가 같은 문법으로 읽히도록 문구를 정리하고 모델 버튼 툴팁에 현재 서비스/모델 정보를 보강함

- 데이터 활용과 권한 칩에 상태 색상 기반 테두리와 설명 툴팁을 추가해 현재 모드 인지가 더 쉬워지도록 정리함

- README.md와 docs/DEVELOPMENT.md에 2026-04-05 00:52 (KST) 기준 이력을 반영함

- 검증: 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:
2026-04-05 00:33:01 +09:00
parent d657539556
commit 4353998cf2
3 changed files with 36 additions and 7 deletions

View File

@@ -2264,6 +2264,8 @@ public partial class ChatWindow : Window
{
var operationMode = OperationModePolicy.Normalize(_settings.Settings.OperationMode);
BtnPermission.ToolTip = $"{summary.Description}\n운영 모드: {operationMode}\n기본값 {PermissionModeCatalog.ToDisplayLabel(summary.DefaultMode)} · 예외 {summary.OverrideCount}개";
BtnPermission.Background = Brushes.Transparent;
BtnPermission.BorderThickness = new Thickness(1);
}
if (!string.Equals(_lastPermissionBannerMode, perm, StringComparison.OrdinalIgnoreCase))
@@ -2277,6 +2279,8 @@ public partial class ChatWindow : Window
var activeColor = new SolidColorBrush(Color.FromRgb(0x10, 0x7C, 0x10));
PermissionLabel.Foreground = activeColor;
PermissionIcon.Foreground = activeColor;
if (BtnPermission != null)
BtnPermission.BorderBrush = BrushFromHex("#86EFAC");
if (PermissionTopBanner != null)
{
PermissionTopBanner.BorderBrush = BrushFromHex("#86EFAC");
@@ -2293,6 +2297,8 @@ public partial class ChatWindow : Window
var denyColor = new SolidColorBrush(Color.FromRgb(0x10, 0x7C, 0x10));
PermissionLabel.Foreground = denyColor;
PermissionIcon.Foreground = denyColor;
if (BtnPermission != null)
BtnPermission.BorderBrush = BrushFromHex("#86EFAC");
if (PermissionTopBanner != null)
{
PermissionTopBanner.BorderBrush = BrushFromHex("#86EFAC");
@@ -2309,6 +2315,8 @@ public partial class ChatWindow : Window
var autoColor = new SolidColorBrush(Color.FromRgb(0xC2, 0x41, 0x0C));
PermissionLabel.Foreground = autoColor;
PermissionIcon.Foreground = autoColor;
if (BtnPermission != null)
BtnPermission.BorderBrush = BrushFromHex("#FDBA74");
if (PermissionTopBanner != null)
{
PermissionTopBanner.BorderBrush = BrushFromHex("#FDBA74");
@@ -2330,6 +2338,10 @@ public partial class ChatWindow : Window
};
PermissionLabel.Foreground = defaultFg;
PermissionIcon.Foreground = iconFg;
if (BtnPermission != null)
BtnPermission.BorderBrush = perm == PermissionModeCatalog.Plan
? BrushFromHex("#C7D2FE")
: BrushFromHex("#BFDBFE");
if (PermissionTopBanner != null)
{
if (perm == PermissionModeCatalog.Plan)
@@ -2493,9 +2505,9 @@ public partial class ChatWindow : Window
if (DataUsageLabel == null || DataUsageIcon == null) return;
var (label, icon, color) = _folderDataUsage switch
{
"none" => ("미활용", "\uE8D8", "#6B7280"),
"passive" => ("소극", "\uE8FD", "#D97706"),
_ => ("적극", "\uE9F5", "#107C10"),
"none" => ("데이터 미활용", "\uE8D8", "#6B7280"),
"passive" => ("데이터 소극", "\uE8FD", "#D97706"),
_ => ("데이터 적극", "\uE9F5", "#107C10"),
};
DataUsageLabel.Text = label;
DataUsageIcon.Text = icon;
@@ -2503,8 +2515,14 @@ public partial class ChatWindow : Window
if (BtnDataUsage != null)
{
BtnDataUsage.Background = Brushes.Transparent;
BtnDataUsage.BorderBrush = TryFindResource("BorderColor") as Brush ?? Brushes.Gray;
BtnDataUsage.BorderBrush = BrushFromHex($"{color}66");
BtnDataUsage.BorderThickness = new Thickness(1);
BtnDataUsage.ToolTip = _folderDataUsage switch
{
"none" => "폴더 문서와 파일을 읽지 않거나 참조하지 않습니다.",
"passive" => "사용자가 요청할 때만 폴더 데이터를 참조합니다.",
_ => "폴더 문서와 파일을 자동 탐색해 작업에 적극 활용합니다."
};
}
}
@@ -13849,10 +13867,12 @@ public partial class ChatWindow : Window
_ => "Ollama",
};
var model = GetCurrentModelDisplayName();
const int maxLen = 26;
const int maxLen = 22;
if (model.Length > maxLen)
model = model[..(maxLen - 1)] + "…";
ModelLabel.Text = $"{serviceLabel} · {model}";
ModelLabel.Text = $"서비스 {serviceLabel} · {model}";
if (BtnModelSelector != null)
BtnModelSelector.ToolTip = $"현재 서비스: {serviceLabel}\n현재 모델: {GetCurrentModelDisplayName()}\n모델/추론 빠른 설정";
}
private static string NextPlanMode(string current) => (current ?? "off").ToLowerInvariant() switch
@@ -17056,7 +17076,7 @@ private static (string icon, string label, string bgHex, string fgHex) GetDecisi
}
if (GitBranchLabel != null)
GitBranchLabel.Text = string.IsNullOrWhiteSpace(branchName) ? "브랜치 없음" : branchName;
GitBranchLabel.Text = string.IsNullOrWhiteSpace(branchName) ? "브랜치 없음" : $"브랜치 {branchName}";
if (GitBranchFilesText != null)
GitBranchFilesText.Text = filesText;
if (GitBranchAddedText != null)