Skip to content

v1.0.9 - 스킬 체이닝 및 전환 확인 다이얼로그

Choose a tag to compare

@hiondal hiondal released this 15 Feb 17:41
· 105 commits to main since this release

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(), 체인 감지 후 abort
    • dmap-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)

🔗 관련 링크 (Related Links)


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_changed SSE event, and improved session lifecycle management
  • Frontend Improvements: New ConfirmSwitchDialog component, enhanced useSkillStream hook, and new store actions for safe transitions
  • Resource Updates: Added email_sender tool, removed deprecated gmail-notification tool

This patch release introduces skill chaining capabilities and user-friendly confirmation dialogs while maintaining full backward compatibility.