AX Agent 라이브 진행 메시지 애니메이션 추가 및 문서 갱신
Some checks failed
Release Gate / gate (push) Has been cancelled
Some checks failed
Release Gate / gate (push) Has been cancelled
This commit is contained in:
@@ -1374,3 +1374,5 @@ MIT License
|
||||
- 업데이트: 2026-04-06 22:42 (KST)
|
||||
- AX Agent의 라이브 대기/압축 진행 힌트를 `claw-code`처럼 더 읽기 쉬운 진행 한 줄로 보강했습니다. 이제 Cowork/Code에서 오래 걸릴 때 `처리 중...`, `컨텍스트 압축 중...` 같은 요약줄이 transcript에 살아 있는 진행 상태로 나타납니다.
|
||||
- 같은 진행 줄 우측에는 `경과 시간`과 `현재 누적 토큰`이 함께 표시되어, 사용자가 “지금 멈춘 건지 아직 처리 중인지”를 기다릴 근거와 함께 바로 확인할 수 있게 조정했습니다.
|
||||
- 업데이트: 2026-04-06 22:48 (KST)
|
||||
- AX Agent의 라이브 대기 진행 줄에 작은 펄스 애니메이션을 추가했습니다. 오래 걸리는 `처리 중...`, `컨텍스트 압축 중...` 상태는 이제 좌측 마커가 은은하게 살아 움직여, 멈춘 로그가 아니라 실제 진행 중인 상태라는 점이 더 분명하게 보입니다.
|
||||
|
||||
@@ -5075,3 +5075,9 @@ ow + toggle ?쒓컖 ?몄뼱濡??ㅼ떆 ?뺣젹?덈떎.
|
||||
- [ChatWindow.AgentEventRendering.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.AgentEventRendering.cs)의 process feed 요약줄에 우측 메타 영역을 추가했다.
|
||||
- `처리 중...`, `컨텍스트 압축 중...` 같은 라이브 진행 줄에 `6m 46s · 38.8K tokens`처럼 기다릴 근거가 함께 노출된다.
|
||||
- 라이브 대기/압축 상태는 기존 chevron 대신 강조 마커와 조금 더 진한 제목 톤을 써서 일반 이벤트보다 눈에 잘 들어오도록 구분했다.
|
||||
|
||||
## 2026-04-06 22:48 (KST)
|
||||
|
||||
- [ChatWindow.AgentEventRendering.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.AgentEventRendering.cs)의 라이브 진행 줄에 작은 펄스 애니메이션을 추가했다.
|
||||
- `처리 중...`, `컨텍스트 압축 중...`처럼 오래 걸리는 thinking 상태는 좌측 마커가 opacity/scale 펄스를 반복하며 살아 있는 상태임을 보여준다.
|
||||
- transcript 분위기를 과하게 흔들지 않도록 마커 하나만 은은하게 움직이고, 본문 레이아웃은 그대로 유지해 `claude-code`의 담백한 진행감에 가깝게 맞췄다.
|
||||
|
||||
@@ -169,6 +169,8 @@ public partial class ChatWindow
|
||||
liveWaitingStyle);
|
||||
summaryRow.Opacity = 0;
|
||||
summaryRow.BeginAnimation(UIElement.OpacityProperty, new DoubleAnimation(0, 1, TimeSpan.FromMilliseconds(140)));
|
||||
if (liveWaitingStyle)
|
||||
ApplyLiveWaitingPulse(summaryRow);
|
||||
stack.Children.Add(summaryRow);
|
||||
|
||||
var body = (eventSummaryText ?? string.Empty).Trim();
|
||||
@@ -212,6 +214,45 @@ public partial class ChatWindow
|
||||
MessagePanel.Children.Add(stack);
|
||||
}
|
||||
|
||||
private static void ApplyLiveWaitingPulse(Border summaryRow)
|
||||
{
|
||||
if (summaryRow.Child is not Grid grid || grid.Children.Count == 0 || grid.Children[0] is not StackPanel panel)
|
||||
return;
|
||||
if (panel.Children.Count == 0 || panel.Children[0] is not TextBlock marker)
|
||||
return;
|
||||
|
||||
marker.Text = "✶";
|
||||
marker.RenderTransformOrigin = new Point(0.5, 0.5);
|
||||
marker.RenderTransform = new ScaleTransform(1, 1);
|
||||
|
||||
var pulse = new DoubleAnimation
|
||||
{
|
||||
From = 0.42,
|
||||
To = 1.0,
|
||||
Duration = TimeSpan.FromMilliseconds(780),
|
||||
AutoReverse = true,
|
||||
RepeatBehavior = RepeatBehavior.Forever,
|
||||
EasingFunction = new QuadraticEase { EasingMode = EasingMode.EaseInOut },
|
||||
};
|
||||
marker.BeginAnimation(UIElement.OpacityProperty, pulse);
|
||||
|
||||
if (marker.RenderTransform is ScaleTransform scale)
|
||||
{
|
||||
var scaleAnimX = new DoubleAnimation
|
||||
{
|
||||
From = 0.92,
|
||||
To = 1.08,
|
||||
Duration = TimeSpan.FromMilliseconds(780),
|
||||
AutoReverse = true,
|
||||
RepeatBehavior = RepeatBehavior.Forever,
|
||||
EasingFunction = new QuadraticEase { EasingMode = EasingMode.EaseInOut },
|
||||
};
|
||||
var scaleAnimY = scaleAnimX.Clone();
|
||||
scale.BeginAnimation(ScaleTransform.ScaleXProperty, scaleAnimX);
|
||||
scale.BeginAnimation(ScaleTransform.ScaleYProperty, scaleAnimY);
|
||||
}
|
||||
}
|
||||
|
||||
private string BuildProcessFeedMetaText(AgentEvent evt)
|
||||
{
|
||||
var parts = new List<string>();
|
||||
|
||||
Reference in New Issue
Block a user