코드 탭 폴더 데이터 활용 기본 허용 및 파일명 강조 적용
Some checks failed
Release Gate / gate (push) Has been cancelled

코드 탭에서는 폴더 내 데이터 활용을 항상 적극 활용으로 고정하고 하단 버튼과 내부 설정 옵션을 숨겨 사용 흐름을 단순화했습니다.

코워크와 코드 탭의 사용자 메시지도 파일 경로 강조 렌더러를 사용하도록 바꿔 폴더 하위 파일명 입력 시 파란색으로 표시되게 맞췄습니다.

README와 DEVELOPMENT 문서에 변경 이력을 반영했고 Release 빌드에서 경고 0 오류 0을 확인했습니다.
This commit is contained in:
2026-04-05 22:28:29 +09:00
parent 905ea41ed3
commit be7328184a
3 changed files with 46 additions and 7 deletions

View File

@@ -1813,7 +1813,9 @@ public partial class ChatWindow : Window
: fallbackPermission;
_settings.Settings.Llm.FilePermission = conversationPermission;
_folderDataUsage = conv?.DataUsage ?? llm.FolderDataUsage ?? "none";
_folderDataUsage = IsFolderDataAlwaysEnabledTab()
? "active"
: (conv?.DataUsage ?? llm.FolderDataUsage ?? "none");
_selectedMood = conv?.Mood ?? llm.DefaultMood ?? "modern";
}
@@ -1849,7 +1851,7 @@ public partial class ChatWindow : Window
try
{
var normalizedPermission = PermissionModeCatalog.NormalizeGlobalMode(_settings.Settings.Llm.FilePermission);
var dataUsage = _folderDataUsage ?? "none";
var dataUsage = IsFolderDataAlwaysEnabledTab() ? "active" : (_folderDataUsage ?? "none");
var mood = _selectedMood ?? (_settings.Settings.Llm.DefaultMood ?? "modern");
var outputFormat = conv.OutputFormat ?? "auto";
@@ -2255,6 +2257,8 @@ public partial class ChatWindow : Window
private void BtnDataUsage_Click(object sender, System.Windows.Input.MouseButtonEventArgs e)
{
if (IsFolderDataAlwaysEnabledTab())
return;
if (DataUsagePopup == null) return;
DataUsageItems.Children.Clear();
@@ -2331,6 +2335,8 @@ public partial class ChatWindow : Window
private void UpdateDataUsageUI()
{
if (DataUsageLabel == null || DataUsageIcon == null) return;
if (IsFolderDataAlwaysEnabledTab())
_folderDataUsage = "active";
var (label, icon, color) = _folderDataUsage switch
{
"none" => ("데이터 미활용", "\uE8D8", "#6B7280"),
@@ -2342,6 +2348,7 @@ public partial class ChatWindow : Window
DataUsageIcon.Foreground = BrushFromHex(color);
if (BtnDataUsage != null)
{
BtnDataUsage.Visibility = IsFolderDataAlwaysEnabledTab() ? Visibility.Collapsed : Visibility.Visible;
BtnDataUsage.Background = Brushes.Transparent;
BtnDataUsage.BorderBrush = Brushes.Transparent;
BtnDataUsage.BorderThickness = new Thickness(0);
@@ -2352,8 +2359,13 @@ public partial class ChatWindow : Window
_ => "폴더 문서와 파일을 자동 탐색해 작업에 적극 활용합니다."
};
}
if (IsFolderDataAlwaysEnabledTab() && DataUsagePopup != null)
DataUsagePopup.IsOpen = false;
}
private bool IsFolderDataAlwaysEnabledTab()
=> string.Equals(_activeTab, "Code", StringComparison.OrdinalIgnoreCase);
/// <summary>Cowork/Code 탭 진입 시 설정의 기본 권한을 적용.</summary>
private void ApplyTabDefaultPermission()
{
@@ -4172,7 +4184,18 @@ public partial class ChatWindow : Window
CornerRadius = new CornerRadius(9),
Padding = new Thickness(11, 7, 11, 7),
HorizontalAlignment = HorizontalAlignment.Right,
Child = new TextBlock
};
if (string.Equals(_activeTab, "Cowork", StringComparison.OrdinalIgnoreCase) ||
string.Equals(_activeTab, "Code", StringComparison.OrdinalIgnoreCase))
{
var codeBgBrush = TryFindResource("HintBackground") as Brush ?? Brushes.DarkGray;
MarkdownRenderer.EnableFilePathHighlight =
(System.Windows.Application.Current as App)?.SettingsService?.Settings.Llm.EnableFilePathHighlight ?? true;
bubble.Child = MarkdownRenderer.Render(content, primaryText, secondaryText, accentBrush, codeBgBrush);
}
else
{
bubble.Child = new TextBlock
{
Text = content,
TextAlignment = TextAlignment.Left,
@@ -4180,8 +4203,8 @@ public partial class ChatWindow : Window
Foreground = primaryText,
TextWrapping = TextWrapping.Wrap,
LineHeight = 18,
}
};
};
}
wrapper.Children.Add(bubble);
// 액션 버튼 바 (복사 + 편집, hover 시 표시)
@@ -15213,8 +15236,12 @@ public partial class ChatWindow : Window
OverlayModelEditorPanel.Visibility = showBasic ? Visibility.Visible : Visibility.Collapsed;
if (OverlayAnchorPermission != null)
OverlayAnchorPermission.Visibility = showBasic ? Visibility.Visible : Visibility.Collapsed;
if (IsFolderDataAlwaysEnabledTab())
_folderDataUsage = "active";
if (OverlayFolderDataUsageRow != null)
OverlayFolderDataUsageRow.Visibility = showShared || showCowork ? Visibility.Visible : Visibility.Collapsed;
OverlayFolderDataUsageRow.Visibility = IsFolderDataAlwaysEnabledTab()
? Visibility.Collapsed
: (showShared || showCowork ? Visibility.Visible : Visibility.Collapsed);
if (OverlayTlsRow != null)
OverlayTlsRow.Visibility = showChat ? Visibility.Visible : Visibility.Collapsed;
if (OverlayAnchorAdvanced != null)
@@ -17024,6 +17051,12 @@ public partial class ChatWindow : Window
private void BtnOverlayFolderDataUsage_Click(object sender, RoutedEventArgs e)
{
if (IsFolderDataAlwaysEnabledTab())
{
_folderDataUsage = "active";
PersistOverlaySettingsState(refreshOverlayDeferredInputs: false);
return;
}
_folderDataUsage = _folderDataUsage switch
{
"none" => "passive",
@@ -17108,7 +17141,7 @@ public partial class ChatWindow : Window
if (_isOverlaySettingsSyncing || CmbOverlayFolderDataUsage.SelectedItem is not ComboBoxItem selected || selected.Tag is not string tag)
return;
_folderDataUsage = tag;
_folderDataUsage = IsFolderDataAlwaysEnabledTab() ? "active" : tag;
PersistOverlaySettingsState(refreshOverlayDeferredInputs: false);
}