diff --git a/README.md b/README.md
index 72b9d5a..19f23b6 100644
--- a/README.md
+++ b/README.md
@@ -1049,3 +1049,5 @@ MIT License
- AX Agent 새 대화 전환 경로를 실제 fresh conversation 생성 기준으로 수정했다. 기존에는 현재 대화를 저장한 뒤 LoadOrCreateConversation()을 다시 호출해 최신 저장 대화를 재로드하는 경로가 섞여 있어, 첫 화면이 잠깐 깜빡인 뒤 기존 대화가 그대로 남는 문제가 있었다. 이제 ClearCurrentConversation() 뒤에는 항상 새 대화를 생성하고, 대화별 설정/압축 메트릭/앱 상태를 새 conversation 기준으로 다시 동기화한 후 빈 transcript를 렌더한다.
- 업데이트: 2026-04-05 23:09 (KST)
- AX Agent 좌측 패널의 타이포를 전반적으로 키웠다. 헤더, 새 대화, 검색, 상단 필터, 탭별 보조 메뉴, 전체 삭제, 하단 사용자 영역 폰트와 아이콘 크기를 함께 조정하고, 사이드바 폭도 소폭 넓혀 더 이상 지나치게 작고 빽빽하게 보이지 않도록 정리했다. 대화 목록 카드 제목/시간/실행 메타도 함께 키워 실제 읽을 수 있는 수준으로 보정했다.
+- 업데이트: 2026-04-05 23:15 (KST)
+ - AX Agent 좌측 패널과 본문 사이 경계선을 드래그해 사이드바 폭을 직접 조절할 수 있게 했다. 사이드바가 열려 있을 때만 splitter가 보이며, 사용자가 조절한 폭은 닫았다 다시 열어도 유지된다.
diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md
index 7eb22c2..90662f8 100644
--- a/docs/DEVELOPMENT.md
+++ b/docs/DEVELOPMENT.md
@@ -4795,3 +4795,6 @@ ow + toggle ?쒓컖 ?몄뼱濡??ㅼ떆 ?뺣젹?덈떎.
- 업데이트: 2026-04-05 23:09 (KST)
- [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 에서 AX Agent 좌측 사이드바 기본 폭을 246 -> 262로 넓히고, AX Agent 헤더, 새 대화, 검색, 상단 공통 필터, 탭별 보조 메뉴, 전체 삭제, 하단 사용자/설정 영역의 폰트와 아이콘 크기를 전반적으로 상향 조정했다.
- [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 의 대화 목록 렌더에서도 그룹 헤더, 대화 카드 제목, 날짜, 실행 상태, 실행 요약, 편집 아이콘 크기를 함께 키우고 카드 내부 패딩을 늘려 좌측 패널 텍스트가 지나치게 작게 보이던 문제를 보정했다.
+- 업데이트: 2026-04-05 23:15 (KST)
+ - [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 에 AX Agent 좌측 패널과 본문 사이를 드래그할 수 있는 SidebarResizeSplitter를 추가했다.
+ - [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에서 사이드바 마지막 확장 폭을 _sidebarExpandedWidth로 기억하도록 하고, 열기/닫기 애니메이션과 splitter 드래그 완료 이벤트가 같은 폭 상태를 공유하도록 정리했다. 이제 사용자가 경계선을 조절한 뒤 사이드바를 닫았다 다시 열어도 마지막 너비가 유지된다.
diff --git a/src/AxCopilot/Views/ChatWindow.xaml b/src/AxCopilot/Views/ChatWindow.xaml
index 35ad650..ccdf7b0 100644
--- a/src/AxCopilot/Views/ChatWindow.xaml
+++ b/src/AxCopilot/Views/ChatWindow.xaml
@@ -837,6 +837,20 @@
+
+
diff --git a/src/AxCopilot/Views/ChatWindow.xaml.cs b/src/AxCopilot/Views/ChatWindow.xaml.cs
index 232bef5..c41dc2f 100644
--- a/src/AxCopilot/Views/ChatWindow.xaml.cs
+++ b/src/AxCopilot/Views/ChatWindow.xaml.cs
@@ -34,6 +34,7 @@ public partial class ChatWindow : Window
private CancellationTokenSource? _streamCts;
private bool _isStreaming;
private bool _sidebarVisible = true;
+ private double _sidebarExpandedWidth = 262;
private string _selectedCategory = ""; // "" = 전체
private readonly Dictionary _tabSelectedCategory = new(StringComparer.OrdinalIgnoreCase)
{
@@ -2854,25 +2855,33 @@ public partial class ChatWindow : Window
IconBarColumn.Width = new GridLength(0);
IconBarPanel.Visibility = Visibility.Collapsed;
SidebarPanel.Visibility = Visibility.Visible;
+ SidebarResizeSplitter.Visibility = Visibility.Visible;
+
+ var targetWidth = Math.Max(190, _sidebarExpandedWidth);
if (animated)
{
- AnimateSidebar(0, 220, () => SidebarColumn.MinWidth = 168);
+ AnimateSidebar(0, targetWidth, () => SidebarColumn.MinWidth = 168);
}
else
{
- SidebarColumn.MinWidth = 168;
- SidebarColumn.Width = new GridLength(220);
+ SidebarColumn.MinWidth = 168;
+ SidebarColumn.Width = new GridLength(targetWidth);
}
return;
}
+ var currentWidth = SidebarColumn.ActualWidth > 0 ? SidebarColumn.ActualWidth : SidebarColumn.Width.Value;
+ if (currentWidth > 0)
+ _sidebarExpandedWidth = Math.Max(190, currentWidth);
+
SidebarColumn.MinWidth = 0;
if (animated)
{
- AnimateSidebar(248, 0, () =>
+ AnimateSidebar(currentWidth > 0 ? currentWidth : _sidebarExpandedWidth, 0, () =>
{
SidebarPanel.Visibility = Visibility.Collapsed;
+ SidebarResizeSplitter.Visibility = Visibility.Collapsed;
IconBarColumn.Width = new GridLength(52);
IconBarPanel.Visibility = Visibility.Visible;
});
@@ -2881,11 +2890,22 @@ public partial class ChatWindow : Window
{
SidebarColumn.Width = new GridLength(0);
SidebarPanel.Visibility = Visibility.Collapsed;
+ SidebarResizeSplitter.Visibility = Visibility.Collapsed;
IconBarColumn.Width = new GridLength(52);
IconBarPanel.Visibility = Visibility.Visible;
}
}
+ private void SidebarResizeSplitter_DragCompleted(object sender, DragCompletedEventArgs e)
+ {
+ if (!_sidebarVisible)
+ return;
+
+ var currentWidth = SidebarColumn.ActualWidth > 0 ? SidebarColumn.ActualWidth : SidebarColumn.Width.Value;
+ _sidebarExpandedWidth = Math.Clamp(currentWidth, 190, 420);
+ SidebarColumn.Width = new GridLength(_sidebarExpandedWidth);
+ }
+
private void AnimateSidebar(double from, double to, Action? onComplete = null)
{
var duration = 200.0;