Skip to content

[feat/MAT-355] 렌더링 분리#299

Open
b0nsu wants to merge 1 commit intorefactor/mat-354-type-modelfrom
refactor/mat-355-rendering
Open

[feat/MAT-355] 렌더링 분리#299
b0nsu wants to merge 1 commit intorefactor/mat-354-type-modelfrom
refactor/mat-355-rendering

Conversation

@b0nsu
Copy link
Copy Markdown
Collaborator

@b0nsu b0nsu commented Apr 30, 2026

Summary

DrawingCanvas에서 Skia 렌더링 로직을 render/skia/ 디렉토리로 추출합니다.
SkiaDrawingCanvasSurface, skiaRenderUtils, useSkiaDrawingRenderer로 분리하여 렌더링 관심사를 격리합니다.

Stacked PR 2/10 — base: refactor/mat-354-type-model

Linear

Changes

  • DrawingCanvas에서 Skia 렌더링 코드 추출 → render/skia/SkiaDrawingCanvasSurface.tsx
  • wrapTextToLines 등 렌더링 유틸 → render/skia/skiaRenderUtils.ts
  • renderer hook → render/skia/useSkiaDrawingRenderer.tsx
  • DrawingCanvas에서 추출된 코드 제거 및 import 전환

Testing

  • pnpm typecheck 통과
  • pnpm lint 통과
  • ✅ 실기기 테스트 (iPad Air 5th gen, iOS 26.3.1)
    • 획 그리기/렌더링 정상
    • 렌더링 분리 자체는 기존 동작과 동일

Risk / Impact

  • 영향 범위: pointer-native-drawing 패키지 내부 구조 변경
  • 확인이 필요한 부분: 렌더링 동작 동일성
  • 배포 시 유의사항: 없음

실기기 테스트 중 발견된 기존 이슈

증상: 스크랩 진입 시 필기 데이터가 로딩된 후 사라짐

원인: TanStack Query refetch로 인해 정상 데이터(40획) 로딩 후 빈 데이터가 setStrokes를 재호출하여 덮어씌움

판단: MAT-355 변경과 무관한 기존 이슈.

해결: PR #288 (MAT-349: handwriting API 캐시 전략 개선)에서 staleTime: Infinity + refetchOnWindowFocus: false 적용으로 해결됨. #288 머지 후 해소.

- render/skia/skiaRenderUtils.ts: wrapTextToLines (중복 텍스트 줄바꿈 로직 통합)
- render/skia/useSkiaDrawingRenderer.tsx: renderedPaths, renderedTexts, hoverOpacity 훅
- render/skia/SkiaDrawingCanvasSurface.tsx: Canvas 래퍼 컴포넌트
- DrawingCanvas.tsx: calculateTextLineCount를 wrapTextToLines 기반으로 단순화
- DrawingCanvas.tsx에서 렌더링 로직 136줄 제거

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
@linear
Copy link
Copy Markdown

linear Bot commented Apr 30, 2026

MAT-355 렌더링 분리

@vercel
Copy link
Copy Markdown

vercel Bot commented Apr 30, 2026

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
pointer-admin Ready Ready Preview, Comment Apr 30, 2026 11:50am

@b0nsu
Copy link
Copy Markdown
Collaborator Author

b0nsu commented May 1, 2026

실기기 테스트 중 발견된 이슈

증상: 스크랩 진입 시 필기 데이터가 로딩된 후 사라짐

원인: TanStack Query refetch로 인해 정상 데이터(40획, 16604 bytes) 로딩 후 빈 데이터(36 bytes)가 다시 setStrokes를 호출하여 덮어씌움

로그 증거:

[HW-DEBUG] decoded {"strokeCount": 40, ...}  ← 정상 로딩
[HW-DEBUG] decoded {"strokeCount": 0, ...}   ← refetch로 빈 데이터 덮어씌움

판단: MAT-355 렌더링 분리와 무관한 기존 이슈. develop에서도 동일하게 재현 가능성 높음. 별도 이슈로 추적 필요.

테스트 환경: iPad Air 5th gen, iOS 26.3.1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant