999a8730dd
디자인 시안(프로토타입)을 실제 Vue 컴포넌트로 이식하고, 코드·로직·보안 검토에서 도출한 항목을 반영한다. UI 개편 - 컴포넌트 분리: MeetingLobby/CreateForm/Prejoin/Room/SidePanel/PeopleList/ Chat/ControlBar/ParticipantTile/QualityBars/MeetingIcon - 로비: 검색 툴바 + "새 회의 만들기" 모달(BaseModal) + 방 목록(삭제=휴지통) - 프리조인: 실제 카메라/마이크 미리보기 + 초기 on/off, 실제 프로필 아바타 - 회의실: 축소 스테이지 + 썸네일 그리드(한 페이지 50명) + 페이지네이션, 말하는 사람 하이라이트/연결 품질 막대 - 채팅: 데이터 채널 실제 구현(Shift+Enter 줄바꿈, 실제 프로필 아바타) 디자인 시스템 정합 - rem 단위/토큰 정렬, 공용 .btn/.form-*/.search/BaseModal/UserAvatar 재사용 - 회의실 다크 캔버스 토큰(--d-*, --d-red/green/amber/accent-soft) 추가 화질/성능 - 스테이지=고화질, 나머지=저화질 구독(setVideoQuality) - 타일 backdrop-filter 제거 + 발화/품질 이벤트 전체 리렌더 제거(버벅임 완화) 코드·로직·보안 검토 반영 - 채팅 표시 이름은 서명 토큰의 name/identity 만 신뢰(클라이언트 name 사칭 차단) - promote 는 보낸 사람 metadata role=host 일 때만 적용(인가) - 원격 오디오를 룸 레벨에서 전원 재생(페이지 밖 참여자 무음 수정) - 타일 언마운트 시 트랙 detach(누수 방지) - 마이크/카메라 토글 실패 시 상태 롤백 - 입장 토큰 TTL 1h → 12h(장시간 회의 재연결 안정성) - 채팅 길이 상한(MAX_CHAT_LENGTH) - 토큰 metadata 에 avatarUrl 포함(참여자/채팅 아바타) 기타 - 임시 명세/디자인 참고 파일 제거 Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>