런처 하단 빠른 실행 칩 표시 옵션과 중앙 정렬 개선
Some checks failed
Release Gate / gate (push) Has been cancelled

- 설정 기능 탭에 런처 하단 빠른 실행 칩 표시 토글을 추가하고 기본값을 비활성으로 분리함

- 런처 하단 빠른 실행 칩은 옵션이 켜진 경우에만 로드되도록 바꾸고, 블록 전체와 칩 내부를 중앙 정렬 기준으로 재배치함

- README와 DEVELOPMENT 문서 이력을 2026-04-06 17:09 (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-06 17:02:07 +09:00
parent 17d7b515ce
commit c2e96c0286
7 changed files with 49 additions and 3 deletions

View File

@@ -1289,3 +1289,7 @@ MIT License
- 업데이트: 2026-04-06 17:01 (KST)
- 모델 등록 단계에서 IBM/CP4D 인증 방식을 명확히 고를 수 있게 분기했다. [ModelRegistrationDialog.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ModelRegistrationDialog.cs)에 `CP4D (사용자 이름 + 비밀번호)``CP4D (사용자 이름 + API 키)` 항목을 따로 추가하고, 선택에 따라 마지막 입력 필드 라벨이 `비밀번호` 또는 `API 키`로 바뀌도록 정리했다.
- [LlmService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/LlmService.cs), [SettingsViewModel.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/ViewModels/SettingsViewModel.cs), [AppSettings.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Models/AppSettings.cs) 도 함께 갱신해 `cp4d_password`, `cp4d_api_key` 저장값을 공식 지원하고, 기존 `cp4d` 값은 비밀번호 방식으로 계속 호환되게 유지했다.
- 업데이트: 2026-04-06 17:09 (KST)
- 런처 하단에 자동으로 붙는 빠른 실행 칩을 별도 사용자 설정으로 분리했다. [AppSettings.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Models/AppSettings.cs), [SettingsViewModel.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/ViewModels/SettingsViewModel.cs), [SettingsWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/SettingsWindow.xaml)에 `빠른 실행 칩 표시` 옵션을 추가했고, 기본값은 비활성으로 두었다.
- [LauncherViewModel.LauncherExtras.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/ViewModels/LauncherViewModel.LauncherExtras.cs) 에서 이 설정이 꺼져 있으면 하단 빠른 실행 칩을 로드하지 않도록 바꿨다.
- [LauncherWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/LauncherWindow.xaml) 에서는 하단 빠른 실행 칩 블록 자체를 중앙 정렬 기준으로 재배치하고, 각 칩 내부도 세로 중앙 정렬과 최소 높이를 맞춰 여러 개가 나타나도 정중앙에 더 가깝게 보이도록 정리했다.

View File

@@ -4982,3 +4982,5 @@ ow + toggle ?쒓컖 ?몄뼱濡??ㅼ떆 ?뺣젹?덈떎.
- Document update: 2026-04-06 16:55 (KST) - Hardened `Cp4dTokenService.cs` for IBM/CP4D-style token endpoints that expect `username + api_key` instead of `username + password`. The service now tries `username/password` first and automatically retries with `username/api_key` before failing.
- Document update: 2026-04-06 17:01 (KST) - Split the CP4D auth choice at model-registration time. `ModelRegistrationDialog.cs` now exposes `CP4D (사용자 이름 + 비밀번호)` and `CP4D (사용자 이름 + API 키)` as separate auth types and changes the final credential label accordingly.
- Document update: 2026-04-06 17:01 (KST) - Updated `LlmService.cs`, `SettingsViewModel.cs`, and `AppSettings.cs` to formally support `cp4d_password` and `cp4d_api_key` while preserving legacy `cp4d` values as the password-based path for backward compatibility.
- Document update: 2026-04-06 17:09 (KST) - Added a dedicated launcher-setting toggle for the lower quick-action chip strip. `AppSettings.cs`, `SettingsViewModel.cs`, and `SettingsWindow.xaml` now expose `showLauncherBottomQuickActions`, and the default is off so the strip stays hidden unless the user opts in.
- Document update: 2026-04-06 17:09 (KST) - Updated `LauncherViewModel.LauncherExtras.cs` and `LauncherWindow.xaml` so lower quick-action chips are not loaded when disabled and render with centered block alignment plus centered chip content when enabled, reducing the off-center look when multiple chips appear.

View File

@@ -219,6 +219,10 @@ public class LauncherSettings
[JsonPropertyName("showWidgetBattery")]
public bool ShowWidgetBattery { get; set; } = false;
/// <summary>런처 하단 빠른 실행 칩 표시 여부. 기본 false.</summary>
[JsonPropertyName("showLauncherBottomQuickActions")]
public bool ShowLauncherBottomQuickActions { get; set; } = false;
/// <summary>단축키 헬프 창에서 아이콘 색상을 테마 AccentColor 기준으로 표시. 기본 true(테마색).</summary>
[JsonPropertyName("shortcutHelpUseThemeColor")]
public bool ShortcutHelpUseThemeColor { get; set; } = true;

View File

@@ -17,7 +17,10 @@ public partial class LauncherViewModel
private CancellationTokenSource? _previewCts;
public ObservableCollection<QuickActionChip> QuickActionItems { get; } = new();
public bool ShowQuickActions => string.IsNullOrEmpty(_inputText) && QuickActionItems.Count > 0;
public bool ShowQuickActions =>
_settings.Settings.Launcher.ShowLauncherBottomQuickActions &&
string.IsNullOrEmpty(_inputText) &&
QuickActionItems.Count > 0;
public string PreviewText
{
@@ -81,6 +84,12 @@ public partial class LauncherViewModel
{
QuickActionItems.Clear();
if (!_settings.Settings.Launcher.ShowLauncherBottomQuickActions)
{
OnPropertyChanged(nameof(ShowQuickActions));
return;
}
var topItems = UsageRankingService.GetTopItems(16);
var added = 0;
foreach (var (path, _) in topItems)

View File

@@ -173,6 +173,7 @@ public class SettingsViewModel : INotifyPropertyChanged
private bool _showWidgetWeather;
private bool _showWidgetCalendar;
private bool _showWidgetBattery;
private bool _showLauncherBottomQuickActions;
private bool _shortcutHelpUseThemeColor;
// LLM 공통 설정
@@ -803,6 +804,12 @@ public class SettingsViewModel : INotifyPropertyChanged
set { _showWidgetBattery = value; OnPropertyChanged(); }
}
public bool ShowLauncherBottomQuickActions
{
get => _showLauncherBottomQuickActions;
set { _showLauncherBottomQuickActions = value; OnPropertyChanged(); }
}
public bool EnableIconAnimation
{
get => _enableIconAnimation;
@@ -1085,6 +1092,7 @@ public class SettingsViewModel : INotifyPropertyChanged
_showWidgetWeather = s.Launcher.ShowWidgetWeather;
_showWidgetCalendar = s.Launcher.ShowWidgetCalendar;
_showWidgetBattery = s.Launcher.ShowWidgetBattery;
_showLauncherBottomQuickActions = s.Launcher.ShowLauncherBottomQuickActions;
_shortcutHelpUseThemeColor = s.Launcher.ShortcutHelpUseThemeColor;
_enableTextAction = s.Launcher.EnableTextAction;
// v1.7.1: 파일 대화상자 통합 기본값을 false로 변경 (브라우저 업로드 오작동 방지)
@@ -1537,6 +1545,7 @@ public class SettingsViewModel : INotifyPropertyChanged
s.Launcher.ShowWidgetWeather = _showWidgetWeather;
s.Launcher.ShowWidgetCalendar = _showWidgetCalendar;
s.Launcher.ShowWidgetBattery = _showWidgetBattery;
s.Launcher.ShowLauncherBottomQuickActions = _showLauncherBottomQuickActions;
s.Launcher.ShortcutHelpUseThemeColor = _shortcutHelpUseThemeColor;
s.Launcher.EnableTextAction = _enableTextAction;
s.Launcher.EnableFileDialogIntegration = _enableFileDialogIntegration;

View File

@@ -428,21 +428,27 @@
Grid.ColumnSpan="3"
ItemsSource="{Binding QuickActionItems}"
Margin="0,10,0,0"
HorizontalAlignment="Center"
VerticalAlignment="Center"
Visibility="{Binding ShowQuickActions, Converter={StaticResource BoolToVisibilityConverter}}">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<WrapPanel Orientation="Horizontal"/>
<WrapPanel Orientation="Horizontal"
HorizontalAlignment="Center"
VerticalAlignment="Center"/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Border Margin="0,0,6,6"
Padding="9,5"
MinHeight="32"
CornerRadius="10"
Cursor="Hand"
Background="{Binding Background}"
BorderThickness="1"
BorderBrush="{DynamicResource BorderColor}"
VerticalAlignment="Center"
MouseLeftButtonUp="QuickActionChip_Click">
<Border.Style>
<Style TargetType="Border">
@@ -453,7 +459,8 @@
</Style.Triggers>
</Style>
</Border.Style>
<StackPanel Orientation="Horizontal">
<StackPanel Orientation="Horizontal"
VerticalAlignment="Center">
<TextBlock Text="{Binding Symbol}"
FontFamily="Segoe MDL2 Assets"
FontSize="11"

View File

@@ -3046,6 +3046,17 @@
<TextBlock Style="{StaticResource SectionHeader}" Text="하단 위젯"/>
<Border Style="{StaticResource SettingsRow}">
<Grid>
<StackPanel HorizontalAlignment="Left">
<TextBlock Style="{StaticResource RowLabel}" Text="빠른 실행 칩 표시"/>
<TextBlock Style="{StaticResource RowHint}" Text="자주 연 파일·폴더를 런처 하단에 작은 칩으로 표시합니다. 기본값은 꺼짐입니다."/>
</StackPanel>
<CheckBox Style="{StaticResource ToggleSwitch}" HorizontalAlignment="Right" VerticalAlignment="Center"
IsChecked="{Binding ShowLauncherBottomQuickActions, Mode=TwoWay}"/>
</Grid>
</Border>
<Border Style="{StaticResource SettingsRow}">
<Grid>
<StackPanel HorizontalAlignment="Left">