1
0
Fork 0
Commit graph

14 commits

Author SHA1 Message Date
Yun Chan
1f794e9e08 fix(ui): unify titlebar centerline vertical alignment and eliminate redundant brand container (v1.0.14) 2026-09-04 23:58:41 +09:00
Yun Chan
8eb48ed854 chore(release): v1.0.8 - Release v1.0.8: Inno Setup 표준 설치 프로그램(Setup-x64.exe) 도입으로 인증서 경고 없는 1초 설치 지원, C++ Shell DLL Word 추천 누수 완전 박멸, 비디오/오디오/표 미디어 네고시에이션 전수 보강, 극복합 2홉 변환 및 복원력 시나리오 탑재 (220개 테스트 100% 통과) 2026-09-03 22:32:20 +09:00
Yun Chan
1e7b0e1bcf chore(release): bump version to 1.0.7 for clean MSIX deployment upgrade 2026-09-03 17:13:05 +09:00
Yun Chan
4cd9c678c0 feat(tdd): implement SSOT canon, AGENTS.md, ultra-strict design audit, E2E scenarios, and Forgejo release pipeline
Some checks are pending
Forgejo Release / build-and-release (push) Waiting to run
2026-09-03 12:21:40 +09:00
Yun Chan
24aa70ae32 chore(packaging): MSIX 버전 1.0.4.0 → 1.0.5.0 (인코더 옵션 + 빠른 팝업/취소 반영) 2026-06-02 21:45:09 +09:00
Yun Chan
5050551c95 feat(packaging): 설치 시 선택 외부 도구 대화형 프롬프트 + 바탕화면 바로가기 + v1.0.4.0
- Install-Everything2Everything.ps1: MSIX 설치 후 사용자에게 선택 구성요소 설치 여부를 각각 묻는다.
  FFmpeg(영상/오디오)·LibreOffice(HWP·DOCX→PDF)·Ghostscript(PDF 압축)를 winget으로 자동 설치
  (winget 없거나 실패 시 다운로드 페이지 폴백) + 바탕화면 바로가기(AppsFolder) 생성. -NoPrompt 무인 설치.
  UTF-8 BOM 저장으로 PowerShell 5.1 한글 정상 인식.
- Package.appxmanifest: Version 1.0.3.0 → 1.0.4.0 (리팩토링 반영 업그레이드 인식).
2026-06-02 18:15:04 +09:00
Yun Chan
47600d2eb5 fix: mp4 변환 멈춤 해결 — 8K HEVC 코덱 + 동일포맷 재인코딩 + 종료상태
증상: 8K(7680x4320) HEVC 11분 6.76GB mp4 변환이 멈춤.

근본 원인 2가지:
1. mp4→mp4(같은 형식)이 그래프 self-edge 부재로 Skip 처리되고,
   QuickProgressWindow가 '전부 건너뜀' 종료 상태를 처리 안 해 멈춘 듯 보임.
2. 강제하던 h264_nvenc가 4096px 초과(8K)를 인코딩 못 해 즉시 실패 →
   CPU libx264 8K 폴백이 사실상 무한정 소요(진짜 멈춤).

수정:
- FfmpegProvider: 해상도별 코덱 — videoWidth>4096(8K 등)은 hevc_nvenc(GPU)
  →libx265(CPU)로, 이하는 h264_nvenc→libx264. 코덱 강제는 mp4/mkv/mov에만
  적용하고 webm/avi/gif는 컨테이너 기본 코덱(vp9 등) 유지.
- FfmpegProvider: 비디오/오디오 동일포맷 self-edge 추가(mp4→mp4 등 재압축).
  gif는 제외 — 이미지로도 다뤄져 ffmpeg 미설치 시 Skip→하드실패 회귀 방지.
- QuickProgressWindow.Finish: 성공·실패 없이 전부 건너뜀인 종료 상태를 명확히 안내.

검증: 실제 8K HEVC 클립으로 mp4→mp4 변환 → hevc_nvenc로 정상 인코딩,
28.3MB→2.1MB(93% 압축). 전체 38개 단위테스트 통과(적대적 리뷰 2건 반영).
Package 1.0.3.0.
2026-06-01 22:25:12 +09:00
Yun Chan
acb3fdbfd1 feat: imagegen2 아이콘·글리프·일러스트 생성 후 GUI 전면 적용 (투명 배경)
codex noninteractive + imagegen2로 앱 비주얼 에셋 일괄 생성, 코드 생성 차단
(gen-one.sh: FORBID 블록 + 코드파일 감지 + 재시도). 모든 산출물은
플러드필 배경 제거로 진짜 알파 투명 PNG화.

생성 에셋 (assets-gen/):
- app-master: 앱 아이콘 마스터 (사이클 화살표, 솔리드 타일 유지)
- 카테고리 글리프 8종: image/video/audio/document/data/vector/archive/ai
- 일러스트 2종: illus-empty(드롭존), illus-done(완료)
- logo-mark: 브랜드 마크

GUI 적용:
- 사이드바 헤더 브랜드 → logo-mark
- 드롭존 빈 상태 → illus-empty
- QuickProgressWindow 완료 → illus-done
- AI 작업 패널 → glyph-ai 스파클
- 큐/과거결과 행 라벨 아이콘 → 카테고리 글리프 (CategoryGlyphs 매핑)
- 미리보기 placeholder → 형식별 카테고리 글리프 (경고 대신)

앱 아이콘:
- app.ico (멀티 크기 16~256) + 윈도우 Icon
- MSIX 타일 4종(Square44/150·Wide310·Store) app-master 기반 갱신
- Package 버전 1.0.2.0
2026-06-01 22:00:53 +09:00
Yun Chan
c9e890b091 feat(msix): 셸 컨텍스트 메뉴에 영상/오디오/데이터/벡터 확장자 등록
신규 변환 카테고리를 우클릭 1차 메뉴에 노출: 영상(mp4/webm/mkv/mov/avi), 오디오(mp3/aac/m4a/opus/ogg/flac/wav), 데이터(csv/json/xlsx), 벡터(svg), 마크다운(md/markdown), 텍스트(txt). 빠른변환 서브항목은 이미지용이고, 영상/데이터는 '변환…(옵션 선택)'으로 메인 창에서 멀티홉 출력 선택.
2026-06-01 17:20:11 +09:00
Yun Chan
529fbd593e fix(msix): MaxVersionTested 26100→26220 — 25H2 셸 익스텐션 컨텍스트 메뉴 등록 복구
Windows 11 25H2(빌드 26220)에서 MaxVersionTested가 OS보다 낮아 PackagedCom 셸 익스텐션(IExplorerCommand)이 게이트되어 1차 우클릭 메뉴에 등록되지 않던 문제. MaxVersionTested를 현재 OS로 올려 등록 복구 확인(ClassIndex 등록 검증됨).
2026-06-01 17:02:55 +09:00
Yun Chan
2633a928c1 feat: 배치 결합 모드 + IExplorerCommand DLL 카스케이드
#10 다중 이미지 → 단일 PDF/TIFF/GIF 결합
- ConversionEngine: BatchMode { Independent, CombineToSingle } enum 추가
- ConvertManyAsync에 batchMode 파라미터, CombineToSingle 시 N:1 라우팅
- CombineAsync: MagickImageCollection으로 모든 입력 디코드 후
  단일 다중-페이지 파일로 출력 (PDF/TIFF/GIF만 지원)
- 결합 가능 검증: ImageMagick 디코드 가능 입력 + 결합 가능 출력
- 정적 헬퍼 CanCombine(outputExt), CanCombineInput(sourcePath)

UI
- MainWindow.xaml에 '단일 파일로 결합' CheckBox 추가
  (출력이 결합 가능 + 큐 ≥2 + 모든 입력 결합 가능일 때 활성화)
- 큐 변경/형식 변경 시 토글 상태 + 안내 텍스트 자동 갱신
- MainWindow.xaml.cs UpdateCombineState / OnCombineToggleChanged

#9 IExplorerCommand DLL 카스케이드 (MSIX 메인 메뉴)
- dllmain.cpp 전면 재작성:
  RootCascadeCommand (CLSID F1A2B3C4-...-2B3C4D5E6F70)
  + 11개 동적 SubVerbCommand
  + SubCommandEnumerator (IEnumExplorerCommand)
  + ECF_HASSUBCOMMANDS 플래그
- 서브메뉴 항목: JPEG/PNG/WebP/PDF/TXT/DOCX/AVIF/GIF/TIFF/BMP/변환…
- 기존 Quick/Dialog 핸들러는 backward compat용으로 유지
- 빌드: x64 Release Everything2Everything.Shell.dll (207KB)

Package.appxmanifest
- com:Class에 RootCascadeCommand CLSID 등록
- 모든 desktop5:ItemType verb를 Quick+Dialog 두 개에서 단일 Convert로 통합
  (29개 ItemType × 2 verbs → 29 × 1 verb)

quick CLI는 기본 .jpg 호환 유지, dialog는 메인 창에서 형식 선택

빌드: dotnet 0 errors, MSBuild C++ 0 errors
2026-05-07 15:46:38 +09:00
Yun Chan
9b7e5f0d0c feat: Everything2Everything 양방향 변환 매트릭스 피보팅
EverythingToJpeg(N→JPEG 단방향)에서 Everything2Everything(N×M 매트릭스)으로
앱을 피보팅. 7개 Provider, 200+ 변환 쌍 지원.

리네이밍
- 디렉토리/솔루션/csproj/namespace/AssemblyName/MSIX Identity 일괄 치환
- 임시파일 prefix e2j_ → e2e_, 로고 라벨 E2J → E2E

아키텍처
- ConversionPair(input, output) 신규 + ProviderCapability.SupportedConversions
- IConverterProvider.ConvertAsync에 outputExtension 파라미터 추가
- ProviderRegistry를 Dictionary<(input, output), Provider> 매트릭스로 재작성
  + OutputsForInput / OutputsForFile 쿼리 API
- ConversionEngine: 출력 ext 라우팅, 동일 입출력 자동 skip,
  서브폴더 suffix를 출력 ext에서 자동 도출
- ConvertOptions를 형식별 sub-record로 분리
  (Jpeg/Png/Webp/Avif/Tiff/Pdf*/Html*/Ocr)

Provider 매트릭스
- MagickProvider: PNG/JPEG/WebP/AVIF/BMP/TIFF/GIF/PDF 양방향 + RAW/PSD 디코딩
  (단일이미지→1페이지 PDF, GIF/TIFF→다페이지 PDF)
- HeicProvider: HEIC/HEIF → 이미지 7종
- PdfProvider: PDF → 이미지 6종 (PNG임베드 후 ImageMagick 인코딩)
- HtmlProvider: HTML/HTM → 이미지 + PDF (CDP printToPDF)
- DocxProvider/HwpxProvider: PDF + 이미지 7종 (LibreOffice 활용)
- OcrProvider 신규: 이미지/PDF → TXT/DOCX
  (Windows.Media.Ocr + DocumentFormat.OpenXml, PDF는 페이지별 OCR 후 결합)

UI
- 사이드바 TARGET FORMAT을 동적 ComboBox로 (큐 파일 매트릭스의 교집합만 표시)
- 출력 형식별 색상 배지 + Quality 패널 라벨 동적
- OUTPUT DESTINATION hint도 출력 ext 기반 동적

CLI
- 신규 'to <ext> <files...>' verb (예: to png photo.heic doc.docx)
- help 텍스트 양방향 컨셉으로 갱신

셸 통합
- ContextMenuRegistrar 카스케이드로 재설계
  (ExtendedSubCommandsKey + Everything2Everything.SubMenu.<ext>)
- 입력별 매트릭스에 따라 인기 출력 10종(JPEG/PNG/WebP/PDF/TXT/DOCX/AVIF/GIF/TIFF/BMP)
  동적 노출, 마지막에 '변환…' 옵션
- 메뉴 라벨 'JPEG로 변환' → 'Everything2Everything으로 변환'

기타
- Core.csproj TFM net9.0-windows → net9.0-windows10.0.19041.0 (WinRT API용)
- DocumentFormat.OpenXml 3.1.0 NuGet 추가
- README 양방향 매트릭스 기준 전면 개편
- MSIX appxmanifest Description / IExplorerCommand DLL 라벨 갱신

빌드: 0 errors, 0 warnings
2026-05-07 13:40:08 +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