0e8d58d3aa
[v2.0.0] SettingsWindow AX Agent 탭 제거 + 고급 에이전트 탭 분리
...
CLAUDE.md 절대 원칙: AX Agent 설정을 ChatWindow 내 AgentSettingsPanel로 이관.
SettingsWindow.xaml:
- AgentTabItem Visibility="Collapsed" 추가 (기존 AX Agent 탭 완전 숨김)
- AdvancedAgentTabItem 신규 추가 (line 3255 앞에 삽입):
· 안내 배너: "기본 에이전트 설정은 채팅 화면에서" + ⚙ 아이콘 안내
· MCP 서버 등록 안내 섹션
· 훅·권한 규칙 편집 안내 섹션
· 태그:  (Segoe MDL2 Assets)
SettingsWindow.AiToggle.cs (ApplyAiEnabledState):
- AgentTabItem: 항상 Collapsed (AiEnabled 상관없이)
- AdvancedAgentTabItem: AiEnabled=true → Visible, false → Collapsed
빌드: 경고 0, 오류 0
2026-04-04 02:14:42 +09:00
05539b0d83
[v2.0.0] Phase 17/18 완료 — 멀티에이전트·Reflexion·훅·스킬 고도화 릴리즈
...
Phase 17 완료 표시 (AGENT_ROADMAP.md 갱신):
- 17-A1/A2: Reflexion 자기성찰 메모리 + 검증 강제 확대
- 17-B1/B2: TaskState Working Memory + AgentEventLog .jsonl 영속화
- 17-C1/C2/C3: 훅 11개 이벤트·4타입(Command/Http/Prompt/Agent) 완비
- 17-D1/D2/D3: 스킬 fork 격리·paths 자동활성화·user-invocable 필터
Phase 18 완료 표시:
- 18-C2 (AiSnippetHandler), 18-C3 (QuickLinkHandler)
버전 v1.8.0 → v2.0.0:
- AxCopilot.csproj, Installer.csproj, SetupForm.cs, McpClientService.cs
DEVELOPMENT.md 버전 이력 v2.0.0 추가
Phase 17 섹션 헤더: 차기 개발 → ✅ 완료
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-04 02:12:21 +09:00
8693204d2d
[Phase 18] 코디네이터 에이전트·플러그인 갤러리·SlashRegistry·watchPaths 완성
...
Phase 18-A1 — CoordinatorAgentService (신규):
- CoordinatorAgentService.cs (264줄): LLM 계획 수립 → JSON 파싱 → 의존성 토폴로지 정렬 → 병렬 서브에이전트 실행 → 결과 합성
- AgentLoopService.Coordinator.cs (100줄): RunCoordinatorModeAsync 파셜 + FormatCoordinatorPlan
- AppSettings.LlmSettings.cs: EnableCoordinatorMode bool 설정 추가
- AgentLoopService.cs: EnableCoordinatorMode 체크 → RunCoordinatorModeAsync fallback 로직
Phase 17-C4 — watchPaths FileWatcherService 연동 (AgentLoopService.ExtendedHooks.cs):
- SessionStart 훅 결과의 WatchPaths → FileWatcherService.Watch() 등록
- 파일 변경 시 FileChanged 훅 fire-and-forget 트리거
Phase 18-C1 — 플러그인 갤러리 (SettingsWindow):
- SettingsWindow.Plugins.cs (249줄): InitPluginGallery, RenderPluginList, 활성화 토글, 제거 버튼
- SettingsWindow.xaml: 플러그인 탭 추가 (PluginListPanel, 설치/새로고침 버튼)
- SettingsWindow.xaml.cs: Loaded에서 InitPluginGallery() 호출
SlashCommandRegistry ChatWindow 통합:
- ChatWindow.SlashContext.cs (175줄): IAgentChatContext 구현, GetRegistrySlashMatches, TryExecuteRegistrySlashCommandAsync
- ChatWindow.SlashCommands.cs: 레지스트리 명령 팝업 후보 추가
- ChatWindow.Sending.cs: 전송 전 레지스트리 슬래시 명령 우선 처리
빌드: 경고 0, 오류 0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-04 02:02:37 +09:00
84e5cd9485
[Phase 18] 멀티에이전트 인프라 완성 + 리플레이 탭 통합
...
Phase 17-D3 수정:
- SkillManagerTool.ListSkills(): UserInvocable=false 내부 스킬 필터링 추가
(SkillServiceExtensions.IsUserInvocable() 활용)
Phase 18-A 연결 완성:
- ToolRegistry: BackgroundAgentService 프로퍼티 노출 (AgentCompleted 구독용)
- ToolRegistry: WorktreeManager 인스턴스 생성 → DelegateAgentTool에 주입 (18-A2 완성)
- ChatWindow.xaml.cs: _toolRegistry.BackgroundAgentService.AgentCompleted 구독
- ChatWindow.AgentSupport.cs: OnBackgroundAgentCompleted() — 완료/실패 트레이 알림
Phase 18-B: 리플레이/디버깅 UI 통합:
- WorkflowAnalyzerWindow.xaml: "리플레이" 탭 버튼 추가 ()
- WorkflowAnalyzerWindow.xaml: 리플레이 패널 — 세션 목록, 재생 컨트롤, 속도 슬라이더, 진행 바, 이벤트 스트림
- WorkflowAnalyzerWindow.xaml.cs: TabReplay_Click, UpdateTabVisuals 3탭 지원
- WorkflowAnalyzerWindow.xaml.cs: LoadReplaySessions, BtnReplayStart/Stop, BuildReplayEventRow
- ReplayTimelineViewModel 통합 — StartReplayAsync/StopReplay, ReplayEventReceived 이벤트
- AGENT_ROADMAP.md: 18-A2/A3/A4/B1 ✅ 완료 표시 갱신
빌드: 경고 0, 오류 0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-04 01:30:29 +09:00
0ef37554bc
[v1.8.0] 배포 준비 — 가이드 문서 갱신 및 암호화
...
DEVELOPMENT.md v1.8.0 항목 상세 보완:
- Phase 17-B: TaskStateService JSON 영속화 + AgentEventLog JSONL 7종 이벤트 정확히 기술
- Phase 17-C: ExtendedHookRunner 18종 이벤트 + Prompt/Command/Http 3타입 상세 기술
- Phase 17-D: PathBasedSkillActivator + context:fork DI 콜백 주입 방식 기술
- Phase 17-E: HierarchicalMemoryService 4-layer + AxMdIncludeResolver + PathScopedRuleInjector 정확히 기술
- Phase 17-F: PermissionDecisionService Chain 5단계 + EvaluateToolPermission 3종 결정 기술
- Phase 17-G: DiffTracker CaptureOriginalFileContent + ToolRiskMapper 위험도 태그 기술
개발자 가이드 v1.8.0 버전 이력 항목 추가 (15개 신기능):
- 자기성찰 메모리, 세션 상태 영속화, 훅 시스템, 스킬 fork
- 경로 기반 스킬/규칙, 계층 메모리, 권한 시스템, 멀티파일 Diff
- 사내/사외 모드, 멀티에이전트, AI 스니펫, 퀵링크, 알림 센터
사용자 가이드: 개발자 가이드에서 버전 이력 섹션 제거 후 재생성
암호화: guide_dev.enc + guide_user.enc 재생성 (AES-256-CBC)
빌드: 경고 0, 오류 0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-04 01:17:09 +09:00
a635f24399
[Phase 17-F+G] 권한 시스템 고도화 + 멀티파일 Diff 추적기
...
Phase 17-F — 권한 시스템 고도화:
AgentLoopService.Permissions.cs (신규, 97줄):
- GetPermissionService(): PermissionsConfig → PermissionDecisionService 빌드·캐시
Chain: DenyRuleHandler → AllowRuleHandler → AcceptEditsHandler → PlanModeHandler → BypassHandler
- EvaluateToolPermission(): Deny=즉시차단 / Allow=CheckDecisionRequired 스킵 / Ask=기존 흐름
- CheckMcpToolAllowed(): MCP 서버·도구 단위 권한 확인
- PermissionRuleEntry(설정) → PermissionRule(런타임) 자동 변환
Phase 17-G — 멀티파일 Diff 추적기:
AgentLoopService.DiffTracker.cs (신규, 99줄):
- DiffViewModel 프로퍼티: MultiFileDiffViewModel 지연 초기화, ChatWindow UI 바인딩용
- ExtractFilePathFromInput(): 도구 입력 JSON에서 path/file_path 추출
- CaptureOriginalFileContent(): 쓰기 도구 실행 전 원본 내용 캡처 (신규=빈 문자열)
- TrackFileModificationForDiff(): 성공 후 디스크에서 신규 내용 읽어 DiffViewModel에 기록
- ResetDiffTracker(): 세션 시작 시 Diff 목록 초기화
AgentLoopService.Execution.cs (편집):
- toolName17 변수 도입: call.ToolName ?? "" — CS8604 nullable 경고 전면 제거 (0개)
- Phase 17-G2: EmitEvent(ToolCall)에 위험도 태그 [⚠ 높음]/[• 보통] 접미사 추가
- Phase 17-F: Deny→즉시차단+DENIED 메시지, Allow→skipLegacyDecisionCheck=true
- Phase 17-G: Pre-실행 diffFilePath+diffOriginalContent 캡처, Post-성공 TrackFileModificationForDiff 호출
AgentLoopService.cs (편집):
- 세션 시작 시 ResetDiffTracker() 호출 (이전 세션 Diff 항목 초기화)
AppSettings.LlmSettings.cs (편집):
- EnableDiffTracker 설정 추가 (기본 true, json: "enableDiffTracker")
빌드: 경고 0, 오류 0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-04 01:10:09 +09:00
f1b1f1604c
[Phase 17-E] 계층 메모리/컨텍스트 고도화 — AgentLoopService 통합
...
AgentLoopService.Memory.cs (신규, 105줄):
- InjectHierarchicalMemoryAsync(): 세션 시작 시 4-layer 계층 메모리 수집
(Managed→User→Project→Local AX.md + rules/*.md)
AxMdIncludeResolver.ResolveAsync()로 @include 지시어 최대 5단계 재귀 해석
40,000자 초과 시 크기 경고, 마커 기반 in-place 교체(중복 방지)
- InjectPathScopedRulesAsync(): 파일 도구 실행 후 .ax/rules/*.md paths: 프론트매터
기반 경로 범위 규칙 주입. workFolder별 PathScopedRuleInjector 캐시 적용
AgentLoopService.cs (편집):
- Phase 17-A(Reflexion) 이후 await InjectHierarchicalMemoryAsync() 호출 추가
AgentLoopService.Execution.cs (편집):
- InjectPathBasedSkills() 이후 InjectPathScopedRulesAsync() fire-and-forget 추가
AppSettings.LlmSettings.cs (편집):
- EnableMemorySystem 설정 추가 (기본 true, json: "enableMemorySystem")
docs/AGENT_ROADMAP.md:
- Group E 완료 표시 + 구현 내역 기록 (17-E1/E2 완료, 17-E3 차기)
빌드: 경고 0, 오류 0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-04 00:56:49 +09:00
1313c65e5e
[Phase 17-D] 스킬 시스템 고도화 — paths:glob 자동주입 + context:fork 격리 실행
...
AgentLoopService.Skills.cs (신규, 95줄):
- InjectPathBasedSkills(): 파일 도구 성공 후 filePath로 GlobMatcher 매칭
→ 매칭 스킬 시스템 프롬프트를 시스템 메시지에 in-place 주입
→ SkillActivated JSONL 이벤트 로그 기록
- RunSkillInForkAsync(): context:fork 스킬 격리 LLM 실행 (도구 없음)
→ SkillCompleted JSONL 이벤트 로그 기록
SkillManagerTool.cs:
- SetForkRunner(Func<SkillDefinition, string, CancellationToken, Task<string>>) 추가
- exec 액션 + arguments 파라미터 추가
- ExecSkillAsync(): PrepareSkillBodyAsync 인자 치환
→ IsForkContext=true: fork runner 호출 → [Fork 스킬 결과] 반환
→ 일반 스킬: 시스템 프롬프트 + 준비된 본문 반환
AgentLoopService.cs:
- 생성자: SkillManagerTool.SetForkRunner(RunSkillInForkAsync) 주입
AgentLoopService.Execution.cs:
- 도구 성공 직후 InjectPathBasedSkills(result.FilePath, messages) 호출
빌드: 경고 0, 오류 0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-04 00:39:25 +09:00
0a58419c8a
[Phase 17-C] 훅 시스템 고도화 — 11종 이벤트 연결 + Prompt 모드 구현
...
AppSettings.AgentConfig.cs:
- ExtendedHooksConfig에 4개 이벤트 추가:
preToolUse, postToolUse, postToolUseFailure, agentStop
AgentLoopService.ExtendedHooks.cs (신규, 150줄):
- RunExtendedEventAsync(): 이벤트 훅 실행, 결과(additionalContext) 시스템 메시지 주입, HookFired 이벤트 로그
- GetExtendedHooks(): 설정에서 HookEventKind별 런타임 엔트리 조회
- ConvertToRuntimeEntries(): ExtendedHookEntryConfig → ExtendedHookEntry 변환
- ApplyExtendedHookResult(): additionalContext in-place 주입 (marker 기반 교체)
ExtendedHookRunner.cs:
- RunEventAsync() / ExecuteSingleAsync()에 LlmService? llm 파라미터 추가
- RunPromptHookAsync() 신규: {{tool_name/input/output/user_message/event/session_id}} 치환
→ LLM 호출 → block/deny/차단 감지 시 Block=true 반환
- using AxCopilot.Models 추가
AgentLoopService.cs:
- SessionStart 훅 (fire-and-forget, TaskState init 직후)
- UserPromptSubmit 훅 (동기, Block=true 시 즉시 반환 "⚠ 훅 정책에 의해 차단")
- PreCompact 훅 (적극적 압축 직전, 동기)
- PostCompact 훅 × 2 (기본/적극적 압축 완료 후, fire-and-forget)
- SessionEnd + AgentStop 훅 (finally 블록, fire-and-forget)
AgentLoopService.Execution.cs:
- RunToolHooksAsync() 개선: 레거시 AgentHookRunner 유지
+ ExtendedHookRunner PreToolUse/PostToolUse/PostToolUseFailure 추가
이벤트 커버리지: 11종 완전 연결. Agent 모드는 Phase 18-A 예정.
빌드: 경고 0, 오류 0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-04 00:14:19 +09:00
2383b1e220
[Phase 17-B] TaskState Working Memory + 이벤트 로그 완전 통합
...
AgentLoopService.TaskState.cs (신규, 96줄):
- InitTaskStateAsync(): 세션 시작 시 TaskStateService 초기화, 현재 작업 기록
- TrackToolFile(): 도구 성공 시 파일 경로 참조 목록 추가 (fire-and-forget)
- InjectTaskStateContext(): 압축 전 Working Memory를 시스템 메시지에 in-place 주입
(## 현재 작업 상태 마커로 기존 섹션 탐지·교체 → 중복 방지)
- UpdateTaskStateSummaryAsync(): 압축 완료 후 컨텍스트 요약 갱신 (fire-and-forget)
AgentLoopService.cs:
- userQuery 선언 후 UserMessage 이벤트 기록 + InitTaskStateAsync() 호출
- 압축 블록: InjectTaskStateContext() 호출 (압축 전 Working Memory 주입)
- 기본 압축 완료 시: CompactionCompleted 이벤트 + UpdateTaskStateSummaryAsync()
- 적극적 압축 트리거 시: CompactionTriggered 이벤트 (usagePct 포함)
- LLM 텍스트 응답 후: AssistantMessage 이벤트 기록 (length, hasToolCalls)
AgentLoopService.Execution.cs:
- 도구 성공(state.ConsecutiveErrors = 0) 직후 TrackToolFile(result.FilePath) 호출
이벤트 커버리지: SessionStart/End·UserMessage·AssistantMessage·
ToolRequest·ToolResult·CompactionTriggered·CompactionCompleted 전 구간 기록
저장: %APPDATA%\AxCopilot\sessions\{sessionId}\{task_state.json, events.jsonl}
빌드: 경고 0, 오류 0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-03 23:22:40 +09:00
90d5943327
[Phase 17-A] Reflexion 자기성찰 메모리 시스템 구현
...
ReflexionEvaluatorService 신규 구현 (ReflexionService.cs):
- LLM 기반 자기평가: 완성도 점수(0~1), 강점/약점/교훈 추출
- $$raw string 평가 프롬프트로 JSON 포맷 안전하게 삽입
- JSON 블록 추출 + 역직렬화, LLM 실패 시 규칙 기반 폴백 엔트리
- ReflexionRepository.BuildContextPromptAsync() maxEntries 파라미터 추가
AgentLoopService.Reflexion.cs (신규, 82줄):
- InjectReflexionContextAsync(): 세션 시작 전 과거 교훈→시스템 메시지 주입
- FireAndForgetReflexionEval(): 세션 완료 후 Task.Run 비동기 자기평가 저장
- 지연 초기화(_reflexionRepo, _reflexionEval): 사용 시점에 생성
AgentLoopService.cs 통합 포인트 2개 추가:
- RunAsync() 루프 시작 전: await InjectReflexionContextAsync()
- finally 블록 통계 섹션: FireAndForgetReflexionEval() 호출
AgentSettingsPanel — 자기성찰 메모리 섹션 추가:
- 활성화 토글(ChkReflexionEnabled)
- 성공 세션만 평가 토글(ChkReflexionSuccessOnly)
- 최대 참고 교훈 수 슬라이더(1~20, 기본값 5)
- LoadFromSettings() 초기화 + 3개 이벤트 핸들러
빌드: 경고 0, 오류 0
2026-04-03 23:07:59 +09:00
5fe6d5c6ba
[Phase 17-UI-C/D/E] AgentSessionHeaderBar·AgentSidebarView·AgentInputArea UserControl 통합
...
Phase 17-UI-C: AgentSessionHeaderBar 통합 (ChatWindow.xaml 인라인 칩 교체)
- AgentSessionHeaderBar.xaml: 외부 Border 투명화, 높이 42→38px, PlanIcon/PermIcon x:Name 추가
- AgentSessionHeaderBar.xaml.cs: SetPlanMode() x:Name 직접 참조, ChipPermission_Click 이벤트 위임
- ChatWindow.xaml: ModelHeaderChip/BtnPlanMode/PermissionHeaderChip → SessionHeaderBar UserControl 교체
- ChatWindow.SessionHeaderBar.cs (신규, 46줄): InitSessionHeaderBar() 이벤트 구독
- ChatWindow.ModelSelector.cs: UpdateModelLabel() SessionHeaderBar.SetModel() 동기화
- ChatWindow.PermissionMenu.cs: UpdatePermissionUI() SessionHeaderBar.SetPermissionMode() 동기화
- ChatWindow.TabSwitching.cs: UpdatePlanModeUI() 단순화, UpdateTabUI() SetTabLabel() 동기화
Phase 17-UI-D: AgentSidebarView 통합 (SidebarPanel 인라인 110줄 → UserControl 1줄)
- AgentSidebarView.xaml: 7행 구조(헤더/탭세그먼트/검색/카테고리/대화목록/삭제/사용자계정) 재작성
- AgentSidebarView.xaml.cs: internal 프록시 프로퍼티 8개 + 5개 이벤트 추가, 완전 재작성
- ChatWindow.xaml: <Border x:Name="SidebarPanel"> 110줄 → <ctrl:AgentSidebarView x:Name="Sidebar"/> 1줄
- ChatWindow.SidebarCompat.cs (신규, 80줄): 프록시 계산 프로퍼티 8개 + InitSidebarEvents()
- ChatWindow.PermissionMenu.cs: SidebarPanel.Visibility → Sidebar.Visibility, PermissionHeaderChip → SessionHeaderBar
- ChatWindow.TabSwitching.cs: 탭 핸들러 3개 Sidebar?.SetActiveTab() 동기화 추가
Phase 17-UI-E: AgentInputArea IsToolbarOnly 모드 + 입력 툴바 추가
- AgentInputArea.xaml: OuterBorder/InputTextBoxRow/ChipsSendRow x:Name 추가
- AgentInputArea.xaml.cs: IsToolbarOnly 의존성 프로퍼티 + ApplyToolbarOnlyMode() 추가
- ChatWindow.xaml: InputBorder Grid에 Row 0 추가(AgentInputArea IsToolbarOnly=True), 기존 행 0→1/1→2/2→3 시프트
- ChatWindow.InputToolbar.cs (신규, 37줄): InitInputToolbar() — @/스킬/첨부 이벤트 기존 동작 위임
- ChatWindow.xaml.cs: Loaded에 InitSidebarEvents(), InitInputToolbar() 호출 추가
빌드: 경고 0, 오류 0
2026-04-03 22:36:19 +09:00
26c20cf3dc
[Phase 17-UI-B] 헤더 바 모델·권한 칩 추가
...
ChatWindow.xaml:
- 서브 헤더 바(Row 1) 우측에 ModelHeaderChip 버튼 추가
(Segoe MDL2 브레인 아이콘 + ModelHeaderLabel TextBlock)
- 서브 헤더 바 우측에 PermissionHeaderChip 버튼 추가
(잠금 아이콘 #4FC3F7 + PermissionHeaderLabel TextBlock)
ChatWindow.ModelSelector.cs:
- UpdateModelLabel(): ModelHeaderLabel 동기 갱신 코드 추가
ChatWindow.PermissionMenu.cs:
- UpdatePermissionUI(): PermissionHeaderLabel 동기 갱신 코드 추가
- PermissionHeaderChip_Click() 신규: PlacementTarget을 헤더 칩으로
교체 후 기존 BtnPermission_Click 호출
ChatWindow.xaml.cs:
- Loaded 핸들러에 UpdatePermissionUI() 초기 호출 추가
docs/NEXT_ROADMAP.md:
- Phase 17-UI-B 완료 항목 추가
빌드: 경고 0, 오류 0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-03 22:05:30 +09:00
e7aa107b16
[Phase 17-UI-A] AgentSettingsPanel 완전 통합 — 설정 버튼 직접 연결
...
ChatWindow.MoodMenu.cs (BtnSettings_Click 개선):
- Shift+클릭 조건 제거 → 기어 버튼 클릭 시 AgentSettingsPanel 직접 열기
- Ctrl+클릭으로 전역 SettingsWindow 열기 (기존 동작 유지)
- ToggleSettingsPanel(): _toolRegistry 패널에 전달, SettingsChanged 이벤트 연결
- OnSettingsPanelChanged() 신규: 설정 변경 시 ModelLabel·AnalyzerButton 즉시 갱신
ChatWindow.TabSwitching.cs:
- UpdateTabUI(): 설정 패널 열린 상태이면 UpdateActiveTab() 자동 호출
- 탭 전환 시 탭별 전용 설정(Cowork 검증/Code LSP 등) 패널 자동 반영
ChatWindow.xaml:
- 설정 버튼 ToolTip: "설정 패널 (Ctrl+클릭: 전역 설정)"으로 UX 안내 추가
AgentSettingsPanel.xaml.cs:
- LoadFromSettings(): ToolRegistry? 매개변수 추가 (외부 레지스트리 주입)
- BuildToolToggles(): 외부 레지스트리 우선, 없으면 ToolRegistry.CreateDefault() 폴백
- 반영 방식 개선: 리플렉션 해킹 제거 → 실제 ChatWindow._toolRegistry 참조
docs/NEXT_ROADMAP.md:
- Phase 17-UI-A 완료 항목 추가 (변경 파일 테이블, 개선 효과)
빌드: 경고 0, 오류 0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-03 21:57:58 +09:00
4fa38a7b9e
[Phase52] PreviewWindow.xaml.cs 분리 — Content.cs 추출
...
- PreviewWindow.xaml.cs: 505 → 317줄 (P/Invoke + 싱글턴 + 탭 관리 유지)
- PreviewWindow.Content.cs (신규): 콘텐츠 로드(LoadContent/LoadCsvContent/ParseCsvLine)
+ 타이틀바 핸들러 9개 (170줄)
빌드: 경고 0, 오류 0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-03 21:43:10 +09:00
b750849c9f
[Phase52] 7개 파일 추가 분리 — 14개 파일로 재구성
...
LlmService.Streaming:
- LlmService.Streaming.cs: 516 → 256줄 (Ollama/OpenAI 유지)
- LlmService.GeminiClaude.cs (신규): Gemini+Claude 스트리밍 (~260줄)
DocxSkill:
- DocxSkill.cs: 543 → 158줄 (ExecuteAsync 유지)
- DocxSkill.Builders.cs (신규): 11개 문서 빌더 헬퍼 (290줄)
ChartSkill:
- ChartSkill.cs: 537 → 174줄 (ExecuteAsync+RenderChart 유지)
- ChartSkill.Renderers.cs (신규): 7개 차트 렌더러+헬퍼+Dataset (280줄)
ScreenCaptureHandler:
- ScreenCaptureHandler.cs: 637 → 241줄 (기본 캡처 유지)
- ScreenCaptureHandler.Helpers.cs (신규): 스크롤/영역 캡처+헬퍼 (310줄)
SystemInfoHandler:
- SystemInfoHandler.cs: 509 → 352줄
- SystemInfoHandler.Helpers.cs (신규): 8개 헬퍼+StarInfoHandler (161줄)
AppSettings:
- AppSettings.cs: 564 → 309줄 (AppSettings/Launcher/CustomTheme 유지)
- AppSettings.Models.cs (신규): 14개 설정 모델 클래스 (233줄)
SkillEditorWindow:
- SkillEditorWindow.xaml.cs: 528 → 303줄
- SkillEditorWindow.PreviewSave.cs (신규): 미리보기+저장+로드 (226줄)
빌드: 경고 0, 오류 0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-03 21:40:56 +09:00
55befebf34
[Phase51] 대규모 파일 분리 — 9개 파일 → 19개 파일
...
SettingsWindow.Tools:
- SettingsWindow.Tools.cs: 605 → 238줄 (BuildToolRegistryPanel 유지)
- SettingsWindow.SkillListPanel.cs (신규): BuildSkillListSection, CreateSkillGroupCard (295줄)
LauncherWindow.Keyboard:
- LauncherWindow.Keyboard.cs: 593 → 454줄
- LauncherWindow.ShortcutHelp.cs (신규): ShowShortcutHelp, ShowToast, TryHandleSpecialAction (139줄)
CalculatorHandler:
- CalculatorHandler.cs: 566 → ~240줄 (CalculatorHandler 클래스만 유지)
- UnitConverter.cs (신규): 단위변환 클래스 독립 파일 (152줄)
- MathEvaluator.cs (신규): 수식파서 클래스 독립 파일 (183줄)
EmojiHandler:
- EmojiHandler.cs: 553 → 70줄 (핸들러 메서드만 유지)
- EmojiHandler.Data.cs (신규): 이모지 데이터베이스 배열 (~490줄)
DocumentPlannerTool:
- DocumentPlannerTool.cs: 598 → 324줄 (Execute 메서드 유지)
- DocumentPlannerTool.Generators.cs (신규): GenerateHtml/Docx/Markdown, BuildSections 등 (274줄)
DocumentReaderTool:
- DocumentReaderTool.cs: 571 → 338줄 (ExecuteAsync + PDF 메서드 유지)
- DocumentReaderTool.Formats.cs (신규): BibTeX/RIS/DOCX/XLSX/Text/Helpers (233줄)
CodeIndexService:
- CodeIndexService.cs: 588 → 285줄 (DB/인덱싱 유지)
- CodeIndexService.Search.cs (신규): Search, TF-IDF, Tokenize, Dispose (199줄)
ClipboardHistoryService:
- ClipboardHistoryService.cs: 575 → 458줄
- ClipboardHistoryService.ImageCache.cs (신규): 이미지 캐시 유틸리티 (120줄)
IndexService:
- IndexService.cs: 568 → 412줄
- IndexService.Helpers.cs (신규): 경로 탐색 헬퍼 + 검색 캐시 (163줄)
빌드: 경고 0, 오류 0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-03 21:34:51 +09:00
5bed67f64e
[Phase50] PlanViewerWindow·SettingsWindow 분리 — 6개 파일
...
변경 파일:
- PlanViewerWindow.StepRenderer.cs: 616 → 425줄 (RenderSteps/SwapSteps/EditStep 유지)
- PlanViewerWindow.EditButtons.cs (신규): BuildApprovalButtons, BuildExecutionButtons,
BuildCloseButton, ShowEditInput, CreateMiniButton, CreateActionButton (197줄)
- SettingsWindow.AgentConfig.cs: 608 → 303줄 (모델/스킬/템플릿 관리 유지)
- SettingsWindow.AiToggle.cs (신규): ApplyAiEnabledState, AiEnabled_Changed,
NetworkMode_Changed, StepApprovalCheckBox_Checked, BtnClearMemory_Click (316줄)
- SettingsWindow.AgentHooks.cs: 605 → 334줄 (훅 관리 유지)
- SettingsWindow.McpAdvanced.cs (신규): MCP 서버 관리, 감사 로그, 폴백 모델,
LoadAdvancedSettings/SaveAdvancedSettings (271줄)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-03 21:26:50 +09:00
306529a02c
[Phase49] MarkdownRenderer·ChatWindow.MessageRendering 분리
...
변경 파일:
- MarkdownRenderer.cs: 621 → 405줄 (Render/AddInlines/Table 유지)
- MarkdownRenderer.CodeBlock.cs (신규): CreateCodeBlock, CreateCodeHeaderButton,
GetExtensionForLang, ShowCodeFullScreen (~218줄)
- ChatWindow.MessageRendering.cs: 522 → 220줄 (RenderMessages/AddMessageBubble 유지)
- ChatWindow.Animations.cs (신규): GetCheckStyle, CreateCheckIcon, AnimateScale,
ApplyHoverScaleAnimation, ApplyHoverBounceAnimation, CreateSimpleCheck,
ApplyMenuItemHover (172줄)
- ChatWindow.FeedbackButtons.cs (신규): CreateActionButton, CreateFeedbackButton,
AddLinkedFeedbackButtons (121줄)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-03 21:22:47 +09:00
c4f23eb2b0
[Phase49] ChatWindow.Sending.cs 분리 — MessageEdit, StreamingTimers 분할
...
변경 파일:
- ChatWindow.Sending.cs: 720 → ~300줄 (전송 섹션만 유지)
- ChatWindow.MessageEdit.cs (신규): ApplyMessageEntryAnimation, _isEditing 필드,
EnterEditMode, SubmitEditAsync (~180줄)
- ChatWindow.StreamingTimers.cs (신규): StopAiIconPulse, CursorTimer_Tick,
ElapsedTimer_Tick, TypingTimer_Tick (~58줄)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-03 21:18:27 +09:00
39e07dd947
[Phase48] 대형 파일 분할 리팩터링 4차 — 4개 신규 파셜 파일 생성
...
## 분할 대상 및 결과
### ChatWindow.Controls.cs (595줄 → 372줄)
- ChatWindow.TabSwitching.cs (232줄, 신규): _activeTab 필드, _tabConversationId 필드
TabChat/Cowork/Code_Checked, UpdateTabUI, BtnPlanMode_Click, UpdatePlanModeUI,
SwitchToTabConversation, SaveCurrentTabConversationId, StopStreamingIfActive
### ChatWindow.SlashCommands.cs (579줄 → 406줄)
- ChatWindow.DropActions.cs (160줄, 신규): DropActions 딕셔너리, CodeExtensions, DataExtensions,
_dropActionPopup 필드, ShowDropActionMenu() 메서드
### WorkflowAnalyzerWindow.Charts.cs (667줄 → 397줄)
- WorkflowAnalyzerWindow.Timeline.cs (281줄, 신규): CreateTimelineNode, GetEventVisual, CreateBadge,
ShowDetail, UpdateSummaryCards, FormatMs, Truncate, 윈도우 이벤트 핸들러, WndProc
### SkillGalleryWindow.xaml.cs (631줄 → ~430줄)
- SkillGalleryWindow.SkillDetail.cs (197줄, 신규): ShowSkillDetail() 메서드 전체
(스킬 상세 보기 팝업 — 메타정보·프롬프트 미리보기·Action 버튼)
## 빌드 결과: 경고 0, 오류 0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-03 21:12:38 +09:00
27bd8de83a
[Phase47] 대형 파일 분할 리팩터링 3차 — 8개 신규 파셜 파일 생성
...
## 분할 대상 및 결과
### ChatWindow.ResponseHandling.cs (741줄 → 269줄)
- ChatWindow.StreamingUI.cs (303줄, 신규): CreateStreamingContainer, FinalizeStreamingContainer, ParseSuggestionChips, FormatTokenCount, EstimateTokenCount, StopGeneration
- ChatWindow.ConversationExport.cs (188줄, 신규): ForkConversation, OpenCommandPalette, ExecuteCommand, ExportConversation, ExportToHtml
### ChatWindow.PreviewAndFiles.cs (709줄 → ~340줄)
- ChatWindow.PreviewPopup.cs (~230줄, 신규): ShowPreviewTabContextMenu, OpenPreviewPopupWindow, _previewTabPopup 필드
### HelpDetailWindow.xaml.cs (673줄 → 254줄)
- HelpDetailWindow.Shortcuts.cs (168줄, 신규): BuildShortcutItems() 정적 메서드 (단축키 항목 160개+ 생성)
- HelpDetailWindow.Navigation.cs (266줄, 신규): 테마 프로퍼티, BuildTopMenu/SwitchTopMenu, BuildCategoryBar, NavigateToPage, 이벤트 핸들러
- partial class 전환: `public partial class HelpDetailWindow : Window`
### SkillService.cs (661줄 → 386줄)
- SkillService.Import.cs (203줄, 신규): ExportSkill, ImportSkills, MapToolNames — 가져오기/내보내기 섹션
- SkillDefinition.cs (81줄, 신규): SkillDefinition 클래스 독립 파일로 분리 (별도 최상위 클래스)
- partial class 전환: `public static partial class SkillService`
## NEXT_ROADMAP.md Phase 46 완료 항목 추가
## 빌드 결과: 경고 0, 오류 0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-03 21:02:53 +09:00
aa907d7b79
[Phase46] 대형 파일 분할 리팩터링 2차 — 19개 신규 파셜 파일 생성
...
## 분할 대상 및 결과
### AgentLoopService.cs (1,334줄 → 846줄)
- AgentLoopService.HtmlReport.cs (151줄): AutoSaveAsHtml, ConvertTextToHtml, EscapeHtml
- AgentLoopService.Verification.cs (349줄): 도구 분류 판별 + RunPostToolVerificationAsync + EmitEvent + CheckDecisionRequired + FormatToolCallSummary
### ChatWindow 분할 (8개 신규 파셜 파일)
- ChatWindow.PlanViewer.cs (474줄): 계획 뷰어 — AddPlanningCard, AddDecisionButtons, CollapseDecisionButtons, ShowPlanButton 등 8개 메서드
- ChatWindow.EventBanner.cs (411줄): AddAgentEventBanner, BuildFileQuickActions
- ChatWindow.TaskDecomposition.cs (1,170줄 → 307줄): RenderSuggestActionChips, BuildFeedbackContext, UpdateProgressBar, BuildDiffView 잔류
- ChatWindow.BottomBar.cs (345줄): BuildBottomBar, BuildCodeBottomBar, ShowLogLevelMenu, ShowLanguageMenu 등
- ChatWindow.MoodMenu.cs (456줄): ShowFormatMenu, ShowMoodMenu, ShowCustomMoodDialog 등
- ChatWindow.CustomPresets.cs (978줄 → 203줄): ShowCustomPresetDialog, SelectTopic 잔류
- ChatWindow.ConversationMenu.cs (255줄): ShowConversationMenu (카테고리/삭제/즐겨찾기 팝업)
- ChatWindow.ConversationTitleEdit.cs (108줄): EnterTitleEditMode
### SettingsViewModel 분할
- SettingsViewModel.LlmProperties.cs (417줄): LLM·에이전트 관련 바인딩 프로퍼티
- SettingsViewModel.Properties.cs (837줄 → 427줄): 기능 토글·테마·스니펫 등 앱 수준 프로퍼티
### TemplateService 분할
- TemplateService.Css.cs (559줄): 11종 CSS 테마 문자열 상수
- TemplateService.cs (734줄 → 179줄): 메서드 로직만 잔류
### PlanViewerWindow 분할
- PlanViewerWindow.StepRenderer.cs (616줄): RenderSteps + SwapSteps + EditStep + 버튼 빌더 9개
- PlanViewerWindow.cs (931줄 → 324줄): Win32/생성자/공개 API 잔류
### App.xaml.cs 분할 (776줄 → 452줄)
- App.Settings.cs (252줄): SetupTrayIcon, OpenSettings, ToggleDockBar, RefreshDockBar, OpenAiChat
- App.Helpers.cs (92줄): LoadAppIcon, IsAutoStartEnabled, SetAutoStart, OnExit
### LlmService.ToolUse.cs 분할 (719줄 → 115줄)
- LlmService.ClaudeTools.cs (180줄): SendClaudeWithToolsAsync, BuildClaudeToolBody
- LlmService.GeminiTools.cs (175줄): SendGeminiWithToolsAsync, BuildGeminiToolBody
- LlmService.OpenAiTools.cs (215줄): SendOpenAiWithToolsAsync, BuildOpenAiToolBody
### SettingsWindow.UI.cs 분할 (802줄 → 310줄)
- SettingsWindow.Storage.cs (167줄): RefreshStorageInfo, BtnStorageCleanup_Click 등
- SettingsWindow.HotkeyUI.cs (127줄): RefreshHotkeyBadges, EnsureHotkeyInCombo, GetKeyName 등
- SettingsWindow.DevMode.cs (90줄): DevModeCheckBox_Checked, UpdateDevModeContentVisibility
## 빌드 결과: 경고 0, 오류 0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-03 20:51:26 +09:00
f5a1ba999c
[Phase 45] AppSettings.cs 클래스 파일 분리 (57% 감소)
...
31개 클래스 혼재 AppSettings.cs (1,320줄)를 3개 파일로 분리:
- AppSettings.cs → 564줄 (AppSettings·LauncherSettings·CustomThemeColors 등 17개 클래스)
- AppSettings.LlmSettings.cs → 481줄 (LlmSettings 408줄·CodeSettings)
- AppSettings.AgentConfig.cs → 284줄 (권한·훅·이벤트·모델·프리셋 등 12개 클래스)
모두 독립 top-level 클래스 (partial 불필요)
빌드: 경고 0, 오류 0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-03 20:10:03 +09:00
35e6e4c060
[Phase 44] LauncherViewModel·SettingsWindow.Tools·MarkdownRenderer 파셜 분할
...
LauncherViewModel (805줄 → 402줄, 50% 감소):
- LauncherViewModel.FileAction.cs (154줄): 파일 액션 서브메뉴, EnterActionMode, ExitActionMode
- LauncherViewModel.Commands.cs (273줄): CopySelectedPath, Favorite, Terminal, 클립보드 병합, INotifyPropertyChanged
- 오류 수정: FileAction.cs에 using AxCopilot.Themes 누락 → 추가
SettingsWindow.Tools (875줄 → 605줄):
- SettingsWindow.ToolCards.cs (283줄): AX Agent 서브탭 전환 + 도구 관리 카드 UI
MarkdownRenderer (825줄 → 621줄):
- MarkdownRenderer.Highlighting.cs (215줄): 구문 하이라이팅 전체 분리
빌드: 경고 0, 오류 0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-03 20:03:25 +09:00
2cf1fcd411
[Phase 43] 4개 대형 파일 파셜 클래스 분할
...
SettingsWindow.AgentConfig (1,202줄):
- AgentConfig.cs → 608줄 (등록모델·스킬·프롬프트·AI토글·사내외모드)
- AgentHooks.cs → 605줄 (에이전트훅·MCP서버·감사로그·폴백설정)
ChatWindow.Presets (1,280줄):
- Presets.cs → 315줄 (대화 주제 버튼)
- CustomPresets.cs → 978줄 (커스텀 프리셋 관리·하단바·포맷메뉴)
ChatWindow.PreviewAndFiles (1,105줄):
- PreviewAndFiles.cs → 709줄 (미리보기 패널)
- FileBrowser.cs → 408줄 (에이전트 진행률 바·파일 탐색기)
WorkflowAnalyzerWindow (929줄):
- WorkflowAnalyzerWindow.xaml.cs → 274줄 (리사이즈·탭·데이터수집)
- WorkflowAnalyzerWindow.Charts.cs → 667줄 (차트·타임라인·패널·유틸)
빌드: 경고 0, 오류 0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-03 19:55:03 +09:00
bf37800311
[Phase 42] ChatWindow.ResponseHandling·LlmService 파셜 분할
...
ChatWindow.ResponseHandling (1,494줄 → 741줄, 50% 감소):
- ChatWindow.MessageActions.cs (277줄): 버튼이벤트, 메시지검색, 에러복구
- ChatWindow.StatusAndUI.cs (498줄): 우클릭, 팁, AX.md, 글로우, 토스트, 하단바
LlmService (1,010줄 → 263줄, 74% 감소):
- LlmService.Streaming.cs (516줄): 스트리밍 응답, 백엔드별 구현
- LlmService.Helpers.cs (252줄): 헬퍼, 토큰 파싱, Dispose
- 빌드: 경고 0, 오류 0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-03 19:45:26 +09:00
c9a6e6442f
[Phase 41] SettingsViewModel·AgentLoopService 파셜 클래스 분할
...
SettingsViewModel (1,855줄 → 320줄, 82.7% 감소):
- SettingsViewModel.Properties.cs (837줄): 바인딩 프로퍼티 전체
- SettingsViewModel.Methods.cs (469줄): Save/Browse/Add 등 메서드
- SettingsViewModelModels.cs (265줄): 6개 모델 클래스 분리
AgentLoopService (1,823줄 → 1,334줄, 26.8% 감소):
- AgentLoopService.Execution.cs (498줄): 병렬 도구 실행, ToolExecutionState
- 빌드: 경고 0, 오류 0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-03 19:37:24 +09:00
6448451d78
[Phase 40] ChatWindow 2차 파셜 클래스 분할 (94.5% 감소)
...
4,767줄 ChatWindow.xaml.cs를 7개 파셜 파일로 추가 분할
메인 파일: 4,767줄 → 262줄 (94.5% 감소)
전체 ChatWindow 파셜 파일: 15개
- ChatWindow.Controls.cs (595줄): 사용자정보, 스크롤, 제목편집, 탭전환
- ChatWindow.WorkFolder.cs (359줄): 작업폴더, 폴더 설정
- ChatWindow.PermissionMenu.cs (498줄): 권한, 파일첨부, 사이드바
- ChatWindow.ConversationList.cs (747줄): 대화목록, 제목편집, 검색
- ChatWindow.Sending.cs (720줄): 전송, 편집모드, 타이머
- ChatWindow.HelpCommands.cs (157줄): /help 도움말
- ChatWindow.ResponseHandling.cs (1,494줄): 응답재생성, 스트리밍, 토스트
- 빌드: 경고 0, 오류 0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-03 19:21:52 +09:00
0c997f0149
[Phase 39] FontFamily 캐싱 + LauncherWindow 파셜 클래스 분할
...
- ThemeResourceHelper에 CascadiaCode/ConsolasCode/ConsolasCourierNew 정적 필드 추가
- 25개 파일, 89개 new FontFamily(...) 호출을 정적 캐시 참조로 교체
- LauncherWindow.xaml.cs (1,563줄) → 5개 파셜 파일로 분할 (63% 감소)
- LauncherWindow.Theme.cs (116줄): ApplyTheme, 커스텀 딕셔너리 빌드
- LauncherWindow.Animations.cs (153줄): 무지개 글로우, 애니메이션 헬퍼
- LauncherWindow.Keyboard.cs (593줄): 단축키 20종, ShowToast, IME 검색
- LauncherWindow.Shell.cs (177줄): Shell32, SendToRecycleBin, 클릭 핸들러
- 빌드: 경고 0, 오류 0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-03 18:54:35 +09:00
08524466d2
[Phase 37-38] ChatWindow·SettingsWindow 파셜 클래스 분할 + 코드 품질 개선
...
Phase 37 — ChatWindow God Class 파셜 분할 (10,184 → 4,767줄, -53%)
- ChatWindow.MessageRendering.cs (522줄): 메시지 렌더링, 체크 아이콘
- ChatWindow.SlashCommands.cs (579줄): 슬래시 명령, 드래그앤드롭
- ChatWindow.AgentSupport.cs (475줄): 에이전트 루프, 시스템 프롬프트
- ChatWindow.TaskDecomposition.cs (1,170줄): Plan UI, Diff, 이벤트 배너
- ChatWindow.Presets.cs (1,280줄): 프리셋, 하단바, 설정 토글
- ChatWindow.ModelSelector.cs (395줄): 모델 선택, 대화 관리
- ChatWindow.PreviewAndFiles.cs (1,105줄): 미리보기, 파일 탐색기
Phase 38 — SettingsWindow 파셜 분할 (3,216 → 373줄, -88%)
- SettingsWindow.UI.cs (802줄): 탭 전환, 독바, 스토리지, 핫키
- SettingsWindow.Tools.cs (875줄): 도구 카드 UI, AX Agent 탭
- SettingsWindow.AgentConfig.cs (1,202줄): 모델, 스킬, 훅, MCP
Phase 35-36 — 코드 품질 심층 정리
- bare catch 전량 → catch (Exception) (109개 파일)
- ColorConverter → ThemeResourceHelper.HexBrush() (81건)
- Application.Current as App → CurrentApp 프로퍼티 (15개 파일)
- AgentContext.Settings DI 주입 (11개 에이전트 도구)
- PopupMenuHelper 실제 적용 (4개 팝업)
CLAUDE.md: 작업 후 깃 푸시 + 오류 시 롤백 지침 추가
docs: TECHNOLOGY_OVERVIEW.md 신규 작성 (762줄 기술 문서)
빌드: 경고 0, 오류 0
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com >
2026-04-03 18:37:54 +09:00
deffb33cf9
Initial commit to new repository
2026-04-03 18:23:52 +09:00