v0.1.95
v0.1.95 — CI 대안 (로컬 빌드 + workflow conditional) + v0.2.0 Phase 2~5 통합
변경 사항
사용자 요청
- "GitHub 플랜을 업그레이드할 생각은 없어 — GitHub Actions 빌드 대체 무료 플랫폼 또는 사용 가능할 때만 작동"
- "v0.2.0 후속 단계 진행"
1) CI 대안 A1 — 로컬 빌드 + GitHub Release 자동 게시 스크립트
- 신규
scripts/local-release.mjs(270+ lines): - 사용법:
node scripts/local-release.mjs [--win|--mac|--linux|--web|--all] [--dry-run] [--skip-build] - 동작: icons + electron-vite + electron-builder → GitHub Release artifact 업로드 (gh CLI)
- mac 의 경우 APPLE_ID 등 env 있으면 notarize, 없으면 unsigned 빌드
- web 옵션은 wrangler 로 Cloudflare Pages 직접 배포
- 새 release 라면
gh release create, 이미 있으면gh release upload --clobber자동 분기 - 사용자가 Windows 머신 + Mac 머신 보유 시 각각에서 실행해 모든 플랫폼 빌드 가능
package.jsonscripts 등록:
"release:local": "node scripts/local-release.mjs",
"release:local:win": "node scripts/local-release.mjs --win",
"release:local:mac": "node scripts/local-release.mjs --mac",
"release:local:linux": "node scripts/local-release.mjs --linux",
"release:local:web": "node scripts/local-release.mjs --web",
"release:local:all": "node scripts/local-release.mjs --all"2) CI 대안 A2 — workflow conditional
.github/workflows/release.yml의build+web-deployjob 에if: ${{ vars.GH_ACTIONS_ENABLED != 'false' }}조건 추가.- repo Settings → Secrets and variables → Actions → Variables 탭 →
GH_ACTIONS_ENABLED=false설정 시 모든 자동 빌드 skip - 결제 한도 복구 후 변수 삭제 또는
true로 변경하면 다시 활성화 - 기본은 enable (변수 미설정 시)
3) v0.2.0 Phase 2 — 엣지 GPU 렌더 (WebGLGraph2D.tsx 의 <EdgeLines>)
THREE.BufferGeometry에positionattribute 만 setup →<lineSegments>한 mesh- 모든 엣지가 단일 draw call (현재 React Flow 는 각 엣지가 SVG path)
- 색상 균일
#3a4a6aopacity 0.4 — 디자인 첫 단계 (Phase 4 final 에서 엣지 종류별 색)
4) v0.2.0 Phase 3 — Hit testing (raycaster)
- R3F 의
onClick이벤트 →instanceId로 노드 인덱스 받음 →useViewStore.selectNode(id) - 추가 spatial hash 없이도 R3F 의 기본 raycaster 가 충분히 빠름 (5000+ 노드도 OK)
- onPointerMove + onPointerOut → hoveredId 로컬 state (시각 강조)
5) v0.2.0 Phase 4 — HTML overlay (첫 단계)
- drei
<Html>컴포넌트로 노드 위에 파일명 + 언어 뱃지 표시 - 100 노드 이하만 overlay (5000 노드면 DOM 비용 커짐 — viewport culling 은 Phase 4 final)
- 단순 텍스트 only — FileNodeCard 의 보더/아이콘/badge 매칭은 Phase 4 final
6) v0.2.0 Phase 5 — Avatar GPU sprites (첫 단계)
- agentStore.selectAvatars() 로 active avatar 목록
- 각 avatar 의 currentPath → 노드 위치 → 노드 위 18px 에
<Html>작은 원 (22×22px) - avatarHue 로 agent 이름별 고유 hue, working/idle 상태별 보더 색
- 디자인 매칭 (Bot/User lucide 아이콘, action badge, trail SVG 등) 은 Phase 5 final
사용
- 2D 모드 → ViewOptions → "엔진 (실험)" → WebGL (alpha)
- 노드 클릭 → 사이드바에 정보 표시 (기존 selectNode 와 동일)
- 드래그로 팬 (4px 이상 이동 시 드래그 인식, 그 미만은 클릭으로 처리)
- 휠로 줌
파일 변경
- 신규:
scripts/local-release.mjs(~270 lines, 로컬 빌드 + release upload) - 수정:
.github/workflows/release.yml—vars.GH_ACTIONS_ENABLEDconditional - 수정:
package.json— release:local:* scripts 6개 추가 - 수정:
src/components/Visualizer2D/WebGLGraph2D.tsx— Phase 2-5 통합 (엣지/hit test/HTML overlay/avatar) - 수정:
package.json0.1.94 → 0.1.95
검증
npx tsc --noEmitexit=0npm run build성공 (renderer 3,292KB, +6KB Phase 2-5 영향)
Phase 4/5 final 후속 작업 (v0.1.96+)
- Phase 4 final: layoutAlgorithm.computeLayout 호환 layer (현재 단순 grid → React Flow 와 같은 좌표)
- Phase 4 final: FileNodeCard 디자인 100% 매칭 (보더/아이콘/badge HTML overlay)
- Phase 4 final: viewport culling (5000+ 노드도 100 노드만 HTML overlay 활성)
- Phase 5 final: avatar trail SVG / mounts / sub-agent 관계선 추가
- DataFlowParticles2D 의 WebGL 버전
- --
📦 GitHub 릴리스 노트: v0.1.95