v0.4.0 — 미리캔버스 파리티 디자인 엔진 + 웹 에디터
v0.4.0 업데이트 리포트
Changes (커밋 요약)
- feat: 미리캔버스 파리티 디자인 엔진 코어 (#20)
- feat: 웹 에디터 UI — 브라우저에서 디자인 엔진 직접 조작 (#21)
- feat: add Naver-ready promo thumbnails (#12)
- feat: add human editorial promo direction (#10)
- feat: archive generated image stock (#7)
- feat: add company promo thumbnail testbed (#5)
- fix: CLI 버전을 package.json에서 동적 로드
- chore: npm 퍼블리시 준비 · LICENSE · prepublishOnly 가드
- chore: repo-development-os 얇은 운영 환경 설치
- docs: v0.1.0/v0.2.0 릴리스 리포트 · 상태 문서 · 코드 아틀라스 · 회고 폴더 통일
What Changed (상세)
v0.4.0은 에이전트가 선언형 디자인 문서를 만들고 검증·변환·저장·내보내기까지 수행하는 디자인 엔진을 추가한다. 기존 0.3.0에서 minor 버전으로 올리는 기능 추가이며, 공개 API를 깨는 변경은 없다.
- Zod로 검증하는 다면
DesignDocument모델과 social·video·blog·presentation·print용 캔버스 프리셋 14종을 추가했다. fill,fit,original,adapt네 리사이즈 모드를 제공한다.adapt는 미리캔버스의 세 모드에는 없는 재구성 모드로, 종횡비가 바뀔 때 콘텐츠를 축소하고 재배치한다.- 팔레트·글꼴·로고를 정규화하고 위반을 보고하는 브랜드 키트, sfnt
cmap/hmtxglyph advance 기반 텍스트 측정, 그리고 wrap·shrink·grow·truncate 자동 레이아웃을 추가했다. 등록되지 않은 글꼴은 보수적 fallback으로 측정한다. - alignment, distribution, 측정 기반 stacking, vertical rhythm 레이아웃 프리미티브를 추가했다.
- 원본 파라미터형 채널 템플릿 12종을 등록했다. 미리캔버스의 에셋이나 레이아웃은 복사하지 않았으며, 라이선스 콘텐츠의 물량 격차를 메우려 하지 않는다.
- SVG, PNG, JPG, PDF, PPTX, GIF, MP4의 7개 형식으로 내보낸다. 새 의존성 없이 JPG baseline JFIF, PDF writer(FlateDecode·UTF-16BE 메타데이터), 편집 가능한 OOXML PPTX ZIP, median-cut 팔레트·LZW GIF89a, Motion JPEG ISO BMFF MP4를 직접 작성한다.
- crop·scale·pad·flat-background removal·trim의 결정론적 고전 이미지 처리를 추가했다. flat-background removal은 모서리 표본 기반 flood fill이며 AI matting이 아니다.
- QA 게이트는 캔버스 경계, 안전 영역, 실제 glyph metric 텍스트 적합, opacity 합성·둥근 사각형을 고려한 대비, 가림, 브랜드 준수, 정책을 검사한다.
- 워크스페이스 정책 게이트는 금지어·필수 문구, exhaustive regex allowlist, 승인 상태 전이, 이미지·브랜드 색상·프리셋·페이지 수 제한을 검사한다.
- schemaVersion 1의 파일 기반 프로젝트 저장소를 추가했다. symlink·비정규 파일을 거부하고, 0600 임시 파일 동기화 후 원자적 rename으로 쓴다.
- export와 이미지 읽기에 경로 containment를 적용했다. 이미지 resolver의 기본 파일 상한은 20 MiB다.
- MCP 서버는 총 23개 도구를 등록하며, 이 중 디자인 엔진 도구는 12개다.
- IBM Plex Sans KR Regular(400)·SemiBold(600)과 OFL.txt를
assets/fonts로 패키지에 포함해 런타임에서 사용할 수 있게 했다.
검증과 수정
독립 검토에서 테스트는 통과했지만 동작이 잘못된 세 결함을 찾아 수정했다.
- 텍스트 QA가 프레임을 넘는 텍스트를 승인하던 문제를 실제 텍스트 높이 검사로 수정했다.
- PPTX가 페이지 배경을 누락하던 문제를 슬라이드의
<p:bg>기록으로 수정했다. - 정책 regex allowlist의 wildcard 허점을 막고, 허용하는 문법을 exhaustive하게 검사하도록 수정했다.
인코더는 형식의 자체 구조 검사만으로 신뢰하지 않고 별도 도구로 검증한다. MP4 fixture는 ffprobe에서 mjpeg, 64×40, 3프레임, 0.300000초, 10fps, mov,mp4,m4a,3gp,3g2,mj2로 확인하고, ffmpeg 추출 프레임의 채널별 MAE는 3 미만이다. GIF는 Pillow, PDF는 pypdf, PPTX는 LibreOffice 렌더와 Python ZIP/XML 검사, JPEG는 sips로 열어 확인하는 회귀 검사를 둔다.
릴리스 검증에서 npx vitest run은 74개 test suite, 298개 test를 모두 통과했고, npm run build (tsc)도 통과했다.
알려진 제한과 후속 범위
- 미리캔버스의 상용·라이선스 템플릿 및 스톡 콘텐츠 물량은 의도적으로 복제하지 않는다. 현재 원본 템플릿은 12종이며 라이브러리 확장은 #16에서 계속한다.
- AI matting, 이미지 확장, 화질 개선은 포함하지 않는다. flat-background removal은 균일한 배경에만 적합하고 머리카락·부드러운 경계·복잡하거나 그라디언트 배경을 안정적으로 처리하지 못한다.
- 브라우저 편집기 UI는 이 릴리스 범위에 포함하지 않는다. #18은 작성 시점에도 열린 후속 이슈다.
- PPTX는 텍스트, 사각형, 이미지와 단색 페이지 배경을 네이티브 편집 객체로 내보낸다. 복잡한 path, 둥근 사각형 반지름, 이미지
cover/containcrop, 필터, 그라디언트, 애니메이션, 전환은 표현하지 않는다. - MP4는 모든 프레임이 Motion JPEG intra frame이어서 H.264 동등 품질보다 파일이 크며, 대부분의 브라우저는 이를 네이티브 재생하지 않는다.
Validation
npx vitest run: 298 tests 통과 (74 suites)npm run build(tsc): 통과- CI (PR #20·#21): green
- JPEG·GIF·PDF·MP4·PPTX 회귀 검사: 외부 도구(Pillow·pypdf·ffprobe·LibreOffice)로 검증
Rollback
- 릴리스 커밋 revert 후 태그 삭제
What's Changed
- feat: 회사 홍보 썸네일 자동 생성 테스트베드 by @Doyajin174 in #5
- feat: 생성 이미지 원본을 스톡 라이브러리로 보관 by @Doyajin174 in #7
- feat: add human editorial promo direction by @Doyajin174 in #10
- feat: add Naver-ready promo thumbnails by @Doyajin174 in #12
- feat: 미리캔버스 파리티 디자인 엔진 코어 by @Doyajin174 in #20
- feat: 웹 에디터 UI — 브라우저에서 디자인 엔진 직접 조작 by @Doyajin174 in #21
New Contributors
- @Doyajin174 made their first contribution in #5
Full Changelog: v0.3.0...v0.4.0