AX Agent 하단 안내 문구 정리
Some checks failed
Release Gate / gate (push) Has been cancelled

채팅·코워크·코드 하단 안내 문구를 현재 구현된 기능 기준으로 다시 정리했습니다.

입력 워터마크는 탭 종류와 작업 폴더 선택 여부를 보고 실제 가능한 작업을 안내하도록 공통 helper로 통일했고, 선택된 프리셋 안내는 placeholder 대신 설명 중심으로 정리해 역할을 분리했습니다.

README와 docs/DEVELOPMENT.md에 2026-04-06 15:26 (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 15:19:44 +09:00
parent d283cf26ba
commit 9d13456695
4 changed files with 51 additions and 16 deletions

View File

@@ -7,6 +7,10 @@ Windows 전용 시맨틱 런처 & 워크스페이스 매니저
개발 참고: Claw Code 동등성 작업 추적 문서
`docs/claw-code-parity-plan.md`
- 업데이트: 2026-04-06 15:26 (KST)
- AX Agent 채팅/코워크/코드 하단 안내 문구를 현재 구현 기준으로 다시 정리했습니다. 입력창 워터마크는 탭 종류와 작업 폴더 선택 여부에 따라 실제 가능한 작업을 더 정확히 안내합니다.
- 선택된 프리셋 안내도 placeholder 문구 대신 실제 설명 중심으로 정리해, 프리셋 설명 카드와 입력창 워터마크가 서로 다른 역할로 보이도록 맞췄습니다.
- 업데이트: 2026-04-06 15:18 (KST)
- 코워크/코드 하단 폴더 바에서 권한 선택 버튼 왼쪽에 보이던 세로 구분선(`|`)을 제거해 footer 작업 바가 더 단순하게 이어지도록 정리했습니다.

View File

@@ -1,5 +1,7 @@
# AX Copilot - 媛쒕컻 臾몄꽌
- Document update: 2026-04-06 15:26 (KST) - Reworked bottom guidance copy for Chat/Cowork/Code around the actual AX Agent behavior. Input watermark text now comes from a shared helper that considers the active tab and whether a work folder is selected, instead of using overly broad static text.
- Document update: 2026-04-06 15:26 (KST) - Adjusted the selected preset guide so it prefers concise preset descriptions over raw placeholder prompts, keeping the footer guide and the composer watermark in distinct roles.
- Document update: 2026-04-06 15:18 (KST) - Removed the vertical separator immediately to the left of the footer permission selector in Cowork/Code so the folder bar reads as a cleaner continuous action strip.
- Document update: 2026-04-06 15:12 (KST) - Simplified the shared AX Agent composer by removing the top-right preset selector from Chat/Cowork/Code. Increased the attach button by roughly 1.5x, matched the send button to the same square footprint, and re-centered both icons for a cleaner balanced action row.
- 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.

View File

@@ -4,11 +4,48 @@ using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using AxCopilot.Models;
using AxCopilot.Services;
namespace AxCopilot.Views;
public partial class ChatWindow
{
private string BuildDefaultInputWatermark()
{
var hasFolder = !string.IsNullOrWhiteSpace(GetCurrentWorkFolder());
return _activeTab switch
{
"Cowork" => hasFolder
? "문서 작성, 데이터 분석, 파일 작업을 요청하세요. 필요하면 작업 폴더 파일도 함께 참고합니다."
: "문서 작성, 데이터 분석, 파일 작업을 요청하세요. 작업 폴더를 선택하면 관련 파일도 함께 참고합니다.",
"Code" => hasFolder
? "코드 수정, 원인 분석, 빌드·테스트를 요청하세요. 작업 폴더의 코드와 문서를 함께 검토합니다."
: "작업 폴더를 선택한 뒤 코드 수정, 원인 분석, 빌드·테스트를 요청하세요.",
_ => "질문, 요약, 초안 작성, 아이디어 정리를 요청하세요.",
};
}
private void RefreshInputWatermarkText()
{
if (InputWatermark == null)
return;
InputWatermark.Text = string.IsNullOrWhiteSpace(_promptCardPlaceholder)
? BuildDefaultInputWatermark()
: _promptCardPlaceholder;
}
private string BuildSelectedPresetGuideDescription(TopicPreset preset)
{
if (!string.IsNullOrWhiteSpace(preset.Description))
return preset.Description.Trim();
if (string.Equals(_activeTab, "Cowork", StringComparison.OrdinalIgnoreCase))
return "이 작업 유형에 맞는 문서/데이터/파일 작업 흐름으로 이어집니다.";
return "이 주제에 맞는 답변 톤과 초안 방향으로 대화를 이어갑니다.";
}
private void UpdateFolderBar()
{
if (FolderBar == null)
@@ -84,9 +121,7 @@ public partial class ChatWindow
SelectedPresetGuideTitle.Text = string.Equals(_activeTab, "Cowork", StringComparison.OrdinalIgnoreCase)
? $"선택된 작업 유형 · {preset.Label}"
: $"선택된 대화 주제 · {preset.Label}";
SelectedPresetGuideDesc.Text = string.IsNullOrWhiteSpace(preset.Description)
? (preset.Placeholder ?? "")
: preset.Description;
SelectedPresetGuideDesc.Text = BuildSelectedPresetGuideDescription(preset);
SelectedPresetGuide.Visibility = Visibility.Visible;
}
}

View File

@@ -1217,15 +1217,7 @@ public partial class ChatWindow : Window
FolderBar.Visibility = _activeTab != "Chat" ? Visibility.Visible : Visibility.Collapsed;
// 탭별 입력 안내 문구
if (InputWatermark != null)
{
InputWatermark.Text = _activeTab switch
{
"Cowork" => "에이전트에게 작업을 요청하세요 (파일 읽기/쓰기, 문서 생성...)",
"Code" => "코드 관련 작업을 요청하세요...",
_ => _promptCardPlaceholder,
};
}
RefreshInputWatermarkText();
// 권한 기본값 적용 (Cowork/Code 탭은 설정의 기본값 사용)
ApplyTabDefaultPermission();
@@ -9250,8 +9242,7 @@ public partial class ChatWindow : Window
private void ShowPlaceholder()
{
if (string.IsNullOrEmpty(_promptCardPlaceholder)) return;
InputWatermark.Text = _promptCardPlaceholder;
RefreshInputWatermarkText();
InputWatermark.Visibility = Visibility.Visible;
InputBox.Text = "";
InputBox.Focus();
@@ -9266,7 +9257,9 @@ public partial class ChatWindow : Window
return;
}
if (_promptCardPlaceholder != null && string.IsNullOrEmpty(InputBox.Text))
RefreshInputWatermarkText();
if (string.IsNullOrEmpty(InputBox.Text))
InputWatermark.Visibility = Visibility.Visible;
else
InputWatermark.Visibility = Visibility.Collapsed;
@@ -9275,7 +9268,8 @@ public partial class ChatWindow : Window
private void ClearPromptCardPlaceholder()
{
_promptCardPlaceholder = null;
InputWatermark.Visibility = Visibility.Collapsed;
RefreshInputWatermarkText();
UpdateWatermarkVisibility();
}
private void BtnSettings_Click(object sender, RoutedEventArgs e)