v0.2.46
v0.2.46 — WebGL: 아바타를 노드 정중앙으로 + 참조 노드 강조 + 풍선 노드 바깥 배치
변경 전 (WebGLGraph2D.tsx:1709~1719)
ay = cy + target.height / 2 + 18— 아바타가 노드 위 18px 에 떠 있음.
변경 후
ay = cy— 아바타가 노드의 vertical center 와 일치 → "이 노드를 사용 중" 시각 표시.
다중 에이전트 간격 조절
- 기존 SPACING=40 horizontal distribution 그대로 유지. N 명이면 ±SPACING*(idx - (N-1)/2) 분포. 노드 width 가 N*40 이상이면 모두 안에 fit.
(2) 참조 노드 강조 (subtle)
WebGLGraph2D.tsx 최상위
agentReferencedPaths: Set<string>신규 — working 상태의 active 아바타들의 currentPath 집합.eventsSigthrottle (AvatarMarkers 와 동일 패턴) 로 매 이벤트 재계산 방지.
NodeOverlays
agentReferencedPathsprop 추가. 매칭 시:
보더 색
borderColor→#7AAEFF(lighter blue accent).
glow
0 0 5px rgba(122,174,255,0.32), 0 0 10px rgba(122,174,255,0.14)— selected(orange)/hovered 보다 약함, "subtle accent" 만족.- simple/minimal 모드에선 glow 생략.
(3) 말풍선 위치 조정 (노드 바깥)
- 아바타가 노드 중앙으로 이동했으므로 기존 GAP_X=56 으로는 풍선이 노드 카드 안에 겹침.
WebGLGraph2D.tsx:1709
bubbleOffsetX = target.width / 2 + 20동적 계산 — 노드 가장자리 + 20px 여유. 가상 노드 fallback 시 기본 56.
WebGLGraph2D.tsx:1867
- SpeechBubble 호출 시
bubbleSide === 'right'면offset.left = bubbleOffsetX,'left'면offset.right = bubbleOffsetX. 풍선이 노드 가장자리에서 항상 20px 떨어짐.
변경 파일
src/components/Visualizer2D/WebGLGraph2D.tsx:- 최상위
agentReferencedPathsuseMemo (eventsSig throttle). NodeOverlays시그니처에 prop 추가 + isReferenced 분기.- NodeOverlays 호출 시 prop 전달.
- AvatarMarkers 의 ay 계산 (cy 로) + bubbleOffsetX 동적 계산.
- SpeechBubble 호출 offset 변경 (left/right 동적).
package.json0.2.45 → 0.2.46.
검증
npx tsc --noEmitexit=0npm run build성공 — renderer 12.32s, 번들 3,448.14 kB.
사용자 확인
- WebGL: 아바타가 참조 중인 노드의 정중앙에 표시 → "이 파일에 작업 중" 강력한 시각 시그널.
- 같은 노드의 여러 아바타: 가로로 SPACING=40 간격 분산.
- 활성 에이전트가 참조 중인 노드: 푸른 색 accent border + subtle glow → 한눈에 "지금 어디서 작업 중인지" 파악 가능.
- 말풍선: 노드 카드 바깥 20px 에 배치 → 노드 내용 (파일명/language 라벨) 과 겹치지 않음.
- --
📦 GitHub 릴리스 노트: v0.2.46