테마 글로우 설정의 실시간 반영 누락 수정

- 런처가 SettingsChanged 이벤트를 직접 받아 테두리, 아이콘 애니메이션, 무지개 글로우, 선택 글로우를 즉시 다시 적용하도록 보강함

- AX Agent는 저장된 설정을 다시 읽을 때 스트리밍 중 입력창 글로우 설정도 즉시 반영하도록 RefreshFromSavedSettings 흐름을 정리함

- README와 DEVELOPMENT 문서를 2026-04-06 19:02 (KST) 기준으로 갱신하고 Release 빌드에서 경고 0 / 오류 0을 확인함
This commit is contained in:
2026-04-06 19:29:09 +09:00
parent 4df5d5d874
commit cc12177252
4 changed files with 35 additions and 3 deletions

View File

@@ -14,6 +14,9 @@ Windows 전용 시맨틱 런처 & 워크스페이스 매니저
- 런처 색인에서 `.git`, `node_modules`, `bin`, `obj`, `dist`, `packages`, `venv`, `__pycache__`, `target` 같은 무거운 폴더를 스캔/감시 대상에서 제외해 유휴 CPU와 재색인 부담을 줄였습니다.
- 런처 무지개 글로우 갱신 주기를 낮추고, AX Agent는 창 크기 변화 시 메시지 전체 재렌더를 짧게 묶어서 한 번만 반영하도록 바꿔 창 조작 시 버벅이는 느낌을 줄였습니다.
- 업데이트: 2026-04-06 19:02 (KST)
- 설정-테마의 글로우 관련 항목이 저장만 되고 열린 창에 바로 반영되지 않던 문제를 수정했습니다. 런처는 설정 변경 이벤트를 직접 받아 테두리/아이콘 애니메이션/무지개 글로우/선택 글로우를 즉시 다시 적용하고, AX Agent도 스트리밍 중 입력창 글로우 설정을 바로 반영합니다.
- 업데이트: 2026-04-06 15:26 (KST)
- AX Agent 채팅/코워크/코드 하단 안내 문구를 현재 구현 기준으로 다시 정리했습니다. 입력창 워터마크는 탭 종류와 작업 폴더 선택 여부에 따라 실제 가능한 작업을 더 정확히 안내합니다.
- 선택된 프리셋 안내도 placeholder 문구 대신 실제 설명 중심으로 정리해, 프리셋 설명 카드와 입력창 워터마크가 서로 다른 역할로 보이도록 맞췄습니다.

View File

@@ -3,6 +3,7 @@
- Document update: 2026-04-06 18:46 (KST) - Tightened launcher indexing for real-world projects by ignoring `.git`, `.vs`, `node_modules`, `bin`, `obj`, `dist`, `packages`, `venv`, `__pycache__`, and `target` directories during both watcher handling and full scans. The launcher now skips noisy build/cache trees instead of reacting to them like searchable content.
- Document update: 2026-04-06 18:46 (KST) - Replaced the launcher's recursive `EnumerateFiles(..., AllDirectories)` walk with an ignore-aware manual traversal so large repos avoid descending into dependency and build folders, and slowed the rainbow glow timer from `20ms` to `40ms`.
- Document update: 2026-04-06 18:46 (KST) - Added a deferred responsive-layout timer to `ChatWindow` so AX Agent no longer calls `RenderMessages()` on every `SizeChanged` event. Resizing and layout changes are now coalesced into a single update after a short delay, reducing the heavy-window feel during agent-window manipulation.
- Document update: 2026-04-06 19:02 (KST) - Fixed theme glow settings so they apply to already-open windows instead of only affecting the next open. `LauncherWindow` now listens to `SettingsChanged` and reapplies border, icon animation, rainbow glow, and selection glow immediately, while `ChatWindow.RefreshFromSavedSettings()` now re-evaluates chat rainbow glow during active streaming.
- Document update: 2026-04-06 15:31 (KST) - Removed the visible outer border from the Cowork/Code footer permission selector so it reads as a flatter inline action in the bottom work bar.
- 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.

View File

@@ -9914,6 +9914,10 @@ public partial class ChatWindow : Window
BuildBottomBar();
RefreshDraftQueueUi();
RefreshConversationList();
if (_isStreaming && _settings.Settings.Llm.EnableChatRainbowGlow)
PlayRainbowGlow();
else
StopRainbowGlow();
}, DispatcherPriority.Input);
}

View File

@@ -80,6 +80,9 @@ public partial class LauncherWindow : Window
});
};
}
if (CurrentApp?.SettingsService != null)
CurrentApp.SettingsService.SettingsChanged += OnSettingsChanged;
}
private void Window_Loaded(object sender, RoutedEventArgs e)
@@ -175,7 +178,20 @@ public partial class LauncherWindow : Window
}
});
// 런처 테두리 표시 설정
ApplyVisualSettings();
}
private void OnSettingsChanged(object? sender, EventArgs e)
{
Dispatcher.BeginInvoke(() =>
{
ApplyTheme();
ApplyVisualSettings();
}, System.Windows.Threading.DispatcherPriority.Input);
}
private void ApplyVisualSettings()
{
if (_vm.ShowLauncherBorder)
{
MainBorder.BorderThickness = new Thickness(1);
@@ -187,12 +203,12 @@ public partial class LauncherWindow : Window
MainBorder.BorderBrush = System.Windows.Media.Brushes.Transparent;
}
if (_vm.EnableIconAnimation)
if (_vm.EnableIconAnimation && IsVisible)
ApplyRandomIconAnimation();
else
ResetIconAnimation();
if (_vm.EnableRainbowGlow)
if (_vm.EnableRainbowGlow && IsVisible)
StartRainbowGlow();
else
StopRainbowGlow();
@@ -1663,6 +1679,14 @@ public partial class LauncherWindow : Window
if (_vm.CloseOnFocusLost) Hide();
}
protected override void OnClosed(EventArgs e)
{
if (CurrentApp?.SettingsService != null)
CurrentApp.SettingsService.SettingsChanged -= OnSettingsChanged;
base.OnClosed(e);
}
private void Window_LocationChanged(object sender, EventArgs e)
{
UpdateRememberedPositionCache();