Repository navigation
v1.0.9 - 스킬 체이닝 및 전환 확인 다이얼로그
DMAP v1.0.9 Release Notes
📋 릴리스 정보 (Release Information)
- 버전 (Version): v1.0.9
- 릴리스 날짜 (Release Date): 2026-02-16
- 이전 버전 (Previous Version): v1.0.8 (2026-02-16)
- 변경 사항 (Change Type): 패치 (Patch) - 스킬 체이닝 기능 추가 및 UX 개선
🚀 주요 변경 사항 (Major Changes)
🔗 스킬 체이닝 (Skill Chaining) - 신규 기능
- 자동 스킬 전환: 한 스킬 실행 중 다른 스킬을 호출하면 자동으로 새 세션을 생성하고 전환
- 슬래시 커맨드 감지:
/dmap:skill-name형식의 명령어를 자동으로 감지하여 스킬 체이닝 시작 - SSE 기반 실시간 전환:
skill_changed이벤트를 통해 프론트엔드에서 즉시 UI 업데이트 - 레이스 컨디션 방지: 세션 전환 시 이전 세션을 안전하게 중단하고 새 세션으로 전환
- 스마트 세션 관리: 기존 세션은 자동 완료 처리, 새 세션은 활성 스킬로 설정
🛡️ 실행 중 전환 확인 다이얼로그 - 신규 기능
- 안전한 전환: 스킬 실행 중 다른 스킬을 클릭하면 확인 다이얼로그 표시
- 명확한 경고: 현재 작업이 중단될 수 있음을 사용자에게 명확히 알림
- 승인 대기 처리: 사용자가 승인할 때까지 새 스킬 실행을 대기
- 중단 로직: 확인 후 기존 스트림을 안전하게 중단하고 새 스킬로 전환
- 다국어 지원: 한국어/영어 다이얼로그 메시지 지원
🔧 백엔드 개선 (Backend Improvements)
- detectSkillChainCommand(): Claude 응답에서 슬래시 커맨드 패턴을 감지하는 새로운 함수
- skill_changed SSE 이벤트: 스킬 전환 시 프론트엔드에 실시간 알림 전송
- 세션 라이프사이클 관리: 체인 감지 시 기존 세션 완료 처리 및 새 세션 생성
- chainDetected 플래그: 스킬 체이닝 상태를 추적하여 중복 처리 방지
🎨 프론트엔드 개선 (Frontend Improvements)
- ConfirmSwitchDialog 컴포넌트: 새로운 전환 확인 다이얼로그 UI 컴포넌트
- useSkillStream 훅 강화: skill_changed 이벤트 핸들링 및 레이스 컨디션 가드
- appStore 액션 추가:
switchSkillChain: 스킬/세션/활동패널 자동 전환pendingSkillSwitch: 전환 대기 상태 관리confirmSkillSwitch: 사용자 확인 후 전환 실행cancelSkillSwitch: 전환 취소abortCurrentStream: 현재 스트림 안전 중단
- Sidebar 가드 로직: 실행 중/승인 대기 중 스킬 클릭 방지
📦 리소스 업데이트 (Resource Updates)
- email_sender 도구 추가: 이메일 발송 기능을 위한 새로운 도구 및 문서
- gmail-notification 제거: 구형 Gmail 알림 도구 제거
📊 변경 통계 (Change Statistics)
19 files changed, 760 insertions(+), 204 deletions(-)
추가된 파일 (New Files)
dmap-web/packages/frontend/src/components/ConfirmSwitchDialog.tsx- 전환 확인 다이얼로그resources/tools/email_sender/email_sender.py- 이메일 발송 도구resources/tools/email_sender/email_sender.md- 이메일 발송 도구 문서RELEASE-v1.0.8.md- 이전 버전 릴리스 노트
제거된 파일 (Removed Files)
resources/tools/gmail-notification/gmail-notification.gs- 구형 Gmail 알림 스크립트resources/tools/gmail-notification/gmail-notification.md- 구형 Gmail 알림 문서
주요 수정된 파일 (Modified Files)
-
백엔드:
dmap-web/packages/backend/src/routes/skills.ts- 스킬 체이닝 핸들링, chainDetected 플래그dmap-web/packages/backend/src/services/claude-sdk-client.ts- detectSkillChainCommand(), 체인 감지 후 abortdmap-web/packages/backend/src/services/session-manager.ts- 세션 관리 개선
-
프론트엔드:
dmap-web/packages/frontend/src/components/ConfirmSwitchDialog.tsx- 전환 확인 다이얼로그 (신규)dmap-web/packages/frontend/src/components/Sidebar.tsx- handleSkillClick 가드 추가dmap-web/packages/frontend/src/hooks/useSkillStream.ts- skill_changed 핸들러, complete 레이스 가드dmap-web/packages/frontend/src/stores/appStore.ts- switchSkillChain, pendingSkillSwitch, abortCurrentStream
-
공유:
dmap-web/packages/shared/src/types.ts- SSESkillChangedEvent 타입dmap-web/packages/shared/src/constants.ts- 상수 업데이트
-
다국어 지원:
dmap-web/packages/frontend/src/i18n/types.ts- switchDialog.* 타입 정의dmap-web/packages/frontend/src/i18n/ko.ts- 한국어 전환 다이얼로그 번역dmap-web/packages/frontend/src/i18n/en.ts- 영어 전환 다이얼로그 번역
🔄 호환성 정보 (Compatibility)
- Node.js: 18.x 이상 권장
- 브라우저: Chrome 90+, Firefox 88+, Safari 14+, Edge 90+
- 이전 버전과의 호환성: 완전 호환 (Breaking Changes 없음)
🐛 버그 수정 (Bug Fixes)
- 스킬 전환 시 레이스 컨디션 방지 로직 추가
- complete 이벤트 핸들러에 sessionId 가드 추가
- 실행 중 스킬 클릭 시 의도하지 않은 전환 방지
- 세션 상태 동기화 개선
⚡ 성능 개선 (Performance Improvements)
- 스킬 체이닝 시 불필요한 API 호출 최소화
- abort 처리 최적화로 빠른 세션 전환
- SSE 이벤트 핸들링 효율화
🏗️ 개발자 경험 (Developer Experience)
- TypeScript 타입 안전성 강화 (SSESkillChangedEvent)
- 명확한 스킬 체이닝 워크플로우 구조
- 다이얼로그 컴포넌트 재사용성 개선
- 에러 핸들링 및 로깅 강화
📖 사용법 (Usage)
스킬 체이닝 사용
// team-planner 스킬 실행 중 다음 메시지 전송
"/dmap:develop-plugin"
// 자동으로:
// 1. detectSkillChainCommand()가 슬래시 커맨드 감지
// 2. skill_changed SSE 이벤트 발송
// 3. 기존 세션 완료 처리
// 4. 새 세션 생성 및 활성화
// 5. UI 자동 전환전환 확인 다이얼로그
// 스킬 실행 중 다른 스킬 클릭 시:
// 1. ConfirmSwitchDialog 표시
// 2. 사용자가 "전환" 클릭 → confirmSkillSwitch() 실행
// 3. 기존 스트림 abort → 새 스킬로 전환
// 4. 사용자가 "취소" 클릭 → cancelSkillSwitch() 실행새로운 Store 액션
// 스킬 체이닝 (자동)
appStore.getState().switchSkillChain({
skillName: 'dmap:develop-plugin',
sessionId: newSessionId,
});
// 전환 확인 (사용자 승인 대기)
appStore.getState().pendingSkillSwitch(skillName, initialMessage);
// 승인 후 전환
appStore.getState().confirmSkillSwitch();
// 취소
appStore.getState().cancelSkillSwitch();
// 현재 스트림 중단
appStore.getState().abortCurrentStream();🔮 다음 버전 계획 (Next Version Plans)
- 스킬 체이닝 히스토리 추적 및 시각화
- 다중 스킬 체이닝 (A → B → C) 지원
- 스킬 간 컨텍스트 전달 기능
- 스킬 체이닝 템플릿 및 매크로 기능
👥 기여자 (Contributors)
- ondal (hiondal@gmail.com) - 주요 개발
- Claude (noreply@anthropic.com) - AI 어시스턴트 협업
🔗 관련 링크 (Related Links)
- GitHub Repository: https://github.com/unicorn-plugins/dmap
- 이슈 트래커: https://github.com/unicorn-plugins/dmap/issues
- 문서: https://github.com/unicorn-plugins/dmap/wiki
- 이전 릴리스: v1.0.8
Full Changelog: v1.0.8...v1.0.9
English Summary
What's New in v1.0.9
- Skill Chaining: Automatically detect slash commands (
/dmap:skill-name) and create new sessions with seamless UI transitions - Confirm Switch Dialog: Show confirmation dialog when switching skills during execution to prevent accidental interruptions
- Enhanced Backend: New
detectSkillChainCommand()function,skill_changedSSE event, and improved session lifecycle management - Frontend Improvements: New
ConfirmSwitchDialogcomponent, enhanceduseSkillStreamhook, and new store actions for safe transitions - Resource Updates: Added
email_sendertool, removed deprecatedgmail-notificationtool
This patch release introduces skill chaining capabilities and user-friendly confirmation dialogs while maintaining full backward compatibility.