Compare commits

..

130 Commits

Author SHA1 Message Date
227f5ab0d3 에이전트 진행 표시 구조를 claude-code식 row 기반으로 재정리
Some checks are pending
Release Gate / gate (push) Waiting to run
- AgentTranscriptDisplayCatalog를 row presentation 중심으로 재구성해 thinking/waiting/compact/tool activity/permission/tool result/status를 타입별로 분리함
- PermissionRequestPresentationCatalog와 ToolResultPresentationCatalog를 정리해 권한 요청과 결과 상태를 행위/상태 기준으로 더 명확하게 표현함
- ChatWindow.AgentEventRendering에서 process feed 계열 이벤트를 GroupKey 기준으로 병합해 append 수를 줄이고 진행 흐름이 기본 transcript에 남도록 조정함
- FooterPresentation에서 Cowork/Chat 프리셋 안내 카드가 execution event 이후 자동으로 숨겨지도록 하고 입력 워터마크와 footer 기본 문구를 정리함
- render_messages 성능 로그에 processFeed append/merge 수치와 rowKindCounts를 추가해 %APPDATA%\\AxCopilot\\perf 기준 실검증이 가능하도록 함
- dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ 기준 경고 0 / 오류 0 확인
2026-04-09 14:49:53 +09:00
33c1db4dae 에이전트 선택적 탐색 구조 개선과 경고 정리 반영
Some checks failed
Release Gate / gate (push) Has been cancelled
- claude-code 선택적 탐색 흐름을 참고해 Cowork/Code 시스템 프롬프트에서 folder_map 상시 선행 지시를 완화하고 glob/grep 기반 좁은 탐색을 우선하도록 조정함

- FolderMapTool 기본 depth를 2로, include_files 기본값을 false로 낮추고 MultiReadTool 최대 파일 수를 8개로 줄여 초기 과탐색 폭을 보수적으로 조정함

- AgentLoopExplorationPolicy partial을 추가해 탐색 범위 분류, broad-scan corrective hint, exploration_breadth 성능 로그를 연결함

- AgentLoopService에 탐색 범위 가이드 주입과 실행 중 탐색 폭 추적을 추가하고, 좁은 질문에서 반복적인 folder_map/대량 multi_read를 교정하도록 정리함

- DocxToHtmlConverter nullable 경고를 수정해 Release 빌드 경고 0 / 오류 0 기준을 다시 충족함

- README와 docs/DEVELOPMENT.md에 2026-04-09 10:36 (KST) 기준 개발 이력을 반영함
2026-04-09 14:27:59 +09:00
7931566212 구조 개선: transcript 지연 가상화와 tool executor 분리 적용
이번 변경은 claude-code 기준 구조 강건성을 높이기 위한 리팩터링입니다.

핵심 수정 사항:

- AX Agent transcript를 TranscriptVisualItem/TranscriptVisualHost 기반 지연 materialization 구조로 전환해 MessageList 가상화 기반을 강화했습니다.

- StreamingToolExecutionCoordinator를 IToolExecutionCoordinator 뒤로 분리해 AgentLoopService가 구체 구현에 직접 묶이지 않도록 정리했습니다.

- 라이브 진행 카드 렌더를 ChatWindow.LiveProgressPresentation partial로 이동해 ChatWindow.xaml.cs의 책임을 더 줄였습니다.

- 기존 메시지 bubble 조립 로직을 유지하면서 transcript host가 필요 시점에 bubble을 만들 수 있도록 helper 경로를 추가했습니다.

검증 결과:

- dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\

- 경고 0 / 오류 0
2026-04-09 01:37:08 +09:00
4f3c19c15c 문서: claude-code와 AX Agent 구조 비교 기준 문서 추가
Some checks failed
Release Gate / gate (push) Has been cancelled
- claude-code 구조, 특징 기능, 에이전트 루프, Cowork/Code 결과 품질 요인, 프롬프트 전략을 정리한 비교 문서 추가

- AX Agent 구조, 실행 계층, 메모리/도구/transcript 구조와 현재 강점·약점을 정리

- README와 DEVELOPMENT 문서에 신규 비교 문서와 업데이트 이력 반영

- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0 / 오류 0)
2026-04-09 01:09:21 +09:00
0ceca202e9 AX Agent loop 정책을 분리하고 transcript 가상화·성능 계측 구조를 강화한다
Some checks failed
Release Gate / gate (push) Has been cancelled
- AgentLoop 검증/문서/compact 정책 메서드를 partial 파일로 분리해 loop 본문의 책임을 줄임
- transcript 렌더에 cache pruning과 deferred scrolling을 적용해 긴 세션의 UI 부담을 낮춤
- AgentPerformanceLogService를 추가해 transcript 렌더와 agent loop 실행 요약을 perf 로그로 남김
- README와 DEVELOPMENT 문서에 2026-04-09 10:08 (KST) 기준 구조 개선 및 계측 이력을 반영함
- dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ 검증 결과 경고 0개 오류 0개
2026-04-09 00:57:38 +09:00
594d38e4a9 AX Agent transcript 렌더 계획/적용 구조를 분리해 유지보수성을 높이고 문서를 갱신한다
Some checks failed
Release Gate / gate (push) Has been cancelled
- ChatWindow transcript 렌더를 planner/execution 단계로 분리해 RenderMessages 오케스트레이션을 단순화함
- TranscriptRenderPlanner/TranscriptRenderExecution partial을 추가해 planning과 host 적용 책임을 나눔
- README와 DEVELOPMENT 문서에 2026-04-09 09:37 (KST) 기준 구조 개선 이력을 반영함
- dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ 검증 결과 경고 0개 오류 0개
2026-04-09 00:39:47 +09:00
8643562319 AX Agent 구조를 claw-code 기준으로 추가 정리해 transcript 렌더와 tool streaming 책임을 분리함
Some checks failed
Release Gate / gate (push) Has been cancelled
- ChatWindow.TranscriptRendering partial을 추가해 transcript windowing, 증분 렌더, 스크롤 보존 로직을 메인 ChatWindow.xaml.cs에서 분리
- StreamingToolExecutionCoordinator를 도입해 read-only 도구 prefetch, tool-use 스트리밍 수신, context overflow/transient error 복구를 별도 계층으로 이동
- AgentLoopRuntimeThresholds helper를 추가해 no-tool, plan retry, terminal evidence gate 임계값 계산을 AgentLoopService에서 분리
- AgentLoopTransitions.Execution은 coordinator thin wrapper 중심 구조로 정리해 이후 executor 고도화와 정책 변경이 덜 위험하도록 개선
- README와 docs/DEVELOPMENT.md를 2026-04-09 09:14 (KST) 기준으로 갱신
- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0, 오류 0)
2026-04-09 00:16:54 +09:00
74d43e701c AX Agent transcript 호스트를 컬렉션 기반으로 재구성해 코워크·코드 스트리밍 중 UI 부하를 줄임
Some checks failed
Release Gate / gate (push) Has been cancelled
- 메시지 영역을 ScrollViewer+StackPanel 직접 조작 구조에서 ListBox+ObservableCollection 기반 transcript 호스트로 전환
- ChatWindow.TranscriptHost 도입으로 transcript 요소 추가·교체·삭제·스크롤 접근을 공용 helper로 정리
- 코워크/코드 실행 중 RenderMessages와 라이브 카드가 MessagePanel.Children 직접 조작에 덜 의존하도록 정리
- MessageBubble, AgentEventRendering, Timeline, UserAsk, ConversationManagement 등 transcript 관련 partial을 새 호스트 구조에 맞게 전환
- 향후 claw-code의 VirtualMessageList 수준 가상화를 적용할 수 있는 기반을 마련
- README와 DEVELOPMENT 문서를 2026-04-08 12:52 (KST) 기준으로 갱신
- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0, 오류 0)
2026-04-09 00:00:37 +09:00
8db1a1ffb0 코워크·코드 경량 모드 애니메이션 비용 추가 완화
Some checks failed
Release Gate / gate (push) Has been cancelled
- 실행 중 경량 라이브 진행 모드에서 메시지 진입 애니메이션과 진행 마커 펄스를 줄여 UI 스레드 부담을 더 낮춤

- AX Agent 라이브 카드의 등장·퇴장 애니메이션과 아이콘 opacity 펄스도 경량 모드에서는 생략하도록 조정함

- README와 DEVELOPMENT 문서를 2026-04-08 12:40 (KST) 기준으로 갱신함

- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0, 오류 0)
2026-04-08 23:49:38 +09:00
117320af02 코워크·코드 스트리밍 렌더 윈도우 축소 및 타이머 재예약 최적화
Some checks failed
Release Gate / gate (push) Has been cancelled
- claude-code의 virtualized message list 방향을 참고해 AX transcript에 실행 중 경량 렌더 윈도우를 도입함

- 코워크/코드 스트리밍 중 최근 항목 위주로 더 작은 타임라인만 렌더하도록 조정해 render 대상 수를 줄임

- execution history, agent UI event, task summary, input UI 타이머는 경량 라이브 진행 모드에서 이미 예약되어 있으면 다시 stop/start 하지 않도록 정리함

- README와 DEVELOPMENT 문서를 2026-04-08 12:33 (KST) 기준으로 갱신함

- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0, 오류 0)
2026-04-08 23:44:52 +09:00
6bccc229b0 코워크·코드 실행 중 보조 UI 갱신 부담 완화
Some checks failed
Release Gate / gate (push) Has been cancelled
- claude-code 구조 비교 결과를 바탕으로 코워크/코드 경량 라이브 진행 모드에서 transcript 재렌더에 이어 보조 UI 갱신 빈도도 함께 낮춤

- input UI refresh timer와 task summary refresh timer를 실행 중 경량 모드에서 더 느슨한 간격으로 조정함

- Thinking, ToolCall 같은 고빈도 이벤트는 작업 요약 갱신을 매번 다시 예약하지 않고 상태 변화가 큰 이벤트 중심으로만 갱신하도록 정리함

- README와 DEVELOPMENT 문서를 2026-04-08 12:26 (KST) 기준으로 갱신함

- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0, 오류 0)
2026-04-08 23:33:33 +09:00
77b63e7a83 코워크/코드 실행 중 UI 렌더 부담 완화 및 claude-code 구조 비교 반영
Some checks failed
Release Gate / gate (push) Has been cancelled
- claude-code의 Messages, VirtualMessageList, StatusLine, StreamingToolExecutor 흐름을 다시 비교해 AX의 구조적 병목을 점검함

- Cowork/Code에서 실행 히스토리를 접어 둔 상태일 때 process feed 이벤트가 transcript 전체 재렌더를 자주 유발하던 경로를 줄임

- 경량 라이브 진행 모드를 도입해 라이브 카드와 상태 표시를 우선 사용하고 execution history render / agent UI event timer 간격을 더 느슨하게 조정함

- 완료/오류/문서 결과처럼 기록 가치가 큰 이벤트만 적극적으로 transcript 렌더를 요청하도록 정리함

- README와 DEVELOPMENT 문서를 2026-04-08 12:18 (KST) 기준으로 갱신함

- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0, 오류 0)
2026-04-08 23:29:04 +09:00
1b4a2bfb1c AX Agent 진행 시간·글로우 경로 정리 및 최근 로컬 변경 일괄 반영
- AX Agent 스트리밍 경과 시간을 공용 helper로 통일해 비정상적인 수천만 시간 표시를 방지함

- 채팅 입력창 글로우를 런처와 같은 표시/숨김 중심의 얇은 외곽 글로우로 정리하고 런처 글로우 설정은 일반 설정에 유지함

- README와 DEVELOPMENT 문서를 2026-04-08 12:02 (KST) 기준으로 갱신하고 Release 빌드 경고 0 / 오류 0을 확인함
2026-04-08 23:20:53 +09:00
6e99837a4c vLLM 도구 호출 스트리밍 실행기와 코워크 루프 실시간 소비 구조 추가
Some checks failed
Release Gate / gate (push) Has been cancelled
- LlmService에 tool-use 전용 streaming event API를 추가하고 OpenAI vLLM IBM 경로의 partial tool_call 조립을 event 기반으로 재구성함
- Cowork/Code 루프가 streaming event를 직접 소비하도록 바꿔 도구 호출 감지와 진행 표시를 더 빠르게 갱신함
- read-only 도구 조기 실행이 기존 loop와 실제로 이어지도록 정리하고 최종 실행에서는 prefetch 결과를 재사용함
- README와 DEVELOPMENT 문서를 2026-04-08 11:31(KST) 기준으로 갱신함

검증
- dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\
- 경고 0 / 오류 0
2026-04-08 16:58:11 +09:00
90ef3400f6 IBM vLLM 도구 호출 스트리밍과 모델 프로파일 기반 실행 정책 강화
Some checks failed
Release Gate / gate (push) Has been cancelled
- IBM 배포형 도구 호출 바디에 프로파일 기반 tool temperature를 적용하고 tool_call_strict 프로파일에서 더 직접적인 tool-only 지시를 추가함
- IBM 경로가 tool_choice를 거부할 때 tool_choice만 제거한 대체 강제 재시도 경로를 추가함
- OpenAI/vLLM tool-use 응답을 SSE로 수신하고 delta.tool_calls를 부분 조립해 도구 호출을 더 빨리 감지하도록 변경함
- read-only 도구 조기 실행과 결과 재사용 경로를 도입해 Cowork/Code 도구 착수 속도를 개선함
- README와 DEVELOPMENT 문서를 2026-04-08 11:14(KST) 기준으로 갱신함

검증
- dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\
- 경고 0 / 오류 0
2026-04-08 16:48:11 +09:00
a2c952879d 모델 프로파일 기반 Cowork/Code 루프와 진행 UX 고도화 반영
- 등록 모델 실행 프로파일을 검증 게이트, 문서 fallback, post-tool verification까지 확장 적용

- Cowork/Code 진행 카드에 계획/도구/검증/압축/폴백/재시도 단계 메타를 추가해 대기 상태 가시성 강화

- OpenAI/vLLM tool 요청에 병렬 도구 호출 힌트를 추가하고 회귀 프롬프트 문서를 프로파일 기준으로 전면 정리

- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0 / 오류 0)
2026-04-08 13:41:57 +09:00
b391dfdfb3 하단 안내 카드 가림 문제와 라이브 타이핑 표시를 보정한다
- Cowork·Chat 하단 프리셋 안내 카드가 실제 결과를 가리지 않도록 대화 메시지 존재 시 자동으로 숨기도록 조정

- FooterPresentation에 남아 있던 깨진 한글 워터마크와 상태 문구를 정상 한국어로 복구

- 라이브 타이핑 속도와 최종 프리뷰 deadline을 재조정해 SSE 및 Cowork·Code 최종 응답이 한 번에 붙지 않고 더 눈에 보이게 표시되도록 보정
2026-04-07 09:31:57 +09:00
4c8b550242 코워크·코드 장시간 실행 종료 직전 NullReference 실패를 방지하고 예외 추적을 보강한다
Some checks failed
Release Gate / gate (push) Has been cancelled
- ChatWindow 실행 경로에서 스트리밍 취소 토큰을 지역 변수로 고정해 마지막 라이브 프리뷰 단계에서 _streamCts null 참조가 발생하지 않도록 수정

- 최종 타이핑 프리뷰 컨테이너 준비 실패와 취소 예외를 방어적으로 처리해 장시간 작업이 마지막 UI 렌더 때문에 오류로 뒤집히지 않도록 정리

- 에이전트 실행 예외 전체를 앱 로그에 남기고 README 및 DEVELOPMENT 문서 이력을 갱신
2026-04-07 09:26:28 +09:00
f34878cbd5 하단 토큰 집계와 압축 표시 정확도 수정
Some checks failed
Release Gate / gate (push) Has been cancelled
- 유휴 전환 후 하단 상태바 전체 토큰 집계가 사라지지 않도록 대화 기준 합산 복원 경로 추가
- 컨텍스트 사용량 팝업에 마지막 실제 압축 before/after 및 누적 절감량 표시
- total_stats 이벤트가 진행 피드에 흡수되지 않고 전용 통계 카드로 다시 노출되게 수정
- 관련 README 및 개발 문서 이력 갱신

검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\ (경고 0, 오류 0)
2026-04-07 09:21:23 +09:00
b45ed524e1 코워크 탭 전환 시 처리 상태 오염과 자동 취소 수정\n\n- 탭 전환과 대화 재개 시 실행 중 작업을 즉시 취소하던 흐름 제거\n- 실행 소유 탭에서만 정지/일시정지 버튼과 라이브 진행 힌트가 보이도록 정리\n- README와 DEVELOPMENT 문서에 2026-04-07 03:13 (KST) 기준 변경 이력 반영\n- dotnet build 검증 완료 (경고 0, 오류 0)
Some checks failed
Release Gate / gate (push) Has been cancelled
2026-04-07 09:07:13 +09:00
6ca067c4a6 코워크·코드 하단 메모리 표기 제거 및 footer 정리\n\n- Cowork/Code 하단 작업 바의 메모리 상태 칩을 항상 숨기도록 조정\n- 메모리 상태 버튼 비노출 시 tooltip과 팝업 진입도 함께 차단\n- README와 DEVELOPMENT 문서에 2026-04-07 03:03 (KST) 기준 변경 이력 반영\n- dotnet build 검증 완료 (경고 0, 오류 0)
Some checks failed
Release Gate / gate (push) Has been cancelled
2026-04-07 09:02:18 +09:00
fbaaf19391 AX Agent 내부 설정의 워크플로우 시각화와 자동 프리뷰를 복구한다\n\n- 개발자 탭의 워크플로우 시각화가 숨은 DevMode 의존 때문에 실제 분석기 창을 띄우지 않던 문제를 수정한다\n- 워크플로우 시각화 토글을 켜면 즉시 창을 열고 끄면 바로 숨기도록 동작을 연결한다\n- 일반 설정에만 남아 있던 문서 미리보기 자동 표시 옵션을 AX Agent 내부 설정 공통 탭에도 복원한다\n- 내부 설정의 자동 프리뷰 콤보를 Llm.AutoPreview와 동기화하고 변경 즉시 저장되도록 연결한다\n- README와 DEVELOPMENT 문서에 변경 내용과 시각을 반영한다\n\n검증 결과\n- dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\\n- 경고 0 / 오류 0
Some checks failed
Release Gate / gate (push) Has been cancelled
2026-04-07 08:58:00 +09:00
a686d822e7 AX Agent 진행 시간 표기와 글로우 설정 위치를 정리한다\n\n- Cowork/Code 진행 카드에서 스트리밍 시작 시각이 준비되기 전 계산되며 수천만 시간으로 튀는 문제를 수정한다\n- 진행 카드 라이브 대기 색상을 테마 AccentColor 기반으로 조정해 주황색 고정 느낌을 제거한다\n- 채팅 입력창 글로우를 런처와 같은 리듬의 무지개 글로우로 완화하고 외곽선 두께와 블러를 정리한다\n- 일반 설정의 런처/채팅 글로우 토글을 제거하고 AX Agent 내부 설정 공통 탭으로 이동한다\n- README와 DEVELOPMENT 문서에 변경 내용과 시각을 반영한다\n\n검증 결과\n- dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\\n- 경고 0 / 오류 0 2026-04-07 08:52:37 +09:00
f8baea24f5 코워크와 코드 최종 응답 라이브 타이핑 프리뷰 적용
Some checks failed
Release Gate / gate (push) Has been cancelled
- Cowork/Code 에이전트 루프 완료 후 최종 답변이 한 번에 붙지 않도록 라이브 타이핑 프리뷰를 추가함\n- 처리 중에는 기존 진행 로그를 유지하고, 최종 응답 구간만 스트리밍 컨테이너를 거쳐 자연스럽게 이어지도록 정리함\n- README와 DEVELOPMENT 문서에 2026-04-07 02:31 (KST) 기준 변경 이력 반영\n- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0 / 오류 0)
2026-04-07 08:21:05 +09:00
23b2352637 채팅 탭 SSE 스트리밍 응답 경로 복구 및 문서 반영
Some checks failed
Release Gate / gate (push) Has been cancelled
- Chat 탭 직접 대화 경로가 최종 응답만 한 번에 표시하던 문제를 수정하고 LlmService 스트리밍 경로를 실제 UI에 연결함\n- AxAgentExecutionEngine에서 비에이전트 채팅이 스트리밍 전송을 사용할 수 있도록 실행 모드를 조정함\n- ChatWindow에서 기존 스트리밍 컨테이너와 타이핑 타이머를 실제 전송 루프에 연결해 타자 치듯 점진적으로 응답이 보이게 함\n- README와 DEVELOPMENT 문서에 2026-04-07 02:23 (KST) 기준 변경 이력 반영\n- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0 / 오류 0)
2026-04-07 08:03:37 +09:00
8617f66496 내부 설정 Gemini API 키 입력 문제 수정
Some checks failed
Release Gate / gate (push) Has been cancelled
- AX Agent 내부 설정 공통 탭의 서비스 API 키 입력 필드를 PasswordBox에서 TextBox로 변경

- Gemini/Claude 키 입력 시 오버레이 동기화 중에도 입력이 끊기지 않도록 보완

- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0 / 오류 0)
2026-04-07 07:55:36 +09:00
f44b8b7dea Cowork 진행 표시와 깨진 한글 문자열 복구
Some checks failed
Release Gate / gate (push) Has been cancelled
- Cowork/Code 실행 시작 직후 라이브 진행 힌트를 즉시 표시하고 중간 이벤트마다 사라지지 않도록 유지 로직 수정

- 프리셋 선택 화면, 권한 요청 팝업, 실행 전환 게이트 안내 문자열의 깨진 한글을 정상 한국어로 복구

- 내부 중단 경로의 완료 문구를 사용자 취소로 오해하지 않도록 중립 표현으로 정리

- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0 / 오류 0)
2026-04-07 07:53:08 +09:00
4e6d5d0597 AX Agent footer 한글 깨짐 복구 및 안내 문구 정리
Some checks failed
Release Gate / gate (push) Has been cancelled
- Cowork와 Code 입력창 워터마크, 프리셋 안내, 메모리 상태 팝업의 깨진 한글 문자열 복구
- 메모리 적용 근거와 상태 문구를 읽기 쉬운 한국어로 재정리
- Release 빌드 경고/오류 0 재검증
2026-04-07 07:24:46 +09:00
a35c47ed32 메모리 적용 근거 표시와 감사/명령 UX 마무리
- Cowork와 Code 진행 표시 줄에 메모리 규칙 및 학습 메모리 적용 근거를 함께 노출
- include 감사 로그 최근 3일 필터와 보관 시점 판정을 정리해 메모리 감사 상태를 더 정확히 표시
- /memory list 및 search 출력 형식을 우선순위·레이어·설명·paths·tags 중심으로 재구성하고 Release 빌드 경고/오류 0 검증
2026-04-07 06:40:18 +09:00
fe843fb314 메모리 상태 팝업과 include 감사 요약 UX 고도화
Some checks failed
Release Gate / gate (push) Has been cancelled
- Cowork/Code 하단 메모리 칩에서 적용 규칙과 최근 include 감사 이력을 팝업으로 확인 가능하게 개선
- 설정 메모리 개요에 최근 include 감사 요약을 추가해 메모리 계층과 감사 상태를 함께 점검 가능하도록 정리
- AX Agent 메모리 구조 고도화 마지막 UX 보강 반영 및 Release 빌드 경고/오류 0 검증
2026-04-07 00:55:53 +09:00
594bb6ffe6 메모리 include 감사 로그와 AX Agent 메모리 상태 UX 강화
- AgentMemoryService에 @include 성공/차단 감사 로그(MemoryInclude) 기록 추가
- Cowork/Code 하단 폴더 바에 메모리 규칙/학습 메모리 상태 요약 표시 추가
- 설정의 외부 메모리 include 안내 문구를 감사 로그 기준으로 정리
- dotnet build 검증 완료 (경고 0 / 오류 0)
2026-04-07 00:46:56 +09:00
aef5f51c89 AX Agent 메모리 적용 상태 요약 UI 추가
Some checks failed
Release Gate / gate (push) Has been cancelled
- AX Agent 설정의 에이전트 메모리 섹션에 현재 적용 중인 메모리 계층 요약 row 추가
- 계층형 규칙 수와 학습 메모리 수를 한눈에 보여주고 활성 규칙의 우선순위, 설명, 태그를 바로 읽을 수 있도록 정리
- 새로고침 버튼을 추가해 현재 작업 폴더 기준 메모리 적용 상태를 즉시 다시 계산 가능하게 구현
- 메모리 파일 저장과 학습 메모리 초기화 이후 요약이 자동으로 다시 반영되도록 연결
- README 및 DEVELOPMENT 문서에 2026-04-07 01:00 (KST) 기준 작업 이력 반영

검증 결과
- dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\
- 경고 0 / 오류 0
2026-04-07 00:39:26 +09:00
0bfec6fb78 AX Agent 계층형 메모리 규칙 메타 확장 및 표시 보강
Some checks failed
Release Gate / gate (push) Has been cancelled
- AgentMemoryService frontmatter에 enabled와 tags 메타를 추가해 규칙 파일을 비활성 상태로 보관하거나 태그 단위로 묶어 관리할 수 있도록 확장
- enabled:false 규칙은 로드 단계에서 제외하도록 처리해 실험용 메모리 규칙을 안전하게 보관 가능하게 정리
- MemoryTool list/search 출력에 tags 메타를 함께 노출해 규칙 설명·적용 경로·우선순위와 함께 묶음 성격까지 바로 읽을 수 있도록 개선
- 설정의 메모리 편집 다이얼로그 frontmatter 예시를 description/enabled/tags/paths 기준으로 갱신해 현재 지원 메타를 UI에서도 바로 참고 가능하게 정리
- README 및 DEVELOPMENT 문서에 2026-04-07 00:52 (KST) 기준 작업 이력 반영

검증 결과
- dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\
- 경고 0 / 오류 0
2026-04-07 00:34:32 +09:00
4e1dcf082c AX Agent 메모리 편집 UI 추가 및 계층형 메모리 관리 흐름 보강
Some checks failed
Release Gate / gate (push) Has been cancelled
- AX Agent 설정의 에이전트 메모리 섹션에 관리형/사용자/프로젝트/로컬 메모리 편집 버튼 추가
- 계층형 메모리 파일을 현재 테마 기반 다이얼로그에서 직접 열고 저장/삭제할 수 있는 편집 UI 구현
- description 및 paths frontmatter 예시를 편집기 안내에 포함해 claw-code 수준의 메모리 규칙 작성 흐름 보강
- 저장 후 메모리 계층을 즉시 다시 로드하도록 연결해 /memory 명령과 설정 UI가 같은 상태를 보도록 정리
- README 및 DEVELOPMENT 문서에 2026-04-07 00:45 (KST) 기준 작업 이력 반영

검증 결과
- dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\
- 경고 0 / 오류 0
2026-04-07 00:28:56 +09:00
917e61af20 메모리 계층 우선순위와 중복 병합 정책 정리
Some checks failed
Release Gate / gate (push) Has been cancelled
계층형 메모리 문서 로드 후 동일한 규칙 내용은 더 가까운 계층만 남기고 중복을 제거하도록 NormalizeInstructionDocuments 로직을 추가했습니다.

최종 메모리 문서는 managed, user, project, local 순서로 다시 정렬되고 우선순위 번호를 부여하며, MemoryTool의 list와 search 결과에서 그 우선순위를 함께 보여주도록 했습니다.

README와 DEVELOPMENT 문서에 2026-04-07 00:39 (KST) 기준 이력을 반영했고 Release 빌드 경고 0 오류 0을 확인했습니다.
2026-04-07 00:17:48 +09:00
7093c77849 메모리 규칙 설명 메타와 슬래시 조회 기능 확장
Some checks failed
Release Gate / gate (push) Has been cancelled
계층형 메모리 frontmatter에 description 메타를 추가해 rule 파일의 의도와 적용 범위를 /memory 결과에서 함께 읽을 수 있도록 정리했습니다.

MemoryTool에 show_scope 액션을 추가해 managed, user, project, local 메모리 파일의 실제 내용을 슬래시 명령으로 직접 확인할 수 있게 했습니다.

README와 DEVELOPMENT 문서에 2026-04-07 00:31 (KST) 기준 변경 이력을 반영했고 Release 빌드 경고 0 오류 0을 확인했습니다.
2026-04-07 00:11:51 +09:00
2e0362a88f 메모리 규칙 경로 범위 적용을 위한 paths 프런트매터 지원 추가
Some checks failed
Release Gate / gate (push) Has been cancelled
계층형 메모리 문서에 YAML 유사 paths 프런트매터를 추가해 현재 작업 폴더 경로에 따라 규칙 적용 여부를 제어할 수 있도록 했습니다.

AgentMemoryService에서 프런트매터를 파싱하고 프로젝트 루트 기준 상대 경로에 대해 *, **, ? glob 매칭을 수행하도록 구현했습니다.

README와 DEVELOPMENT 문서에 메모리 규칙 범위 제어 기능과 동작 방식을 2026-04-07 00:22 (KST) 기준으로 반영했고, Release 빌드 경고 0 오류 0을 확인했습니다.
2026-04-07 00:07:32 +09:00
18551a0aea AX Agent 메모리 구조 4차 강화: 외부 include 보안 정책과 설정 추가
Some checks failed
Release Gate / gate (push) Has been cancelled
- 메모리 내용 관리는 /memory 도구로 유지하고, 외부 include 허용 여부만 설정에서 제어하도록 구조를 분리함

- AllowExternalMemoryIncludes 설정과 UI 토글을 추가해 홈 경로/절대 경로/프로젝트 밖 상대 include를 기본 차단하고 필요 시에만 허용하도록 정리함

- AgentMemoryService가 include 해석 시 프로젝트 경계와 설정값을 함께 검사해 claw-code와 유사한 안전 정책을 따르도록 보강함

- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0 / 오류 0)
2026-04-07 00:02:20 +09:00
ae765fb543 AX Agent 메모리 구조 3차 강화: @include 지원과 프로젝트 루트 판단 개선
- 계층형 메모리 문서에 @include 확장을 추가해 상대 경로, 홈 경로, 절대 경로 텍스트 파일을 최대 5단계까지 재귀적으로 펼치도록 구현함

- 코드 블록 내부 include 무시, 순환 참조 차단, 비텍스트 파일 제외 규칙을 적용해 안전한 최소 규칙으로 정리함

- 프로젝트 루트 판단을 .git, .sln, *.csproj, package.json, pyproject.toml, go.mod, Cargo.toml 마커 기반으로 강화해 project/local 메모리 탐색과 저장 경로를 더 정확히 맞춤

- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0 / 오류 0)
2026-04-06 23:56:19 +09:00
80682552f4 AX Agent 메모리 구조 2차 강화: 계층형 메모리 관리 도구 확장
Some checks failed
Release Gate / gate (push) Has been cancelled
- memory 도구에 save_scope, delete_scope 액션을 추가해 managed/user/project/local 메모리 파일을 직접 저장 및 삭제할 수 있게 확장함

- search, list 액션이 학습 메모리뿐 아니라 계층형 메모리 문서도 함께 보여주도록 개선함

- AgentMemoryService에 계층형 메모리 파일 쓰기/삭제 경로와 append/remove 로직을 추가해 메모리 계층을 실제로 관리 가능한 상태로 전환함

- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0 / 오류 0)
2026-04-06 23:46:23 +09:00
13cd1e54ed AX Agent 메모리 구조 1차 강화: 계층형 메모리 문서 로딩과 프롬프트 주입 추가
Some checks failed
Release Gate / gate (push) Has been cancelled
- AgentMemoryService에 관리형/사용자/프로젝트/로컬 메모리 문서 탐색을 추가해 AXMEMORY.md, AXMEMORY.local.md, .ax/rules/*.md 계층을 로드하도록 확장함

- ChatWindow 시스템 프롬프트 메모리 섹션을 계층형 메모리와 기존 학습 메모리를 함께 조립하는 구조로 재편함

- 작업 폴더 메모리 로드 전에 Count를 먼저 검사하던 경로를 제거해 다른 폴더 메모리 누락 가능성을 줄임

- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0 / 오류 0)
2026-04-06 23:40:35 +09:00
c75790f8c2 런처 유휴 CPU와 AX Agent 백그라운드 갱신 부담을 줄임
Some checks failed
Release Gate / gate (push) Has been cancelled
- FuzzyEngine에 인덱스 버전 기준 쿼리 캐시를 추가해 색인 완료 후 반복 검색 반응성을 개선함

- 캐시된 인덱스가 없을 때는 앱 시작 시 watcher를 먼저 켜지 않도록 조정해 런처 유휴 CPU 부담을 완화함

- AX Agent는 최소화/백그라운드 상태에서 task summary, 입력 보조 UI, agent UI flush를 지연했다가 활성화 시 한 번에 반영하도록 정리함

- README와 DEVELOPMENT 문서에 2026-04-06 23:33 (KST) 기준 이력을 반영함

- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0 / 오류 0)
2026-04-06 23:34:03 +09:00
dc2574bb17 AX Agent 진행 표시를 Claude Code 스타일에 가깝게 정리
Some checks failed
Release Gate / gate (push) Has been cancelled
- execution history를 접은 상태에서도 대기/압축/중요 진행 이벤트가 transcript에 계속 노출되도록 필터를 조정함

- 진행 줄 메타를 경과 시간 · 누적 토큰 형식으로 통일하고 일반 진행 이벤트를 평평한 line 스타일로 정리함

- 장기 대기/컨텍스트 압축 상태만 강조 배경과 펄스 마커를 유지해 살아 있는 작업이 더 잘 보이도록 개선함

- README와 DEVELOPMENT 문서에 2026-04-06 23:26 (KST) 기준 이력을 반영함

- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0 / 오류 0)
2026-04-06 23:29:08 +09:00
45dfa70951 전체 코드 오류와 성능 병목을 점검하고 핵심 핫패스를 정리한다
Some checks failed
Release Gate / gate (push) Has been cancelled
- 런처 색인에서 임시 파일, 숨김/시스템 경로, Office 임시 파일을 감시와 색인 대상에서 제외해 불필요한 재색인과 디스크 I/O를 줄인다

- AX Agent 표현 수준 저장값이 매번 rich로 덮어쓰이던 버그를 수정해 balanced/simple/rich 설정이 실제로 유지되게 한다

- 최소화/숨김 상태의 AX Agent 창은 transcript 재렌더를 지연했다가 다시 보일 때 한 번만 처리하고, 런처 인덱스 상태 타이머도 재사용하도록 바꿔 백그라운드 오버헤드를 줄인다

- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0, 오류 0)
2026-04-06 23:19:02 +09:00
30e8218ba4 AX Agent 라이브 진행 메시지 애니메이션 추가 및 문서 갱신
Some checks failed
Release Gate / gate (push) Has been cancelled
2026-04-06 22:52:35 +09:00
306245524d AX Agent 라이브 진행 메시지에 경과 시간·토큰 표시 추가\n\n- Cowork/Code 장기 대기와 컨텍스트 압축 상황을 transcript에서 더 명확히 보이도록 라이브 진행 힌트 이벤트를 확장\n- 라이브 진행 줄 우측에 경과 시간과 누적 토큰 수를 표시해 사용자가 멈춤과 처리 중 상태를 구분할 수 있게 조정\n- process feed 요약줄 스타일을 보강해 claw-code 레퍼런스처럼 대기/압축 상태가 더 눈에 잘 들어오도록 개선\n- README 및 DEVELOPMENT 문서에 2026-04-06 22:42 (KST) 기준 변경 이력 반영\n\n검증 결과\n- dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\\n- 경고 0개, 오류 0개 2026-04-06 22:44:24 +09:00
4992dca74f AX Agent 중간 처리 메시지를 Claude Code 스타일에 가깝게 정리
Some checks failed
Release Gate / gate (push) Has been cancelled
- 진행 중 이벤트(Planning, StepStart, StepDone, Thinking, ToolCall, SkillCall)를 작은 상태 칩 대신 요약줄+본문 설명 구조로 재구성했습니다.

- claw-code의 AssistantToolUseMessage/HookProgressMessage 흐름을 참고해 중간 처리 과정이 hover 없이도 transcript 안에서 읽히도록 조정했습니다.

- 권한 요청 및 결과 카드는 기존 richer card 구조를 유지하고, process feed 이벤트만 별도 경량 표현으로 분리했습니다.

- README와 DEVELOPMENT 문서에 2026-04-06 22:31 (KST) 기준 변경 이력을 반영했습니다.

- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0 / 오류 0)
2026-04-06 22:25:30 +09:00
f48e598cc1 AX Agent 무료티어 대기와 진행 표시 UX를 실제 동작 기준으로 정리
Some checks failed
Release Gate / gate (push) Has been cancelled
- Gemini 무료 티어 대기를 Gemini 서비스에서만 적용하도록 좁혀 vLLM/Ollama/Claude 작업이 불필요하게 멈추지 않게 수정
- 내부 설정과 빠른 설정의 Fast 표기를 Gemini 무료 티어 대기로 바꾸고 설명 문구도 실제 기능 기준으로 정리
- 단계 시작과 도구 호출 이벤트를 기본 transcript에 더 크게 노출하고 카드 배경/테두리/폰트 크기를 조정해 장시간 작업 중 상태를 읽기 쉽게 개선
- Cowork 장시간 무응답처럼 보이던 상황을 줄이기 위해 StepStart와 ToolCall이 더 이상 hover성 보조 정보처럼 숨지 않도록 수정

검증
- dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\
- 경고 0 / 오류 0
2026-04-06 22:18:29 +09:00
36c04ccc07 AX Agent 내부 설정 토글 저장 동작 복구
Some checks failed
Release Gate / gate (push) Has been cancelled
내부 설정 오버레이의 코드/공통 기능 토글에 Checked/Unchecked 이벤트를 다시 연결해 변경 즉시 저장 루틴을 타도록 수정했다.

Code 결과 검토, 코드 리뷰, 병렬 도구, Worktree/Team/Cron 도구 등 눌러도 원래 상태로 돌아가던 문제를 해결했고 Release 빌드에서 경고 0, 오류 0을 확인했다.
2026-04-06 22:06:55 +09:00
339dc6c06b AX Agent 테마 팔레트와 채팅 박스 스타일 재정비
Some checks failed
Release Gate / gate (push) Has been cancelled
Claude/Codex/Slate/Nord/Ember 테마 팔레트를 다시 분리해 각 테마가 서로 다른 표면 위계와 인상을 갖도록 조정했다.

입력창 포커스 테두리를 AccentColor 고정이 아닌 테마별 InputFocusBorderColor로 변경하고, composer 및 메시지 버블 라운딩을 더 부드럽게 다듬었다.

README와 DEVELOPMENT 문서를 2026-04-06 21:54 (KST) 기준으로 갱신했고 Release 빌드에서 경고 0, 오류 0을 확인했다.
2026-04-06 22:02:23 +09:00
1636b9c26f Claude 테마 표면 위계 조정 및 본문/사이드바 색상 수정\n\n- Claude 라이트/시스템 테마에서 본문 배경은 흰색으로, 좌측 패널과 카드 표면은 더 짙은 웜 베이지 톤으로 재조정\n- 선택/호버 배경을 같은 계열로 맞춰 사이드바와 본문 역할이 뒤바뀌어 보이던 문제 수정\n- README와 DEVELOPMENT 문서에 변경 이력과 시각 의도 반영\n\n검증:\n- dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\\n- 경고 0 / 오류 0
Some checks failed
Release Gate / gate (push) Has been cancelled
2026-04-06 21:48:20 +09:00
d9309b45fa AX Agent 코드 탭 저장소 요약줄과 리뷰 진입 UX 개선\n\n- 코드 탭 입력부 위 저장소 요약줄에 로컬/워크트리, upstream 배지를 추가해 repo context를 더 명확히 표시\n- 변경 상태에 따라 액션 문구를 동적으로 바꾸고 /review slash 명령으로 바로 이어지는 리뷰 배지 추가\n- 코드 탭 입력 워터마크와 안내 문구를 저장소 배너 흐름에 맞게 정리\n\n검증:\n- dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\\n- 경고 0 / 오류 0
Some checks failed
Release Gate / gate (push) Has been cancelled
2026-04-06 21:37:07 +09:00
a19f69b2ff AX Agent 코드 메시지 강조와 Git 요약 배너 개선
- Cowork/Code 메시지 마크다운 렌더에 camelCase, PascalCase, snake_case 등 코드 심볼 강조를 추가함

- 코드 탭 입력부 위에 저장소/브랜치/변경 수치 요약 배너를 추가해 claude-code 스타일의 repo context를 빠르게 확인할 수 있게 함

- README와 DEVELOPMENT 문서를 2026-04-06 20:18 (KST) 기준으로 갱신함

- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\ (경고 0, 오류 0)
2026-04-06 20:29:33 +09:00
43ee9154a8 토큰 카드와 전송 버튼 외곽선 정리
Some checks failed
Release Gate / gate (push) Has been cancelled
- AX Agent 입력 영역의 토큰 사용량 원형 카드 크기와 내부 링 두께를 재조정
- 토큰 카드 임계점 마커와 퍼센트 텍스트를 축소해 외곽선이 덜 답답하게 보이도록 보정
- 전송 버튼의 불필요한 외곽 테두리를 제거하고 화살표 정렬을 중앙 기준으로 정리
- README와 DEVELOPMENT 문서에 버튼/토큰 UI 미세 조정 이력 추가
- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\ (경고 0, 오류 0)
2026-04-06 20:07:14 +09:00
bbb5c526b0 AX Agent 상단 탭 세로 정렬 미세 조정
Some checks failed
Release Gate / gate (push) Has been cancelled
- 상단 세그먼트 탭 버튼의 세로 콘텐츠 정렬을 중앙 기준으로 다시 맞춤
- 탭 버튼과 래퍼의 패딩 및 높이를 소폭 줄여 위아래 여백 균형 보정
- README와 DEVELOPMENT 문서에 탭 정렬 보정 이력 추가
- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\ (경고 0, 오류 0)
2026-04-06 20:04:34 +09:00
43dd6b5d71 테마 팔레트 레퍼런스 정렬 및 Claude 테마명 반영
Some checks failed
Release Gate / gate (push) Has been cancelled
- AX Agent 내부 설정의 Claw 테마명을 Claude로 변경
- 기존 claw 저장값을 claude로 정규화하고 레거시 값도 계속 호환되도록 처리
- Claude 다크/라이트/시스템 테마를 실제 화면 톤에 맞춘 웜 뉴트럴 팔레트로 재조정
- Codex 다크 테마를 중성 차콜 기반 색상으로 정리
- Nord 라이트/다크/시스템 테마를 공식 Nord 팔레트 기준으로 재정렬
- Slate 라이트/다크/시스템 테마를 표준 슬레이트 계열 색상으로 정리
- README와 DEVELOPMENT 문서에 테마명 변경 및 팔레트 튜닝 이력을 기록
- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\ (경고 0, 오류 0)
2026-04-06 20:00:52 +09:00
c389c6ff3f AX Agent 라이트 테마 계층과 색 대비를 레퍼런스 기준으로 재조정
Some checks failed
Release Gate / gate (push) Has been cancelled
- AgentCodexLight와 AgentCodexSystem의 배경, 선택 배경, 호버, 경계선, 보조 텍스트 톤을 더 따뜻한 베이지 계열로 재설정
- AgentClawLight도 같은 기준으로 표면 계층을 보정해 사이드바와 본문, 선택 상태 위계가 더 자연스럽게 느껴지도록 정리
- 라이트 테마에서 본문은 더 깨끗한 흰색으로 유지하고 외곽/사이드 표면은 낮은 채도의 따뜻한 톤으로 분리해 레퍼런스와 비슷한 정보 구조를 복원
- README와 DEVELOPMENT 문서에 변경 이력과 적용 시각을 기록

검증
- dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\
- 경고 0 / 오류 0
2026-04-06 19:48:08 +09:00
1f52bc1cc3 설정창에서 런처 색인 진행률과 남은 시간을 직접 표시하도록 개선
Some checks failed
Release Gate / gate (push) Has been cancelled
- IndexService에 LauncherIndexProgressInfo와 진행 이벤트를 추가해 전체 색인 중 진행률, 상태 문구, 예상 남은 시간을 계산하도록 변경
- 설정창 일반 탭의 인덱싱 속도 아래에 프로그레스바와 상태/상세 문구 패널을 추가하고 실시간으로 바인딩되도록 연결
- 전체 색인 완료 후 최근 색인 완료 요약과 검색 가능 항목 수를 같은 위치에 유지해 런처 하단 완료 문구 의존도를 낮춤
- README와 DEVELOPMENT 문서에 변경 이력 및 반영 시각을 기록

검증
- dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\
- 경고 0 / 오류 0
2026-04-06 19:43:18 +09:00
cc12177252 테마 글로우 설정의 실시간 반영 누락 수정
- 런처가 SettingsChanged 이벤트를 직접 받아 테두리, 아이콘 애니메이션, 무지개 글로우, 선택 글로우를 즉시 다시 적용하도록 보강함

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

- README와 DEVELOPMENT 문서를 2026-04-06 19:02 (KST) 기준으로 갱신하고 Release 빌드에서 경고 0 / 오류 0을 확인함
2026-04-06 19:29:09 +09:00
4df5d5d874 런처 색인 과부하와 AX Agent 리사이즈 재렌더 부담 완화
Some checks failed
Release Gate / gate (push) Has been cancelled
- 런처 색인에서 .git, node_modules, bin, obj, dist, packages, venv, __pycache__, target 경로를 스캔/감시 제외해 유휴 CPU와 재색인 부담을 줄임

- 런처 재귀 파일 스캔을 제외 폴더 인지형 순회로 바꾸고 무지개 글로우 타이머 주기를 낮춰 visible 상태 UI 갱신 비용을 완화함

- AX Agent는 SizeChanged 때마다 전체 RenderMessages를 즉시 호출하지 않고 디바운스 후 한 번만 반영하도록 바꿔 창 조작 시 무거운 느낌을 줄임

- README와 DEVELOPMENT 문서를 2026-04-06 18:46 (KST) 기준으로 갱신하고 Release 빌드에서 경고 0 / 오류 0을 확인함
2026-04-06 19:07:09 +09:00
e4e3e49419 글로벌 키보드 훅 타이핑 버벅임 완화
Some checks failed
Release Gate / gate (push) Has been cancelled
다른 앱 타이핑 시에도 AX Copilot가 과하게 개입하던 글로벌 키보드 훅의 핫패스를 줄였다.

InputListener는 모든 키마다 파일 대화상자 억제 창 검사를 하지 않고 실제 핫키·캡처·키필터 후보 키에서만 검사하도록 최적화했다.

SnippetExpander는 추적 중이 아닐 때 ';' 시작 키 외에는 즉시 반환하게 바꿔 일반 타이핑 중 반복적인 modifier 상태 확인과 버퍼 처리를 제거했다.

README와 DEVELOPMENT 문서를 2026-04-06 18:34 (KST) 기준으로 갱신했고, Release 빌드 검증에서 경고 0 / 오류 0을 확인했다.
2026-04-06 18:09:21 +09:00
5bf323d4bf 런처 색인 영속 캐시와 증분 갱신 구조 적용
Some checks failed
Release Gate / gate (push) Has been cancelled
런처 색인 구조를 전체 재색인 중심에서 영속 캐시와 watcher 증분 반영 방식으로 재구성했다.

IndexService에 launcher-index.json 기반 캐시 로드/저장, 파일 생성·삭제·이름변경 증분 갱신, 디렉터리 고위험 변경 시 전체 재색인 폴백을 추가했다.

App 시작 시 캐시 로드와 파일 감시를 바로 시작하고, 무거운 전체 스캔은 실제 검색 시 한 번만 보강 실행하도록 정리했다.

README와 DEVELOPMENT 문서를 2026-04-06 18:24 (KST) 기준으로 갱신했고, Release 빌드 검증에서 경고 0 / 오류 0을 확인했다.
2026-04-06 18:06:03 +09:00
94dc325df4 메시지 좋아요 싫어요 토글 동작 수정
Some checks failed
Release Gate / gate (push) Has been cancelled
채팅 메시지 피드백 버튼 로직을 shared feedback 상태 기반으로 다시 구성해 좋아요와 싫어요가 모두 즉시 반응하고 상호배타적으로 동작하도록 정리했다.

좋아요는 활성 색상과 chip 배경으로 상태가 확실히 보이게 바꾸고, 싫어요를 다시 누르면 null 상태로 정상 해제되도록 수정했다.

README와 DEVELOPMENT 문서를 2026-04-06 18:09 (KST) 기준으로 갱신했고 dotnet build 검증에서 경고 0 / 오류 0을 확인했다.
2026-04-06 17:56:53 +09:00
606ecbe6cd IBM vLLM 배포형 채팅 요청 스키마 분기와 문서 반영
IBM/CP4D 인증을 사용하는 vLLM 등록 모델에서 배포형 /ml/v1/deployments/.../text/chat 계열 엔드포인트를 감지하도록 정리했다.

일반 OpenAI 호환 body 대신 messages+parameters 형태의 IBM deployment chat body를 사용하고 /v1/chat/completions를 강제로 붙이지 않도록 수정했다.

IBM 배포형 응답은 results.generated_text, output_text, choices.message.content를 함께 파싱하도록 보강했고 도구 호출 경로는 안전하게 일반 응답 폴백을 유도하도록 정리했다.

README와 DEVELOPMENT 문서를 2026-04-06 18:02 (KST) 기준으로 갱신했고 dotnet build 검증에서 경고 0 / 오류 0을 확인했다.
2026-04-06 17:49:48 +09:00
e439fd144e 런처 즉시 표시 유지하고 색인 시작 시점 지연
LauncherWindow 사전 생성은 복원해 런처 호출 반응성을 유지했습니다.

대신 인덱스 전체 스캔과 감시는 런처를 여는 순간이 아니라 실제 검색이 시작될 때만 한 번 지연 시작하도록 변경했습니다.

README와 DEVELOPMENT 문서를 2026-04-06 17:52(KST) 기준으로 갱신했고 Release 빌드에서 경고 0 오류 0을 확인했습니다.
2026-04-06 17:43:03 +09:00
7889189e41 런처와 트레이 지연 생성으로 유휴 CPU 추가 절감
Some checks failed
Release Gate / gate (push) Has been cancelled
앱 시작 시 LauncherWindow 전체를 미리 생성하지 않고 실제로 런처를 열 때만 만들도록 변경했습니다.

트레이 메뉴 PrepareForDisplay 사전 렌더도 제거해 사용하지 않는 팝업 레이아웃 계산이 부팅 직후 돌지 않게 정리했습니다.

README와 DEVELOPMENT 문서를 2026-04-06 17:43(KST) 기준으로 갱신했고 Release 빌드에서 경고 0 오류 0을 확인했습니다.
2026-04-06 17:40:39 +09:00
353c5ce471 앱 시작 시 무거운 초기화 지연으로 유휴 성능 개선
Some checks failed
Release Gate / gate (push) Has been cancelled
앱 시작 직후 AX Agent 창을 미리 생성하던 경로를 제거하고 실제로 AX Agent를 열 때만 ChatWindow를 만들도록 정리했습니다.

런처 검색 인덱스 전체 스캔과 파일 감시 시작도 부팅 시 즉시 실행하지 않고, 런처를 실제로 표시할 때 한 번만 지연 시작하도록 변경했습니다.

README와 DEVELOPMENT 문서를 2026-04-06 17:35(KST) 기준으로 갱신했고, Release 빌드 검증에서 경고 0 오류 0을 확인했습니다.
2026-04-06 17:20:37 +09:00
ccb39f0fe0 선택 텍스트 AI 명령 기본값과 토글 동작을 보수적으로 정리
Some checks failed
Release Gate / gate (push) Has been cancelled
선택 텍스트 명령 사용의 기본값을 비활성으로 바꾸고, 활성 AI 명령 목록도 기본은 빈 상태로 조정했다. 새 설치나 초기화 이후에는 사용자가 명시적으로 켜기 전까지 선택 텍스트 AI 팝업이 자동으로 개입하지 않도록 정리했다.

설정창의 텍스트 AI 명령 패널에서 최소 1개 유지 로직을 제거해 다시 쓰기를 포함한 모든 명령을 실제로 끌 수 있게 수정했다. 안내 문구도 현재 동작 기준으로 갱신해서, 모든 AI 명령을 꺼두면 선택 텍스트 팝업에는 AX Commander 열기만 남는다는 점을 명확히 반영했다.

README와 DEVELOPMENT 문서를 2026-04-06 17:24 (KST) 기준으로 갱신했고, 표준 검증 빌드 결과 경고 0개와 오류 0개를 확인했다.
2026-04-06 17:15:58 +09:00
9877d347b1 유휴 CPU 사용을 줄이도록 전역 훅과 스케줄 타이머 조건부 활성화로 정리
Some checks failed
Release Gate / gate (push) Has been cancelled
앱 시작 시 파일 대화상자 통합이 꺼져 있어도 시스템 전역 WinEvent 훅을 항상 걸던 구조를 수정해, 설정이 켜져 있을 때만 FileDialogWatcher가 시작되도록 바꿨다. 설정 저장 시 watcher와 스케줄러 상태를 즉시 다시 계산하도록 App 초기화 경로도 함께 보강했다.

SchedulerService는 활성 일정이 하나도 없으면 타이머를 만들지 않고, 실행 중 일정이 모두 비활성화되면 스스로 정지하도록 Refresh 기반 구조로 정리했다. 이 변경으로 런처와 AX Agent 창이 닫힌 유휴 상태에서도 발생하던 불필요한 30초 주기 깨우기와 전역 이벤트 콜백을 줄였다.

README와 DEVELOPMENT 문서에 2026-04-06 17:18 (KST) 기준 이력을 반영했고, 표준 검증 빌드(dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\) 결과 경고 0, 오류 0을 확인했다.
2026-04-06 17:12:00 +09:00
c2e96c0286 런처 하단 빠른 실행 칩 표시 옵션과 중앙 정렬 개선
Some checks failed
Release Gate / gate (push) Has been cancelled
- 설정 기능 탭에 런처 하단 빠른 실행 칩 표시 토글을 추가하고 기본값을 비활성으로 분리함

- 런처 하단 빠른 실행 칩은 옵션이 켜진 경우에만 로드되도록 바꾸고, 블록 전체와 칩 내부를 중앙 정렬 기준으로 재배치함

- README와 DEVELOPMENT 문서 이력을 2026-04-06 17:09 (KST) 기준으로 갱신함

- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0 / 오류 0)
2026-04-06 17:02:07 +09:00
17d7b515ce CP4D 인증 방식을 등록 단계에서 분리
Some checks failed
Release Gate / gate (push) Has been cancelled
모델 등록 UI에 CP4D 사용자 이름+비밀번호 방식과 사용자 이름+API 키 방식을 별도 인증 유형으로 추가하고 선택에 따라 입력 라벨이 달라지도록 정리했습니다.

LlmService, SettingsViewModel, AppSettings를 갱신해 cp4d_password와 cp4d_api_key 저장값을 공식 지원하고 기존 cp4d 값은 비밀번호 방식으로 계속 호환되게 유지했습니다.

README와 DEVELOPMENT 문서를 2026-04-06 17:01 (KST) 기준으로 갱신했고 Release 빌드 경고 0 오류 0을 확인했습니다.
2026-04-06 16:55:10 +09:00
fd3af15e54 CP4D 토큰 요청의 api_key 본문 방식 지원
Some checks failed
Release Gate / gate (push) Has been cancelled
IBM 계열 vLLM 연결 점검 결과 일부 CP4D 인증 엔드포인트가 username+password 대신 username+api_key JSON 본문을 요구하는 것을 확인했습니다.

Cp4dTokenService가 먼저 username/password를 시도하고 실패 시 username/api_key로 자동 재시도하도록 보강했으며 README와 DEVELOPMENT 문서를 2026-04-06 16:55 (KST) 기준으로 갱신했습니다.

Release 빌드 경고 0 오류 0을 확인했습니다.
2026-04-06 16:51:26 +09:00
3961dc8ca2 모델 관리 섹션 구분선 제거
Some checks failed
Release Gate / gate (push) Has been cancelled
AX Agent 내부 설정 공통 탭에서 서비스와 모델, 등록 모델 관리 사이에 있던 하단 구분선을 제거해 같은 흐름의 설정이 자연스럽게 이어 보이도록 정리했습니다.

README와 DEVELOPMENT 문서를 2026-04-06 16:49 (KST) 기준으로 갱신했고 Release 빌드 경고 0 오류 0을 확인했습니다.
2026-04-06 16:44:08 +09:00
98bc4ff24f 운영 모드 구분선 위치 조정
AX Agent 내부 설정 공통 탭의 운영 모드 섹션 구분선을 아래쪽에서 위쪽으로 옮겨 섹션 시작선처럼 보이도록 정리했습니다.

README와 DEVELOPMENT 문서를 2026-04-06 16:44 (KST) 기준으로 갱신했고 Release 빌드 경고 0 오류 0을 확인했습니다.
2026-04-06 16:41:54 +09:00
a5b511c38b 내부 설정 스크롤 체감과 저장 공간 버튼 스타일 개선
Some checks failed
Release Gate / gate (push) Has been cancelled
AX Agent 내부 설정 오른쪽 본문 ScrollViewer에 deferred scrolling, vertical panning, bitmap cache를 적용해 스크롤 시 버벅임을 줄였습니다.

저장 공간 섹션의 새로고침, 대화 삭제, 저장 공간 줄이기 버튼을 OverlayActionBtn 커스텀 스타일로 교체해 일반 버튼 느낌을 제거했습니다.

README와 DEVELOPMENT 문서를 2026-04-06 16:39 (KST) 기준으로 갱신했고 Release 빌드 경고 0 오류 0을 확인했습니다.
2026-04-06 16:39:55 +09:00
e8cd68cce7 컴포저 첨부·전송 버튼 스타일 단순화
Some checks failed
Release Gate / gate (push) Has been cancelled
채팅·코워크·코드 입력창의 첨부 버튼을 과도하게 커진 상태에서 원복 수준으로 줄이고, 전송 버튼도 같은 축의 컴팩트한 크기로 다시 맞췄습니다.

ChatWindow.xaml에 ComposerIconBtn과 ComposerSendBtn 스타일을 추가해 두 버튼 모두 상하좌우 중앙 정렬된 심플한 시각 언어를 사용하도록 재구성했습니다.

README와 DEVELOPMENT 문서를 갱신했고, dotnet build 검증에서 경고 0 오류 0을 확인했습니다.
2026-04-06 16:34:25 +09:00
1ad75b5896 배포판 보호 수준 강화 및 single-file 호환 보정
Some checks failed
Release Gate / gate (push) Has been cancelled
배포 스크립트와 앱 Release 설정에 single-file, ReadyToRun, 압축 번들, 최적화 옵션을 추가해 릴리즈 배포 출력의 보호 수준을 한 단계 높였습니다.

WebSearchHandler와 SettingsWindow는 single-file 환경에서 Assembly.Location 경고가 발생하지 않도록 AppContext.BaseDirectory 및 AssemblyInformationalVersionAttribute 기반으로 수정했습니다.

README와 DEVELOPMENT 문서를 갱신했고, dotnet build 검증에서 경고 0 오류 0을 다시 확인했습니다.
2026-04-06 16:09:00 +09:00
8da0a069b7 코워크 문서 생성 기본 포맷 편향 완화
Some checks failed
Release Gate / gate (push) Has been cancelled
문서 생성 도구가 인자 없이 호출될 때 html/professional로 고정되던 기본값을 제거했습니다.

DocumentPlannerTool과 DocumentAssemblerTool이 설정값(DefaultOutputFormat, DefaultMood), 문서 유형, 요청 키워드를 함께 보고 docx/html/markdown 및 corporate/dashboard/minimal/creative/professional 무드를 자동 선택하도록 조정했습니다.

README와 DEVELOPMENT 문서에 변경 배경과 검증 결과를 반영했고, dotnet build 기준 경고 0 오류 0을 확인했습니다.
2026-04-06 15:55:12 +09:00
2ae56b2510 격려문구 알림 팝업 자동 종료 안정성 개선
Some checks failed
Release Gate / gate (push) Has been cancelled
- ReminderPopupWindow의 자동 닫힘 경로를 점검하고 UI 타이머와 실제 종료 타이머를 분리함
- 남은 시간 계산을 절대 시각 기준으로 바꾸고 Task.Delay 기반 종료 fail-safe를 추가해 팝업이 남는 경우를 줄임
- 창 종료 시 CancellationToken과 타이머를 함께 정리해 후속 종료 처리도 안전하게 맞춤
- README와 DEVELOPMENT 문서에 변경 목적과 검증 결과를 로컬 시각 기준으로 기록함
- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0, 오류 0)
2026-04-06 15:41:27 +09:00
71fd5f0bb7 빈 상태 프리셋 화면 상하 중앙 정렬 보정
- ChatWindow의 EmptyState 레이아웃을 제목/설명/프리셋 목록이 하나의 세로 묶음으로 동작하도록 재구성함
- 화면 높이가 커질 때 프리셋 카드만 중앙에 오고 설명 블록은 위에 남던 문제를 해결함
- 채팅/코워크 빈 상태 화면이 전체적으로 상하 중앙에 자연스럽게 정렬되도록 보정함
- README와 DEVELOPMENT 문서에 변경 목적과 검증 결과를 로컬 시각 기준으로 기록함
- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0, 오류 0)
2026-04-06 15:37:20 +09:00
b3b301b9b6 AX Agent 공통 설정 섹션 순서 재정리 및 운영 모드 하단 배치
Some checks failed
Release Gate / gate (push) Has been cancelled
- 내부 설정 공통 탭에서 서비스와 모델 바로 아래에 등록 모델 관리를 배치해 모델 관리 흐름을 연속되게 정리함
- 운영 모드를 대화 관리와 저장 공간 영역 아래로 이동하고 섹션 구분선을 다시 맞춰 가독성을 개선함
- 공통 탭의 섹션 그룹이 실제 사용 순서와 더 가깝게 보이도록 XAML 레이아웃을 정리함
- README와 DEVELOPMENT 문서에 로컬 시각 기준 변경 이력과 목적을 기록함
- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0, 오류 0)
2026-04-06 15:34:37 +09:00
d45698d397 AX Agent 창 드래그 성능 개선 및 레이아웃 재계산 지연 처리
Some checks failed
Release Gate / gate (push) Has been cancelled
- ChatWindow에 WM_ENTERSIZEMOVE/WM_EXITSIZEMOVE 감지를 추가해 창 이동·리사이즈 루프를 별도로 관리함
- 이동 중에는 루트 visual을 BitmapCache로 전환하고 무거운 transcript/layout 재계산을 지연시켜 드래그 버벅임을 줄임
- SizeChanged에서 주제 스크롤/반응형 레이아웃/메시지 재렌더를 즉시 수행하지 않고 종료 시 한 번만 반영하도록 정리함
- README와 DEVELOPMENT 문서에 변경 목적과 검증 결과를 로컬 시각 기준으로 기록함
- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0, 오류 0)
2026-04-06 15:28:29 +09:00
421a2c97f9 AX Agent 권한 버튼 테두리 제거
Some checks failed
Release Gate / gate (push) Has been cancelled
코워크·코드 하단 우측의 권한 요청 버튼이 footer 작업 바와 더 자연스럽게 이어지도록 외곽 테두리를 제거했습니다.

README와 docs/DEVELOPMENT.md에 2026-04-06 15:31 (KST) 기준 변경 이력을 반영했습니다.

검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0 / 오류 0)
2026-04-06 15:21:54 +09:00
9d13456695 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)
2026-04-06 15:19:44 +09:00
d283cf26ba AX Agent 권한 버튼 앞 구분선 제거
Some checks failed
Release Gate / gate (push) Has been cancelled
코워크·코드 하단 폴더 바에서 권한 선택 버튼 왼쪽에 보이던 세로 구분선을 제거해 footer 작업 바가 더 단순하게 이어지도록 정리했습니다.

README와 docs/DEVELOPMENT.md에 2026-04-06 15:18 (KST) 기준 변경 이력을 반영했습니다.

검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0 / 오류 0)
2026-04-06 15:15:01 +09:00
5401fcf7bb AX Agent 입력창 액션 버튼 정리
Some checks failed
Release Gate / gate (push) Has been cancelled
채팅·코워크·코드 공통 composer 우측 상단의 프리셋 선택 버튼을 제거해 입력 영역을 단순화했습니다.

파일 첨부 버튼을 약 1.5배 키우고 전송 버튼도 같은 정사각 기준으로 맞춘 뒤, 두 버튼 아이콘을 모두 상하좌우 중앙 정렬로 보정했습니다.

README와 docs/DEVELOPMENT.md에 2026-04-06 15:12 (KST) 기준 변경 이력을 반영했습니다.

검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0 / 오류 0)
2026-04-06 15:11:34 +09:00
7c5396e239 AX Agent 사용자 메시지 메타 겹침 수정
Some checks failed
Release Gate / gate (push) Has been cancelled
사용자 메시지 하단 메타 행에서 시간 표시와 복사/편집 액션이 같은 위치에 겹치던 레이아웃을 수정했습니다.

ChatWindow.MessageBubblePresentation에서 사용자 메타 바를 전용 컬럼 구조로 분리해 시간과 액션 버튼이 항상 분리되어 표시되도록 정리했습니다.

README와 docs/DEVELOPMENT.md에 수정 이력을 2026-04-06 15:04 (KST) 기준으로 반영했습니다.

검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0 / 오류 0)
2026-04-06 15:07:18 +09:00
817fc94f41 IBM 연동형 vLLM 인증 실패 원인 수정
Some checks failed
Release Gate / gate (push) Has been cancelled
IBM Cloud 계열 vLLM 연결에서 등록 모델 인증 방식이 Bearer와 CP4D만 지원하던 문제를 점검하고, IBM IAM 토큰 교환 경로를 추가했습니다.

- RegisteredModel/AuthType에 ibm_iam 경로를 반영했습니다.

- IbmIamTokenService를 추가해 API 키를 IAM access token으로 교환한 뒤 Bearer 헤더로 적용하도록 했습니다.

- 모델 등록 다이얼로그, 설정 ViewModel, AX Agent 오버레이 모델 목록에도 IBM IAM 표시를 추가했습니다.

- README.md와 docs/DEVELOPMENT.md에 2026-04-06 14:06 (KST) 기준 이력을 반영했습니다.

검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0 / 오류 0)
2026-04-06 15:02:42 +09:00
3feb1f0be4 권한·도구 결과 카드 액션 문구 고도화
파일 기반 transcript 카드의 액션 버튼 라벨을 상태와 종류에 맞게 세분화했습니다.

변경 확인, 작성 내용 보기, 부분 결과 보기, 오류 파일 보기, 승인 전 미리보기 등 맥락별 문구를 적용했습니다.

README와 DEVELOPMENT 문서를 갱신했고 dotnet build 기준 경고 0 / 오류 0을 확인했습니다.
2026-04-06 14:29:05 +09:00
c4d050f2bf 권한·도구 결과 callout 상태 제목 강화
Some checks failed
Release Gate / gate (push) Has been cancelled
transcript callout이 상태별로 다른 제목과 강조선을 가지도록 정리했습니다.

권한 요청은 확인 포인트와 적용 내용, 도구 결과는 승인 필요, 오류 확인, 부분 완료 점검, 다음 권장 작업으로 구분되게 바꿨습니다.

README와 DEVELOPMENT 문서를 갱신했고 dotnet build 기준 경고 0 / 오류 0을 확인했습니다.
2026-04-06 13:54:31 +09:00
a46b4bf9c0 권한·도구 결과 카드 프리뷰 연결 강화
Some checks failed
Release Gate / gate (push) Has been cancelled
파일 경로가 있는 권한 요청과 도구 결과 transcript 카드에 프리뷰 열기 액션을 추가했습니다.

미리보기 권장 상태나 파일 기반 결과에서 사용자가 카드에서 바로 preview panel로 이동할 수 있게 연결했습니다.

README와 DEVELOPMENT 문서를 갱신했고 dotnet build 기준 경고 0 / 오류 0을 확인했습니다.
2026-04-06 13:51:37 +09:00
ec0ed7fb1c 권한·도구 결과 카드 callout 구조 도입
Some checks failed
Release Gate / gate (push) Has been cancelled
권한 요청과 도구 결과 transcript 안내를 단순 보조 문구에서 callout 카드 구조로 정리했습니다.

권한 요청은 확인 포인트, 도구 결과는 다음 권장 작업으로 보여주도록 바꿔 카드 성격 차이를 더 분명하게 만들었습니다.

README와 DEVELOPMENT 문서를 갱신했고 dotnet build 기준 경고 0 / 오류 0을 확인했습니다.
2026-04-06 13:43:19 +09:00
571d4bfaca 권한·도구 결과 카테고리 표시 강화
Some checks failed
Release Gate / gate (push) Has been cancelled
transcript 카드에 작업 종류 chip을 추가해 권한 요청과 도구 결과의 성격을 더 빠르게 구분할 수 있게 했습니다.

명령 실행, 파일 수정, 웹 요청, Git, 문서, 스킬, MCP 등의 카테고리를 상태 chip과 함께 표시하도록 정리했습니다.

README와 DEVELOPMENT 문서를 갱신했고 dotnet build 기준 경고 0 / 오류 0을 확인했습니다.
2026-04-06 13:26:20 +09:00
fdf95aa6ec 권한·도구 결과 카드 시각 구분 강화
권한 요청과 도구 결과 transcript chip을 상태별 색상으로 분리했습니다.

미리보기 권장, 주의 필요, 검토 권장, 승인 후 계속, 후속 점검을 색과 라벨로 더 즉시 구분되게 정리했습니다.

README와 DEVELOPMENT 문서를 갱신했고 dotnet build 기준 경고 0 / 오류 0을 확인했습니다.
2026-04-06 13:14:07 +09:00
7fd4d1ae5a 권한·도구 결과 transcript 안내 강화
Some checks failed
Release Gate / gate (push) Has been cancelled
권한 요청과 도구 결과 metadata를 실제 transcript 카드에 반영했습니다.

ActionHint, Severity, RequiresPreview, FollowUpHint, NeedsAttention, StatusKind를 이용해 보조 문구와 주의 chip을 표시하도록 정리했습니다.

README와 DEVELOPMENT 문서를 갱신했고 dotnet build 기준 경고 0 / 오류 0을 확인했습니다.
2026-04-06 13:03:18 +09:00
e747032501 도구·권한·스킬 표현 정교화 1차 반영
Some checks failed
Release Gate / gate (push) Has been cancelled
- 권한 요청 카탈로그를 bash/powershell/web_fetch/mcp/skill/file_edit/file_write/git/document/filesystem 수준으로 세분화했습니다.

- 도구 결과 카탈로그에 approval_required, partial, follow-up hint, attention 메타를 추가해 후속 renderer 고도화 기반을 마련했습니다.

- 스킬 갤러리에 모델, 추론 강도, 실행 컨텍스트, 에이전트, 모델 호출 비활성화, 추천 상황을 표시하도록 확장했습니다.

- README, DEVELOPMENT, parity plan, regression prompts 문서를 2026-04-06 11:52 (KST) 기준으로 갱신했습니다.

- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0 / 오류 0)
2026-04-06 12:57:15 +09:00
f11b8b74b7 AX Agent footer 작업 바 chip 스타일 통일 및 후속 polish
Some checks failed
Release Gate / gate (push) Has been cancelled
- ChatWindow에 FooterChipBtn 스타일을 추가해 하단 작업 바 버튼 언어를 공통화
- 권한과 Git 브랜치 버튼이 같은 라운드/테두리/패딩 규칙을 사용하도록 정리
- README와 DEVELOPMENT 문서에 2026-04-06 11:34 (KST) 기준 footer polish 반영
- dotnet build 검증 경고 0, 오류 0 확인
2026-04-06 12:18:10 +09:00
b4d69f5db3 AX Agent popup 시각 언어 통일 및 선택 surface 후속 정리
Some checks failed
Release Gate / gate (push) Has been cancelled
- 공통 popup factory가 surface visual helper를 사용하도록 정리
- worktree 선택과 권한 모드 row의 border/hover/selected 규칙을 같은 visual language로 통일
- README와 DEVELOPMENT 문서에 2026-04-06 11:27 (KST) 기준 popup polish 누적 범위 반영
- dotnet build 검증 경고 0, 오류 0 확인
2026-04-06 12:12:44 +09:00
3c3faab528 AX Agent surface visual language 공통화 및 preview/file browser 정리
Some checks failed
Release Gate / gate (push) Has been cancelled
- ChatWindow에 공통 popup container/menu item/separator/file tree header helper를 추가
- Preview와 FileBrowser presentation이 같은 surface 스타일을 사용하도록 정리
- README와 DEVELOPMENT 문서에 2026-04-06 11:20 (KST) 기준 visual polish 1차 반영
- dotnet build 검증 경고 0, 오류 0 확인
2026-04-06 12:09:18 +09:00
9aa99cdfe6 AX Agent 대화 목록 필터 프레젠테이션 분리 및 사이드바 구조 정리
Some checks failed
Release Gate / gate (push) Has been cancelled
- ChatWindow에서 대화 목록 필터/정렬 interaction과 선호 저장 로직을 ConversationFilterPresentation partial로 분리
- 실행 중 보기, 최근/활동 정렬, 관련 버튼 UI 갱신을 메인 창 orchestration 코드 밖으로 이동
- README와 DEVELOPMENT 문서에 2026-04-06 11:11 (KST) 기준 구조 개선 누적 완료 범위 반영
- dotnet build 검증 경고 0, 오류 0 확인
2026-04-06 11:37:44 +09:00
3ac8a7155f AX Agent 사이드바 상호작용 프레젠테이션 분리 및 구조 개선 후속 정리
Some checks failed
Release Gate / gate (push) Has been cancelled
- ChatWindow에서 검색/새 대화 사이드바 interaction을 SidebarInteractionPresentation partial로 분리
- 검색 열기/닫기 애니메이션과 hover 상태 변경을 메인 창 orchestration 코드 밖으로 이동
- README와 DEVELOPMENT 문서에 2026-04-06 11:03 (KST) 기준 구조 개선 완료 범위와 남은 후속 작업 수준 반영
- dotnet build 검증 경고 0, 오류 0 확인
2026-04-06 11:28:26 +09:00
3e44f1fc4d AX Agent 대화 목록 관리 프레젠테이션 분리 및 구조 개선 마감\n\n- ChatWindow에서 제목 인라인 편집과 대화 관리 팝업 렌더를 ConversationManagementPresentation partial로 분리\n- 고정, 이름 변경, 카테고리 변경, 삭제 등 대화 목록 관리 상호작용을 메인 창 orchestration 코드 밖으로 이동\n- README와 DEVELOPMENT 문서에 구조 개선 완료 범위와 남은 작업 수준을 2026-04-06 10:56 (KST) 기준으로 반영\n- dotnet build 검증 경고 0, 오류 0 확인
Some checks failed
Release Gate / gate (push) Has been cancelled
2026-04-06 10:58:13 +09:00
fa431f1666 AX Agent timeline 프레젠테이션 helper를 한 파일로 모아 렌더 책임을 더 줄인다
Some checks failed
Release Gate / gate (push) Has been cancelled
CreateTimelineLoadMoreCard, ToAgentEvent, IsCompactionMetaMessage, CreateCompactionMetaCard를 ChatWindow.TimelinePresentation.cs로 이동해 RenderMessages 주변의 timeline 관련 helper를 하나의 presentation surface로 정리했다.

README와 DEVELOPMENT 문서에 2026-04-06 10:44 (KST) 기준 이력을 반영했고, dotnet build 검증 결과 경고 0 / 오류 0을 확인했다.
2026-04-06 10:42:01 +09:00
fda5c6bace AX Agent timeline 조립 helper를 분리해 메시지 렌더 구조를 단순화한다
Some checks failed
Release Gate / gate (push) Has been cancelled
RenderMessages()가 직접 처리하던 visible 메시지/이벤트 필터링과 timestamp/order 기반 timeline action 조립을 ChatWindow.TimelinePresentation.cs로 이동해 메인 렌더 루프가 orchestration 중심으로 더 단순해지도록 정리했다.

README와 DEVELOPMENT 문서에 2026-04-06 10:36 (KST) 기준 이력을 반영했고, dotnet build 검증 결과 경고 0 / 오류 0을 확인했다.
2026-04-06 10:33:57 +09:00
b3b5f8a79d AX Agent transcript 메시지 버블 렌더를 분리해 메인 창 구조를 정리한다
Some checks failed
Release Gate / gate (push) Has been cancelled
사용자/assistant 메시지 버블, 분기 컨텍스트 카드, 액션 바, 응답 메타 조립을 ChatWindow.MessageBubblePresentation.cs로 이동해 ChatWindow.xaml.cs가 transcript orchestration과 런타임 흐름에 더 집중하도록 정리했다.

README와 DEVELOPMENT 문서에 2026-04-06 10:27 (KST) 기준 이력을 반영했고, dotnet build 검증 결과 경고 0 / 오류 0을 확인했다.
2026-04-06 10:29:54 +09:00
8faa26b134 AX Agent 대화 목록 렌더를 별도 프레젠테이션 파일로 분리하고 문서 이력을 갱신한다
Some checks failed
Release Gate / gate (push) Has been cancelled
좌측 대화 목록의 메타 필터링, spotlight 계산, 그룹 렌더, 더 보기 페이지네이션, 목록 카드 조립을 ChatWindow.ConversationListPresentation.cs로 이동해 ChatWindow.xaml.cs가 transcript/runtime orchestration에 더 집중하도록 정리했다.

README와 DEVELOPMENT 문서에 2026-04-06 10:18 (KST) 기준 변경 이력을 반영했고, dotnet build 검증 결과 경고 0 / 오류 0을 확인했다.
2026-04-06 10:23:25 +09:00
1b4566d192 AX Agent 프리셋 렌더와 주제 선택 흐름을 분리해 메인 창 책임을 줄인다
Some checks failed
Release Gate / gate (push) Has been cancelled
- ChatWindow.TopicPresetPresentation을 추가해 프리셋 카드 생성, 커스텀 프리셋 메뉴, 주제 선택 적용 흐름을 별도 프레젠테이션 계층으로 이동한다

- ChatWindow.xaml.cs에서는 프리셋 UI 조립 코드를 제거하고 대화 orchestration 중심 구조를 더 강화한다

- claw-code parity plan과 개발 문서에 구조 개선 진행 상황을 반영해 큰 구조 개선 항목이 사실상 마감 단계임을 기록한다

- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0 / 오류 0)
2026-04-06 10:15:22 +09:00
d0d66c1d52 AX Agent footer와 Git 브랜치 프레젠테이션 구조를 분리하고 회귀 점검 루틴을 고정한다
Some checks failed
Release Gate / gate (push) Has been cancelled
- ChatWindow.FooterPresentation에서 Git 브랜치 팝업 렌더와 요약 helper를 분리해 폴더 바 상태/프리셋 안내 동기화 책임만 남긴다

- ChatWindow.GitBranchPresentation을 추가해 브랜치 팝업 조립, 요약 pill, 최근 브랜치/전환 액션 렌더를 별도 프레젠테이션 계층으로 옮긴다

- AX_AGENT_REGRESSION_PROMPTS 문서를 재작성해 실패 분류와 Chat/Cowork/Code별 필수 회귀 묶음을 개발 루틴으로 고정한다

- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0 / 오류 0)
2026-04-06 10:06:25 +09:00
9464dd0234 의견 요청과 계획 승인 렌더를 분리해 메시지 타입 구조를 정리한다
Some checks failed
Release Gate / gate (push) Has been cancelled
- ChatWindow.InlineInteractions를 UserAskPresentation과 PlanApprovalPresentation으로 분리해 사용자 질문 카드와 계획 승인 흐름의 책임을 나눔

- 메시지 타입 renderer 분리 계획의 다음 단계로 ChatWindow.xaml.cs와 mixed inline interaction partial의 결합도를 낮춤

- README, DEVELOPMENT, claw-code parity plan 문서를 2026-04-06 09:44 (KST) 기준으로 갱신함

- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0 / 오류 0)
2026-04-06 09:53:07 +09:00
d5c1266d3e 상태선/권한 카탈로그 구조 정리와 계획 모드 표현 잔재 제거
Some checks failed
Release Gate / gate (push) Has been cancelled
- OperationalStatusPresentationCatalog를 추가해 compact strip과 quick strip의 색상/노출 계산을 AppStateService 밖으로 분리함

- PermissionRequestPresentationCatalog와 ToolResultPresentationCatalog에 Kind/Description 메타를 추가해 transcript fallback 설명을 타입 기반으로 정리함

- PermissionModePresentationCatalog와 ChatWindow.PermissionPresentation에서 제거된 계획 모드 표현 분기를 걷어 권한 UI를 실제 지원 모드만 다루도록 단순화함

- README, DEVELOPMENT, claw-code parity plan 문서를 2026-04-06 09:36 (KST) 기준으로 갱신함

- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0 / 오류 0)
2026-04-06 09:44:53 +09:00
3924bac9f9 claw-code 대조 기반 AX Agent 품질 향상 3트랙 계획을 수립한다
- 사용자 체감 UI/UX, LLM·작업 처리, 유지보수·추가기능 구조의 3트랙으로 남은 품질 향상 과제를 재정리했다.

- docs/claw-code-parity-plan.md에 참조 파일, AX 적용 위치, 완료 조건, 품질 기준, 권장 실행 순서를 고정했다.

- README와 DEVELOPMENT 문서에 2026-04-06 09:27 (KST) 기준 계획 변경 이력을 반영했다.

- 이번 변경은 문서화 작업으로 코드 변경이 없어 별도 빌드는 생략했다.
2026-04-06 09:30:13 +09:00
9f5a9d315c AX Agent 선택 팝업 렌더를 분리해 footer 선택 UX 구조를 정리한다
Some checks failed
Release Gate / gate (push) Has been cancelled
- ChatWindow.SelectionPopupPresentation.cs를 추가해 워크트리 선택 팝업과 공통 선택 row 렌더를 메인 창 코드 밖으로 이동했다.

- ChatWindow.xaml.cs에서 작업 위치 선택 팝업 조립 책임을 제거해 대화 상태와 세션 orchestration 중심 구조를 더 선명하게 만들었다.

- README와 DEVELOPMENT 문서에 2026-04-06 09:14 (KST) 기준 구조 분리 이력을 반영했다.

- dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ 검증 결과 경고 0 / 오류 0을 확인했다.
2026-04-06 09:19:10 +09:00
4c1513a5da AX Agent 공통 팝업과 시각 상호작용 렌더를 분리해 메인 창 구조를 정리한다
Some checks failed
Release Gate / gate (push) Has been cancelled
- ChatWindow.VisualInteractionHelpers.cs를 추가해 메시지 액션 버튼, 선택 스타일, hover 애니메이션, 공통 체크 아이콘 생성을 메인 창 코드 밖으로 이동했다.

- ChatWindow.PopupPresentation.cs를 추가해 공통 테마 팝업 컨테이너, 메뉴 아이템, 구분선, 최근 폴더 컨텍스트 메뉴 구성을 한 곳으로 모았다.

- README와 DEVELOPMENT 문서에 2026-04-06 09:03 (KST) 기준 구조 분리 이력을 반영했다.

- dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ 검증 결과 경고 0 / 오류 0을 확인했다.
2026-04-06 09:02:41 +09:00
ccaa24745e AX Agent 파일 브라우저 렌더 구조 분리 및 문서 갱신
Some checks failed
Release Gate / gate (push) Has been cancelled
- ChatWindow.FileBrowserPresentation.cs를 추가해 파일 탐색기 열기/닫기, 폴더 트리 구성, 파일 헤더·아이콘·크기 표시, 우클릭 메뉴, 디바운스 새로고침 흐름을 메인 창 코드에서 분리함

- ChatWindow.xaml.cs는 transcript·runtime orchestration 중심으로 더 정리해 claw-code 기준 sidebar/file surface 품질 개선을 이어가기 쉬운 구조로 개선함

- README.md와 docs/DEVELOPMENT.md에 2026-04-06 08:55 (KST) 기준 변경 이력을 반영함

- dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ 기준 경고 0 / 오류 0 확인
2026-04-06 08:56:18 +09:00
1ce6ccb030 AX Agent 프리뷰 패널 렌더 구조 분리 및 문서 갱신
Some checks failed
Release Gate / gate (push) Has been cancelled
- ChatWindow.PreviewPresentation.cs를 추가해 프리뷰 탭 목록, 헤더, 파일 로드, CSV·텍스트·마크다운·HTML 표시, 컨텍스트 메뉴, 별도 창 미리보기 흐름을 메인 창 코드에서 분리함

- ChatWindow.xaml.cs는 transcript 및 런타임 orchestration 중심으로 더 정리해 claw-code 기준 preview surface 품질 개선을 이어가기 쉬운 구조로 개선함

- README.md와 docs/DEVELOPMENT.md에 2026-04-06 08:47 (KST) 기준 변경 이력을 반영함

- dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ 기준 경고 0 / 오류 0 확인
2026-04-06 08:48:32 +09:00
2b21e8cdfb AX Agent 상태선 렌더 구조 분리 및 문서 갱신
Some checks failed
Release Gate / gate (push) Has been cancelled
- ChatWindow.StatusPresentation.cs로 UpdateStatusBar, StartStatusAnimation, StopStatusAnimation을 이동해 runtime 상태 이벤트와 상태선 표현 책임을 메인 창 코드에서 분리함

- ChatWindow.xaml.cs는 transcript 오케스트레이션 중심으로 더 정리했고, claw-code 기준 status/footer 품질 개선을 이어가기 쉬운 구조로 개선함

- README.md와 docs/DEVELOPMENT.md에 2026-04-06 08:39 (KST) 기준 변경 이력을 반영함

- dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ 기준 경고 0 / 오류 0 확인
2026-04-06 08:40:56 +09:00
35ec073eb9 AX Agent 메시지 상호작용 렌더 구조 분리 및 문서 갱신
Some checks failed
Release Gate / gate (push) Has been cancelled
- ChatWindow.MessageInteractions.cs를 추가해 좋아요·싫어요 피드백 버튼, 응답 메타 텍스트, 메시지 등장 애니메이션, 사용자 메시지 편집·재생성 흐름을 메인 창 코드에서 분리함

- ChatWindow.xaml.cs는 transcript 오케스트레이션과 상태 흐름에 더 집중하도록 정리해 claw-code 기준 renderer 분리 작업을 이어가기 쉬운 구조로 개선함

- README.md와 docs/DEVELOPMENT.md에 2026-04-06 08:27 (KST) 기준 변경 이력을 반영함

- dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ 기준 경고 0 / 오류 0 확인
2026-04-06 08:31:48 +09:00
68524c1c94 AX Agent composer·대기열 렌더 구조 분리 및 문서 갱신
Some checks failed
Release Gate / gate (push) Has been cancelled
- ChatWindow.ComposerQueuePresentation.cs를 추가해 입력창 높이 계산, draft kind 해석, 대기열 요약/카드/배지/액션 버튼 생성 책임을 메인 창 코드에서 분리함

- ChatWindow.xaml.cs는 대기열 실행 orchestration과 세션 변경 흐름 중심으로 정리해 claw-code 기준 footer/composer 품질 개선 기반을 강화함

- README.md와 docs/DEVELOPMENT.md에 2026-04-06 08:28 (KST) 기준 변경 이력을 반영함

- dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ 기준 경고 0 / 오류 0 확인
2026-04-06 08:24:25 +09:00
b4a506de96 AX Agent 하단 작업바 렌더 구조 분리 및 문서 갱신
- ChatWindow.FooterPresentation.cs를 추가해 폴더 바, 선택 프리셋 안내, Git 브랜치 팝업 렌더를 메인 창 코드에서 분리함

- ChatWindow.xaml.cs는 대화 흐름과 런타임 orchestration 중심으로 정리해 claw-code 기준 footer presentation 개선 기반을 마련함

- README.md와 docs/DEVELOPMENT.md에 2026-04-06 08:12 (KST) 기준 변경 이력을 반영함

- dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ 기준 경고 0 / 오류 0 확인
2026-04-06 08:14:01 +09:00
82b42b3ba3 AX Agent 권한·컨텍스트 카드 렌더 구조 분리 및 문서 갱신
권한 선택 팝업과 권한 상태 배너 렌더를 ChatWindow.PermissionPresentation partial로 분리했습니다.

컨텍스트 사용량 카드와 hover 팝업 렌더를 ChatWindow.ContextUsagePresentation partial로 분리해 메인 ChatWindow.xaml.cs의 책임을 줄였습니다.

README와 DEVELOPMENT 문서에 2026-04-06 07:31 (KST) 기준 변경 이력을 반영했고 Release 빌드 경고 0 오류 0을 확인했습니다.
2026-04-06 07:33:21 +09:00
90bd77f945 AX Agent 계획 승인 흐름과 상태선 표현 계층 정리
Some checks failed
Release Gate / gate (push) Has been cancelled
- 계획 승인 기본 흐름을 transcript inline 우선 구조로 더 정리하고, 계획 버튼은 저장된 계획을 여는 상세 보기 성격으로 분리했습니다.

- OperationalStatusPresentationState를 확장해 runtime badge, compact strip, quick strip의 문구·강조색·노출 여부를 한 번에 계산하도록 통합했습니다.

- ChatWindow 상태선/quick strip/status token 로직을 StatusPresentation partial로 분리해 메인 창 코드의 직접 분기와 렌더 책임을 줄였습니다.

- 문서 이력(README, DEVELOPMENT)을 2026-04-06 01:37 KST 기준으로 갱신했습니다.

- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0 / 오류 0)
2026-04-06 07:17:16 +09:00
95e40df354 AX Agent transcript 권한·도구 결과 표현 정교화 및 이벤트 렌더 분리
Some checks failed
Release Gate / gate (push) Has been cancelled
- claw-code 기준으로 transcript display catalog를 파일/문서/빌드/Git/웹/질문/에이전트 축으로 재정의
- 권한 요청 presentation catalog를 명령 실행, 웹 요청, 스킬 실행, 의견 요청, 파일 수정, 파일 접근 타입으로 세분화
- tool result catalog를 성공/실패/거부/취소와 도구 종류에 따라 더 읽기 쉬운 한국어 결과 라벨로 정리
- CreateCompactEventPill, AddAgentEventBanner, GetDecisionBadgeMeta를 ChatWindow.AgentEventRendering.cs로 분리해 메인 창 코드 비중 축소
- README와 DEVELOPMENT 문서에 변경 목적과 검증 결과 반영
- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\ (경고 0 / 오류 0)
2026-04-06 06:59:22 +09:00
f9d18fba08 AX Agent 폴더 데이터 활용 사용자 옵션 제거 및 자동 정책 고정
Some checks failed
Release Gate / gate (push) Has been cancelled
- 코워크/코드의 폴더 내 문서 활용을 사용자 설정에서 제거하고 탭별 자동 정책으로 고정
- ChatWindow 하단 데이터 활용 버튼과 AX Agent 내부 설정 row, 메인 설정/구형 설정창의 관련 UI 제거
- Chat/Cowork/Code 탭별 자동 데이터 활용 정책을 none/passive/active로 고정하고 저장 경로에서 사용자 선택값 반영 제거
- README와 DEVELOPMENT 문서에 변경 이력 및 적용 기준 반영
- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\verify\ -p:IntermediateOutputPath=obj\verify\ (경고 0 / 오류 0)
2026-04-05 23:06:38 +09:00
f0af86cc1e AX Agent transcript 렌더 구조를 분리하고 권한/도구 결과 표시 체계를 정리한다
Some checks failed
Release Gate / gate (push) Has been cancelled
- ChatWindow.xaml.cs에 몰려 있던 의견 요청, 계획 승인, 작업 요약 렌더를 partial 파일로 분리해 transcript 책임을 낮췄다.

- PermissionRequestPresentationCatalog와 ToolResultPresentationCatalog를 추가해 권한 요청 및 도구 결과 badge를 타입별로 해석하도록 정리했다.

- AppStateService에 OperationalStatusPresentationState를 추가하고 상태선 계산을 presentation 계층으로 한 번 더 분리했다.

- README.md, docs/DEVELOPMENT.md, docs/claw-code-parity-plan.md에 2026-04-06 00:58 (KST) 기준 변경 내용을 반영했다.

- 검증: dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\ (경고 0 / 오류 0)
2026-04-05 22:55:56 +09:00
13f0e23ed5 AX Agent 테마 프리셋 2종 추가
Some checks failed
Release Gate / gate (push) Has been cancelled
AX Agent 전용 테마를 재점검해 Nord와 Ember 프리셋을 새로 추가했습니다.

내부 설정의 테마 스타일 카드에서 새 프리셋을 바로 선택할 수 있게 연결했고 system, light, dark 모드 조합으로 동일하게 적용되도록 정리했으며 문서 이력과 빌드 검증도 함께 반영했습니다.
2026-04-05 22:41:15 +09:00
7cb27b70f8 내부 설정 훅 섹션 잘림 레이아웃 보정
Some checks failed
Release Gate / gate (push) Has been cancelled
AX Agent 내부 설정의 도구 훅 실행 타임아웃과 등록된 훅 영역에서 컨트롤이 잘리던 레이아웃을 조정했습니다.

슬라이더와 값 배지 컬럼 폭, 훅 추가 버튼 최소 폭과 여백을 넓혀 작은 폭에서도 텍스트와 컨트롤이 안정적으로 보이도록 정리했고 문서 이력과 빌드 검증도 함께 반영했습니다.
2026-04-05 22:37:11 +09:00
61f82bdd10 내부 설정 개발자 토글 저장 경로 복구
Some checks failed
Release Gate / gate (push) Has been cancelled
AX Agent 내부 설정 개발자 탭의 워크플로우 시각화, 전체 호출·토큰 합계 표시, 감사 로그 토글에 변경 이벤트를 연결했습니다.

오버레이 재동기화 시 기본값으로 되돌아가던 문제를 막고 즉시 저장되도록 보정했으며 문서 이력과 빌드 검증도 함께 반영했습니다.
2026-04-05 22:33:39 +09:00
fa349c2057 프리셋 선택 시 새 대화 중복 생성 방지
Some checks failed
Release Gate / gate (push) Has been cancelled
AX Agent 채팅과 코워크에서 메시지와 입력이 없는 fresh conversation에 프리셋만 선택해도 새 대화가 반복 생성되던 흐름을 수정했습니다.

기존 빈 대화가 있으면 해당 대화를 재사용하고 프리셋 메타데이터만 갱신하도록 정리했으며 문서 이력과 빌드 검증도 함께 반영했습니다.
2026-04-05 22:30:53 +09:00
be7328184a 코드 탭 폴더 데이터 활용 기본 허용 및 파일명 강조 적용
Some checks failed
Release Gate / gate (push) Has been cancelled
코드 탭에서는 폴더 내 데이터 활용을 항상 적극 활용으로 고정하고 하단 버튼과 내부 설정 옵션을 숨겨 사용 흐름을 단순화했습니다.

코워크와 코드 탭의 사용자 메시지도 파일 경로 강조 렌더러를 사용하도록 바꿔 폴더 하위 파일명 입력 시 파란색으로 표시되게 맞췄습니다.

README와 DEVELOPMENT 문서에 변경 이력을 반영했고 Release 빌드에서 경고 0 오류 0을 확인했습니다.
2026-04-05 22:28:29 +09:00
905ea41ed3 코드 탭 Git 브랜치 선택 UI 단순화
- 하단 Git 브랜치 버튼을 상태판형에서 브랜치 선택 버튼 형태로 정리\n- 브랜치 버튼 기본 노출에서 변경 파일/추가/삭제 수치를 숨기고 브랜치명 중심으로 단순화\n- README 및 DEVELOPMENT 문서 이력 갱신\n\n검증:\n- dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\\n- 경고 0 / 오류 0
2026-04-05 22:21:58 +09:00
703 changed files with 30077 additions and 27646 deletions

View File

@@ -87,6 +87,11 @@ var fg = TryFindResource("PrimaryText") as Brush ?? Brushes.Black;
- 선택형: 커스텀 Popup 드롭다운 (`[라벨: 현재값 ▾]`) - 선택형: 커스텀 Popup 드롭다운 (`[라벨: 현재값 ▾]`)
- AI/고급 설정 항목 옆에 `?` 도움말 아이콘 + 커스텀 다크 툴팁 (`HelpTooltipStyle`) - AI/고급 설정 항목 옆에 `?` 도움말 아이콘 + 커스텀 다크 툴팁 (`HelpTooltipStyle`)
- 설정 저장 시 `CustomMessageBox`로 완료 알림 - 설정 저장 시 `CustomMessageBox`로 완료 알림
- 설정에서 `on/off` 또는 숫자 입력이 필요한 신규 항목은 **기존 양식에 맞춰 통일해서 추가**해야 함
- `on/off` 항목은 예외 없이 `ToggleSwitch` 스타일을 사용하고, 기본 CheckBox/임의 토글 버튼으로 새로 만들지 않음
- 숫자 입력 항목은 가능하면 **텍스트박스 직접 입력 대신 기존 슬라이더 + 현재값 배지 패턴**을 우선 사용하며, 범위가 명확한 값은 반드시 이 패턴을 기본으로 채택
- 숫자 설정을 부득이하게 텍스트 입력으로 받을 경우에도, 먼저 기존 설정창/AX Agent 내부 설정에 같은 유형의 컨트롤이 있는지 확인하고 그 양식을 재사용해야 함
- 동일 성격의 설정은 메인 설정과 AX Agent 내부 설정에서 **표현 방식이 서로 다르면 안 되며**, 기존에 쓰던 컨트롤러/레이아웃 기준으로 맞춰 추가
### AX Agent 표현 수준 (필수) ### AX Agent 표현 수준 (필수)
- AX Agent UI 표현 수준은 설정에서 반드시 3단계로 제공: **`풍부하게` / `적절하게` / `간단하게`** - AX Agent UI 표현 수준은 설정에서 반드시 3단계로 제공: **`풍부하게` / `적절하게` / `간단하게`**

465
README.md
View File

@@ -7,6 +7,124 @@ Windows 전용 시맨틱 런처 & 워크스페이스 매니저
개발 참고: Claw Code 동등성 작업 추적 문서 개발 참고: Claw Code 동등성 작업 추적 문서
`docs/claw-code-parity-plan.md` `docs/claw-code-parity-plan.md`
- 업데이트: 2026-04-09 13:05 (KST)
- AX Agent transcript 표시를 `claude-code`식 row 타입 기반으로 재정리했습니다. `thinking / waiting / compact / tool activity / permission / tool result / status`를 별도 row 의미로 정규화하고, process feed는 같은 활동 그룹이면 이어붙여 append 수를 줄이도록 바꿨습니다.
- 권한 요청과 도구 결과 카탈로그를 다시 정리해 Cowork/Code 진행 중 무엇을 하는지, 어떤 결과 상태인지가 기본 transcript에서 더 읽히도록 맞췄습니다. 동시에 render 성능 로그에 row kind 분포와 process feed append/merge 수치를 남겨 이후 실검증 때 구조 개선 효과를 바로 판단할 수 있게 했습니다.
- Cowork/Chat 하단 프리셋 안내 카드는 실제 메시지뿐 아니라 execution event가 생긴 뒤에도 자동으로 숨겨 결과/진행 화면을 가리지 않도록 조정했고, 입력 워터마크와 footer 기본 문구도 정상 한국어 기준으로 다시 정리했습니다.
- 업데이트: 2026-04-09 01:33 (KST)
- AX Agent transcript 호스트를 `ObservableCollection<UIElement>` 직접 주입 구조에서 `TranscriptVisualItem + TranscriptVisualHost` 기반의 지연 materialization 구조로 올렸습니다. `MessageList`는 virtualization 설정을 유지한 채 필요한 시점에만 실제 버블 UI를 생성할 수 있는 기반을 갖습니다.
- `StreamingToolExecutionCoordinator``IToolExecutionCoordinator` 인터페이스 뒤로 숨겨 Cowork/Code tool streaming executor를 루프 구현에서 구조적으로 분리했습니다. 이후 executor 교체, 테스트 더블 주입, 모델별 executor 분기를 더 쉽게 할 수 있는 상태입니다.
- AX Agent 라이브 진행 카드 렌더 책임을 `ChatWindow.LiveProgressPresentation.cs`로 이동해 `ChatWindow.xaml.cs`의 오케스트레이션 밀도를 더 낮췄습니다. transcript/라이브 카드/루프 쪽 책임 분해가 한 단계 더 진행됐습니다.
- 업데이트: 2026-04-07 09:19 (KST)
- AX Agent 하단 상태바의 전체 토큰 집계가 유휴 전환 후 사라지지 않도록 conversation aggregate 복원 경로를 추가했습니다. 실행 중 누적 토큰이 0이어도 현재 대화 전체의 prompt/completion 합계를 다시 계산해 상태바에 유지합니다.
- 컨텍스트 사용량 팝업이 마지막 실제 압축 결과와 맞지 않던 문제를 수정했습니다. 이제 최근 압축의 실제 before/after 토큰과 자동/수동 여부, 누적 압축 횟수와 절감 토큰을 기준으로 표시합니다.
- `전체 통계(total_stats)` 이벤트가 일반 진행 줄에 흡수되던 문제를 수정했습니다. 다시 전용 통계 카드/배너 경로로 노출되어 하단 전체 집계와 transcript 요약이 서로 더 일치합니다.
- 업데이트: 2026-04-07 02:23 (KST)
- AX Agent 직접 대화(Chat 탭) 경로에 실제 스트리밍 응답 연결을 복구했습니다. LLM 서비스는 원래 SSE/스트리밍을 지원하고 있었지만 UI 실행 경로가 최종 문자열만 받아 한 번에 붙이던 상태였고, 이제 설정상 스트리밍이 켜져 있으면 채팅 응답이 타자 치듯 점진적으로 표시됩니다.
- Cowork/Code는 기존처럼 agent loop 진행 메시지 중심을 유지하고, 직접 대화 재생성은 같은 스트리밍 경로를 공유하도록 정리했습니다.
- 업데이트: 2026-04-07 02:31 (KST)
- Cowork/Code도 에이전트 루프가 끝난 뒤 최종 답변을 한 번에 붙이지 않고, 짧은 라이브 타이핑 프리뷰를 거친 다음 정식 메시지로 확정되도록 보강했습니다. 처리 중에는 진행 로그를 유지하고, 최종 응답 구간만 자연스럽게 이어지도록 정리했습니다.
- 업데이트: 2026-04-07 02:03 (KST)
- Cowork 진행 표시가 오래 비거나 완료 후 실패처럼 깜박이던 흐름을 정리했습니다. 진행 힌트는 작업 시작 직후부터 즉시 보이게 하고, 중간 이벤트가 들어와도 불필요하게 사라지지 않도록 유지 로직을 조정했습니다.
- 프리셋/입력창/진행 카드에 남아 있던 깨진 한글을 복구했고, 내부 실행 게이트 문구도 정상 한국어로 정리해 Cowork 루프가 잘못된 안내 문구에 끌리지 않도록 보강했습니다.
- 중단 문구는 더 이상 무조건 사용자 취소처럼 보이지 않도록 `작업이 중단되었습니다` 기준으로 통일했습니다.
- 업데이트: 2026-04-06 20:05 (KST)
- AX Agent 입력 영역의 토큰 사용량 원형 카드와 전송 버튼 테두리를 더 깔끔하게 정리했습니다. 토큰 카드는 내부 원 두께와 여백을 줄여 덜 답답하게 보이게 했고, 전송 버튼은 불필요한 외곽 테두리를 제거해 더 매끈한 원형 버튼처럼 보이도록 조정했습니다.
- 업데이트: 2026-04-06 19:56 (KST)
- AX Agent 상단 탭의 세로 정렬을 미세 조정했습니다. 탭 버튼의 콘텐츠 정렬을 중앙 기준으로 다시 맞추고, 내부 패딩과 높이를 손봐 위아래 여백이 더 균형 있게 보이도록 보정했습니다.
- 업데이트: 2026-04-06 19:46 (KST)
- AX Agent 테마 프리셋에서 `Claw` 표기를 `Claude`로 바꿨고, 기존 저장값 `claw`는 자동으로 `claude`로 읽히도록 하위 호환을 유지했습니다.
- `Claude` 다크/라이트 팔레트는 실제 앱 톤에 더 가깝게, `Codex` 다크는 제공된 레퍼런스 화면처럼 중성 회갈색 계열로, `Nord`는 공식 팔레트 기준으로 다시 맞췄습니다. `Slate`도 더 표준적인 슬레이트 계열 명암으로 정리했습니다.
- 업데이트: 2026-04-06 19:33 (KST)
- AX Agent 라이트 테마 계층을 다시 정리했습니다. `Codex/Claw` 라이트 팔레트의 배경, 선택 배경, 호버, 경계선, 보조 텍스트 톤을 더 따뜻하게 보정해 사이드바와 본문 위계가 레퍼런스처럼 자연스럽게 느껴지도록 조정했습니다.
- 업데이트: 2026-04-06 19:24 (KST)
- 런처 색인 진행 상태를 런처 하단 완료 문구 대신 설정창 `인덱싱 속도` 아래에서 확인할 수 있게 바꿨습니다. 전체 색인 중에는 진행률 바와 상태/남은 시간 문구가 보이고, 완료 후에는 최근 색인 결과가 같은 위치에 남습니다.
- 업데이트: 2026-04-06 15:31 (KST)
- 코워크/코드 하단 우측의 권한 요청 버튼은 footer 작업 바와 더 자연스럽게 이어지도록 외곽 테두리를 제거해 플랫한 형태로 정리했습니다.
- 업데이트: 2026-04-06 18:46 (KST)
- 런처 색인에서 `.git`, `node_modules`, `bin`, `obj`, `dist`, `packages`, `venv`, `__pycache__`, `target` 같은 무거운 폴더를 스캔/감시 대상에서 제외해 유휴 CPU와 재색인 부담을 줄였습니다.
- 런처 무지개 글로우 갱신 주기를 낮추고, AX Agent는 창 크기 변화 시 메시지 전체 재렌더를 짧게 묶어서 한 번만 반영하도록 바꿔 창 조작 시 버벅이는 느낌을 줄였습니다.
- 업데이트: 2026-04-06 19:02 (KST)
- 설정-테마의 글로우 관련 항목이 저장만 되고 열린 창에 바로 반영되지 않던 문제를 수정했습니다. 런처는 설정 변경 이벤트를 직접 받아 테두리/아이콘 애니메이션/무지개 글로우/선택 글로우를 즉시 다시 적용하고, AX Agent도 스트리밍 중 입력창 글로우 설정을 바로 반영합니다.
- 업데이트: 2026-04-06 19:11 (KST)
- 런처 색인 상태 문구가 오래 남던 문제를 수정했습니다. 파일 watcher의 증분 갱신은 더 이상 `색인 완료` 이벤트를 다시 올리지 않고, 실제 전체 색인 완료 때만 런처 상태 문구가 갱신되도록 분리했습니다.
- 업데이트: 2026-04-06 15:26 (KST)
- AX Agent 채팅/코워크/코드 하단 안내 문구를 현재 구현 기준으로 다시 정리했습니다. 입력창 워터마크는 탭 종류와 작업 폴더 선택 여부에 따라 실제 가능한 작업을 더 정확히 안내합니다.
- 선택된 프리셋 안내도 placeholder 문구 대신 실제 설명 중심으로 정리해, 프리셋 설명 카드와 입력창 워터마크가 서로 다른 역할로 보이도록 맞췄습니다.
- 업데이트: 2026-04-06 15:18 (KST)
- 코워크/코드 하단 폴더 바에서 권한 선택 버튼 왼쪽에 보이던 세로 구분선(`|`)을 제거해 footer 작업 바가 더 단순하게 이어지도록 정리했습니다.
- 업데이트: 2026-04-06 15:12 (KST)
- AX Agent 채팅/코워크/코드 공통 입력창 우측 상단의 `프리셋` 선택 버튼을 제거해 composer 상단을 더 단순하게 정리했습니다.
- 파일 첨부 버튼을 기존보다 약 1.5배 키우고, 전송 버튼도 같은 기준의 정사각 크기로 맞췄습니다. 두 버튼의 아이콘은 모두 상하좌우 중앙 정렬로 보정했습니다.
- 업데이트: 2026-04-06 15:04 (KST)
- AX Agent 사용자 메시지 하단 메타 행 레이아웃을 정리해, 시간 표시와 복사/편집 액션 버튼이 같은 위치에 겹쳐 보이던 문제를 수정했습니다.
- 사용자 메시지 하단 바는 이제 전용 컬럼을 나눠 시간과 액션이 항상 분리되어 보이며, hover 상태와 무관하게 메타 행이 안정적으로 유지됩니다.
- 업데이트: 2026-04-06 09:27 (KST)
- `claw-code`와 AX Agent를 다시 대조해 남은 품질 향상 작업을 3트랙으로 재정리했습니다. 앞으로 계획은 `사용자 체감 UI/UX`, `LLM·작업 처리`, `유지보수·추가기능 구조`로 분리해 관리합니다.
- `docs/claw-code-parity-plan.md`에 각 트랙별 참조 파일, AX 적용 위치, 완료 조건, 품질 판정 기준, 권장 실행 순서를 고정했습니다.
- 업데이트: 2026-04-06 09:14 (KST)
- AX Agent 워크트리 선택 팝업과 공통 선택 row 렌더를 `ChatWindow.SelectionPopupPresentation.cs`로 분리했습니다. 작업 위치/워크트리 전환 메뉴와 선택 상태 row 조립이 메인 창 코드 밖으로 이동해 footer 선택 UX를 별도 파일에서 정리할 수 있게 됐습니다.
- `ChatWindow.xaml.cs`는 대화 상태와 세션 orchestration 쪽에 더 집중하도록 정리했고, 향후 브랜치/워크트리/선택형 팝업 UX를 `claw-code` 기준으로 계속 다듬기 쉬운 구조를 만들었습니다.
- 업데이트: 2026-04-06 09:03 (KST)
- AX Agent 공통 선택 팝업 조립 로직을 `ChatWindow.PopupPresentation.cs`로 분리했습니다. 테마 팝업 컨테이너, 공통 메뉴 아이템, 구분선, 최근 폴더 우클릭 컨텍스트 메뉴가 메인 창 코드 밖으로 이동해 footer/file-browser 쪽 팝업 품질 작업을 이어가기 쉬운 구조로 정리했습니다.
- `ChatWindow.xaml.cs`는 대화 상태와 런타임 orchestration 쪽에 더 집중하도록 정리했고, 공통 팝업 시각 언어를 한 곳에서 다듬을 수 있는 기반을 만들었습니다.
- 업데이트: 2026-04-06 08:55 (KST)
- AX Agent 파일 브라우저 렌더를 `ChatWindow.FileBrowserPresentation.cs`로 분리했습니다. 파일 탐색기 열기/닫기, 폴더 트리 구성, 파일 헤더/아이콘/크기 표시, 우클릭 메뉴, 디바운스 새로고침 흐름이 메인 창 코드 밖으로 이동했습니다.
- `ChatWindow.xaml.cs`는 transcript·runtime orchestration 중심으로 더 정리됐고, claw-code 기준 사이드 surface 품질 작업을 이어가기 쉬운 구조로 맞췄습니다.
- 업데이트: 2026-04-06 08:47 (KST)
- AX Agent 우측 프리뷰 패널 렌더를 `ChatWindow.PreviewPresentation.cs`로 분리했습니다. 프리뷰 탭 목록, 헤더, 파일 로드, CSV/텍스트/마크다운/HTML 표시, 숨김/열기, 우클릭 메뉴, 별도 창 미리보기 흐름이 메인 창 코드 밖으로 이동했습니다.
- `ChatWindow.xaml.cs`는 transcript 및 런타임 orchestration 중심으로 더 정리됐고, claw-code 기준 preview surface 품질 작업을 이어가기 쉬운 구조로 맞췄습니다.
- 업데이트: 2026-04-06 08:39 (KST)
- AX Agent 하단 상태바 이벤트 처리와 회전 애니메이션을 `ChatWindow.StatusPresentation.cs`로 옮겼습니다. `UpdateStatusBar`, `StartStatusAnimation`, `StopStatusAnimation`이 상태 표현 파일로 이동해 메인 창 코드의 runtime/status 분기가 더 줄었습니다.
- `ChatWindow.xaml.cs`는 대화 실행 orchestration 중심으로 더 정리됐고, claw-code 기준 status line 정교화와 footer presentation 개선을 계속 이어가기 쉬운 구조로 맞췄습니다.
- 업데이트: 2026-04-06 08:27 (KST)
- AX Agent 메시지 액션/메타/편집 렌더를 `ChatWindow.MessageInteractions.cs`로 분리했습니다. 좋아요·싫어요 피드백 버튼, 응답 메타 텍스트, 메시지 등장 애니메이션, 사용자 메시지 편집·재생성 흐름이 메인 창 코드 밖으로 이동했습니다.
- `ChatWindow.xaml.cs`는 transcript 오케스트레이션과 상태 흐름에 더 집중하도록 정리했고, claw-code 기준 메시지 타입 분리와 renderer 구조화를 계속 진행하기 쉬운 기반을 만들었습니다.
- 업데이트: 2026-04-06 08:28 (KST)
- AX Agent 하단 composer와 대기열 UI 렌더를 `ChatWindow.ComposerQueuePresentation.cs`로 분리했습니다. 입력창 높이 계산, draft kind 해석, 후속 요청 큐 카드/요약 pill/배지/액션 버튼 생성 책임을 메인 창 코드에서 떼어냈습니다.
- `ChatWindow.xaml.cs`는 대기열 실행 orchestration과 세션 변경 흐름만 더 선명하게 남겨, claw-code 기준 입력부/queued command UX 개선을 계속하기 쉬운 구조로 정리했습니다.
- 업데이트: 2026-04-06 08:12 (KST)
- AX Agent 하단 작업 바 관련 presentation 메서드를 메인 창 코드에서 더 분리했습니다. `ChatWindow.FooterPresentation.cs`를 추가해 폴더 바, 선택된 프리셋 안내, Git 브랜치 버튼/팝업 렌더, 요약 pill 생성 책임을 별도 partial로 옮겼습니다.
- `ChatWindow.xaml.cs`는 대화 흐름과 런타임 orchestration 중심으로 더 정리했고, claw-code 기준으로 footer/preset/Git popup 품질 작업을 계속 이어가기 쉬운 구조를 만들었습니다.
- 업데이트: 2026-04-06 01:37 (KST)
- AX Agent의 계획 승인 흐름을 더 transcript 우선 구조로 정리했습니다. 인라인 승인 카드가 기본 경로를 맡고, `계획` 버튼은 저장된 계획 요약/단계를 여는 상세 보기 역할만 하도록 분리했습니다.
- 상태선과 quick strip 계산도 presentation state로 더 모았습니다. runtime badge, compact strip, quick strip의 텍스트/강조색/노출 여부를 한 번에 계산해 창 코드의 직접 분기를 줄였습니다.
- 업데이트: 2026-04-06 07:31 (KST)
- `ChatWindow.xaml.cs`에 몰려 있던 권한 팝업 렌더와 컨텍스트 사용량 카드 렌더를 별도 partial 파일로 분리했습니다. `ChatWindow.PermissionPresentation.cs`, `ChatWindow.ContextUsagePresentation.cs`를 추가해 권한 선택/권한 상태 배너/컨텍스트 사용량 hover 카드 책임을 메인 창 orchestration 코드에서 떼어냈습니다.
- 다음 단계에서 `permission / tool-result / footer` presentation catalog를 더 세밀하게 확장하기 쉽게 구조를 정리했고, 동작은 그대로 유지한 채 transcript/푸터 품질 개선 발판을 마련했습니다.
- 업데이트: 2026-04-06 00:50 (KST)
- 채팅/코워크 프리셋 카드의 hover 설명 레이어를 카드 내부 오버레이 방식에서 안정적인 tooltip형 설명으로 바꿨습니다. 카드 배경/테두리만 반응하게 정리해 hover 시 반복 깜빡임을 줄였습니다.
- 업데이트: 2026-04-06 00:45 (KST) - 업데이트: 2026-04-06 00:45 (KST)
- AX Agent 내부 설정 공통 탭에 `대화 스타일` 섹션 제목을 복구해, `문서 형태``디자인 스타일` 저장 항목이 명확히 보이도록 정리했습니다. - AX Agent 내부 설정 공통 탭에 `대화 스타일` 섹션 제목을 복구해, `문서 형태``디자인 스타일` 저장 항목이 명확히 보이도록 정리했습니다.
- AX Agent 내부 설정 스킬 탭의 `MCP 서버` 영역에 `서버 추가` 버튼을 복원했고, 목록 카드 안에서 `활성화/비활성화``삭제`까지 바로 관리할 수 있게 옮겼습니다. - AX Agent 내부 설정 스킬 탭의 `MCP 서버` 영역에 `서버 추가` 버튼을 복원했고, 목록 카드 안에서 `활성화/비활성화``삭제`까지 바로 관리할 수 있게 옮겼습니다.
@@ -1094,3 +1212,350 @@ MIT License
- `claw-code``SessionPreview`/`PreviewBox` 흐름을 참고해 AX Agent 프리뷰도 같은 시각 언어로 정리했다. 새 파일 [AgentPreviewSurfaceFactory.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/AgentPreviewSurfaceFactory.cs)를 추가해 권한 프리뷰 카드의 제목/요약/본문 박스 구조를 공통화했다. - `claw-code``SessionPreview`/`PreviewBox` 흐름을 참고해 AX Agent 프리뷰도 같은 시각 언어로 정리했다. 새 파일 [AgentPreviewSurfaceFactory.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/AgentPreviewSurfaceFactory.cs)를 추가해 권한 프리뷰 카드의 제목/요약/본문 박스 구조를 공통화했다.
- [PermissionRequestWindow.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/PermissionRequestWindow.cs)의 일반 프리뷰, 파일 편집 프리뷰, 파일 생성 2열 프리뷰를 이 공통 surface로 맞춰 `preview box` 언어를 통일했다. - [PermissionRequestWindow.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/PermissionRequestWindow.cs)의 일반 프리뷰, 파일 편집 프리뷰, 파일 생성 2열 프리뷰를 이 공통 surface로 맞춰 `preview box` 언어를 통일했다.
- [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml), [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)의 우측 파일 프리뷰 패널에는 파일명/경로/형식·크기 메타를 보여주는 헤더를 추가하고, 텍스트 프리뷰 본문도 별도 bordered preview box 안에 렌더되게 바꿨다. - [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml), [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)의 우측 파일 프리뷰 패널에는 파일명/경로/형식·크기 메타를 보여주는 헤더를 추가하고, 텍스트 프리뷰 본문도 별도 bordered preview box 안에 렌더되게 바꿨다.
- 업데이트: 2026-04-06 00:35 (KST)
- AX Agent 채팅/코워크 프리셋 카드에서 기본 ToolTip을 제거해 hover 시 깜빡이듯 반복되던 현상을 줄였습니다.
- 업데이트: 2026-04-06 00:42 (KST)
- 코드 탭 하단 Git 브랜치 버튼을 상태판 형태에서 단순한 브랜치 선택 버튼 형태로 정리했습니다.
- 업데이트: 2026-04-05 22:26 (KST)
- 코드 탭에서는 폴더 문서/파일을 기본 작업 전제로 삼도록 `폴더 내 데이터 활용`을 항상 `적극 활용(active)`으로 강제했다. 하단 채팅창의 데이터 활용 버튼은 코드 탭에서 숨기고, 내부 설정 오버레이의 같은 옵션도 코드 탭에서는 노출하지 않게 정리했다.
- 코워크/코드 탭의 사용자 메시지도 assistant 메시지와 같은 파일 경로 강조 렌더러를 쓰도록 바꿔, 폴더 하위 파일명이나 경로를 입력하면 채팅 본문에서 파란색으로 인식되게 맞췄다.
- 업데이트: 2026-04-05 22:29 (KST)
- AX Agent 채팅/코워크 프리셋을 선택할 때, 메시지도 입력도 없는 fresh conversation인데도 `새 대화`가 반복 생성되던 흐름을 보정했다. 이제 현재 대화가 이미 있으면 그 빈 대화에 프리셋만 적용하고, 실제 대화가 아예 없는 경우에만 새 대화를 만든다.
- 업데이트: 2026-04-05 22:32 (KST)
- AX Agent 내부 설정 개발자 탭의 `워크플로우 시각화`, `전체 호출·토큰 합계 표시`, `감사 로그` 토글이 누르자마자 꺼지는 문제를 수정했다. 각 토글의 변경 이벤트를 연결해 즉시 저장되도록 보정했다.
- 업데이트: 2026-04-05 22:36 (KST)
- AX Agent 내부 설정 `도구 훅 실행 타임아웃``등록된 훅` 영역에서 잘림이 보이던 레이아웃을 보정했다. 슬라이더/값 배지 컬럼 폭과 `훅 추가` 버튼 최소 폭을 넉넉히 늘려 텍스트와 컨트롤이 서로 밀리지 않게 정리했다.
- 업데이트: 2026-04-05 22:40 (KST)
- AX Agent 테마를 다시 점검해 기존 `Claw / Codex / Slate` 외에 `Nord`, `Ember` 2종을 추가했다. `Nord`는 차분한 블루그레이 업무형 톤, `Ember`는 따뜻한 앰버 문서 작업 톤으로 구성했다.
- 내부 설정 `테마 스타일` 카드에서도 새 프리셋을 바로 선택할 수 있게 연결했고, `system / light / dark` 모드 조합으로 같은 방식으로 적용되도록 정리했다.
- 업데이트: 2026-04-06 00:58 (KST)
- AX Agent transcript 품질 향상을 위해 렌더 책임을 실제로 분리했다. [ChatWindow.InlineInteractions.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.InlineInteractions.cs), [ChatWindow.TaskSummary.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.TaskSummary.cs)를 추가해 `의견 요청`, `계획 승인`, `작업 요약` UI 로직을 메인 [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)에서 분리했다.
- [PermissionRequestPresentationCatalog.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/PermissionRequestPresentationCatalog.cs), [ToolResultPresentationCatalog.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/ToolResultPresentationCatalog.cs)를 추가해 권한 요청과 도구 결과를 `명령/네트워크/파일`, `성공/실패/거부/취소` 기준으로 나눠 transcript badge에 재사용하도록 정리했다.
- [AppStateService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/AppStateService.cs)에 `OperationalStatusPresentationState``GetOperationalStatusPresentation(...)`을 추가해 status/runtime summary 계산을 전용 요약 모델로 한 번 더 계층화했다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)의 상태선 갱신은 이제 이 presentation summary를 소비한다.
- 업데이트: 2026-04-06 01:12 (KST)
- AX Agent 코워크/코드의 `폴더 내 문서 활용`을 사용자 옵션에서 제거했다. [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml), [SettingsWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/SettingsWindow.xaml), [AgentSettingsWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/AgentSettingsWindow.xaml) 에서 하단 버튼, 내부 설정 행, 구형 설정창 항목을 걷어냈다.
- 런타임은 옵션이 아닌 자동 정책으로 유지한다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에서 채팅은 `none`, 코워크는 `passive`, 코드는 `active`를 자동 적용하고, 더 이상 오버레이 저장 시 `FolderDataUsage`를 사용자 선택값으로 저장하지 않는다.
- 업데이트: 2026-04-06 01:24 (KST)
- `claw-code` 기준 transcript 품질 향상을 위해 권한 요청/도구 결과/도구 이름 display catalog를 다시 정리했다. [AgentTranscriptDisplayCatalog.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/AgentTranscriptDisplayCatalog.cs)는 파일/문서/빌드/Git/웹/스킬/질문 카테고리를 더 명확한 한국어 display name과 badge label로 분류하고, [PermissionRequestPresentationCatalog.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/PermissionRequestPresentationCatalog.cs)는 `명령 실행 / 웹 요청 / 스킬 실행 / 의견 요청 / 파일 수정 / 파일 접근` 권한 요청을 타입별 presentation으로 나누도록 보강했다.
- [ToolResultPresentationCatalog.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/ToolResultPresentationCatalog.cs)는 `success / error / reject / cancel`을 도구 종류에 따라 `파일 작업 완료`, `빌드/테스트 실패`, `웹 요청 거부`처럼 더 읽기 쉬운 결과 라벨로 바꾸도록 확장했다.
- transcript renderer 분리 2차로 [ChatWindow.AgentEventRendering.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.AgentEventRendering.cs)를 추가해 `CreateCompactEventPill`, `AddAgentEventBanner`, `GetDecisionBadgeMeta`를 메인 [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 밖으로 옮겼다. 이제 메인 파일은 대화 흐름과 상태 처리에 더 집중하고, 이벤트 배너 렌더는 별도 partial에서 관리한다.
- 업데이트: 2026-04-06 09:36 (KST)
- [OperationalStatusPresentationCatalog.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/OperationalStatusPresentationCatalog.cs)를 추가해 compact strip/quick strip의 색상, 노출 조건, 빠른 상태 배지 문구 계산을 전용 카탈로그로 분리했다. [AppStateService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/AppStateService.cs)의 `GetOperationalStatusPresentation(...)`은 이제 상태 집계 후 카탈로그 결과만 반환한다.
- [PermissionRequestPresentationCatalog.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/PermissionRequestPresentationCatalog.cs), [ToolResultPresentationCatalog.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/ToolResultPresentationCatalog.cs)에 `Kind`, `Description` 메타를 추가했다. [ChatWindow.AgentEventRendering.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.AgentEventRendering.cs)는 이제 이벤트 요약이 비어 있을 때 이 설명을 transcript fallback으로 사용한다.
- [PermissionModePresentationCatalog.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/PermissionModePresentationCatalog.cs) 에서 제거된 계획 모드 잔재를 걷어내고, [ChatWindow.PermissionPresentation.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.PermissionPresentation.cs)의 권한 선택 UI와 상단 배너도 `권한 요청 / 편집 자동 승인 / 권한 건너뛰기 / 읽기 전용`만 다루도록 정리했다.
- 업데이트: 2026-04-06 09:44 (KST)
- inline interaction renderer를 `의견 요청``계획 승인`으로 다시 분리했다. [ChatWindow.UserAskPresentation.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.UserAskPresentation.cs)에 사용자 질문 카드 렌더를, [ChatWindow.PlanApprovalPresentation.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.PlanApprovalPresentation.cs)에 계획 승인/상세창 연동 흐름을 옮겨 [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)의 메시지 타입 책임을 더 줄였다.
- 이번 단계까지 완료된 계획 항목은 `상태선 카탈로그화`, `권한/도구 결과 카탈로그 정교화`, `권한 UI 정리`, `의견 요청/계획 승인 renderer 분리`다. 남은 큰 축은 `footer/composer를 더 작업 바 중심으로 정리``회귀 프롬프트 세트의 개발 루틴 고정`이다.
- 업데이트: 2026-04-06 09:58 (KST)
- footer/composer 구조 개선의 다음 단계로 Git 브랜치 팝업과 footer 요약 helper를 [ChatWindow.GitBranchPresentation.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.GitBranchPresentation.cs) 로 분리했다. [ChatWindow.FooterPresentation.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.FooterPresentation.cs)는 이제 폴더 바 상태와 선택된 프리셋 안내처럼 footer의 현재 상태 동기화 책임만 남긴다.
- [AX_AGENT_REGRESSION_PROMPTS.md](/E:/AX%20Copilot%20-%20Codex/docs/AX_AGENT_REGRESSION_PROMPTS.md)를 개발 루틴 문서로 강화했다. Chat/Cowork/Code 공통 프롬프트 세트에 `blank-reply`, `duplicate-banner`, `bad-approval-flow`, `queue-drift`, `restore-drift`, `status-noise` 실패 분류를 붙여, runtime/transcript 변경 뒤 어떤 묶음을 확인해야 하는지 바로 쓸 수 있게 정리했다.
- 업데이트: 2026-04-06 10:07 (KST)
- 프리셋 카드와 주제 선택 흐름을 [ChatWindow.TopicPresetPresentation.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.TopicPresetPresentation.cs) 로 분리했다. `BuildTopicButtons`, `ShowCustomPresetDialog`, `ShowCustomPresetContextMenu`, `SelectTopic`이 메인 [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 밖으로 이동해, 프리셋 UI와 대화 orchestration의 책임 경계가 더 분명해졌다.
- 업데이트: 2026-04-06 10:18 (KST)
- 좌측 대화 목록 렌더를 [ChatWindow.ConversationListPresentation.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.ConversationListPresentation.cs) 로 분리했다. `RefreshConversationList`, `RenderConversationList`, `AddLoadMoreButton`, `BuildConversationSpotlightItems`, `AddGroupHeader`, `AddConversationItem`이 메인 [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 밖으로 이동해, 메인 창은 transcript/runtime orchestration에 더 집중하고 목록 UI는 별도 presentation surface에서 관리되게 정리했다.
- 업데이트: 2026-04-06 10:27 (KST)
- transcript 메시지 row 조립을 [ChatWindow.MessageBubblePresentation.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.MessageBubblePresentation.cs) 로 분리했다. `AddMessageBubble(...)`가 메인 [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 밖으로 이동해, 사용자/assistant bubble, 분기 컨텍스트 카드, 액션 바와 메타 row 조립이 별도 presentation surface에서 관리되게 정리했다.
- 업데이트: 2026-04-06 10:36 (KST)
- timeline 조립 helper를 [ChatWindow.TimelinePresentation.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.TimelinePresentation.cs) 로 분리했다. `RenderMessages()`가 직접 처리하던 visible 메시지 필터링, execution event 노출 집계, timestamp/order 기반 timeline action 조립을 helper 메서드로 옮겨 메인 렌더 루프를 더 단순화했다.
- 업데이트: 2026-04-06 10:44 (KST)
- timeline presentation 정리를 이어서 진행했다. [ChatWindow.TimelinePresentation.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.TimelinePresentation.cs) 에 `CreateTimelineLoadMoreCard`, `ToAgentEvent`, `IsCompactionMetaMessage`, `CreateCompactionMetaCard`까지 옮겨 `RenderMessages()` 주변의 timeline helper를 한 파일로 모았다.
- 업데이트: 2026-04-06 10:56 (KST)
- 대화 목록 관리 interaction을 [ChatWindow.ConversationManagementPresentation.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.ConversationManagementPresentation.cs) 로 분리했다. 제목 인라인 편집 `EnterTitleEditMode(...)` 와 대화 메뉴 `ShowConversationMenu(...)`가 메인 [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 밖으로 이동해, 고정/이름 변경/카테고리 변경/삭제 같은 목록 관리 UI 책임도 별도 presentation surface에서 다루게 정리했다.
- 이 단계까지 완료된 구조 개선은 상태선/권한/도구 결과 카탈로그화, inline ask/plan 분리, footer/Git/preset/list/message/timeline 분리, 그리고 conversation management 분리까지다. 이제 남은 건 큰 구조 개선이 아니라 개별 surface polish와 후속 UX 고도화 수준이다.
- 업데이트: 2026-04-06 11:03 (KST)
- 좌측 sidebar의 검색/새 대화 interaction을 [ChatWindow.SidebarInteractionPresentation.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.SidebarInteractionPresentation.cs) 로 분리했다. 검색 트리거 hover, 새 대화 hover, 검색 열기/닫기 애니메이션이 메인 [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 밖으로 이동해, 메인 창은 runtime/transcript orchestration에 더 집중하고 sidebar UX는 별도 presentation surface에서 다루게 정리했다.
- 큰 구조 개선 계획 기준으로는 이제 sidebar interaction까지 분리 완료 상태이며, 이후 남는 작업은 공통 시각 언어 polish나 실제 사용 흐름 기반 미세 UX 튜닝 같은 후속 개선 영역이다.
- 업데이트: 2026-04-06 11:11 (KST)
- 좌측 대화 목록의 필터/정렬 interaction을 [ChatWindow.ConversationFilterPresentation.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.ConversationFilterPresentation.cs) 로 분리했다. 실행 중 보기, 최근/활동 정렬, 대화 목록 선호 저장/복원, 관련 버튼 UI 상태 갱신이 메인 [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 밖으로 이동해 sidebar 상태 표현 책임이 더 응집도 있게 정리됐다.
- 이 단계까지 누적 완료된 구조 개선은 상태선/권한/도구 결과 카탈로그화, inline ask/plan 분리, footer/Git/preset/list/message/timeline/conversation management/sidebar interaction/filter 분리까지다. 이제 남는 건 큰 분리가 아니라 실제 시나리오 기반 polish와 공통 시각 언어 고도화다.
- 업데이트: 2026-04-06 11:20 (KST)
- preview/file browser의 popup과 row 스타일을 공통 surface helper로 통일했다. [ChatWindow.SurfaceVisualPresentation.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.SurfaceVisualPresentation.cs)를 추가해 popup container, popup menu item, separator, file tree header를 공통 helper로 만들고, [ChatWindow.PreviewPresentation.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.PreviewPresentation.cs) 와 [ChatWindow.FileBrowserPresentation.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.FileBrowserPresentation.cs) 가 같은 surface 언어를 쓰도록 맞췄다.
- 이 단계는 큰 구조 분리 이후의 visual language polish 1차로, preview와 file browser가 서로 다른 위젯처럼 보이던 차이를 줄이고 이후 공통 popup/surface 확장을 쉽게 하는 기반을 마련했다.
- 업데이트: 2026-04-06 11:27 (KST)
- popup 계열 visual language 통일을 이어서 진행했다. [ChatWindow.PopupPresentation.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.PopupPresentation.cs)의 공통 popup factory와 menu item 생성이 surface helper를 사용하도록 바뀌었고, [ChatWindow.SelectionPopupPresentation.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.SelectionPopupPresentation.cs), [ChatWindow.PermissionPresentation.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.PermissionPresentation.cs) 도 선택 row의 border/hover/background 규칙을 같은 언어로 맞췄다.
- 이 단계까지로 preview, file browser, worktree 선택, 권한 모드 popup이 거의 같은 시각 규칙을 공유하게 됐다. 남은 polish는 세부 spacing이나 색 강조처럼 더 미세한 조정 수준이다.
- 업데이트: 2026-04-06 11:34 (KST)
- footer 작업 바의 chip 버튼 시각 언어를 맞췄다. [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml)에 `FooterChipBtn` 스타일을 추가하고, 하단의 `권한`, `Git 브랜치` 버튼이 같은 라운드/테두리/패딩 규칙을 쓰도록 정리했다.
- 이 단계는 구조 분리 이후의 visual polish 후속 작업으로, footer의 기능 버튼이 각각 다른 컨트롤처럼 보이던 차이를 줄이고 작업 바 전체를 하나의 도구 행처럼 느끼게 만드는 데 초점을 맞췄다.
- 업데이트: 2026-04-06 11:52 (KST)
- `claw-code` 대비 남아 있던 `도구/권한/스킬 표현 정교화` 1차를 반영했다. [PermissionRequestPresentationCatalog.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/PermissionRequestPresentationCatalog.cs)는 `bash`, `powershell`, `command`, `web_fetch`, `mcp`, `skill`, `question`, `file_edit`, `file_write`, `git`, `document`, `filesystem`까지 세분화하고 `ActionHint`, `Severity`, `RequiresPreview` 메타를 추가했다.
- [ToolResultPresentationCatalog.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/ToolResultPresentationCatalog.cs)는 기존 `success / error / reject / cancel`에 더해 `approval_required`, `partial` 상태와 `FollowUpHint`, `NeedsAttention` 메타를 추가해 후속 안내 품질을 높일 기반을 마련했다.
- [SkillGalleryWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/SkillGalleryWindow.xaml.cs)는 스킬 상세에 `모델`, `추론 강도`, `실행 컨텍스트`, `에이전트`, `모델 호출 비활성화`, `추천 상황`을 표시하도록 확장해, AX 스킬도 `claw-code`처럼 실행 정책이 보이는 방향으로 정리했다.
- 업데이트: 2026-04-06 13:01 (KST)
- [ChatWindow.AgentEventRendering.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.AgentEventRendering.cs)에 `AppendAgentEventPresentationMeta(...)`와 공통 chip helper를 추가해, 권한 요청/도구 결과 metadata를 실제 transcript 카드에 반영했다.
- 권한 요청 이벤트는 이제 `ActionHint`, `Severity`, `RequiresPreview`를 이용해 `미리보기 권장`, `주의 필요`, `검토 권장` 같은 보조 chip과 안내 문구를 보여준다.
- 도구 결과 이벤트는 `FollowUpHint`, `NeedsAttention`, `StatusKind`를 이용해 `확인 필요`, `승인 후 계속`, `후속 점검` 같은 후속 행동 중심 안내를 transcript 안에서 바로 보여주도록 정리했다.
- 업데이트: 2026-04-06 13:08 (KST)
- 같은 metadata가 모두 회색 chip으로 보이던 부분을 보강했다. [ChatWindow.AgentEventRendering.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.AgentEventRendering.cs) 의 보조 chip 색을 `주의 필요=빨강`, `검토 권장/후속 점검=앰버`, `미리보기 권장=파랑`, `승인 후 계속=오렌지`로 나눠, 권한 요청과 도구 결과 상태가 시각적으로도 더 즉시 구분되게 맞췄다.
- 업데이트: 2026-04-06 13:14 (KST)
- [ChatWindow.AgentEventRendering.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.AgentEventRendering.cs)에 권한 요청/도구 결과 카테고리 chip을 추가했다. 이제 `명령 실행`, `파일 수정`, `웹 요청`, `Git`, `문서`, `스킬`, `MCP` 같은 종류가 상태 chip과 함께 보여서, 어떤 성격의 요청/결과인지 transcript에서 더 빨리 파악할 수 있다.
- 업데이트: 2026-04-06 13:20 (KST)
- [ChatWindow.AgentEventRendering.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.AgentEventRendering.cs)의 metadata 안내를 callout 구조로 바꿨다. 권한 요청은 `확인 포인트`, 도구 결과는 `다음 권장 작업` 카드형 안내로 보여줘, 같은 transcript 안에서도 요청과 결과의 UX가 더 분리되어 보이게 정리했다.
- 업데이트: 2026-04-06 13:26 (KST)
- 파일 경로가 있는 권한 요청/도구 결과 카드에는 [ChatWindow.AgentEventRendering.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.AgentEventRendering.cs) 에서 `프리뷰 열기` 액션을 직접 붙였다. 이제 `미리보기 권장` 상태나 파일 기반 결과에서 transcript 카드만 보고 끝나는 것이 아니라, 바로 우측 preview panel을 열어 확인 흐름으로 이어질 수 있다.
- 업데이트: 2026-04-06 13:31 (KST)
- [ChatWindow.AgentEventRendering.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.AgentEventRendering.cs)의 callout을 상태별 제목/강조선 구조로 다듬었다. 권한 요청은 `확인 포인트`, 승인 완료는 `적용 내용`, 도구 결과는 `승인 필요`, `오류 확인`, `부분 완료 점검`, `다음 권장 작업`처럼 제목이 달라져 카드 의미가 더 즉시 읽히게 정리했다.
- 업데이트: 2026-04-06 13:36 (KST)
- 파일 기반 transcript 카드의 액션 라벨도 상태별로 다르게 정리했다. [ChatWindow.AgentEventRendering.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.AgentEventRendering.cs) 에서 권한 요청은 `변경 확인`, `작성 내용 보기`, 도구 결과는 `결과 보기`, `부분 결과 보기`, `오류 파일 보기`, `승인 전 미리보기`처럼 더 맥락에 맞는 버튼 라벨을 사용한다.
- 업데이트: 2026-04-06 14:06 (KST)
- IBM 연동형 vLLM 인증 경로를 점검한 결과, 기존 AX Agent는 등록 모델 인증 방식으로 `Bearer``CP4D`만 지원하고 `IBM IAM` 토큰 교환은 지원하지 않았다. 이 때문에 IBM Cloud 계열 watsonx/vLLM 게이트웨이에 API 키를 직접 Bearer로 보내면 `인증 실패 - API 키가 유효하지 않습니다.` 오류가 발생할 수 있었다.
- [IbmIamTokenService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/IbmIamTokenService.cs)를 추가하고 [LlmService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/LlmService.cs)에 `ibm_iam` 인증 타입을 연결해, 등록 모델의 API 키를 IBM IAM access token으로 교환한 뒤 Bearer 헤더에 넣도록 보강했다.
- [ModelRegistrationDialog.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ModelRegistrationDialog.cs), [SettingsViewModel.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/ViewModels/SettingsViewModel.cs), [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs), [AppSettings.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Models/AppSettings.cs)도 함께 갱신해 등록 모델 인증 방식에 `IBM IAM (토큰 교환)`이 보이고 저장/표시되도록 맞췄다.
- 업데이트: 2026-04-06 15:26 (KST)
- AX Agent 창을 PC에서 드래그로 이동할 때 버벅이던 문제를 줄이기 위해 [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)에 `WM_ENTERSIZEMOVE` / `WM_EXITSIZEMOVE` 기반 이동·리사이즈 감지를 추가했다.
- 이동/리사이즈 루프 중에는 창 루트를 `BitmapCache`로 묶고, `SizeChanged`에 연결돼 있던 `UpdateTopicPresetScrollMode()`, `UpdateResponsiveChatLayout()`, `RenderMessages()` 재계산은 잠시 지연시킨 뒤 루프 종료 시 한 번만 반영하도록 바꿨다.
- 이 변경으로 창을 끌 때마다 무거운 transcript/레이아웃이 반복 갱신되던 경로를 줄여, AX Agent 창 이동 체감 속도를 개선했다.
- 업데이트: 2026-04-06 15:35 (KST)
- AX Agent 내부 설정 공통 탭의 섹션 순서를 다시 정리했다. [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 에서 `서비스와 모델` 바로 아래에 `등록 모델 관리`를 연달아 배치해 흐름을 자연스럽게 맞췄다.
- `운영 모드``대화 관리 / 대화 보관 기간 / 저장 공간` 아래쪽으로 이동시키고, 섹션 경계도 다시 `BorderThickness="0,0,0,1"` 기반으로 정리해 구분선이 끊기지 않도록 맞췄다.
- 업데이트: 2026-04-06 15:41 (KST)
- 채팅/코워크 빈 상태 화면의 세로 정렬 기준을 조정했다. [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 에서 상단 아이콘, 제목, 설명, 프리셋 목록을 하나의 세로 묶음으로 다시 구성해 화면 높이가 늘어나도 함께 상하 중앙 정렬되도록 수정했다.
- 이전처럼 프리셋 카드만 중앙에 오고 상단 설명 블록은 위쪽에 남아 보이던 레이아웃 불균형을 줄여, 빈 상태 화면 전체가 더 자연스럽게 가운데 정렬되도록 맞췄다.
- 업데이트: 2026-04-06 15:48 (KST)
- 일정 시간마다 표시되는 격려문구 알림 팝업의 자동 닫힘 경로를 점검하고 [ReminderPopupWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ReminderPopupWindow.xaml.cs)를 보강했다.
- 기존에는 `DispatcherTimer` 틱만으로 카운트다운과 닫힘을 함께 처리했는데, UI 틱이 밀리면 팝업 종료가 늦어질 여지가 있었다. 이제 카운트다운 표시와 실제 자동 종료를 분리해 `Task.Delay + CancellationToken` 기반 종료를 추가하고, 남은 시간은 절대 시각 기준으로 계산하도록 바꿨다.
- 이 변경으로 지정 시간이 지난 뒤에도 격려 팝업이 남아 있는 증상을 줄이고, 자동 닫힘이 더 안정적으로 동작하도록 맞췄다.
- 업데이트: 2026-04-06 16:02 (KST)
- 코워크 문서 생성이 항상 비슷한 HTML로 수렴하던 원인을 줄이기 위해 [DocumentPlannerTool.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/DocumentPlannerTool.cs), [DocumentAssemblerTool.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/DocumentAssemblerTool.cs)의 기본 포맷/무드 선택 로직을 재정리했다.
- 이제 인자 없이 문서 생성 도구를 호출해도 무조건 `html + professional`로 고정되지 않고, `DefaultOutputFormat`, `DefaultMood`, 문서 유형(`proposal`, `analysis`, `manual`, `minutes` 등), 요청 주제 키워드를 함께 보고 `docx/html/markdown``corporate/dashboard/minimal/creative/professional`을 자동 선택한다.
- 이 변경으로 AX의 문서 생성 체인이 `claw-code`처럼 요청 기반 자유 작성 흐름에 더 가까워졌고, 코워크 결과물이 항상 비슷한 보고서형 HTML로 반복되던 현상을 줄일 기반을 마련했다.
- 업데이트: 2026-04-06 16:14 (KST)
- 배포판 보호 수준을 점검한 뒤 [AxCopilot.csproj](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/AxCopilot.csproj) Release 설정에 `Optimize`, `PublishSingleFile`, `EnableCompressionInSingleFile`, `IncludeNativeLibrariesForSelfExtract`, `PublishReadyToRun`을 추가했다.
- [build.bat](/E:/AX%20Copilot%20-%20Codex/build.bat) 도 같은 publish 속성을 명시적으로 넘기도록 갱신해, 배치 파일로 배포판을 만들 때 실제로 `Release + self-contained + single-file + ReadyToRun` 조합이 적용되도록 맞췄다.
- 현재 저장소에는 외부 난독화기(`tools\\obfuscator`)가 없어서 완전한 디컴파일 방지는 아니지만, 심볼 제거 수준에서 한 단계 더 강화된 배포 출력이 나오도록 정리했다.
- 업데이트: 2026-04-06 16:20 (KST)
- single-file 배포를 켜면서 생긴 호환 경고도 함께 정리했다. [WebSearchHandler.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Handlers/WebSearchHandler.cs)는 `Assembly.Location` 대신 `AppContext.BaseDirectory`를 사용하게 바꿨고, [SettingsWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/SettingsWindow.xaml.cs)는 버전 표시를 `AssemblyInformationalVersionAttribute` 기준으로 읽도록 수정했다.
- 이 수정까지 반영한 뒤 `dotnet build src/AxCopilot/AxCopilot.csproj -c Release -v minimal -p:OutputPath=bin\\verify\\ -p:IntermediateOutputPath=obj\\verify\\` 기준 경고 0 / 오류 0을 다시 확인했다.
- 업데이트: 2026-04-06 16:28 (KST)
- 채팅/코워크/코드 입력창의 첨부/전송 버튼을 다시 심플한 컴포저 전용 스타일로 정리했다. [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml)에 `ComposerIconBtn`, `ComposerSendBtn` 스타일을 추가해 버튼 크기를 원복 수준으로 줄이고, 첨부와 전송 모두 상하좌우 중앙 정렬된 단순한 시각 언어를 사용하도록 맞췄다.
- 첨부 버튼은 과하게 커졌던 `48x48`에서 `34x34` 기준으로 줄였고, 전송 버튼도 같은 축의 `36x36` 원형 버튼으로 재구성했다. 전송 아이콘은 과한 MDL2 느낌 대신 단순한 상승 화살표 표현으로 바꿔, 참고 이미지처럼 더 담백한 조합이 되도록 정리했다.
- 업데이트: 2026-04-06 16:39 (KST)
- AX Agent 내부 설정 오른쪽 본문 [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml)의 `ScrollViewer``IsDeferredScrollingEnabled`, `PanningMode`, `BitmapCache`를 적용해 스크롤 시 느껴지던 버벅임을 줄였다.
- `저장 공간` 섹션의 `새로고침`, `대화 삭제`, `저장 공간 줄이기`는 기본 `Button` 대신 오버레이 전용 커스텀 액션 버튼 스타일(`OverlayActionBtn`)로 교체해 내부 설정 전체와 같은 시각 언어를 사용하도록 정리했다.
- 업데이트: 2026-04-06 16:44 (KST)
- AX Agent 내부 설정 공통 탭의 `운영 모드` 섹션 구분선을 아래쪽에서 위쪽으로 옮겼다. [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 의 `OverlaySectionOperationMode``BorderThickness="0,1,0,0"` 기준으로 바꿔 저장 공간 섹션 아래에 선이 남지 않고, 운영 모드 시작선으로 보이도록 정리했다.
- 업데이트: 2026-04-06 16:49 (KST)
- AX Agent 내부 설정 공통 탭에서 `서비스와 모델``등록 모델 관리` 사이에 있던 구분선을 제거했다. [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml) 의 `OverlaySectionService` 하단 border를 없애고 간격만 남겨, 같은 흐름의 설정이 끊기지 않고 이어 보이도록 맞췄다.
- 업데이트: 2026-04-06 16:55 (KST)
- IBM/CP4D 계열 연결 점검 결과, 일부 환경은 `/icp4d-api/v1/authorize` 호출 시 `username + password`가 아니라 `username + api_key` JSON 본문을 요구하는 것을 확인했다.
- [Cp4dTokenService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Cp4dTokenService.cs) 에서 CP4D 토큰 요청을 먼저 `username + password`, 실패 시 `username + api_key`로 한 번 더 시도하도록 보강해, IBM 연결형 vLLM 환경 호환성을 높였다.
- 업데이트: 2026-04-06 17:01 (KST)
- 모델 등록 단계에서 IBM/CP4D 인증 방식을 명확히 고를 수 있게 분기했다. [ModelRegistrationDialog.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ModelRegistrationDialog.cs)에 `CP4D (사용자 이름 + 비밀번호)``CP4D (사용자 이름 + API 키)` 항목을 따로 추가하고, 선택에 따라 마지막 입력 필드 라벨이 `비밀번호` 또는 `API 키`로 바뀌도록 정리했다.
- [LlmService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/LlmService.cs), [SettingsViewModel.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/ViewModels/SettingsViewModel.cs), [AppSettings.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Models/AppSettings.cs) 도 함께 갱신해 `cp4d_password`, `cp4d_api_key` 저장값을 공식 지원하고, 기존 `cp4d` 값은 비밀번호 방식으로 계속 호환되게 유지했다.
- 업데이트: 2026-04-06 17:09 (KST)
- 런처 하단에 자동으로 붙는 빠른 실행 칩을 별도 사용자 설정으로 분리했다. [AppSettings.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Models/AppSettings.cs), [SettingsViewModel.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/ViewModels/SettingsViewModel.cs), [SettingsWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/SettingsWindow.xaml)에 `빠른 실행 칩 표시` 옵션을 추가했고, 기본값은 비활성으로 두었다.
- [LauncherViewModel.LauncherExtras.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/ViewModels/LauncherViewModel.LauncherExtras.cs) 에서 이 설정이 꺼져 있으면 하단 빠른 실행 칩을 로드하지 않도록 바꿨다.
- [LauncherWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/LauncherWindow.xaml) 에서는 하단 빠른 실행 칩 블록 자체를 중앙 정렬 기준으로 재배치하고, 각 칩 내부도 세로 중앙 정렬과 최소 높이를 맞춰 여러 개가 나타나도 정중앙에 더 가깝게 보이도록 정리했다.
- 업데이트: 2026-04-06 17:18 (KST)
- AX Copilot가 유휴 상태에서도 CPU를 3~5% 정도 쓰는 원인을 점검한 뒤, 상시 백그라운드 경로 두 군데를 줄였다. [App.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/App.xaml.cs) 에서 `SchedulerService`는 앱 시작 즉시 무조건 타이머를 돌리지 않고 `Refresh()`로 활성 일정이 있을 때만 시작하도록 바꿨다.
- 같은 파일에서 `FileDialogWatcher`도 더 이상 앱 시작 시 무조건 시스템 전역 WinEvent 훅을 걸지 않고, `파일 대화상자 통합` 설정이 켜져 있을 때만 시작되도록 조정했다. 설정 저장 시 `SettingsChanged`를 받아 watcher/timer 상태를 즉시 다시 계산하도록 연결했다.
- [SchedulerService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/SchedulerService.cs) 도 함께 정리해, 활성 일정이 하나도 없으면 타이머를 시작하지 않고, 실행 중에도 일정이 모두 비활성화되면 스스로 타이머를 정지하도록 바꿨다. 이 변경으로 런처와 AX Agent 창이 모두 닫힌 유휴 상태에서 불필요한 CPU 깨우기를 줄였다.
- 업데이트: 2026-04-06 17:24 (KST)
- 선택 텍스트 AI 명령의 기본값을 보수적으로 다시 조정했다. [AppSettings.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Models/AppSettings.cs), [SettingsViewModel.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/ViewModels/SettingsViewModel.cs) 에서 `선택 텍스트 명령 사용` 기본값을 `false`로 바꾸고, 활성 AI 명령 목록도 기본은 빈 리스트가 되도록 변경했다.
- [SettingsWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/SettingsWindow.xaml.cs) 의 `BuildTextActionCommandsPanel()`에서 `최소 1개 유지`를 강제하던 로직을 제거해 `다시 쓰기`를 포함한 모든 텍스트 AI 명령을 실제로 비활성화할 수 있게 수정했다.
- [SettingsWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/SettingsWindow.xaml) 의 안내 문구도 현재 동작 기준으로 갱신해, 모든 명령을 꺼두면 선택 텍스트 팝업에는 `AX Commander 열기`만 남는다는 점을 명확히 안내하도록 정리했다.
- 업데이트: 2026-04-06 17:35 (KST)
- 앱이 아무 창도 열지 않은 유휴 상태에서 PC를 무겁게 만들던 추가 초기화 경로를 줄였다. [App.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/App.xaml.cs) 에서 앱 시작 직후 숨겨진 [ChatWindow](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 를 미리 생성하던 `PrewarmChatWindow()` 호출을 제거해, AX Agent를 실제로 열기 전에는 무거운 UI 트리를 만들지 않도록 바꿨다.
- 같은 파일에서 [IndexService](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/IndexService.cs) 의 전체 인덱스 빌드와 `FileSystemWatcher` 시작도 앱 시작 시 즉시 수행하지 않고, 사용자가 실제로 런처를 열 때 `EnsureIndexWarmupStarted()`로 한 번만 지연 시작하도록 바꿨다.
- 이 변경으로 런처/AX Agent를 열지 않은 상태에서 불필요한 전체 파일 스캔과 감시 훅, 숨겨진 대형 창 초기화가 줄어들어 PC 전체 체감 부하를 더 낮추도록 정리했다.
- 업데이트: 2026-04-06 17:43 (KST)
- 추가로 앱 시작 시 [LauncherWindow](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/LauncherWindow.xaml.cs) 를 미리 생성하지 않고, 실제로 런처를 처음 열 때만 `EnsureLauncherCreated()`로 만들도록 바꿨다. 이로써 보이지 않는 상태의 런처 UI, 바인딩, 보조 타이머 준비 비용을 평소에는 지연시켰다.
- [App.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/App.xaml.cs) 에서 트레이 메뉴의 `PrepareForDisplay()` 사전 렌더 호출도 제거해, 사용하지도 않는 트레이 팝업 레이아웃 계산을 앱 시작 직후 강제로 하지 않도록 정리했다.
- 업데이트: 2026-04-06 17:52 (KST)
- 런처 표시 체감 속도를 유지하기 위해 [LauncherWindow](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/LauncherWindow.xaml.cs) 사전 생성은 다시 복원했다. 대신 무거운 후보를 색인으로 더 좁히기 위해, [App.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/App.xaml.cs)의 인덱스 워밍업 진입점을 런처 표시 시점이 아니라 실제 검색 시점으로 옮겼다.
- [LauncherViewModel.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/ViewModels/LauncherViewModel.cs) 의 `SearchAsync(...)` 시작 시에만 `EnsureIndexWarmupStarted()`를 호출하도록 바꿔, 사용자가 런처를 단순 호출만 할 때는 전체 인덱스 스캔과 파일 감시가 돌지 않게 정리했다.
- 업데이트: 2026-04-06 18:02 (KST)
- IBM 연결형 vLLM에서 `model_id` 또는 `mode`를 body에 넣지 말라는 응답이 오던 문제를 수정했다. [LlmService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/LlmService.cs)에 IBM/CP4D 인증 + `/ml/v1/deployments/.../text/chat` 계열 엔드포인트를 감지하는 분기를 추가하고, 이 경우 일반 OpenAI 호환 body 대신 `messages + parameters` 형태의 IBM deployment chat body를 사용하도록 바꿨다.
- 같은 파일에서 IBM deployment chat 경로는 `/v1/chat/completions`를 더 이상 강제로 붙이지 않고, 스트리밍 여부에 따라 `/text/chat` 또는 `/text/chat_stream` URL을 사용하도록 정리했다. 응답 파싱도 `results[].generated_text`, `output_text`, `choices[].message.content`를 함께 지원하게 확장했다.
- [LlmService.ToolUse.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/LlmService.ToolUse.cs) 에서는 IBM deployment chat API가 감지되면 OpenAI function-calling body를 그대로 보내지 않고 `ToolCallNotSupportedException`으로 일반 응답 경로 폴백을 유도하도록 안전장치를 추가했다.
- 업데이트: 2026-04-06 18:09 (KST)
- 채팅 메시지의 좋아요/싫어요 토글을 다시 정리했다. [ChatWindow.MessageInteractions.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.MessageInteractions.cs) 에서 두 버튼이 각자 상태를 따로 들고 있던 구조를 없애고, 하나의 shared feedback 상태(`like/dislike/null`)를 기준으로 상호배타 토글되도록 재구성했다.
- 이제 `좋아요`도 즉시 색상/배경 상태가 바뀌고, `싫어요`를 다시 누르면 원래 상태(null)로 정상 해제된다. 버튼 시각 표현도 같은 glyph를 유지하되 active 색상과 라운드 chip 배경/테두리로 구분해, 특정 filled glyph가 보이지 않던 문제를 함께 줄였다.
- 업데이트: 2026-04-06 18:24 (KST)
- 런처 색인 구조를 임시 지연 실행에서 `영속 캐시 + watcher 증분 반영` 방식으로 바꿨다. [IndexService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/IndexService.cs)는 이제 `%APPDATA%\\AxCopilot\\index\\launcher-index.json`에 파일 시스템 인덱스를 저장하고, 앱 시작 시 캐시를 즉시 로드해 첫 검색부터 이전 색인을 재사용한다.
- `FileSystemWatcher`도 더 이상 파일 하나 바뀔 때마다 3초 뒤 전체 재빌드를 때리지 않고, 생성/삭제/파일 이름 변경은 가능한 범위에서 해당 항목만 증분 반영한다. 디렉터리 이름 변경처럼 하위 경로 전체 영향이 큰 경우에만 전체 재색인으로 폴백한다.
- [App.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/App.xaml.cs) 는 앱 시작 시 캐시 로드와 watcher 시작을 바로 수행하고, 실제 무거운 전체 재색인은 첫 검색 시 `EnsureIndexWarmupStarted()`로 한 번만 보강 실행하도록 정리했다. 이 변경으로 런처는 즉시 검색 가능 상태를 유지하면서도, 평소엔 전체 재색인 비용을 반복해서 치르지 않게 됐다.
- 업데이트: 2026-04-06 18:34 (KST)
- 다른 앱에서 타이핑할 때도 AX Copilot가 키 입력 훅 경로에서 과하게 개입하던 부분을 줄였다. [InputListener.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Core/InputListener.cs)는 이제 모든 키다운마다 시스템 파일 대화상자 판정을 하지 않고, 실제 핫키 메인 키·캡처 메인 키·키 필터가 필요한 경우에만 억제 창 검사를 수행한다.
- [SnippetExpander.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Core/SnippetExpander.cs)는 추적 중이 아닐 때 `;` 시작 키 외에는 즉시 반환하도록 바꿨다. 이전에는 일반 타이핑 중에도 모든 키마다 `Ctrl/Alt/Shift` 상태를 읽고 버퍼 로직을 거쳤는데, 이제는 실제 스니펫 시작 상황에서만 그런 검사를 하게 되어 글로벌 키보드 훅의 평상시 부담을 줄였다.
업데이트: 2026-04-06 20:18 (KST)
- AX Agent 메시지 마크다운 렌더에 코드 심볼 강조를 추가해 Cowork/Code 답변의 파일 경로·camelCase/PascalCase·snake_case가 더 선명하게 보이도록 조정했다.
- 코드 탭 입력부 위에 저장소/브랜치/변경 수치를 보여주는 Git 요약 배너를 추가해 `claude-code` 스타일의 repo context를 더 빠르게 읽을 수 있게 맞췄다.
- 업데이트: 2026-04-06 20:28 (KST)
- AX Agent 코드 탭 입력부 위 저장소 요약줄을 더 `claude-code` 스타일에 가깝게 정리했습니다. `로컬/워크트리`, `upstream` 상태를 얇은 배지로 표시하고, 변경이 있을 때 액션 문구가 `변경 · 브랜치 보기`로 바뀌도록 했습니다.
- 코드 탭 저장소 요약줄에 `리뷰` 배지를 추가해 기존 slash 명령 `/review`로 바로 이어지게 했습니다. 입력 중인 문구가 있으면 유지한 채 리뷰 흐름만 얹도록 조정했습니다.
- 업데이트: 2026-04-06 20:34 (KST)
- Claude 라이트/시스템 테마의 표면 위계를 다시 맞췄습니다. 본문 기본 배경은 흰색으로, 좌측 패널과 카드 표면은 더 짙은 웜 베이지 톤으로 조정해서 사용자가 요청한 방향대로 역할이 뒤바뀌지 않게 정리했습니다.
- 업데이트: 2026-04-06 21:54 (KST)
- AX Agent 테마 팔레트를 다시 분리해 `Claude`, `Codex`, `Slate`, `Nord`, `Ember`가 서로 더 다른 인상으로 보이게 조정했습니다. 특히 `Codex`는 웜 베이지를 걷고 더 차갑고 중성적인 회백/차콜 표면 계열로 재구성했습니다.
- 입력창 포커스 시 거의 항상 주황 테두리처럼 보이던 경로를 제거하고, 각 테마의 `InputFocusBorderColor`를 따르도록 바꿨습니다. 같이 composer와 메시지 버블 라운딩도 더 둥글게 손봐 Codex 계열 박스 감각에 더 가깝게 맞췄습니다.
- 업데이트: 2026-04-06 22:01 (KST)
- AX Agent 내부 설정의 코드/공통 기능 토글들이 눌러도 다시 원래 상태로 돌아가던 문제를 수정했습니다. 내부 설정 오버레이에서 `Code 결과 검토`, `코드 리뷰 도구 활성화`, `도구 병렬 실행`, `Worktree/Team/Cron 도구`를 포함한 기능 토글들이 이제 즉시 저장 루틴을 타도록 연결했습니다.
- 업데이트: 2026-04-06 22:15 (KST)
- AX Agent 루프에 남아 있던 `무료 티어 모드` 대기를 Gemini 서비스에서만 적용하도록 좁혔습니다. 이제 예전 Gemini 무료 티어용 대기 설정이 vLLM/Ollama/Claude 같은 다른 서비스 작업을 불필요하게 늦추지 않습니다.
- AX Agent 내부 설정의 `Fast` 표기를 `Gemini 무료 티어 대기`로 바꾸고 설명 문구도 실제 동작 기준으로 수정했습니다. 사용자는 이제 내부 설정에서 이 대기를 명확히 끄고 켤 수 있습니다.
- Cowork/Code 중간 진행 정보가 hover처럼 우연히만 보이던 문제를 줄이기 위해 에이전트 이벤트 카드 스타일을 다시 조정했습니다. 단계 시작, 도구 호출, 대기/생각 중 상태가 더 큰 글씨와 얇은 배경 카드로 기본 노출되도록 정리해, 장시간 작업 중에도 “지금 무엇을 하는지”를 본문에서 바로 읽을 수 있게 했습니다.
- 업데이트: 2026-04-06 22:31 (KST)
- AX Agent의 중간 처리 메시지 형식을 `claw-code`에 더 가깝게 재정리했습니다. `Thinking / ToolCall / StepStart / Planning` 계열은 작은 상태칩보다 `요약줄 + 본문 설명` 구조로 보이게 바꿔, 장시간 작업 중 “무슨 작업을 하고 있는지”를 일반 메시지처럼 읽을 수 있게 했습니다.
- 진행 메시지의 요약줄은 좌측 chevron과 보조 텍스트 중심으로 정리하고, 상세 설명은 바로 아래 본문 텍스트로 분리해 `claw-code / Claude Code`의 처리 메시지 밀도와 감각에 더 가깝게 맞췄습니다.
- 업데이트: 2026-04-06 22:42 (KST)
- AX Agent의 라이브 대기/압축 진행 힌트를 `claw-code`처럼 더 읽기 쉬운 진행 한 줄로 보강했습니다. 이제 Cowork/Code에서 오래 걸릴 때 `처리 중...`, `컨텍스트 압축 중...` 같은 요약줄이 transcript에 살아 있는 진행 상태로 나타납니다.
- 같은 진행 줄 우측에는 `경과 시간``현재 누적 토큰`이 함께 표시되어, 사용자가 “지금 멈춘 건지 아직 처리 중인지”를 기다릴 근거와 함께 바로 확인할 수 있게 조정했습니다.
- 업데이트: 2026-04-06 22:48 (KST)
- AX Agent의 라이브 대기 진행 줄에 작은 펄스 애니메이션을 추가했습니다. 오래 걸리는 `처리 중...`, `컨텍스트 압축 중...` 상태는 이제 좌측 마커가 은은하게 살아 움직여, 멈춘 로그가 아니라 실제 진행 중인 상태라는 점이 더 분명하게 보입니다.
- 업데이트: 2026-04-06 23:16 (KST)
- 전체 코드 기준 오류/성능 점검 중 발견된 런타임 핫패스를 정리했습니다. [SettingsService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/SettingsService.cs) 에서 AX Agent 표현 수준을 매번 `rich`로 덮어쓰던 버그를 수정해, 저장된 `balanced/simple/rich` 값이 실제로 유지되도록 했습니다.
- [IndexService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/IndexService.cs) 에는 `tmp/cache/log/bak/crdownload` 같은 임시 파일과 숨김/시스템 경로, `~$` Office 임시 파일을 색인/감시 대상에서 제외하는 규칙을 추가했습니다. 불필요한 증분 갱신과 재색인 노이즈를 줄여 런처가 백그라운드에서 먹는 CPU와 디스크 I/O를 완화하는 목적입니다.
- [LauncherWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/LauncherWindow.xaml.cs)의 인덱스 상태 타이머는 매 호출마다 새 인스턴스를 만들지 않고 재사용하도록 바꿨고, [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)는 창이 숨김/최소화된 동안 transcript 재렌더를 지연했다가 다시 보일 때 한 번만 반영하도록 정리해 AX Agent 백그라운드 부담을 줄였습니다.
- 업데이트: 2026-04-06 23:26 (KST)
- AX Agent의 중간 진행 메시지를 `claw-code`에 더 가깝게 마무리했습니다. execution history를 접어 둔 상태에서도 `처리 중...`, `컨텍스트 압축 중...`, 중요한 thinking/tool 진행 이벤트는 transcript에 계속 보이도록 필터를 조정했습니다.
- 진행 줄 스타일도 카드형 박스보다 더 평평한 요약줄 위주로 정리했습니다. 일반 진행 이벤트는 borderless line처럼 보이고, 실제 장기 대기/압축 상태만 은은한 강조 배경과 펄스 마커를 유지해 “지금 살아 있는 작업”만 더 잘 드러나게 맞췄습니다.
- 업데이트: 2026-04-06 23:33 (KST)
- 런처 검색 반응성을 높이기 위해 [FuzzyEngine.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Core/FuzzyEngine.cs)에 인덱스 버전 기준 쿼리 캐시를 추가했습니다. 색인이 같은 상태에서 반복 입력되는 쿼리는 결과를 다시 전부 계산하지 않고 즉시 재사용합니다.
- 앱 시작 직후 캐시된 인덱스가 없을 때는 런처 watcher를 먼저 모두 켜지 않도록 [App.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/App.xaml.cs)를 조정했습니다. 불필요한 감시기 오버헤드를 줄이고, 실제 첫 색인 완료 뒤에 watcher가 붙도록 정리했습니다.
- AX Agent는 [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에서 최소화/백그라운드 상태일 때 task summary, 입력 보조 UI, 에이전트 상태 반영을 즉시 다시 그리지 않고 대기시켰다가 다시 활성화될 때 한 번에 flush 하도록 바꿨습니다.
- 업데이트: 2026-04-06 23:49 (KST)
- AX Agent 메모리 구조 강화를 시작했습니다. [AgentMemoryService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/AgentMemoryService.cs)에 `관리형 / 사용자 / 프로젝트 / 로컬` 계층형 메모리 문서 로더를 추가해 `AXMEMORY.md`, `AXMEMORY.local.md`, `.ax/rules/*.md` 계열 파일을 현재 작업 폴더까지 발견하고 로드합니다.
- [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)의 시스템 프롬프트 메모리 섹션도 계층형 메모리 + 기존 학습 메모리를 함께 조립하도록 바꿨습니다. 이제 AX는 `claw-code`처럼 지속 메모리를 단순 전역/폴더 저장이 아니라 계층형 지시문 + 학습형 메모리의 조합으로 주입합니다.
- 업데이트: 2026-04-06 23:57 (KST)
- [MemoryTool.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/MemoryTool.cs)를 확장해 계층형 메모리 관리 액션을 추가했습니다. 이제 `/memory`는 기존 학습 메모리 `save/search/list/delete` 외에 `save_scope`, `delete_scope`를 통해 `managed / user / project / local` 메모리 파일을 직접 다룰 수 있습니다.
- [AgentMemoryService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/AgentMemoryService.cs) 에는 계층형 메모리 파일의 실제 저장/삭제 경로를 결정하고 내용을 append/remove 하는 로직을 추가했습니다. AX 메모리 구조가 이제 `읽기 전용 계층`이 아니라 `학습 메모리 + 계층형 메모리 파일`을 함께 관리하는 형태로 한 단계 더 올라왔습니다.
- 업데이트: 2026-04-07 00:06 (KST)
- [AgentMemoryService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/AgentMemoryService.cs)에 `@include` 확장을 추가했습니다. 이제 `AXMEMORY.md` 안에서 `@./docs/architecture.md`, `@~/shared/rules.md`, 절대 경로 include를 사용할 수 있고, 텍스트 파일만 최대 5단계까지 재귀적으로 펼칩니다.
- 같은 파일에서 프로젝트 루트 판단도 강화했습니다. 이제 단순 현재 작업 폴더가 아니라 `.git`, `.sln`, `*.csproj`, `package.json`, `pyproject.toml`, `go.mod`, `Cargo.toml` 같은 마커를 보고 프로젝트 루트를 먼저 잡은 뒤, 그 루트부터 현재 작업 디렉토리까지의 메모리 계층을 조립합니다.
- 업데이트: 2026-04-07 00:13 (KST)
- `claw-code`처럼 외부 메모리 include를 무조건 열어두지 않도록 안전 장치를 추가했습니다. [AppSettings.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Models/AppSettings.cs), [SettingsViewModel.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/ViewModels/SettingsViewModel.cs), [SettingsWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/SettingsWindow.xaml)에 `외부 메모리 include 허용` 설정을 추가했고 기본값은 `꺼짐`입니다.
- [AgentMemoryService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/AgentMemoryService.cs)는 이 설정이 꺼져 있으면 프로젝트 바깥으로 빠지는 상대 경로, 홈 경로(`@~/...`), 절대 경로 include를 모두 차단합니다. 즉 메모리 내용 관리는 계속 `/memory` 같은 명령으로 하되, include의 보안 정책만 설정으로 다루는 구조로 정리했습니다.
- 업데이트: 2026-04-07 00:22 (KST)
- [AgentMemoryService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/AgentMemoryService.cs)에 `paths:` frontmatter 지원을 추가해 `.ax/rules/*.md` 같은 계층형 메모리 문서가 특정 작업 폴더 범위에서만 적용되도록 했습니다.
- 이제 메모리 문서 상단에 `---`, `paths:`, `- src/**`, `---` 형태를 쓰면 현재 작업 폴더가 프로젝트 루트 기준으로 그 패턴에 맞을 때만 로드됩니다. AX 메모리 규칙을 `claw-code`의 경로별 rule 파일처럼 더 세밀하게 제어할 수 있습니다.
- 업데이트: 2026-04-07 00:31 (KST)
- [AgentMemoryService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/AgentMemoryService.cs)에 `description:` frontmatter 메타를 추가해 계층형 메모리 규칙 파일이 “무엇을 위한 규칙인지” 설명을 가질 수 있게 했습니다.
- [MemoryTool.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/MemoryTool.cs) 는 `show_scope` 액션을 새로 지원합니다. 이제 `/memory` 계열 명령으로 `managed / user / project / local` 메모리 파일의 실제 내용을 직접 확인할 수 있고, `list/search` 결과에도 `description``paths` 범위가 함께 표시됩니다.
- 업데이트: 2026-04-07 00:39 (KST)
- [AgentMemoryService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/AgentMemoryService.cs)에 계층형 메모리 우선순위/병합 정책을 추가했습니다. 같은 내용의 규칙이 여러 계층에 중복될 경우 더 가까운 규칙만 남기고, 최종 메모리 문서는 `managed → user → project → local` 순으로 다시 정렬됩니다.
- [MemoryTool.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/MemoryTool.cs) 의 `list/search`는 이제 최종 우선순위 번호를 같이 보여줘, 어떤 규칙이 실제로 더 강하게 적용되는지 바로 확인할 수 있습니다.
- 업데이트: 2026-04-07 00:45 (KST)
- AX Copilot 메인 설정의 에이전트 메모리 영역에서 `관리형 / 사용자 / 프로젝트 / 로컬` 메모리 파일을 직접 열어 수정할 수 있게 했습니다. [SettingsWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/SettingsWindow.xaml), [SettingsWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/SettingsWindow.xaml.cs)에 계층형 메모리 편집 버튼과 전용 편집 다이얼로그를 추가했습니다.
- 메모리 편집 다이얼로그는 현재 테마를 따르는 안내 패널과 멀티라인 편집기를 제공하고, `description`/`paths` frontmatter 예시를 바로 볼 수 있습니다. 저장 시 해당 scope 파일을 즉시 갱신하고, 빈 내용으로 저장하면 파일을 삭제한 뒤 메모리 계층을 다시 로드합니다.
- 업데이트: 2026-04-07 00:52 (KST)
- 계층형 메모리 frontmatter를 더 확장해 `enabled:``tags:`를 지원하도록 했습니다. 이제 실험용 규칙을 파일에 남겨둔 채 비활성화할 수 있고, 규칙 묶음을 태그 단위로 구분해 관리할 수 있습니다.
- [AgentMemoryService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/AgentMemoryService.cs)는 `enabled: false`인 규칙 파일을 메모리 계층에서 제외하고, [MemoryTool.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/MemoryTool.cs)의 `list/search` 결과에는 `tags` 메타를 함께 보여줘 어떤 규칙군인지 더 빠르게 읽을 수 있게 했습니다.
- 업데이트: 2026-04-07 01:00 (KST)
- AX Agent 설정의 에이전트 메모리 섹션에 `적용 중 메모리 계층` 요약을 추가했습니다. 현재 컨텍스트에 반영된 계층형 규칙 수와 학습 메모리 수를 한 줄로 보고, 아래에서 활성 규칙 파일의 우선순위·설명·태그를 바로 확인할 수 있습니다.
- 메모리 파일을 편집하거나 학습 메모리를 초기화하면 이 요약이 즉시 다시 계산되도록 연결했고, `새로고침` 버튼도 추가해 현재 작업 폴더 기준 메모리 적용 상태를 바로 다시 확인할 수 있게 했습니다.
업데이트: 2026-04-07 01:15 (KST)
- AX Agent 메모리 구조를 추가 강화했습니다. `@include` 확장 시도는 이제 감사 로그에 `MemoryInclude` 항목으로 남고, Cowork/Code 하단 폴더 바에 현재 적용 중인 계층형 메모리/학습 메모리 상태가 요약 표시됩니다.
- 업데이트: 2026-04-07 01:26 (KST)
- Cowork/Code 하단 메모리 칩을 눌렀을 때 `적용 중 규칙``최근 include 감사`를 바로 확인할 수 있는 상세 팝업을 추가했습니다. 이제 메모리 계층이 실제로 어떻게 적용되고 있는지 채팅 하단에서 바로 추적할 수 있습니다.
- 설정의 메모리 개요에도 `최근 include 감사` 요약을 추가해, 메모리 규칙 상태와 include 시도 결과를 같은 화면에서 함께 점검할 수 있게 했습니다.
- 업데이트: 2026-04-07 01:35 (KST)
- Cowork/Code 진행 표시 줄에도 `메모리 규칙 n개 · 학습 n개 적용 중` 근거가 함께 표시되도록 보강했습니다. 기다리는 동안 현재 어떤 메모리 계층이 반영되고 있는지 transcript에서 바로 확인할 수 있습니다.
- 메모리 include 감사는 `최근 3일` 기준으로 다시 집계해 보여주도록 정리했고, `/memory list`·`/memory search` 결과도 우선순위·레이어·설명·paths·tags를 두 줄 구조로 더 읽기 쉽게 정리했습니다.
- 업데이트: 2026-04-07 01:44 (KST)
- AX Agent footer/preset 안내에 남아 있던 한글 깨짐 문자열을 복구했습니다. Cowork/Code 입력창 워터마크, 선택된 프리셋 설명, 메모리 상태 팝업 문구가 정상 한글로 다시 표시됩니다.
- 업데이트: 2026-04-07 02:08 (KST)
- Cowork/Code 진행 표시가 오래 걸릴 때도 비어 보이지 않도록 live progress fallback을 보강했습니다. 이벤트가 계속 들어오는 경우에도 일정 시간이 지나면 `작업을 진행하는 중입니다...` 줄이 transcript에 표시됩니다.
- 진행 줄 재렌더 시 과한 fade 애니메이션을 제거해 깜박이듯 보이던 문제를 줄였고, 장시간 실행 뒤 내부 중단이 발생해도 더 이상 무조건 `사용자가 작업을 취소했습니다`로 표기하지 않도록 중립 문구로 정리했습니다.
- 깨진 한글이 남아 있던 [ChatWindow.FooterPresentation.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.FooterPresentation.cs), [ChatWindow.TimelinePresentation.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.TimelinePresentation.cs), [ChatWindow.AgentEventRendering.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.AgentEventRendering.cs)의 표시 문자열을 다시 복구했습니다.
- 업데이트: 2026-04-07 02:11 (KST)
- AX Agent 내부 설정 공통 탭의 Gemini/Claude API 키 입력 필드를 PasswordBox에서 TextBox로 교체해, 오버레이 동기화 중에도 입력이 끊기거나 튕기지 않도록 수정했습니다.
- 업데이트: 2026-04-07 02:45 (KST)
- Cowork/Code 진행 카드의 경과 시간 계산을 보정했습니다. 스트리밍 시작 시각이 준비되기 전에 진행 힌트가 먼저 그려질 때 `수천만 시간`처럼 비정상값이 표시되던 문제를 막고, 6시간을 넘는 비현실적인 경과 시간은 자동 무시하도록 정리했습니다.
- AX Agent 입력창 글로우를 런처와 같은 리듬의 무지개 글로우로 다시 맞췄습니다. 글로우 외곽선 두께와 블러를 부드럽게 조정하고, 라이브 진행 카드도 테마 AccentColor 기반의 은은한 톤을 써서 주황색 고정 느낌을 줄였습니다.
- 일반 설정에 있던 `런처 무지개 글로우`, `선택 아이템 글로우`, `채팅 입력창 무지개 글로우`를 AX Agent 내부 설정으로 이동해, 이제 내부 설정에서 바로 런처/입력창 글로우를 함께 조정할 수 있습니다.
- 업데이트: 2026-04-07 02:56 (KST)
- AX Agent 내부 설정 개발자 탭의 `워크플로우 시각화`가 숨은 개발자 모드 의존 때문에 실제로 창을 띄우지 않던 문제를 수정했습니다. 이제 토글을 켜면 즉시 워크플로우 분석기 창이 열리고, 끄면 창이 숨겨집니다.
- 일반 설정에만 남아 있던 `문서 미리보기 자동 표시` 옵션을 AX Agent 내부 설정 공통 탭에도 복원해, Cowork/Code에서 프리뷰 자동 열기 정책을 내부 설정에서 바로 바꿀 수 있게 했습니다.
- 업데이트: 2026-04-07 03:03 (KST)
- Cowork/Code 하단 작업 바의 메모리 상태 칩을 숨겼습니다. 이제 footer에는 폴더, 권한, Git 같은 작업 상태만 남고 메모리 관련 표기는 노출되지 않습니다.
- 메모리 상태 버튼이 비노출일 때는 관련 팝업도 열리지 않도록 정리해, 상태 갱신이나 탭 전환 중 다시 나타나는 일이 없게 했습니다.
- 업데이트: 2026-04-07 03:13 (KST)
- Cowork/Code 실행 중 탭을 바꿀 때 작업을 즉시 취소하던 흐름을 제거했습니다. 이제 실행은 시작한 탭에서 계속 진행되고, 다른 탭으로 이동해도 작업이 사용자 취소처럼 끝나지 않습니다.
- 라이브 진행 힌트는 실행을 시작한 탭에서만 보이도록 조정해, Cowork 작업 중 Code 탭으로 이동했을 때 Code 쪽 transcript에 `처리 중...`이 따라 보이던 상태 오염을 막았습니다.
- 업데이트: 2026-04-07 09:32 (KST)
- Cowork/Code 장시간 실행 뒤 마지막 응답을 라이브 프리뷰로 붙이는 단계에서 `_streamCts` 필드를 다시 읽다가 `Object reference not set to an instance of an object.`로 실패할 수 있던 경로를 수정했습니다. 이제 실행 시작 시 캡처한 지역 토큰을 끝까지 재사용하고, 최종 타이핑 프리뷰 컨테이너가 준비되지 않으면 조용히 건너뛰도록 방어 로직을 추가했습니다.
- 같은 실패가 다시 생기면 원인을 더 빨리 찾을 수 있도록 AX Agent 실행 예외 전체를 앱 로그에 남기도록 보강했습니다.
- 업데이트: 2026-04-07 09:44 (KST)
- Cowork/Chat 하단의 프리셋 안내 카드가 실제 결과를 가리던 문제를 수정했습니다. 이제 대화에 사용자/assistant 메시지가 생기거나 실행 중일 때는 해당 카드가 자동으로 숨겨집니다.
- [ChatWindow.FooterPresentation.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.FooterPresentation.cs)에 남아 있던 깨진 한글 워터마크/안내 문구를 정상 한국어로 정리했습니다.
- 라이브 타이핑 속도를 조정해 SSE 및 Cowork/Code 최종 프리뷰가 한 번에 붙는 느낌을 줄이고, 더 눈에 보이게 점진적으로 출력되도록 보정했습니다.
- 업데이트: 2026-04-08 10:12 (KST)
- 등록 모델에 `동작 프로파일`을 추가했습니다. 이제 모델별로 `균형 / 도구 호출 우선 / 추론 우선 / 읽기 속도 우선 / 문서 생성 우선` 성향을 저장할 수 있고, 편집/추가 모두 내부 설정과 일반 설정에서 같은 값으로 유지됩니다.
- Cowork/Code 루프는 현재 활성 모델의 프로파일을 읽어 no-tool 감지 임계값, 도구 미호출 재시도, 문서 생성 재시도, terminal evidence gate, 읽기 도구 병렬 배치 수를 다르게 적용합니다.
- AX Agent 내부 설정의 Temperature 항목에 `자동 / 사용자 지정` 전환을 추가했습니다. 자동일 때는 등록 모델 프로파일의 temperature 정책을 따르고, 사용자 지정일 때만 슬라이더 값이 실제 tool 호출 온도로 적용됩니다.
- 업데이트: 2026-04-08 10:38 (KST)
- 모델 실행 프로파일을 Cowork/Code 후속 게이트까지 더 깊게 연결했습니다. 이제 프로파일별로 post-tool verification, 코드 품질 게이트, 문서 검증 게이트, diff/실행 증거 게이트, final report 게이트의 강도를 다르게 적용합니다.
- `document_heavy` 프로파일은 `document_plan` 이후 장기 재시도보다 fallback 산출물 생성 쪽으로 더 빨리 전환되도록 조정했습니다.
- OpenAI/vLLM tool calling 바디에 `parallel_tool_calls` 힌트를 추가해 읽기 도구 병렬 실행 성향이 모델 요청 바디에도 반영되도록 보강했습니다.
- Cowork/Code 진행 표시에는 `계획 / 도구 / 검증 / 압축 / 폴백 / 재시도` 같은 단계 메타를 더 직접적으로 붙여, 오래 걸릴 때도 현재 단계가 더 잘 읽히게 했습니다.
- [docs/AX_AGENT_REGRESSION_PROMPTS.md](/E:/AX%20Copilot%20-%20Codex/docs/AX_AGENT_REGRESSION_PROMPTS.md)를 전면 정리해 `tool_call_strict`, `fast_readonly`, `document_heavy`, `reasoning_first` 프로파일별 회귀 시나리오를 고정했습니다.
- 업데이트: 2026-04-08 11:14 (KST)
- IBM 인증 경유 vLLM 도구 호출 경로를 강화했습니다. IBM tool body도 이제 프로파일 기반 `ResolveToolTemperature()`를 사용하고, `tool_call_strict` 프로파일에서는 더 짧고 직접적인 `tool-only` 지시를 추가해 plain text 응답으로 빠지는 경향을 줄였습니다.
- IBM 배포형 엔드포인트가 `tool_choice`를 400으로 거부하면, `tool_choice`만 제거하고 동일한 강제 지시를 유지한 채 한 번 더 재시도하는 대체 강제 전략을 넣었습니다.
- OpenAI/vLLM tool-use 응답은 이제 `stream=true` 기반 SSE 수신기로 읽으며, `delta.tool_calls`를 부분 조립해 완성된 도구 호출을 더 빨리 감지합니다.
- read-only 도구는 조립이 끝나는 즉시 조기 실행을 시작하고, 최종 루프에서는 그 결과를 재사용하도록 바꿔 도구 착수 속도를 끌어올렸습니다.
- 업데이트: 2026-04-08 11:31 (KST)
- `LlmService`에 tool-use 전용 스트리밍 이벤트 API를 추가했습니다. 이제 OpenAI/vLLM/IBM 경로는 텍스트 델타와 완성된 도구 호출을 각각 이벤트로 내보낼 수 있습니다.
- `Cowork/Code` 루프도 이 스트리밍 이벤트를 직접 소비하도록 바꿔, 도구 호출이 완성되는 즉시 transcript에 `스트리밍 도구 감지` 진행 표시가 보이고 read-only 도구 조기 실행도 실제 실행 루프와 연결되도록 정리했습니다.
- 기존의 `응답 전체 수신 -> tool_calls 파싱 -> 도구 실행` 구조에서 한 단계 더 나아가, `스트리밍 수신 -> partial tool_call 조립 -> 조기 read-only 실행 -> 최종 루프 재사용` 흐름으로 리팩터링했습니다.
- 업데이트: 2026-04-08 12:02 (KST)
- AX Agent 진행 카드의 경과 시간 계산을 공용 검증 helper로 통일했습니다. `_streamStartTime`이 초기화되지 않았거나 6시간을 넘는 비정상 상태이면 `0초`로 정리해 `수천만 시간`처럼 표시되던 문제를 막았습니다.
- 스트리밍 종료/취소 시 `_streamStartTime`을 즉시 초기화하도록 정리해, 이전 실행의 시간이 다음 실행 카드나 assistant 메타에 새어 들어가지 않게 했습니다.
- 채팅 입력창 글로우는 런처와 같은 방식으로 `표시/숨김 + 얇은 외곽선 + 부드러운 투명도` 중심으로 다듬었습니다. 과한 블러와 두꺼운 외곽선 때문에 지저분하게 보이던 인상을 줄였습니다.
- 런처 글로우 토글은 일반 설정에 그대로 유지하고, AX Agent 내부 설정은 채팅 입력창 글로우만 담당하도록 역할을 분리했습니다.
- 업데이트: 2026-04-08 12:18 (KST)
- `claw-code``Messages.tsx`, `VirtualMessageList.tsx`, `StatusLine.tsx`, `StreamingToolExecutor.ts` 흐름을 다시 대조해 AX의 코워크/코드가 실행 중 유독 무거운 원인을 점검했습니다.
- 구조 비교 결과, AX는 코워크/코드 스트리밍 중에도 process feed 이벤트가 transcript 전체 재렌더를 자주 유발하는 경로가 남아 있어 `claw-code`보다 UI 스레드 부담이 큰 상태였습니다.
- [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에 `IsLightweightLiveProgressMode()`를 추가해, 코워크/코드 + 실행 히스토리 접힘 상태에서는 라이브 진행 카드를 우선 사용하고 transcript 재렌더 빈도를 더 강하게 낮추도록 조정했습니다.
- 같은 조건에서 `_executionHistoryRenderTimer`, `_agentUiEventTimer` 간격도 더 느슨하게 조정해, 스트리밍 중 작은 진행 이벤트가 여러 타이머를 통해 UI 전체를 자주 흔들던 문제를 줄였습니다.
- 코워크/코드 실행 중 접힌 히스토리 상태에서는 process feed 계열 이벤트가 더 이상 매번 transcript 렌더를 요청하지 않고, 완료/오류/문서 생성 결과처럼 실제로 기록 가치가 큰 이벤트만 강하게 렌더 요청을 남기도록 정리했습니다.
- 업데이트: 2026-04-08 12:26 (KST)
- 코워크/코드 실행 중 보조 UI 갱신도 더 느슨하게 조정했습니다. [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 에서 `입력 보조 UI``작업 요약` 타이머도 경량 라이브 진행 모드일 때 더 긴 간격으로 동작하도록 바꿨습니다.
- 경량 모드에서는 `Thinking`, `ToolCall` 같은 잦은 이벤트마다 `작업 요약` 갱신을 다시 예약하지 않고, `계획`, `권한 요청`, `도구 결과`, `완료/오류`처럼 실제로 요약 상태가 달라지는 이벤트 중심으로만 요약 UI를 갱신하도록 정리했습니다.
- 결과적으로 코워크/코드 처리 중 transcript 외의 보조 UI 측정/배치 비용도 함께 줄어, 입력 지연과 스크롤 버벅임 완화에 직접적으로 기여하도록 조정했습니다.
- 업데이트: 2026-04-08 12:33 (KST)
- `claw-code`의 가상화 메시지 리스트에 바로 가기 전 단계로, AX transcript에 `실행 중 렌더 윈도우 축소`를 적용했습니다. 코워크/코드 스트리밍 중에는 최근 항목 위주로 더 작은 타임라인만 렌더하고, 평상시에는 기존 범위를 유지합니다.
- [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)에 `GetActiveTimelineRenderLimit()`를 추가해, 일반 스트리밍은 96개, 경량 라이브 진행 모드는 60개만 렌더하도록 조정했습니다.
- `ScheduleExecutionHistoryRender`, `ScheduleAgentUiEvent`, `ScheduleTaskSummaryRefresh`, `ScheduleInputUiRefresh`도 경량 모드에서는 이미 타이머가 대기 중일 때 다시 stop/start 하지 않게 바꿔, 이벤트 폭주 시 dispatcher 예약 churn을 줄였습니다.
- 업데이트: 2026-04-08 12:40 (KST)
- 코워크/코드 경량 라이브 진행 모드에서는 메시지 진입 애니메이션과 진행 마커 펄스도 줄였습니다.
- [ChatWindow.MessageInteractions.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.MessageInteractions.cs)의 메시지 엔트리 애니메이션은 실행 중 경량 모드에서 즉시 표시로 바뀌어, 새 UI 요소가 들어올 때마다 opacity/translate 애니메이션이 누적되지 않게 했습니다.
- [ChatWindow.AgentEventRendering.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.AgentEventRendering.cs)의 진행 마커 펄스는 경량 모드에서 정적 점 상태로 간소화했습니다.
- [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)의 AX Agent 라이브 카드도 경량 모드에서는 등장/퇴장 애니메이션과 아이콘 opacity 펄스를 줄여, 실행 중 레이아웃/애니메이션 비용을 더 낮췄습니다.
- 업데이트: 2026-04-08 12:52 (KST)
- AX Agent transcript 호스트를 `ScrollViewer + StackPanel + Children.Add` 구조에서 `ListBox + ObservableCollection<UIElement>` 기반으로 옮겼습니다.
- [ChatWindow.TranscriptHost.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.TranscriptHost.cs)를 추가해 transcript 요소 추가/교체/삭제와 스크롤 접근을 공용 helper로 정리했고, 내부 ScrollViewer도 한 번만 찾아 재사용하도록 바꿨습니다.
- [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml)의 메시지 영역은 `VirtualizingStackPanel`을 쓰는 `ListBox` 기반 호스트로 교체해, 이후 `claw-code``VirtualMessageList`에 더 가까운 가상화 구조로 밀어갈 수 있는 기반을 만들었습니다.
- 관련 렌더 코드([ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs), [ChatWindow.MessageBubblePresentation.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.MessageBubblePresentation.cs), [ChatWindow.AgentEventRendering.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.AgentEventRendering.cs), [ChatWindow.MessageInteractions.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.MessageInteractions.cs), [ChatWindow.TimelinePresentation.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.TimelinePresentation.cs))도 모두 컬렉션 기반 조작으로 맞춰, 실행 중 `Children` 직접 조작에 따른 레이아웃 churn을 줄였습니다.
- 업데이트: 2026-04-09 09:14 (KST)
- `claw-code`와의 구조 대조 결과를 바탕으로, transcript 렌더와 tool streaming 실행 책임을 더 분리했습니다.
- [ChatWindow.TranscriptRendering.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.TranscriptRendering.cs)를 추가해 `RenderMessages()`와 transcript windowing/증분 렌더 흐름을 메인 [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs) 밖으로 옮겼습니다.
- [StreamingToolExecutionCoordinator.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/StreamingToolExecutionCoordinator.cs)를 추가해 read-only 도구 prefetch, tool-use 스트리밍 수신, context overflow/transient error 복구를 별도 coordinator 계층으로 분리했습니다.
- [AgentLoopRuntimeThresholds.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/AgentLoopRuntimeThresholds.cs)를 추가해 no-tool, plan retry, terminal evidence gate 같은 임계값 계산을 `AgentLoopService`에서 분리했습니다.
- 결과적으로 Cowork/Code의 핵심 루프는 정책 소비자에 더 가까워졌고, 이후 transcript 진짜 가상화와 모델별 실행 정책 조정도 덜 위험하게 진행할 수 있는 구조가 됐습니다.
- 업데이트: 2026-04-09 09:37 (KST)
- transcript 렌더 구조를 planning/execution 단계로 한 번 더 쪼갰습니다. [ChatWindow.TranscriptRenderPlanner.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.TranscriptRenderPlanner.cs) 에서 visible window 계산, render key 집계, 전체/증분 렌더 계획 생성을 맡기고, [ChatWindow.TranscriptRenderExecution.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.TranscriptRenderExecution.cs) 에서 host 적용과 viewport 보존을 맡기도록 정리했습니다.
- [ChatWindow.TranscriptRendering.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.TranscriptRendering.cs)의 `RenderMessages()`는 이제 `데이터 수집 -> render plan 생성 -> 증분/전체 적용`만 오케스트레이션하는 얇은 진입점이 됐습니다.
- `claw-code``Messages.tsx``VirtualMessageList.tsx`처럼 transcript planning과 실제 host 조작을 분리하는 방향에 더 가까워졌고, 이후 실제 가상화 윈도우 정책을 다듬을 때 변경 범위를 더 안전하게 제한할 수 있게 됐습니다.
- 업데이트: 2026-04-09 10:08 (KST)
- 구조 개선과 실검증을 함께 하기 위해 loop 정책과 transcript 호스트에 성능 계측을 추가했습니다. [AgentPerformanceLogService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/AgentPerformanceLogService.cs)가 `%APPDATA%\\AxCopilot\\perf`에 transcript 렌더 시간과 agent loop 실행 요약을 JSON 로그로 남깁니다.
- [AgentLoopTransitions.Verification.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/AgentLoopTransitions.Verification.cs), [AgentLoopTransitions.Documents.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/AgentLoopTransitions.Documents.cs), [AgentLoopCompactionPolicy.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/AgentLoopCompactionPolicy.cs)로 검증/fallback/compact 정책 메서드를 분리해 [AgentLoopService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/AgentLoopService.cs)의 책임을 더 줄였습니다.
- [ChatWindow.TranscriptVirtualization.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.TranscriptVirtualization.cs)에서 off-screen 버블 캐시를 pruning하도록 바꿨고, [ChatWindow.xaml](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml)의 transcript `ListBox`에는 deferred scrolling과 작은 cache length를 적용해 더 강한 가상화 리스트 방향으로 정리했습니다.
- [ChatWindow.TranscriptRendering.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.TranscriptRendering.cs)는 렌더 시간, visible message/event 수, hidden count, lightweight mode 여부를 함께 기록해 실사용 세션에서 버벅임을 실제 수치로 판단할 수 있게 됐습니다.
- 업데이트: 2026-04-09 10:36 (KST)
- `claude-code`의 선택적 탐색 흐름을 다시 대조해, Cowork/Code가 질문 범위와 무관한 워크스페이스 전체를 훑는 경향을 줄이기 시작했습니다.
- [ChatWindow.xaml.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.xaml.cs)의 Cowork/Code 시스템 프롬프트를 조정해 `folder_map`을 항상 첫 단계로 요구하지 않고, 좁은 질문에서는 `glob/grep + targeted read`를 우선하도록 바꿨습니다.
- [FolderMapTool.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/FolderMapTool.cs)는 기본 depth를 2로, `include_files` 기본값을 `false`로 조정해 첫 탐색 폭을 더 보수적으로 만들었습니다.
- [MultiReadTool.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/MultiReadTool.cs)는 한 번에 읽을 수 있는 최대 파일 수를 20개에서 8개로 낮춰 초기 과탐색 토큰 낭비를 줄이도록 했습니다.
- [AgentLoopExplorationPolicy.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/AgentLoopExplorationPolicy.cs)와 [AgentLoopService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/AgentLoopService.cs)에 탐색 범위 분류기와 broad-scan corrective hint를 추가해, 좁은 질문에서 반복적인 `folder_map`/대량 `multi_read`가 나오면 관련 파일만 다시 고르도록 교정합니다.
- [AgentPerformanceLogService.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/AgentPerformanceLogService.cs)는 `%APPDATA%\\AxCopilot\\perf``exploration_breadth` 로그를 남겨 `folder_map` 호출 수, 총 읽은 파일 수, broad scan 여부를 실사용 기준으로 확인할 수 있게 했습니다.
- 업데이트: 2026-04-09 11:12 (KST)
- `claude-code``Messages.tsx`, `MessageRow.tsx`, `GroupedToolUseContent.tsx`, `UserToolResultMessage`, `PermissionRequest` 구조를 다시 대조해 AX transcript 표시 계약을 row 중심으로 정리했습니다.
- [AgentTranscriptDisplayCatalog.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/AgentTranscriptDisplayCatalog.cs)에 `TranscriptRowKind``AgentTranscriptRowPresentation`을 도입해 thinking, waiting, compact, tool activity, permission, tool result, status를 한 번에 정규화하도록 바꿨습니다.
- [ChatWindow.AgentEventRendering.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.AgentEventRendering.cs)는 이 row 메타를 사용해 고빈도 process feed를 같은 group key 기준으로 교체 렌더하도록 바꿨고, 연속 읽기/검색/단계 이벤트를 더 적은 row 수로 보여주게 했습니다.
- [ToolResultPresentationCatalog.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/ToolResultPresentationCatalog.cs)와 [PermissionRequestPresentationCatalog.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Services/Agent/PermissionRequestPresentationCatalog.cs)를 정리해 실패/거부/취소/승인 필요와 권한 행위를 유형별 카드 메타로 다시 맞췄습니다.
- [ChatWindow.TranscriptHost.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.TranscriptHost.cs), [ChatWindow.TranscriptRendering.cs](/E:/AX%20Copilot%20-%20Codex/src/AxCopilot/Views/ChatWindow.TranscriptRendering.cs)는 grouped process feed append/merge 수를 추적하도록 바꿔, `claude-code`식 activity grouping이 실제 렌더 수를 얼마나 줄였는지 성능 로그로 확인할 수 있게 했습니다.

235
build.bat
View File

@@ -1,90 +1,199 @@
@echo off @echo off
setlocal EnableExtensions
chcp 65001 >nul chcp 65001 >nul
set "ROOT=%~dp0"
pushd "%ROOT%" >nul
echo. echo.
echo ======================================== echo ========================================
echo AX Copilot - Build Script echo AX Copilot - Build Script
echo ======================================== echo ========================================
echo. echo.
set APP=src\AxCopilot\AxCopilot.csproj set "APP=%ROOT%src\AxCopilot\AxCopilot.csproj"
set ENCRYPTOR=src\AxKeyEncryptor\AxKeyEncryptor.csproj set "ENCRYPTOR=%ROOT%src\AxKeyEncryptor\AxKeyEncryptor.csproj"
set OFFLINE=src\AxCopilot.Installer\AxCopilot.Installer.csproj set "INSTALLER=%ROOT%src\AxCopilot.Installer\AxCopilot.Installer.csproj"
set OUT=dist set "INSTALLER_DIR=%ROOT%src\AxCopilot.Installer"
set "OUT=%ROOT%dist"
set "APP_OUT=%OUT%\AxCopilot"
set "ENCRYPTOR_OUT=%OUT%\AxKeyEncryptor"
set "PAYLOAD_ZIP=%INSTALLER_DIR%\payload.zip"
set "INSTALLER_EXE=%INSTALLER_DIR%\bin\Release\net48\AxCopilot_Setup.exe"
set "RUNTIME=win-x64"
set "OBFUSCATOR_EXE=%ROOT%tools\obfuscator\obfuscator.exe"
set "OBFUSCATOR_CONFIG=%ROOT%tools\obfuscator\AxCopilot.obfuscation.xml"
:: Kill running app call :stop_process "AxCopilot" "AX Copilot"
tasklist /FI "IMAGENAME eq AxCopilot.exe" 2>nul | find /i "AxCopilot.exe" >nul if errorlevel 1 goto :fail_running
if %ERRORLEVEL%==0 ( call :stop_process "AxCommander" "legacy AxCommander"
echo [0] Stopping AxCopilot... if errorlevel 1 goto :fail_running
taskkill /IM AxCopilot.exe /F >nul 2>nul
timeout /t 2 /nobreak >nul
)
:: Kill legacy process
tasklist /FI "IMAGENAME eq AxCommander.exe" 2>nul | find /i "AxCommander.exe" >nul
if %ERRORLEVEL%==0 (
echo [0] Stopping legacy AxCommander...
taskkill /IM AxCommander.exe /F >nul 2>nul
timeout /t 2 /nobreak >nul
)
if exist "%OUT%" rd /s /q "%OUT%" 2>nul if exist "%OUT%" rd /s /q "%OUT%" 2>nul
mkdir "%OUT%" mkdir "%OUT%" || goto :fail_dist
mkdir "%OUT%\AxCopilot" mkdir "%APP_OUT%" || goto :fail_dist
mkdir "%ENCRYPTOR_OUT%" || goto :fail_dist
:: ======================================== if exist "%PAYLOAD_ZIP%" del /q "%PAYLOAD_ZIP%" 2>nul
:: 1. Main app (self-contained, folder)
:: ======================================== echo [1/5] Building main app (self-contained %RUNTIME%)...
echo [1/4] Building main app (self-contained)... dotnet publish "%APP%" ^
dotnet publish "%APP%" -c Release -o "%OUT%\AxCopilot" --self-contained true --nologo -v quiet -c Release ^
if %ERRORLEVEL% NEQ 0 ( echo [FAILED] Main app build & pause & exit /b 1 ) -r %RUNTIME% ^
echo OK - dist\AxCopilot\ --self-contained true ^
-o "%APP_OUT%" ^
--nologo ^
-v minimal ^
-p:DebugType=None ^
-p:DebugSymbols=false ^
-p:CopyOutputSymbolsToPublishDirectory=false ^
-p:EnableSourceLink=false ^
-p:PublishSingleFile=true ^
-p:EnableCompressionInSingleFile=true ^
-p:IncludeNativeLibrariesForSelfExtract=true ^
-p:PublishReadyToRun=true
if errorlevel 1 goto :fail_app
echo OK - %APP_OUT%
echo. echo.
:: ======================================== echo [2/5] Checking obfuscation / anti-decompile status...
:: 2. AxKeyEncryptor (developer tool) if exist "%OBFUSCATOR_EXE%" (
:: ======================================== if exist "%OBFUSCATOR_CONFIG%" (
echo [2/4] Building AxKeyEncryptor (WinForms)... echo Optional obfuscator found.
mkdir "%OUT%\AxKeyEncryptor" 2>nul echo Running: "%OBFUSCATOR_EXE%"
dotnet publish "%ENCRYPTOR%" -c Release -o "%OUT%\AxKeyEncryptor" --self-contained false --nologo -v quiet "%OBFUSCATOR_EXE%" "%OBFUSCATOR_CONFIG%" "%APP_OUT%"
if %ERRORLEVEL% NEQ 0 ( echo [FAILED] AxKeyEncryptor build & pause & exit /b 1 ) if errorlevel 1 goto :fail_obfuscation
del /q "%OUT%\AxKeyEncryptor\*.pdb" 2>nul echo OK - obfuscation step completed
echo OK - dist\AxKeyEncryptor\ ) else (
echo WARNING - no external obfuscator configured.
echo Current protection is limited to symbol/source metadata removal only.
)
) else (
echo WARNING - no external obfuscator configured.
echo Current protection is limited to symbol/source metadata removal only.
)
echo. echo.
:: ======================================== echo [3/5] Building AxKeyEncryptor...
:: 3. Create payload ZIP for installer dotnet publish "%ENCRYPTOR%" ^
:: ======================================== -c Release ^
echo [3/4] Creating installer payload ZIP... -o "%ENCRYPTOR_OUT%" ^
powershell -NoProfile -Command "Compress-Archive -Path '%OUT%\AxCopilot\*' -DestinationPath 'src\AxCopilot.Installer\payload.zip' -Force" --self-contained false ^
echo OK - payload.zip --nologo ^
-v minimal ^
-p:DebugType=None ^
-p:DebugSymbols=false
if errorlevel 1 goto :fail_encryptor
echo OK - %ENCRYPTOR_OUT%
echo. echo.
:: ======================================== echo [4/5] Creating installer payload ZIP...
:: 4. Build installer (.NET Framework 4.8) powershell -NoProfile -Command "Compress-Archive -Path '%APP_OUT%\*' -DestinationPath '%PAYLOAD_ZIP%' -Force"
:: ======================================== if errorlevel 1 goto :fail_payload
echo [4/4] Building installer (.NET Framework 4.8)... if not exist "%PAYLOAD_ZIP%" goto :fail_payload
dotnet build "%OFFLINE%" -c Release --nologo -v quiet echo OK - %PAYLOAD_ZIP%
if %ERRORLEVEL% NEQ 0 ( echo [FAILED] Installer build & pause & exit /b 1 ) echo.
copy /Y "src\AxCopilot.Installer\bin\Release\net48\AxCopilot_Setup.exe" "%OUT%\" >nul
echo [5/5] Building installer (.NET Framework 4.8)...
dotnet build "%INSTALLER%" -c Release --nologo -v minimal
if errorlevel 1 goto :fail_installer
if not exist "%INSTALLER_EXE%" goto :fail_installer_copy
copy /Y "%INSTALLER_EXE%" "%OUT%\" >nul
if errorlevel 1 goto :fail_installer_copy
for %%F in ("%OUT%\AxCopilot_Setup.exe") do echo OK - AxCopilot_Setup.exe (%%~zF bytes) for %%F in ("%OUT%\AxCopilot_Setup.exe") do echo OK - AxCopilot_Setup.exe (%%~zF bytes)
echo. echo.
:: ======================================== echo [Cleanup] Removing debug and metadata files from dist...
:: Cleanup call :clean_publish_artifacts "%OUT%"
:: ======================================== call :clean_publish_artifacts "%APP_OUT%"
:: Remove debug symbols and metadata (anti-decompile) call :clean_publish_artifacts "%ENCRYPTOR_OUT%"
del /q "%OUT%\*.pdb" 2>nul if exist "%PAYLOAD_ZIP%" del /q "%PAYLOAD_ZIP%" 2>nul
del /q "%OUT%\AxCopilot\*.pdb" 2>nul echo OK - cleaned
del /q "%OUT%\AxCopilot\*.xml" 2>nul echo.
del /q "%OUT%\*.deps.json" 2>nul
del /q "%OUT%\*.runtimeconfig.json" 2>nul
del /q "src\AxCopilot.Installer\payload.zip" 2>nul
echo ======================================== echo ========================================
echo Build Complete! echo Build Complete!
echo ======================================== echo ========================================
echo. echo.
echo dist\AxCopilot\ Main app (EXE + DLL) echo %APP_OUT% Main app
echo dist\AxKeyEncryptor\ Settings Encryptor (dev tool) echo %ENCRYPTOR_OUT% Settings Encryptor
echo dist\AxCopilot_Setup.exe Installer (offline, .NET 4.8) echo %OUT%\AxCopilot_Setup.exe Installer
echo. echo.
pause echo Note:
echo - Release/self-contained single-file publish applied
echo - ReadyToRun + compressed single-file bundle enabled
echo - PDB/XML/debug metadata removed from dist output
echo - External obfuscator is only applied when tools\obfuscator is configured
echo.
popd >nul
exit /b 0
:stop_process
set "PROC_NAME=%~1"
set "DISPLAY_NAME=%~2"
powershell -NoProfile -ExecutionPolicy Bypass -Command ^
"$name='%PROC_NAME%';" ^
"$display='%DISPLAY_NAME%';" ^
"$procs = Get-Process -Name $name -ErrorAction SilentlyContinue;" ^
"if (-not $procs) { exit 0 }" ^
"Write-Host ('[0] Stopping ' + $display + '...');" ^
"$imageName = $name + '.exe';" ^
"foreach ($proc in $procs) {" ^
" try { if ($proc.MainWindowHandle -ne 0) { [void]$proc.CloseMainWindow() } } catch { }" ^
"}" ^
"Start-Sleep -Seconds 2;" ^
"& taskkill /IM $imageName /T /F > $null 2> $null;" ^
"Start-Sleep -Seconds 2;" ^
"$stillRunning = Get-Process -Name $name -ErrorAction SilentlyContinue;" ^
"if ($stillRunning) {" ^
" Write-Host ('[FAILED] Could not stop ' + $display + '. Access may be denied or the app may be running with higher privileges.') -ForegroundColor Red;" ^
" exit 1" ^
"}" ^
"exit 0"
if errorlevel 1 exit /b 1
exit /b 0
:clean_publish_artifacts
if not exist "%~1" exit /b 0
del /q "%~1\*.pdb" 2>nul
del /q "%~1\*.xml" 2>nul
del /q "%~1\*.deps.json" 2>nul
del /q "%~1\*.runtimeconfig.json" 2>nul
exit /b 0
:fail_dist
echo [FAILED] dist ??€????밴쉐 ??쎈솭
goto :end_fail
:fail_app
echo [FAILED] main app publish ??쎈솭
goto :end_fail
:fail_obfuscation
echo [FAILED] obfuscation ??€???쎈솭
goto :end_fail
:fail_encryptor
echo [FAILED] AxKeyEncryptor publish ??쎈솭
goto :end_fail
:fail_payload
echo [FAILED] payload.zip ??밴쉐 ??쎈솭
goto :end_fail
:fail_installer
echo [FAILED] installer build ??쎈솭
goto :end_fail
:fail_installer_copy
echo [FAILED] installer exe 癰귣벊沅???쎈솭
goto :end_fail
:fail_running
echo [FAILED] running AX Copilot process could not be stopped cleanly
goto :end_fail
:end_fail
if exist "%PAYLOAD_ZIP%" del /q "%PAYLOAD_ZIP%" 2>nul
popd >nul
exit /b 1

132
create_html_preview.js Normal file
View File

@@ -0,0 +1,132 @@
const JSZip = require('jszip');
const fs = require('fs');
const path = require('path');
// EMU to inches: 1 inch = 914400 EMU
// Slide: 9144000 x 5143500 EMU = 10" x 5.625"
const EMU = 914400;
const SLIDE_W = 9144000;
const SLIDE_H = 5143500;
const SCALE = 960 / 10; // 96px per inch (at 100%)
function emuToPx(emu) {
return (emu / EMU) * SCALE;
}
function hexToRgb(hex) {
if (!hex || hex.length < 6) return '#888888';
return '#' + hex.slice(-6);
}
async function renderSlideHtml(xml, slideNum) {
// Extract background color
const bgMatch = xml.match(/p:bg>.*?<a:srgbClr val="([A-Fa-f0-9]{6})"/s);
const bgColor = bgMatch ? '#' + bgMatch[1] : '#F5F7FA';
// Parse all shapes and text boxes
const shapes = [];
// Find all spTree child elements (sp = shape/textbox, pic = image)
const spPattern = /<p:sp>(.+?)<\/p:sp>/gs;
let spMatch;
while ((spMatch = spPattern.exec(xml)) !== null) {
const spXml = spMatch[1];
// Get position
const offMatch = spXml.match(/<a:off x="(-?\d+)" y="(-?\d+)"/);
const extMatch = spXml.match(/<a:ext cx="(\d+)" cy="(\d+)"/);
if (!offMatch || !extMatch) continue;
const x = emuToPx(parseInt(offMatch[1]));
const y = emuToPx(parseInt(offMatch[2]));
const w = emuToPx(parseInt(extMatch[1]));
const h = emuToPx(parseInt(extMatch[2]));
// Get fill color
const fillMatch = spXml.match(/p:spPr[\s\S]*?<a:srgbClr val="([A-Fa-f0-9]{6})"/);
const fillColor = fillMatch ? '#' + fillMatch[1] : null;
// Get text content
const texts = [];
const paraPattern = /<a:p>([\s\S]*?)<\/a:p>/g;
let paraMatch;
while ((paraMatch = paraPattern.exec(spXml)) !== null) {
const paraXml = paraMatch[1];
const textMatches = [...paraXml.matchAll(/<a:t[^>]*>([^<]*)<\/a:t>/g)];
const paraText = textMatches.map(m => m[1]).join('');
if (paraText.trim()) texts.push(paraText.trim());
}
// Get font size
const szMatch = spXml.match(/sz="(\d+)"/);
const fontSize = szMatch ? parseInt(szMatch[1]) / 100 : 12;
// Get text color
const txtColorMatch = spXml.match(/<a:t>[\s\S]*?<a:srgbClr val="([A-Fa-f0-9]{6})"/);
const txtColor = txtColorMatch ? '#' + txtColorMatch[1] : '#FFFFFF';
shapes.push({ x, y, w, h, fillColor, texts, fontSize, txtColor });
}
// Build HTML
let shapesHtml = '';
for (const s of shapes) {
const bgStyle = s.fillColor ? `background-color: ${s.fillColor};` : '';
const textContent = s.texts.join('<br>');
shapesHtml += `<div style="position:absolute;left:${s.x.toFixed(1)}px;top:${s.y.toFixed(1)}px;width:${s.w.toFixed(1)}px;height:${s.h.toFixed(1)}px;${bgStyle}overflow:hidden;box-sizing:border-box;padding:2px 4px;">
<div style="font-size:${Math.min(s.fontSize, 20)}px;color:${s.txtColor};font-family:Arial,sans-serif;overflow:hidden;">${textContent}</div>
</div>`;
}
return `<div style="position:relative;width:960px;height:540px;background-color:${bgColor};overflow:hidden;border:1px solid #333;flex-shrink:0;">
<div style="position:absolute;top:2px;right:4px;font-size:10px;color:rgba(128,128,128,0.5);z-index:999">${slideNum}</div>
${shapesHtml}
</div>`;
}
async function createPreview(pptxPath, outputPath) {
const data = fs.readFileSync(pptxPath);
const zip = await JSZip.loadAsync(data);
const slideFiles = Object.keys(zip.files)
.filter(f => f.match(/^ppt\/slides\/slide\d+\.xml$/))
.sort((a, b) => {
const na = parseInt(a.match(/slide(\d+)/)[1]);
const nb = parseInt(b.match(/slide(\d+)/)[1]);
return na - nb;
});
let slidesHtml = '';
for (const sf of slideFiles) {
const slideNum = parseInt(sf.match(/slide(\d+)/)[1]);
const xml = await zip.file(sf).async('string');
slidesHtml += await renderSlideHtml(xml, slideNum);
}
const html = `<!DOCTYPE html>
<html><head><meta charset="utf-8">
<title>${path.basename(pptxPath)}</title>
<style>
body { background: #1a1a1a; font-family: Arial; margin: 0; padding: 20px; }
h2 { color: #fff; font-size: 14px; margin-bottom: 10px; }
.slides { display: flex; flex-direction: column; gap: 16px; align-items: flex-start; }
</style>
</head><body>
<h2>${path.basename(pptxPath)}</h2>
<div class="slides">${slidesHtml}</div>
</body></html>`;
fs.writeFileSync(outputPath, html);
console.log(`Preview: ${outputPath} (${slideFiles.length} slides)`);
}
(async () => {
await createPreview(
'E:/test/삼성디스플레이 vs LG디스플레이 비교 분석 보고서_20260407_1958.pptx',
'C:/Users/admin/AppData/Local/Temp/pptx_gen/preview1.html'
);
await createPreview(
'E:/test/삼성디스플레이 사업 영역 및 제품 강점 분석 보고서_20260407_1956.pptx',
'C:/Users/admin/AppData/Local/Temp/pptx_gen/preview2.html'
);
})();

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

View File

@@ -1,19 +0,0 @@
{
"runtimeOptions": {
"tfm": "net8.0",
"includedFrameworks": [
{
"name": "Microsoft.NETCore.App",
"version": "8.0.25"
},
{
"name": "Microsoft.WindowsDesktop.App",
"version": "8.0.25"
}
],
"configProperties": {
"System.Reflection.Metadata.MetadataUpdater.IsSupported": false,
"CSWINRT_USE_WINDOWS_UI_XAML_PROJECTIONS": false
}
}
}

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More