Yun Chan
7cb75fd3aa
fix(ui): fix SettingsWindow and dialog titlebar margins, vertical alignment, and button styling
2026-09-05 06:36:26 +09:00
Yun Chan
4cd9c678c0
feat(tdd): implement SSOT canon, AGENTS.md, ultra-strict design audit, E2E scenarios, and Forgejo release pipeline
Forgejo Release / build-and-release (push) Waiting to run
2026-09-03 12:21:40 +09:00
Yun Chan
7d461d6ae4
feat(quick): 빠른 변환 간단 옵션 팝업 + 중간 취소 지원
...
컨텍스트 메뉴에서 형식(MP4/MP3 등) 선택 시 간단 옵션 팝업을 띄우고, 변환 중 취소를 지원한다.
- QuickOptionsWindow(신규): 출력 형식에 맞춘 간단 옵션(영상=품질CRF/해상도/GPU, 오디오=비트레이트,
이미지=품질) 팝업. '변환'으로 진행, '취소'로 종료, '자세히 옵션…'으로 풀 UI(MainWindow) 전환.
OptionsViewModel 재사용 → ToConvertOptions()로 변환 옵션 구성.
- App.RunQuickAsync: 변환 전 팝업 표시 + 선택 옵션 적용. ConvertManyAsync에 취소 토큰 전달(이전엔 None이라
취소 불가였음). 변환 경로는 ShutdownMode=OnExplicitShutdown으로 전환해 **취소/창 닫기 시 ffmpeg를
종료한 '뒤' 앱을 종료**(고아 프로세스·백그라운드 잔류 방지). 성공 시 결과 창 닫을 때까지 대기.
- QuickProgressWindow: 변환 중 '취소' 버튼 + 창 Closing 시 취소(CancellationTokenSource 주입).
완료 시 취소 버튼 숨김.
버그 수정: 빠른 변환 진행 창을 닫아도 변환이 백그라운드에서 계속 돌던 문제 해결.
빌드 0/0, 106 테스트 그린, publish 후 팝업/일반 실행 크래시 없이 로드.
2026-06-02 21:35:47 +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
ef10c139cd
fix: 빠른 변환 진행 표시(제목 동적+%) + 영상→이미지 프레임 추출 + GPU 가속
...
사용자 리포트: mp4 변환 시 %안나오고 멈춤, JPEG 고정 문구, GPU 가속 부재.
- QuickProgressWindow: 제목/타이틀바를 출력 형식으로 동적화('JPEG 고정' 해결), % 텍스트 + indeterminate 표시
- FfmpegProvider: 영상→이미지(jpg/png/webp/bmp) 대표 프레임 추출 직접 엣지 (mp4→jpg가 무거운 mp4→gif→jpg 멀티홉 거치던 문제 해결)
- GPU 가속: ConvertOptions.VideoPreferGpu(기본 on) — NVENC 시도 후 실패 시 CPU 자동 폴백, 설정창 토글로 제어
- 테스트 38개 통과
2026-06-01 21:28:55 +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