v0.1.41
v0.1.41 — 진단 로그 수동 전송 버튼 + 2D 도시형(city) 레이아웃 추가
요청 1
- "오류 진단내용 표시될때 자동전송이 아닌, 진단로그 전송 버튼 추가해줘"
변경
src/main.tsx의AppErrorBoundary에서componentDidCatch의 자동reportRendererError호출 제거. 대신 fallback UI 에 **"진단 로그 전송"** 버튼 추가. 상태 머신:idle → sending → sent/failed. 전송 결과 토스트 (성공/실패 메시지) 표시.
변경
src/App.tsx의window.error/unhandledrejection핸들러 — 자동 전송 제거, 콘솔 로그만. 비-React 영역 에러의 무의식적 전송 가능성 차단. 사용자는 설정 → 일반의 수동 "지금 보내기" 버튼으로 명시 전송.
요청 2
- "2D 모드 레이아웃에 도시형 정렬방식 추가 — 프로젝트 폴더가 중앙에 위치, 노드들이 퍼져나가며, 직각 연결선 + 노드/엣지 비겹침"
변경 파일
src/store/viewStore.ts—LayoutOrientation에'city'추가.src/utils/layoutAlgorithm.ts— 신규compute2DCityLayout(). 알고리즘:- 1. root (id='') 를 (0,0) 중앙에 배치.
- 2. root 의 직속 자식을 E/W/S/N 4방향 strip 에 균등 분배 (leaf 수 기준 greedy).
- 3. 각 strip 안에서는 horizontal/vertical 트리 알고리즘 적용 — leaf 수 기반 spacing 보장으로 노드 비겹침.
- 4. spacing 상수:
CITY_DEPTH_X=420 / CITY_SIB_Y=72 / CITY_DEPTH_Y=176 / CITY_SIB_X=300— 일반 horizontal 보다 넓어 엣지 lane 확보. - 5.
CITY_CENTER_GAP60px — root 와 첫 depth 사이 여백. - 6. root 자식 N=1 → E 만, N=2 → E+W, N=3 → E+W+S, N=4+ → 4방향 사용.
src/components/Visualizer2D/Graph2D.tsx— city 모드는 React Flowstep엣지 (직각, 모서리 둥글림 없음). 그 외는 기존smoothstep(직각 + 둥근 모서리).edgeRoutingType변수로 3개 useMemo + defaultEdgeOptions 일괄 변환.src/components/Layout/ViewOptionsPanel.tsx— 2D 모드일 때 옵션 목록 = horizontal/vertical/radial/**city**, 3D 모드 = horizontal/vertical/radial/**tree**. 각 옵션에 tooltip 추가.src/i18n/locales/ko.json&en.json—orientationCity및 모든orientation*Tooltip키 추가.
비겹침 보장
- 노드끼리: 같은 strip 안에선 leaf-height 알고리즘이 보장. 다른 strip 끼리는 root 중앙에서 멀어지는 방향이라 절대 안 겹침.
- 엣지끼리: React Flow
step엣지가 직각 라우팅. 일반 케이스에서 spacing 이 넓어 엣지가 노드 위로 떨어지지 않음.
검증
npx tsc --noEmitexit=0.npm run build성공 — out/main/main.js 350.65kB, out/renderer/index-DOJyXRlp.js 3,050.29kB (+9kB, 도시 레이아웃 함수).
📦 GitHub 릴리스 노트: v0.1.41