하단 안내 카드 가림 문제와 라이브 타이핑 표시를 보정한다
- Cowork·Chat 하단 프리셋 안내 카드가 실제 결과를 가리지 않도록 대화 메시지 존재 시 자동으로 숨기도록 조정 - FooterPresentation에 남아 있던 깨진 한글 워터마크와 상태 문구를 정상 한국어로 복구 - 라이브 타이핑 속도와 최종 프리뷰 deadline을 재조정해 SSE 및 Cowork·Code 최종 응답이 한 번에 붙지 않고 더 눈에 보이게 표시되도록 보정
This commit is contained in:
@@ -25,8 +25,8 @@ public partial class ChatWindow
|
||||
? "문서 작성, 데이터 분석, 파일 작업을 요청하세요. 필요하면 작업 폴더 파일도 함께 참고합니다."
|
||||
: "문서 작성, 데이터 분석, 파일 작업을 요청하세요. 작업 폴더를 선택하면 관련 파일도 함께 참고합니다.",
|
||||
"Code" => hasFolder
|
||||
? "코드 수정, 원인 분석, 빌드·테스트를 요청하세요. 작업 폴더 코드를 참고하고 저장소 상태도 함께 보여줍니다."
|
||||
: "작업 폴더를 선택한 뒤 코드 수정, 원인 분석, 빌드·테스트를 요청하세요.",
|
||||
? "코드 수정, 원인 분석, 빌드와 테스트를 요청하세요. 작업 폴더 코드와 저장소 상태를 함께 참고합니다."
|
||||
: "작업 폴더를 선택한 뒤 코드 수정, 원인 분석, 빌드와 테스트를 요청하세요.",
|
||||
_ => "질문, 요약, 초안 작성, 아이디어 정리를 요청하세요.",
|
||||
};
|
||||
}
|
||||
@@ -49,7 +49,7 @@ public partial class ChatWindow
|
||||
if (string.Equals(_activeTab, "Cowork", StringComparison.OrdinalIgnoreCase))
|
||||
return "선택한 작업 유형에 맞춰 문서·데이터·파일 작업 흐름으로 이어집니다.";
|
||||
|
||||
return "선택한 대화 주제에 맞춰 응답 방향과 초안 흐름이 정리됩니다.";
|
||||
return "선택한 대화 주제에 맞춰 응답 방향과 초안 흐름을 정리합니다.";
|
||||
}
|
||||
|
||||
private void UpdateFolderBar()
|
||||
@@ -199,7 +199,7 @@ public partial class ChatWindow
|
||||
{
|
||||
panel.Children.Add(new TextBlock
|
||||
{
|
||||
Text = "감사 로그가 꺼져 있어 include 이력을 기록하지 않습니다.",
|
||||
Text = "감사 로그가 꺼져 있어 include 이력은 기록되지 않습니다.",
|
||||
FontSize = 11,
|
||||
Foreground = secondaryText,
|
||||
TextWrapping = TextWrapping.Wrap,
|
||||
@@ -354,7 +354,13 @@ public partial class ChatWindow
|
||||
if (SelectedPresetGuide == null || SelectedPresetGuideTitle == null || SelectedPresetGuideDesc == null)
|
||||
return;
|
||||
|
||||
if (string.Equals(_activeTab, "Code", StringComparison.OrdinalIgnoreCase))
|
||||
conversation ??= _currentConversation;
|
||||
var hasVisibleMessages = conversation?.Messages?.Any(m =>
|
||||
!string.IsNullOrWhiteSpace(m.Content) &&
|
||||
(string.Equals(m.Role, "user", StringComparison.OrdinalIgnoreCase) ||
|
||||
string.Equals(m.Role, "assistant", StringComparison.OrdinalIgnoreCase))) == true;
|
||||
|
||||
if (string.Equals(_activeTab, "Code", StringComparison.OrdinalIgnoreCase) || hasVisibleMessages || _isStreaming)
|
||||
{
|
||||
SelectedPresetGuide.Visibility = Visibility.Collapsed;
|
||||
SelectedPresetGuideTitle.Text = "";
|
||||
@@ -362,7 +368,6 @@ public partial class ChatWindow
|
||||
return;
|
||||
}
|
||||
|
||||
conversation ??= _currentConversation;
|
||||
var category = conversation?.Category?.Trim();
|
||||
if (string.IsNullOrWhiteSpace(category))
|
||||
{
|
||||
|
||||
@@ -2372,9 +2372,10 @@ public partial class ChatWindow : Window
|
||||
// 버퍼에 쌓인 미표시 글자 수에 따라 속도 적응
|
||||
var pending = targetLen - _displayedLength;
|
||||
int step;
|
||||
if (pending > 200) step = Math.Min(pending / 5, 40); // 대량 버퍼: 빠르게 따라잡기
|
||||
else if (pending > 50) step = Math.Min(pending / 4, 15); // 중간 버퍼: 적당히 가속
|
||||
else step = Math.Min(3, pending); // 소량: 자연스러운 1~3자
|
||||
if (pending > 300) step = Math.Min(Math.Max(8, pending / 12), 18); // 대량 버퍼도 한 번에 다 붙지 않게 제한
|
||||
else if (pending > 120) step = Math.Min(Math.Max(5, pending / 14), 10); // 중간 버퍼는 자연스럽게 가속
|
||||
else if (pending > 24) step = Math.Min(4, pending); // 소량은 1~4자
|
||||
else step = Math.Min(2, pending); // 마무리는 더 천천히
|
||||
|
||||
_displayedLength += step;
|
||||
|
||||
@@ -5750,7 +5751,7 @@ public partial class ChatWindow : Window
|
||||
_typingTimer.Start();
|
||||
streamText.Text = _cursorVisible ? "\u258c" : " ";
|
||||
|
||||
var deadline = DateTime.UtcNow.AddMilliseconds(Math.Clamp(finalContent.Length * 6, 500, 1800));
|
||||
var deadline = DateTime.UtcNow.AddMilliseconds(Math.Clamp(finalContent.Length * 18, 1400, 6500));
|
||||
try
|
||||
{
|
||||
while (_displayedLength < _cachedStreamContent.Length && DateTime.UtcNow < deadline && !ct.IsCancellationRequested)
|
||||
|
||||
Reference in New Issue
Block a user