From e30559b3cd924aa49796ba42379903773b7e9b11 Mon Sep 17 00:00:00 2001 From: Yun Chan Date: Mon, 1 Jun 2026 16:03:50 +0900 Subject: [PATCH] =?UTF-8?q?feat(ui):=20=EB=94=94=EC=9E=90=EC=9D=B8=20?= =?UTF-8?q?=EB=A7=88=EB=AC=B4=EB=A6=AC=20=E2=80=94=20AI=20=EC=9E=91?= =?UTF-8?q?=EC=97=85=EC=A2=85=EB=A5=98=20=EC=98=B5=EC=85=98=20+=20?= =?UTF-8?q?=ED=81=90=20accent=20bar=20+=20=EB=B9=88=20=EC=83=81=ED=83=9C?= =?UTF-8?q?=20+=20polish?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 디자인 세션 마지막 단계(순차 workflow). Linear/Geist 영감 polish + AI 작업 선택 UI. - AI 작업종류 ComboBox(요약/번역/교정) + 번역 대상언어 → BuildOptions의 opts.Ai.Task/TargetLanguage 연결. 이제 Codex로 번역·교정도 가능 - 큐 row 좌측 형식색 accent bar + hover, 빈 상태(Browse + 안내) 개선 - FormatShiftTheme: FsNumStyle/FsLossPillStyle/FsListRowStyle/FsIconButtonStyle 재사용 스타일 --- .../Views/FormatShiftTheme.xaml | 78 +++++++ .../Views/MainWindow.xaml | 191 ++++++++++++------ .../Views/MainWindow.xaml.cs | 18 ++ 3 files changed, 226 insertions(+), 61 deletions(-) diff --git a/src/Everything2Everything.App/Views/FormatShiftTheme.xaml b/src/Everything2Everything.App/Views/FormatShiftTheme.xaml index 6aa50c0..dbe9df1 100644 --- a/src/Everything2Everything.App/Views/FormatShiftTheme.xaml +++ b/src/Everything2Everything.App/Views/FormatShiftTheme.xaml @@ -375,4 +375,82 @@ + + + + + + + + + + + + + + diff --git a/src/Everything2Everything.App/Views/MainWindow.xaml b/src/Everything2Everything.App/Views/MainWindow.xaml index 3af73c6..efa947e 100644 --- a/src/Everything2Everything.App/Views/MainWindow.xaml +++ b/src/Everything2Everything.App/Views/MainWindow.xaml @@ -190,6 +190,30 @@ + + + + + + + + + + + + + + + - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Everything2Everything.App/Views/MainWindow.xaml.cs b/src/Everything2Everything.App/Views/MainWindow.xaml.cs index 022198c..7e499a6 100644 --- a/src/Everything2Everything.App/Views/MainWindow.xaml.cs +++ b/src/Everything2Everything.App/Views/MainWindow.xaml.cs @@ -258,6 +258,14 @@ public partial class MainWindow : Wpf.Ui.Controls.FluentWindow }; } + private void OnAiTaskChanged(object sender, SelectionChangedEventArgs e) + { + // 번역(인덱스 1)일 때만 대상 언어 입력을 표시 + if (AiTargetLangPanel is null) return; + AiTargetLangPanel.Visibility = + (AiTaskCombo?.SelectedIndex == 1) ? Visibility.Visible : Visibility.Collapsed; + } + private void OnPickOutputFolderClick(object sender, RoutedEventArgs e) { var dlg = new Microsoft.Win32.OpenFolderDialog { Title = "출력 폴더 선택" }; @@ -286,6 +294,16 @@ public partial class MainWindow : Wpf.Ui.Controls.FluentWindow opts.OutputLocation = OutputLocation.SubfolderBesideSource; } + // AI 작업 종류 (txt↔txt / md↔md 등 텍스트 변환 시 LlmProvider가 사용) + opts.Ai.Task = (AiTaskCombo?.SelectedIndex ?? 0) switch + { + 1 => "translate", + 2 => "proofread", + _ => "summarize", + }; + var targetLang = AiTargetLangBox?.Text?.Trim(); + opts.Ai.TargetLanguage = string.IsNullOrEmpty(targetLang) ? null : targetLang; + return opts; }