diff --git a/README.md b/README.md index 1b9a780..74d40f8 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,11 @@ Windows 전용 시맨틱 런처 & 워크스페이스 매니저 `docs/claw-code-parity-plan.md` +- 업데이트: 2026-04-05 00:43 (KST) +- Cowork/Code 하단 바에 `워크스페이스` 진입 칩을 공통으로 추가해, 작업 위치 전환을 파일/워크트리보다 먼저 찾을 수 있게 정리했습니다. +- 워크스페이스 검색 패널 상단에는 `현재 / 최근 / 전체` 요약 strip을 넣어 현재 선택과 탐색 범위를 한눈에 보이게 보강했습니다. +- 검증: `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 경고 0 / 오류 0 + - 업데이트: 2026-04-05 00:34 (KST) - AX Agent 하단 컨텍스트 카드에 현재 서비스·모델 기준 오늘 사용량을 함께 표시하고, hover에는 현재 모델의 일반 사용량·compact 이후 사용량·오늘 상위 모델 사용량까지 보이도록 보강했습니다. - 큰 수 토큰 집계는 `K/M` 단위까지 같은 카드 안에서 일관되게 읽히도록 long 전용 포맷 경로를 추가했습니다. diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md index edbe41b..06f6ef6 100644 --- a/docs/DEVELOPMENT.md +++ b/docs/DEVELOPMENT.md @@ -1,5 +1,9 @@ # AX Copilot - 媛쒕컻 臾몄꽌 +- Document update: 2026-04-05 00:43 (KST) - Added a shared workspace entry chip to both Cowork and Code bottom bars so workspace switching now appears in the same position across task modes instead of hiding behind only the path label. +- Document update: 2026-04-05 00:43 (KST) - The workspace search popup now starts with a `current / recent / all` summary strip, making the active workspace and available scope visible before the row list just like the other location-oriented popups. + + - Document update: 2026-04-05 00:34 (KST) - Exposed current service/model daily usage directly in the AX Agent context card, and expanded the hover panel to show current-model usage, current-model post-compaction usage, and top model usage for the day using the new per-model daily token buckets. - Document update: 2026-04-05 00:34 (KST) - Added a long-safe token formatting path for large per-model aggregates so context usage summaries keep the same K/M style even when daily model totals exceed the older int-based formatting path. diff --git a/src/AxCopilot/Views/ChatWindow.xaml.cs b/src/AxCopilot/Views/ChatWindow.xaml.cs index 0f1e8c7..60291ff 100644 --- a/src/AxCopilot/Views/ChatWindow.xaml.cs +++ b/src/AxCopilot/Views/ChatWindow.xaml.cs @@ -1304,6 +1304,16 @@ public partial class ChatWindow : Window .Take(maxDisplay) .ToList(); + var currentWorkspaceName = string.IsNullOrWhiteSpace(currentFolder) + ? "없음" + : System.IO.Path.GetFileName(currentFolder.TrimEnd('\\', '/')); + FolderMenuItems.Children.Add(CreatePopupSummaryStrip(new[] + { + ("현재", currentWorkspaceName, "#F8FAFC", "#E2E8F0", "#475569"), + ("최근", filteredRecent.Count.ToString(), "#EFF6FF", "#BFDBFE", "#1D4ED8"), + ("전체", workspaceFolders.Count.ToString(), "#F5F3FF", "#DDD6FE", "#6D28D9"), + })); + void AddWorkspaceRows(IEnumerable folders) { foreach (var folder in folders) @@ -12540,6 +12550,10 @@ public partial class ChatWindow : Window { MoodIconPanel.Children.Clear(); + var workspaceBtn = CreateWorkspaceFolderBarButton(); + workspaceBtn.MouseLeftButtonUp += (_, e) => { e.Handled = true; ShowFolderMenu(); }; + MoodIconPanel.Children.Add(workspaceBtn); + // ── 파일 탐색기 토글 버튼 ── var fileBrowserBtn = CreateFolderBarButton("\uED25", "파일", "파일 탐색기 열기/닫기", "#D97706"); fileBrowserBtn.MouseLeftButtonUp += (_, e) => { e.Handled = true; ToggleFileBrowser(); }; @@ -12557,6 +12571,10 @@ public partial class ChatWindow : Window { MoodIconPanel.Children.Clear(); + var workspaceBtn = CreateWorkspaceFolderBarButton(); + workspaceBtn.MouseLeftButtonUp += (_, e) => { e.Handled = true; ShowFolderMenu(); }; + MoodIconPanel.Children.Add(workspaceBtn); + var localBtn = CreateFolderBarButton("\uED25", "로컬", "원본 워크스페이스로 전환", "#6B7280"); localBtn.MouseLeftButtonUp += (_, e) => { @@ -12586,6 +12604,18 @@ public partial class ChatWindow : Window if (FormatMoodSeparator != null) FormatMoodSeparator.Visibility = Visibility.Visible; } + private Border CreateWorkspaceFolderBarButton() + { + var currentFolder = GetCurrentWorkFolder(); + var label = string.IsNullOrWhiteSpace(currentFolder) + ? "워크스페이스" + : TruncateForStatus(Path.GetFileName(currentFolder.TrimEnd('\\', '/')), 18); + var tooltip = string.IsNullOrWhiteSpace(currentFolder) + ? "워크스페이스 선택" + : $"워크스페이스 선택\n현재: {currentFolder}"; + return CreateFolderBarButton("\uE8B7", label, tooltip, "#4B5EFC"); + } + private string GetWorktreeModeLabel() { var folder = GetCurrentWorkFolder();