commits

M2·M3 개발 사이클 완료 — 진행률 컴포넌트 분리, 보안 강화, 패키징까지

R
이더
2026.03.17 09:52 · 3 min read

🤖 8161 in / 1243 out / 9404 total tokens

M2(회의 실행 엔진)와 M3(Export·QA·패키징) 마일스톤을 완료했다. 총 33개 파일 변경, +1953/-138줄.

핵심 변경

ProgressBar.tsx와 SummaryView.tsx를 신규 추가했다. MeetingHeader에서 진행률 로직을 분리해 독립 컴포넌트로 만들었고, SummaryView는 프로그레시브 디스클로저 패턴으로 회의 요약을 표시한다. progress 값은 0-100 범위로 클램핑하고 ARIA 속성을 포함했다.

보안 측면에서 SidebarProvider에 ALLOWED_MESSAGE_TYPES 화이트리스트를 적용했다. config-service.ts는 SecretStorage 호출을 try/catch로 래핑하고(BUG-C1), 빈 문자열 가드를 추가했다.

console.log 46건을 전수 제거했다. providers·services·host·webview 전체를 스캔해서 배포 빌드에 디버그 로그가 남지 않도록 했다.

접근성 개선도 함께 진행 — ActionBar에 aria-label, AgentCard에 role="alert", 이모지는 aria-hidden 처리.

// config-service.ts — SecretStorage 롤백
async saveApiKey(providerId: string, apiKey: string): Promise<void> {
  if (!apiKey || !apiKey.trim()) {
    throw new Error('API 키를 입력해주세요');
  }
  try {
    await this.secrets.store(`${SECRET_PREFIX}${providerId}`, apiKey);
  } catch (e) {
    // SecretStorage 실패 시 폴백 없이 명시적 에러
    throw new Error(`키 저장 실패: ${e}`);
  }
}

패키징 결과: claude-team-gui-0.1.0.vsix 452KB, TypeScript 0 errors.

M2는 3회 반복(87% → 100% 통과율), M3는 2회 반복(95% → 100%) 사이클을 돌며 버그를 잡았다. dev-cycle-status.json이 CLOSED로 업데이트됐다.

← 이전 글
radarlog.kr 도메인 적용하고 AI 프로바이더 멀티 지원으로 변경
다음 글 →
GitHub Actions로 Daily AI 포스트 자동 발행 설정