1
0
Fork 0
Commit graph

55 commits

Author SHA1 Message Date
Yun Chan
e663921460 ux: ConvertWindow 좌우 → 상하 레이아웃 재설계
이전 좌우 분할은 IDE 패턴이라 변환 도구에 부자연스러웠음.
옵션 패널 320px 고정 때문에 창을 늘리면 좌측만 늘어나
"우측으로 늘어진" 인상을 줬다.

새 레이아웃 (위→아래):
1. 헤더(타이틀+파일 카운트) + 추가/비우기 버튼
2. 옵션 카드 (한 줄: 품질·출력 위치·이름 충돌)
   + 고급 옵션 expander (긴 변 픽셀·PDF DPI·투명 처리)
3. 파일 리스트 (메인, 세로 스크롤로 끝까지)
4. 하단 액션바 (진행률 + 닫기/변환 시작)

창 비율 940x700 → 640x780 으로 세로 우선.
파일이 많아질수록 자연스럽게 길게 늘어나는 패턴.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 14:50:48 +09:00
Yun Chan
69a6a1360d fix: 빠른 변환 후 프로세스 자동 종료 + 진단 로그
- ShutdownMode를 OnExplicitShutdown → OnLastWindowClose 로 변경
  변환 끝나도 WPF가 안 닫혀 좀비 프로세스로 남던 문제. 사용자 입장에선
  "결과가 안 보임"으로 인지됐음. 이제 GUI 닫히면 자동 종료(1초 내)
- RunQuickAsync에 %TEMP%\EverythingToJpeg_quick.log 진단 로그 추가
  (소스 경로, 결과 상태, 출력 경로, 예외 스택을 모두 기록)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 14:50:32 +09:00
Yun Chan
5750aed16f Phase 3: HTML(WebView2) + HWP/HWPX(LibreOffice) 실구현
HTML / HTM
- HtmlProvider: STA 스레드 + WPF Dispatcher에서 WebView2 헤드리스 컨트롤러(HWND_MESSAGE) 생성
- CDP Page.captureScreenshot(captureBeyondViewport=true)으로 풀페이지 PNG 획득
- Magick.NET으로 JPEG 인코드, 알파/리사이즈/품질 옵션 일관 적용
- ConvertOptions: HtmlViewportWidth/Height, HtmlWaitMilliseconds, HtmlFullPage

HWP / HWPX
- HwpxProvider: LibreOffice headless --convert-to pdf + H2Orestart 확장 자동 감지
- DocxProvider 패턴 재사용 (소스→PDF→PdfProvider 위임)
- ExternalToolDetector.IsH2OrestartInstalled — uno_packages/extensions 검색

기타
- Core csproj: UseWPF=true (WebView2가 WPF 의존), Microsoft.Web.WebView2 1.0.3912.50 추가
- AppX 매니페스트에 .html/.htm/.hwp/.hwpx ItemType 추가
- 파일 다이얼로그 필터 확장
- 두 ComingSoon 상태였던 Provider가 이제 Available/RequiresExternal로 노출됨

검증
- 솔루션 Release 빌드 통과
- MSIX 38개 페이로드 패키징 성공 (WebView2 SDK 포함)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 13:23:47 +09:00
Yun Chan
f2c8610ff6 Phase 2: MSIX 패키지 + IExplorerCommand 셸 익스텐션
C++ 셸 익스텐션 (src/EverythingToJpeg.Shell/)
- WRL RuntimeClass 패턴으로 IExplorerCommand 두 핸들러 구현
- Quick(빠른 변환) / Dialog(설정 창) verb를 다른 CLSID로 분리
- Invoke()에서 EverythingToJpeg.exe로 verb + 파일 경로 전달
- VS 2026 빌드 검증, /utf-8 한글 라벨 지원

MSIX 패키징 (packaging/)
- Package.appxmanifest: com:SurrogateServer + desktop4:FileExplorerContextMenus
- 26개 확장자 × 2 verb 자동 노출
- BuildMsix.ps1: dotnet publish + msbuild + makeappx 일관 파이프라인
- CreateDevCert.ps1 / Install-EverythingToJpeg.ps1: 자체 서명 인증서 워크플로
- GenerateAssets.ps1: placeholder 로고 자동 생성

CI/CD
- .github/workflows/release.yml: 태그 푸시 시 미서명 MSIX 자동 빌드 + 첨부

검증
- 50MB MSIX 산출 확인 (packaging/dist/EverythingToJpeg-x64.msix)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 13:03:16 +09:00
Yun Chan
8fa4a613d7 초기 커밋: Phase 1 — 레지스트리 기반 컨텍스트 메뉴 + 핵심 변환 파이프라인
- Provider 추상화(IConverterProvider + ProviderCapability) — Available/RequiresExternal/ComingSoon 1급 시민
- 변환 구현: Magick(이미지·RAW·GIF·TIFF), HEIC/HEIF(libheif decode→Magick encode), PDF(PDFium), DOCX(Word COM 또는 LibreOffice 자동 감지)
- ComingSoon 스텁: HTML, HWP/HWPX (UI 노출, 컨텍스트 메뉴 등록 자동 제외)
- WPF + WPF-UI 4.3 Fluent 2 UI: 메인 창(드래그&드롭, Provider 카드), 변환 창(썸네일·옵션·진행률), 빠른 변환 진행 창, 진단 창
- 단일 EXE에 verb 라우팅: quick / dialog / register / unregister / diagnose / help
- HKCU SystemFileAssociations 기반 컨텍스트 메뉴 등록 (Win11 "추가 옵션 표시"에 노출)
- README, packaging/ Phase 2 placeholder 포함

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-06 12:50:35 +09:00