권한 팝업 밀도 압축 2단계: 카드/행 타이포 컴팩트 정렬
Some checks failed
Release Gate / gate (push) Has been cancelled

- ChatWindow 권한 팝업 섹션 헤더/본문 간격과 폰트를 축소해 카드 밀도를 정돈

- 권한 요약/예외/최근 거부 카드 및 빠른 액션 버튼의 패딩·폰트·마진을 압축

- 핵심 권한 모드 행(아이콘/제목/설명/체크) 크기를 줄여 slash 팝업과 시각 리듬 통일

- README.md, docs/DEVELOPMENT.md에 2026-04-04 14:16(KST) 기준 이력 반영

- 검증: dotnet build 0경고/0오류, 관련 필터 테스트 82건 통과
This commit is contained in:
2026-04-04 14:17:22 +09:00
parent d3e1f947ba
commit db920d2256
3 changed files with 62 additions and 41 deletions

View File

@@ -1610,7 +1610,7 @@ public partial class ChatWindow : Window
{
var body = new Border
{
Margin = new Thickness(0, 6, 0, 0),
Margin = new Thickness(0, 5, 0, 0),
Visibility = expanded ? Visibility.Visible : Visibility.Collapsed,
Child = content,
};
@@ -1618,7 +1618,7 @@ public partial class ChatWindow : Window
{
Text = expanded ? "\uE70D" : "\uE76C",
FontFamily = new FontFamily("Segoe MDL2 Assets"),
FontSize = 11,
FontSize = 10.5,
Foreground = secondaryText,
VerticalAlignment = VerticalAlignment.Center,
};
@@ -1631,7 +1631,7 @@ public partial class ChatWindow : Window
{
Text = icon,
FontFamily = new FontFamily("Segoe MDL2 Assets"),
FontSize = 11,
FontSize = 10.5,
Foreground = BrushFromHex(accentHex),
Margin = new Thickness(0, 0, 6, 0),
VerticalAlignment = VerticalAlignment.Center,
@@ -1639,7 +1639,7 @@ public partial class ChatWindow : Window
var titleBlock = new TextBlock
{
Text = title,
FontSize = 10,
FontSize = 9.5,
FontWeight = FontWeights.SemiBold,
Foreground = primaryText,
VerticalAlignment = VerticalAlignment.Center,
@@ -1653,7 +1653,7 @@ public partial class ChatWindow : Window
{
Background = Brushes.Transparent,
CornerRadius = new CornerRadius(6),
Padding = new Thickness(8, 5, 8, 5),
Padding = new Thickness(7, 4, 7, 4),
Cursor = Cursors.Hand,
Focusable = true,
Child = headerGrid,
@@ -1685,7 +1685,7 @@ public partial class ChatWindow : Window
BorderThickness = new Thickness(1),
CornerRadius = new CornerRadius(8),
Padding = new Thickness(2),
Margin = new Thickness(0, 0, 0, 6),
Margin = new Thickness(0, 0, 0, 5),
Child = new StackPanel
{
Children =
@@ -1711,8 +1711,8 @@ public partial class ChatWindow : Window
: BrushFromHex("#C7D2FE"),
BorderThickness = new Thickness(1),
CornerRadius = new CornerRadius(8),
Padding = new Thickness(11, 9, 11, 9),
Margin = new Thickness(0, 0, 0, 6),
Padding = new Thickness(9, 7, 9, 7),
Margin = new Thickness(0, 0, 0, 5),
Child = new StackPanel
{
Children =
@@ -1720,7 +1720,7 @@ public partial class ChatWindow : Window
new TextBlock
{
Text = $"현재 권한 모드 · {PermissionModeCatalog.ToDisplayLabel(summary.EffectiveMode)}",
FontSize = 12,
FontSize = 11.5,
FontWeight = FontWeights.SemiBold,
Foreground = string.Equals(summary.RiskLevel, "high", StringComparison.OrdinalIgnoreCase)
? BrushFromHex("#C2410C")
@@ -1731,11 +1731,11 @@ public partial class ChatWindow : Window
new TextBlock
{
Text = $"{summary.Description} 기본값 {PermissionModeCatalog.ToDisplayLabel(summary.DefaultMode)} · 예외 {summary.OverrideCount}개",
FontSize = 10,
Margin = new Thickness(0, 4, 0, 0),
FontSize = 9.5,
Margin = new Thickness(0, 3, 0, 0),
Foreground = TryFindResource("SecondaryText") as Brush ?? Brushes.Gray,
TextWrapping = TextWrapping.Wrap,
LineHeight = 15,
LineHeight = 14,
MaxWidth = 250,
}
}
@@ -1747,7 +1747,7 @@ public partial class ChatWindow : Window
{
var overrideWrap = new WrapPanel
{
Margin = new Thickness(0, 0, 0, 6),
Margin = new Thickness(0, 0, 0, 5),
};
foreach (var overrideEntry in summary.TopOverrides)
@@ -1758,8 +1758,8 @@ public partial class ChatWindow : Window
BorderBrush = BrushFromHex("#E2E8F0"),
BorderThickness = new Thickness(1),
CornerRadius = new CornerRadius(12),
Padding = new Thickness(8, 3, 8, 3),
Margin = new Thickness(0, 0, 5, 5),
Padding = new Thickness(7, 2.5, 7, 2.5),
Margin = new Thickness(0, 0, 4, 4),
Child = new StackPanel
{
Orientation = Orientation.Horizontal,
@@ -1769,7 +1769,7 @@ public partial class ChatWindow : Window
{
Text = "\uE72E",
FontFamily = new FontFamily("Segoe MDL2 Assets"),
FontSize = 10,
FontSize = 9.5,
Foreground = BrushFromHex("#2563EB"),
Margin = new Thickness(0, 0, 4, 0),
VerticalAlignment = VerticalAlignment.Center,
@@ -1777,7 +1777,7 @@ public partial class ChatWindow : Window
new TextBlock
{
Text = $"{overrideEntry.Key} · {PermissionModeCatalog.ToDisplayLabel(overrideEntry.Value)}",
FontSize = 10,
FontSize = 9.5,
Foreground = TryFindResource("SecondaryText") as Brush ?? Brushes.DimGray,
}
}
@@ -1793,7 +1793,7 @@ public partial class ChatWindow : Window
new TextBlock
{
Text = "도구별 예외",
FontSize = 10.5,
FontSize = 10,
FontWeight = FontWeights.SemiBold,
Foreground = TryFindResource("SecondaryText") as Brush ?? Brushes.Gray,
Margin = new Thickness(2, 0, 0, 3),
@@ -1818,7 +1818,7 @@ public partial class ChatWindow : Window
{
Text = "\uEA39",
FontFamily = new FontFamily("Segoe MDL2 Assets"),
FontSize = 11,
FontSize = 10.5,
Foreground = BrushFromHex("#991B1B"),
Margin = new Thickness(0, 0, 6, 0),
VerticalAlignment = VerticalAlignment.Center,
@@ -1826,7 +1826,7 @@ public partial class ChatWindow : Window
new TextBlock
{
Text = "최근 권한 거부",
FontSize = 11,
FontSize = 10.5,
FontWeight = FontWeights.SemiBold,
Foreground = BrushFromHex("#991B1B"),
}
@@ -1835,11 +1835,11 @@ public partial class ChatWindow : Window
deniedStack.Children.Add(new TextBlock
{
Text = _appState.FormatPermissionEventLine(latestDenied),
FontSize = 10.5,
FontSize = 10,
Foreground = BrushFromHex("#991B1B"),
Margin = new Thickness(0, 0, 0, 0),
TextWrapping = TextWrapping.Wrap,
LineHeight = 14.5,
LineHeight = 14,
MaxWidth = 250,
});
@@ -1848,14 +1848,14 @@ public partial class ChatWindow : Window
deniedStack.Children.Add(new TextBlock
{
Text = $"도구 {latestDenied.ToolName}에 바로 적용",
FontSize = 10,
Margin = new Thickness(0, 5, 0, 0),
FontSize = 9.5,
Margin = new Thickness(0, 4, 0, 0),
Foreground = TryFindResource("SecondaryText") as Brush ?? Brushes.Gray,
});
var actionRow = new WrapPanel
{
Margin = new Thickness(0, 8, 0, 0),
Margin = new Thickness(0, 6, 0, 0),
};
Button CreateActionButton(string text, string backgroundHex, string foregroundHex, Action onClick)
@@ -1867,11 +1867,11 @@ public partial class ChatWindow : Window
Foreground = BrushFromHex(foregroundHex),
BorderBrush = BrushFromHex(backgroundHex),
BorderThickness = new Thickness(1),
Padding = new Thickness(9, 4, 9, 4),
Margin = new Thickness(0, 0, 5, 5),
FontSize = 10,
Padding = new Thickness(8, 3, 8, 3),
Margin = new Thickness(0, 0, 4, 4),
FontSize = 9.5,
Cursor = Cursors.Hand,
MinWidth = 58,
MinWidth = 54,
};
ApplyHoverScaleAnimation(button, 1.02);
button.Click += (_, _) =>
@@ -1895,8 +1895,8 @@ public partial class ChatWindow : Window
BorderBrush = BrushFromHex("#FECACA"),
BorderThickness = new Thickness(1),
CornerRadius = new CornerRadius(8),
Padding = new Thickness(11, 8, 11, 8),
Margin = new Thickness(0, 0, 0, 7),
Padding = new Thickness(9, 7, 9, 7),
Margin = new Thickness(0, 0, 0, 5),
Child = deniedStack,
};
}
@@ -1926,8 +1926,8 @@ public partial class ChatWindow : Window
BorderBrush = isActive ? BrushFromHex("#C7D2FE") : Brushes.Transparent,
BorderThickness = new Thickness(1),
CornerRadius = new CornerRadius(8),
Padding = new Thickness(10, 6, 10, 6),
Margin = new Thickness(0, 2, 0, 2),
Padding = new Thickness(9, 5, 9, 5),
Margin = new Thickness(0, 1.5, 0, 1.5),
Cursor = Cursors.Hand,
Focusable = true,
};
@@ -1942,7 +1942,7 @@ public partial class ChatWindow : Window
{
Text = item.Icon,
FontFamily = new FontFamily("Segoe MDL2 Assets"),
FontSize = 13.5,
FontSize = 13,
Foreground = BrushFromHex(item.ColorHex),
Margin = new Thickness(2, 0, 9, 0),
VerticalAlignment = VerticalAlignment.Center,
@@ -1952,18 +1952,18 @@ public partial class ChatWindow : Window
textStack.Children.Add(new TextBlock
{
Text = item.Title,
FontSize = 11.5,
FontSize = 11,
FontWeight = FontWeights.SemiBold,
Foreground = TryFindResource("PrimaryText") as Brush ?? Brushes.White,
});
textStack.Children.Add(new TextBlock
{
Text = item.Description,
FontSize = 10,
Margin = new Thickness(0, 2, 0, 0),
FontSize = 9.5,
Margin = new Thickness(0, 1.5, 0, 0),
Foreground = TryFindResource("SecondaryText") as Brush ?? Brushes.Gray,
TextWrapping = TextWrapping.Wrap,
LineHeight = 14,
LineHeight = 13.5,
MaxWidth = 230,
});
Grid.SetColumn(textStack, 1);
@@ -1973,7 +1973,7 @@ public partial class ChatWindow : Window
{
Text = isActive ? "\uE73E" : "",
FontFamily = new FontFamily("Segoe MDL2 Assets"),
FontSize = 12,
FontSize = 11.5,
FontWeight = FontWeights.Bold,
Foreground = BrushFromHex("#2563EB"),
VerticalAlignment = VerticalAlignment.Center,
@@ -2022,7 +2022,7 @@ public partial class ChatWindow : Window
PermissionItems.Children.Add(new TextBlock
{
Text = "핵심 권한 모드",
FontSize = 10.5,
FontSize = 10,
FontWeight = FontWeights.SemiBold,
Foreground = secondaryText,
Margin = new Thickness(2, 0, 0, 4),