From 7c5396e239200562f7ee45a0328019cb7b6c4d15 Mon Sep 17 00:00:00 2001 From: lacvet Date: Mon, 6 Apr 2026 15:07:18 +0900 Subject: [PATCH] =?UTF-8?q?AX=20Agent=20=EC=82=AC=EC=9A=A9=EC=9E=90=20?= =?UTF-8?q?=EB=A9=94=EC=8B=9C=EC=A7=80=20=EB=A9=94=ED=83=80=20=EA=B2=B9?= =?UTF-8?q?=EC=B9=A8=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 사용자 메시지 하단 메타 행에서 시간 표시와 복사/편집 액션이 같은 위치에 겹치던 레이아웃을 수정했습니다. ChatWindow.MessageBubblePresentation에서 사용자 메타 바를 전용 컬럼 구조로 분리해 시간과 액션 버튼이 항상 분리되어 표시되도록 정리했습니다. README와 docs/DEVELOPMENT.md에 수정 이력을 2026-04-06 15:04 (KST) 기준으로 반영했습니다. 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0 / 오류 0) --- README.md | 4 ++++ docs/DEVELOPMENT.md | 1 + .../Views/ChatWindow.MessageBubblePresentation.cs | 15 +++++++++++---- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 29299a0..a8c3349 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,10 @@ Windows 전용 시맨틱 런처 & 워크스페이스 매니저 개발 참고: Claw Code 동등성 작업 추적 문서 `docs/claw-code-parity-plan.md` +- 업데이트: 2026-04-06 15:04 (KST) +- AX Agent 사용자 메시지 하단 메타 행 레이아웃을 정리해, 시간 표시와 복사/편집 액션 버튼이 같은 위치에 겹쳐 보이던 문제를 수정했습니다. +- 사용자 메시지 하단 바는 이제 전용 컬럼을 나눠 시간과 액션이 항상 분리되어 보이며, hover 상태와 무관하게 메타 행이 안정적으로 유지됩니다. + - 업데이트: 2026-04-06 09:27 (KST) - `claw-code`와 AX Agent를 다시 대조해 남은 품질 향상 작업을 3트랙으로 재정리했습니다. 앞으로 계획은 `사용자 체감 UI/UX`, `LLM·작업 처리`, `유지보수·추가기능 구조`로 분리해 관리합니다. - `docs/claw-code-parity-plan.md`에 각 트랙별 참조 파일, AX 적용 위치, 완료 조건, 품질 판정 기준, 권장 실행 순서를 고정했습니다. diff --git a/docs/DEVELOPMENT.md b/docs/DEVELOPMENT.md index 1dc9cdc..8637201 100644 --- a/docs/DEVELOPMENT.md +++ b/docs/DEVELOPMENT.md @@ -1,5 +1,6 @@ # AX Copilot - 媛쒕컻 臾몄꽌 +- Document update: 2026-04-06 15:04 (KST) - Fixed the AX Agent user-message footer row overlap. Sent-time metadata and copy/edit actions no longer share the same overlay cell and now render in dedicated columns so hover actions cannot collide with the timestamp. - Document update: 2026-04-06 09:27 (KST) - Re-framed the remaining `claw-code` parity work into three explicit tracks: user-facing UI/UX quality, LLM/task-handling quality, and maintainability/extensibility structure. This separates visible polish from runtime truth and from architectural cleanup. - Document update: 2026-04-06 09:27 (KST) - Captured the new track plan in `docs/claw-code-parity-plan.md` with reference files, AX apply targets, completion criteria, quality criteria, and recommended execution order so future work can be prioritized more deliberately. diff --git a/src/AxCopilot/Views/ChatWindow.MessageBubblePresentation.cs b/src/AxCopilot/Views/ChatWindow.MessageBubblePresentation.cs index f3be835..2e03bd8 100644 --- a/src/AxCopilot/Views/ChatWindow.MessageBubblePresentation.cs +++ b/src/AxCopilot/Views/ChatWindow.MessageBubblePresentation.cs @@ -85,8 +85,14 @@ public partial class ChatWindow () => EnterEditMode(wrapper, capturedUserContent))); var userBottomBar = new Grid { Margin = new Thickness(0, 1, 0, 0) }; + userBottomBar.ColumnDefinitions.Add(new ColumnDefinition { Width = new GridLength(1, GridUnitType.Star) }); + userBottomBar.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto }); + userBottomBar.ColumnDefinitions.Add(new ColumnDefinition { Width = GridLength.Auto }); var timestamp = message?.Timestamp ?? DateTime.Now; - userBottomBar.Children.Add(new TextBlock + Grid.SetColumn(userActionBar, 1); + userBottomBar.Children.Add(userActionBar); + + var timestampText = new TextBlock { Text = timestamp.ToString("HH:mm"), FontSize = 10.5, @@ -94,9 +100,10 @@ public partial class ChatWindow Foreground = TryFindResource("SecondaryText") as Brush ?? Brushes.Gray, HorizontalAlignment = HorizontalAlignment.Right, VerticalAlignment = VerticalAlignment.Center, - Margin = new Thickness(0, 0, 2, 1), - }); - userBottomBar.Children.Add(userActionBar); + Margin = new Thickness(8, 0, 2, 1), + }; + Grid.SetColumn(timestampText, 2); + userBottomBar.Children.Add(timestampText); wrapper.Children.Add(userBottomBar); wrapper.MouseEnter += (_, _) => userActionBar.Opacity = 1; wrapper.MouseLeave += (_, _) => userActionBar.Opacity = ReferenceEquals(_selectedMessageActionBar, userActionBar) ? 1 : 0.8;