Skip to content

Releases: ucx0204/CarrotMangaTranslator

v1.10.1

Choose a tag to compare

@github-actions github-actions released this 06 Aug 10:48

v1.10.1 패치노트

기준 범위: v1.10.0 이후부터 v1.10.1까지의 변경 사항입니다.
주요 포함 변경: 첫 사용 다운로드 캐시에 있던 폰트 자동 매칭 런타임이 검증 단계에서 비활성화되던 문제 수정, OCR·Python·pip·설치 런타임의 셸 문자열 실행 제거와 구조화된 인자 실행 전환.

폰트 자동 매칭 복구

  • Font matching runtime is disabled; auto font matching will not apply. 경고와 함께 자동 폰트 맞춤이 적용되지 않던 문제를 수정했습니다.
  • 원인은 다운로드 캐시가 각 런타임 자산 옆에 만드는 .mgtmeta.json·.mgt-sha256.json 보조 파일을 번들 검증기가 예상하지 못해, 정상적으로 다운로드하고 SHA-256 검증까지 끝난 번들을 artifact_verification_failed로 거부한 것이었습니다.
  • 번들 검증기는 이제 정확한 런타임 자산에 대응하는 캐시 보조 파일만 허용합니다. 관계없는 추가 파일, 디렉터리, 심볼릭 링크는 계속 거부하며 실제 모델·카탈로그·보정 파일의 해시와 sealed contract 검증도 그대로 수행합니다.
  • 기존에 다운로드된 약 467MB 폰트 매칭 캐시는 삭제하거나 다시 받을 필요 없이 그대로 사용할 수 있습니다. 실제 설치 캐시를 새 검증기로 확인해 font-matching-runtime-artifact-v2, release acceptance, 전체 자산 해시 검증이 통과하는 것을 확인했습니다.
  • 자동 폰트 맞춤 설정이 켜져 있고 대상 언어가 한국어라면 다음 번 번역부터 학습된 폰트 매칭 런타임이 정상 적용됩니다.

OCR·런타임 명령 실행 보안 강화

  • 런타임 프로세스 실행을 문자열 명령에서 { executable, args } 구조로 전환했습니다.
  • 중앙 실행기는 항상 shell: false로 실행하며 이미지 경로, 출력 경로, Python 경로, 패키지 URL, 설치 경로처럼 외부 값이 들어가는 항목을 각각 독립된 argv 요소로 전달합니다.
  • Paddle OCR 단일·배치·CPU worker, Python·venv·pip 설치와 검증, VC++ 재배포 패키지 실행 경로를 같은 구조로 통일했습니다.
  • 공백, 따옴표, &, |, ;, $(), 백틱 같은 셸 메타문자가 포함된 경로도 명령으로 해석되지 않고 하나의 문자 인자로 유지됩니다.
  • timeout, 취소 신호, 자식 프로세스 트리 종료, stdout/stderr 수집, 설치 진행 로그, 사용자 지정 성공 코드 동작은 유지했습니다.
  • 오류 진단에는 실행 파일과 argv 배열, 로그 표시 전용 명령 문자열을 함께 남기되, 로그 문자열을 다시 실행에 사용하지 않습니다.

외부 OCR 명령 설정 변경

사용자 지정 MANGA_TRANSLATOR_OCR_BBOX_CMD 또는 ocrBboxCommand를 사용하는 경우 기존 셸 명령 문자열 대신 JSON 명령 사양을 사용해야 합니다.

{
  "executable": "python",
  "args": [
    "tool.py",
    "--image",
    "{image}",
    "--output",
    "{output}",
    "--source-language",
    "{sourceLanguage}"
  ]
}
  • placeholder는 반드시 하나의 argv 요소 전체로 사용해야 합니다. --image={image}처럼 문자열 안에 삽입하는 형식은 거부합니다.
  • 지원하지 않는 placeholder, 실행 파일 위치의 placeholder, NUL 바이트, 알 수 없는 JSON 키를 거부합니다.
  • cmd.exe, PowerShell, sh, bash, pwsh 등 셸 자체를 외부 OCR 실행 파일로 지정할 수 없습니다.
  • 레거시 문자열은 안전하지 않은 fallback으로 실행하지 않고 새 JSON 형식을 안내하는 오류를 반환합니다.

검증

  • TypeScript 타입 검사와 JavaScript check-js 타입 검사 통과
  • ESLint와 Prettier 통과
  • 프로덕션 빌드 통과
  • Vitest 전체 341개 파일, 2,582개 테스트 통과·2개 건너뜀
  • 셸 메타문자 marker 파일 미생성, argv 경계, 외부 OCR JSON 검증, timeout·abort·출력·성공 코드, 금지 심볼 정적 검사 회귀 테스트 추가
  • 폰트 매칭 다운로드 sidecar 허용과 관계없는 추가 파일 거부 회귀 테스트 추가
  • 실제 설치 폴더의 폰트 매칭 런타임 캐시와 빌트인 한글 폰트 21개를 새 검증기로 직접 읽어 state: ready, automaticMutationAllowed: true, v2 sealed bundle과 release acceptance 검증 통과
  • git diff --check 통과

Code signing policy

Free code signing provided by SignPath.io, certificate by SignPath Foundation.

SignPath Foundation 신청은 2026년 8월 6일 현재 심사 중입니다.

v1.10.1 Windows 설치 파일에는 Authenticode 서명이 적용되지 않으므로 SignPath Foundation 정책의 보호 대상이 아닙니다. 유효한 SignPath Foundation 서명이 있는 산출물만 해당 정책의 적용을 받습니다.

v1.10.1 Apple Silicon 산출물은 인증서가 설정되지 않은 경우 ad-hoc 서명만 적용되며 Apple이 확인한 개발자 신원이나 공증을 포함하지 않습니다. Gatekeeper 승인 전에 릴리스의 체크섬과 다운로드한 파일을 대조하세요.

v1.10.0

Choose a tag to compare

@ucx0204 ucx0204 released this 06 Aug 03:34

v1.10.0 패치노트

기준 범위: v1.9.0 이후부터 v1.10.0까지의 변경 사항입니다.
주요 포함 변경: 원문 글자 모양을 보고 블록마다 한글 폰트를 자동으로 맞추는 학습된 폰트 매칭 런타임, 한국어 만화 폰트 카탈로그 확장, 앱 그래픽과 로컬 AI 연산 GPU 분리, Ollama 로컬 공급자와 모델별 생성 한도, 인페인팅 부분 완료 보존과 번역 중 UI 응답성, 패키징 환경 빌트인 폰트 렌더링 수정.

자동 폰트 맞춤

학습된 폰트 매칭 런타임

  • 원문 텍스트의 모양·굵기·손글씨 느낌을 보고 대사·내레이션·생각·말풍선 옆글·효과음·강조에 어울리는 한글 폰트를 블록마다 자동으로 적용합니다.
  • SigLIP 비전 인코더와 프로토타입 조건 랭커로 구성된 학습된 런타임이 후보 폰트를 정렬하며, 인코더·랭커·프로토타입 세 자산 모두 SHA-256으로 묶인 뒤에만 동작합니다.
  • 런타임 자산이 없거나 해시가 바뀌면 자동 폰트 맞춤을 적용하지 않고 사용자가 직접 고정한 글꼴만 유지합니다. 시각 모델 없이 의미만으로 폰트를 추론하거나 프로필을 강제 적용하는 폴백은 허용하지 않습니다.
  • 학습된 폰트 매칭 런타임은 설치 파일에 포함하지 않고 폰트 자동 맞춤을 켄 번역을 처음 시작할 때 GitHub Releases에서 데이터 저장 위치로 약 467MB를 한 번 다운로드합니다. 다운로드가 끝나기 전에는 자동 폰트 맞춤 없이 번역이 진행되고, 이후 실행에서는 캐시된 런타임을 바로 사용합니다. 번들(약 467MB)을 인스톨러에서 빼내어 설치 파일 크기를 약 333MB로 줄이기 위한 조치입니다.
  • 번역 옵션의 폰트 자동 맞춤 설정으로 켜고 끌 수 있으며, 같은 화의 본문 일관성은 약하게만 참고하고 이 텍스트의 시각 특징이 다르면 개별 예측이 우선합니다.
  • 검증 기준을 통과하지 못한 결과는 적용하지 않고 기존 폰트를 유지합니다.

화 단위 일관성과 작품 정책

  • 같은 화 안에서 비슷한 대사 글꼴을 약한 사전 신호로 참고해 화 전체의 어색한 폰트 섞임을 줄입니다.
  • 작품 글꼴 정책과 현재 텍스트의 시각 특징을 함께 반영해, 작품 전체 톤을 유지하면서도 개별 텍스트에 맞는 선택을 합니다.
  • 자동으로 선택된 블록은 서식 패널에 자동 맞춤 배지로 표시하고, 선택 근거(이 화의 비슷한 대사·이 텍스트의 모양·작품 정책·사용자 고정)를 안내합니다.

자동 선택 되돌리기

  • 자동으로 적용된 폰트는 자동 선택 되돌리기로 한 번에 원래 폰트로 되돌릴 수 있으며, 되돌리기도 하나의 편집 기록으로 남아 실행 취소할 수 있습니다.
  • 자동 폰트 맞춤은 텍스트 외곽선 두께와 색을 바꾸지 않고 폰트 선택만 담당하므로, 기존 서식이 의도치 않게 변경되지 않습니다.

한국어 만화 폰트 카탈로그

  • 일반 대사·내레이션·효과음·강조·손글씨 느낌까지 두루 아우르는 한국어 만화 폰트 카탈로그를 확장했습니다.
  • 도현체, 개구레, 구기, 주아, 나눔고딕, 나눔붓글씨, 리디바탕, 싱글데이, 스타오버, 가석원, 검은한샘, 흑백사진, 카페24 고운밤, 기랑해랑체 등 OFL·공개 라이선스 폰트를 추가했습니다.
  • 빌트인 폰트는 mgt-font:// 커스텀 프로토콜로 라우팅해 Vite 해시 자산으로 가공하지 않고, asar 내부에서 Node fs로 직접 읽어 패키징 환경에서도 안정적으로 표시합니다.

로컬 AI와 하드웨어

GPU 할당

  • 설정의 하드웨어 영역에 앱 그래픽 GPU와 로컬 AI 연산 GPU를 각각 지정할 수 있는 항목을 추가했습니다.
  • 앱 그래픽 GPU는 자동(운영체제 설정 사용) 또는 고성능 GPU 우선(RTX·외장)으로 선택할 수 있고, 변경 사항은 앱을 다시 시작한 뒤 적용됩니다.
  • 로컬 AI 연산 GPU는 자동(권장) 또는 0~15번 연산 장치 중 직접 지정할 수 있으며, CUDA·HIP·Vulkan 백엔드 기준 번호라 Windows 작업 관리자의 GPU 0/1 번호와 다를 수 있습니다.
  • Intel 내장 그래픽과 RTX가 섞인 PC에서는 앱 그래픽을 고성능으로 두고 연산 GPU는 자동을 먼저 권장한다는 안내를 표시합니다.

Ollama 로컬 공급자

  • API 공급자 빠른 선택에 Ollama (로컬)을 추가해 로컬에서 실행 중인 Ollama 모델을 번역에 사용할 수 있습니다.
  • 기본 포트(11434)를 자동으로 인식하고, 모델 라이브러리 페이지로 바로 이동하는 링크를 제공합니다.
  • localhost뿐 아니라 LAN 호스트 주소도 Ollama 공급자로 인식합니다.

모델별 생성 한도

  • 공개 문서의 컨텍스트·출력 토큰 한도를 모델별로 관리해, 모델이 지원하는 범위 안에서 생성 토큰과 프롬프트 메모리 예산을 자동으로 조정합니다.
  • 앱 작업 기본값은 모델의 출력 상한을 넘지 않도록 제한하며, 사용자가 직접 설정한 값은 기존처럼 유지됩니다.

인페인팅과 번역 안정성

  • 인페인팅 중 일부 블록이 실패해도 이미 완료된 블록의 결과를 보존하고, 부분 완료 상태로 어느 블록이 남았는지 표시합니다.
  • 번역·원문 지우기가 섞인 선택이나 번역 완료 워크플로가 서로 다른 페이지를 한 작업으로 처리할 수 없는 경우 사전에 안내합니다.
  • 번역 중에도 UI가 멈추지 않고 취소·스크롤·줌이 즉시 반응하도록 작업 이벤트 처리를 개선했습니다.
  • 오버레이 항목이 비어 있어 번역 결과가 누락되는 경우 강화된 변형으로 재시도를 이어가도록 했습니다.
  • 로컬 AI 워커가 JSON이 아닌 표준 출력을 내보내도 깨지지 않고, 프로세스 시작 실패 원인을 더 자세히 보고합니다.

빌트인 폰트 렌더링 수정

  • 패키징 환경에서 ko/·en/·ja/·zh-hans/·zh-hant/ 같은 하위 디렉터리 빌트인 폰트가 기본 폰트로 표시되던 문제를 수정했습니다.
  • standard 스키마로 등록된 mgt-font:// URL에서 Chromium이 첫 경로 세그먼트를 호스트로 옮기는 정규화 동작 때문에, 하위 디렉터리 폰트 경로가 잘려 404로 떨어지는 근본 원인을 잡았습니다.
  • 호스트와 경로를 합쳐 전체 상대 경로를 복원하도록 처리해 정규화된 형태와 일반 형태 모두 올바른 폰트로 연결됩니다.
  • 커스텀 폰트 응답에 CORS 헤더를 추가해 file:// origin에서 교차 출처로 fetch할 때 차단되지 않도록 했습니다.

검증

  • TypeScript 타입 검사, ESLint, Prettier와 프로덕션 빌드 통과
  • Vitest 전체 340개 파일, 2,562개 테스트 통과·2개 건너뜀
  • 폰트 매칭 런타임·작품 타이포그래피 프로필·자동 폰트 맞춤 되돌리기·외곽선 두께 비회귀, mgt-font:// 하위 디렉터리 빌트인 폰트 라우팅·CORS 헤더 회귀 테스트
  • GPU 할당 정규화, Ollama 공급자 인식, 모델별 생성 한도, 인페인팅 부분 완료 보존, 번역 중 UI 응답성, 빈 오버레이 항목 재시도 회귀 테스트
  • 실제 프로덕션 컴포넌트를 사용한 세로·가로 및 좁은 화면 Chromium UI QA에서 자동 폰트 맞춤 배지·되돌리기·외곽선 유지 확인
  • git diff --check 통과

Code signing policy

Free code signing provided by SignPath.io, certificate by SignPath Foundation.

SignPath Foundation 신청은 2026년 8월 6일 현재 심사 중입니다.

v1.10.0 Windows 설치 파일에는 Authenticode 서명이 적용되지 않으므로 SignPath Foundation 정책의 보호 대상이 아닙니다. 유효한 SignPath Foundation 서명이 있는 산출물만 해당 정책의 적용을 받습니다.

v1.10.0 Apple Silicon 산출물은 인증서가 설정되지 않은 경우 ad-hoc 서명만 적용되며 Apple이 확인한 개발자 신원이나 공증을 포함하지 않습니다. Gatekeeper 승인 전에 릴리스의 체크섬과 다운로드한 파일을 대조하세요.

Font matching runtime v1

Choose a tag to compare

@ucx0204 ucx0204 released this 06 Aug 03:06

Trained font matching runtime bundle (7 files, SHA-256-pinned). Downloaded on first use of auto font matching into the app data-root cache. App-version-independent hosting; a future bundle revision ships under a new tag.

v1.9.0

Choose a tag to compare

@github-actions github-actions released this 29 Jul 22:59

v1.9.0 패치노트

기준 범위: v1.8.1 이후부터 v1.9.0까지의 변경 사항입니다.
주요 포함 변경: 번역·원문 지우기·말풍선 맞춤 통합 흐름, 말풍선 모양 기반 자동 배치와 수동 편집, 한국어 어절 중심 자연 줄 나눔, 설정 가능한 말풍선 안쪽 여백, Flux 원문 지우기 경계 개선과 런타임 안정성 보강.

번역부터 완성 배치까지

하나로 이어지는 번역 흐름

  • 번역 옵션에서 번역만 완료하거나, 번역 뒤 원문을 지우고 번역문을 말풍선 안에 자동 배치하도록 선택할 수 있습니다.
  • 자연스러운 줄 나눔, 원문 지우기와 말풍선 맞춤 선택을 다음 작업의 기본값으로 기억합니다.
  • 작품 일괄 가져오기 뒤에는 별도 축약 화면 대신 기존 번역 옵션 화면을 열며, 새 작품의 모든 화와 페이지가 선택된 상태에서 시작합니다.
  • 번역이나 인페인팅이 실패·취소된 경우에도 이미 적용된 작업은 하나의 편집 기록으로 남아 실행 취소할 수 있습니다.

블록 하나만 빠르게 처리

  • 오른쪽 패널의 텍스트 영역 위에 원문 지우기말풍선 맞춤 버튼을 추가했습니다.
  • 두 작업은 선택한 텍스트 블록의 영역에만 적용되며, 같은 페이지의 다른 블록과 마스크를 건드리지 않습니다.
  • 메인 창과 분리된 편집 패널 어디서 실행해도 같은 블록 범위와 결과를 사용합니다.

말풍선 감지와 자동 맞춤

실제 말풍선 모양을 사용하는 배치

  • 고정 버전의 INT8 ONNX 모델로 말풍선과 텍스트 영역을 감지하고, 모델과 약 13MB의 실행 런타임은 SHA-256 검증 후 첫 사용 시 한 번만 내려받아 계속 재사용합니다.
  • 감지한 윤곽의 가로·세로 여유를 줄 단위로 계산해 번역문이 말풍선 밖이나 인접 영역을 침범하지 않도록 배치합니다.
  • 자연스러운 줄 나눔을 켠 결합 워크플로는 후보정된 최종 말풍선 모양이 정해진 뒤 번역문 줄바꿈을 다시 계산해 저장합니다.
  • 가로쓰기와 세로쓰기, 여러 영역으로 이어진 말풍선과 사용자가 직접 만든 영역에 같은 모양 기반 배치 규칙을 적용합니다.
  • 저장된 말풍선 영역은 낮은 신뢰도라는 이유만으로 사각 OCR 영역으로 되돌리지 않고 그대로 사용합니다.
  • 번역문을 지나치게 잘게 나누고 글자를 과도하게 줄이던 품질 보정을 제거해, 확보한 말풍선 공간을 우선 사용합니다.

자연스러운 한국어 줄 나눔

  • 한국어 번역문은 글자 단위보다 띄어쓰기 기준 어절을 우선해 웃는, 여자였어처럼 함께 읽어야 하는 부분이 중간에서 잘리지 않도록 했습니다.
  • 이 녀석, 이런 얼굴처럼 짧게 이어지는 구를 우선 보존하고, 공간이 부족할 때만 여자 / 였어, 얼굴 / 이었나처럼 제한적인 어미 경계를 사용합니다.
  • 영문·숫자가 섞인 USB가, AI를, 100원은과 통화 기호, 하이픈, 문장부호도 자연스러운 줄 경계를 유지합니다.
  • 자동 글자 크기는 자연스러운 줄을 만들기 위해 지나치게 작아지지 않도록 제한하고, 고정 글자 크기는 줄바꿈이나 세로쓰기 전환을 위해 임의로 줄이지 않습니다.
  • 좋은 줄 나눔을 만들 수 없는 좁은 영역은 어색한 강제 개행을 저장하지 않고 기존 문장을 유지합니다.
  • 한 글자 폭밖에 남지 않는 매우 좁은 한국어 영역은 현재 글자 크기로 한 세로 열이 실제로 들어갈 때만 세로쓰기로 전환합니다.

연결되거나 겹친 말풍선 개선

  • 두 말풍선이 이어진 경우 전체를 직선으로 잘라 버리는 대신 OCR 글자 중심의 곡선형 소유 영역으로 나눕니다.
  • 서로 겹치는 부분에서만 경계를 계산해 각 말풍선 옆의 남는 공간을 계속 활용합니다.
  • 한 OCR 블록이 실제로 두 말풍선에 걸친 경우에는 읽기 순서대로 두 영역을 유지합니다.
  • 한 영역이 대부분의 글자를 포함하고 나머지가 작은 조각인 경우 작은 조각을 제거하거나 다시 분할합니다.
  • 세 조각 이상으로 잘게 깨지거나 안전하게 복구할 수 없는 불량 영역은 무리하게 적용하지 않습니다.
  • 둥근 말풍선의 대체 영역을 사각형이 아닌 타원형 마스크로 만들고, 인접 블록 사이의 간격을 보존합니다.

말풍선 안쪽 여백

  • 설정의 기본 서식에 말풍선 맞춤 안쪽 여백을 추가했습니다.
  • 여백은 0%부터 70%까지 조절할 수 있으며 기본값은 12%입니다.
  • 여러 영역으로 이어진 말풍선은 각 영역 중심을 기준으로 독립적으로 여백을 확보하고, 사각 대체 배치도 원래 큰 영역을 다시 침범하지 않도록 처리합니다.
  • 설정한 여백은 인페인팅이 끝난 뒤 최종 번역문 배치에만 적용하며, 원문 지우기 영역은 여백이 없는 원래 말풍선 안전 영역을 사용합니다.

Flux 원문 지우기 경계

  • 말풍선 영역을 사용할 수 있는 경우 Flux가 초록색 안전 영역만 지우고, 연결된 다른 말풍선까지 침범할 수 있는 큰 OCR 사각형은 합치지 않습니다.
  • Flux 결과의 최종 합성과 경계 페더링도 말풍선 안전 영역 밖으로 넘어가지 않도록 제한했습니다.
  • 말풍선 영역이 없는 블록은 기존의 채워진 OCR 지원 영역과 바깥 글자 감지를 사용해 잔여 글자가 덜 남도록 했습니다.
  • 인페인팅 전에는 여백 0% 영역을 임시로 만들고, 완료 뒤 설정된 여백으로 최종 배치를 다시 계산하므로 편집 기록에는 임시 영역이 남지 않습니다.
  • 사전 마스크 검사와 최종 말풍선 배치는 원본 감지 결과를 재사용해 같은 페이지에서 모델을 불필요하게 두 번 실행하지 않습니다.
  • CUDA와 Metal 모두 겹친 작업 창에서 블록별 소유권을 유지해 인접 영역의 결과가 섞이지 않도록 했습니다.

말풍선 직접 편집

  • 감지된 말풍선을 브러시로 늘리거나 깎고, 점을 찍어 새 다각형 영역을 만들 수 있습니다.
  • 영역 편집은 적용·취소·되돌리기를 지원하며 기존 텍스트 방향과 서식을 바꾸지 않습니다.
  • 말풍선 편집 브러시는 기존 이미지 보정 브러시의 이중 원형 테두리와 중앙점을 재사용합니다.
  • 세로·가로 페이지 비율과 관계없이 커서가 타원으로 늘어나지 않고 청록색 정원으로 표시됩니다.
  • 적용한 말풍선 맞춤을 해제해 기존 OCR 영역으로 되돌릴 수 있습니다.

작업 화면과 보정 도구

  • 페이지 빠른 작업과 작품 단위 작업을 작업 화면에 정리하고, 진행이 끝난 작업은 오른쪽 상태 영역에서 자동으로 치웁니다.
  • 블록 편집기를 텍스트·배치·서식 탭으로 정리하고 탭을 전환해도 작성 중인 값과 높이를 유지합니다.
  • 이미지 보정 그룹 아이콘을 클릭하면 마지막으로 선택한 브러시·사각형·원형 도구가 즉시 활성화됩니다.
  • 보정 도구의 마지막 모양은 페이지나 작품을 이동하고 선택·손바닥 도구를 사용해도 앱을 종료하기 전까지 유지됩니다.

취소와 다운로드 안정성

  • Paddle OCR 준비 확인 도중 작업을 취소하면 이를 런타임 고장으로 오인하지 않으며, 다음 작업에서 불필요하게 재설치하지 않습니다.
  • 말풍선 감지용 ONNX 실행 런타임은 설치 파일에 넣지 않고 버전별 사용자 데이터 캐시에 저장하며, 완료된 파일은 작업을 취소해도 다음 실행에서 다시 내려받지 않습니다.
  • Flux Python 모델은 기본적으로 안정적인 HTTP 다운로드 경로를 사용하고 캐시 위치와 연결 시간 제한을 명시합니다.
  • OCR 검토용 확대 이미지가 후보 글자를 너무 좁게 잘라내지 않도록 crop 영역을 보강했습니다.
  • OpenAI Codex가 계정 사용 한도 도달을 명확히 반환하면 반복 재시도를 중단하고, 초기화까지 남은 시간과 다른 모델 공급자 선택 안내를 표시합니다.
  • 일반적인 일시적 429 오류와 OpenAI API 키 공급자의 기존 재시도 정책은 그대로 유지합니다.

검증

  • TypeScript 타입 검사, ESLint, Prettier와 프로덕션 빌드 통과
  • Vitest 전체 281개 파일, 1,923개 테스트 통과·2개 건너뜀
  • 한국어 어절·고정 24px·초협폭 세로쓰기, 말풍선 안쪽 여백, Flux 초록 영역 경계와 기존 OCR 영역 대체 처리, Codex 사용 한도 회귀 테스트
  • 연결 말풍선 분할, 파편 복구, 블록 한정 원문 지우기·말풍선 맞춤, 작품 일괄 번역 선택, OCR 취소와 Flux 다운로드 환경 회귀 테스트
  • 실제 프로덕션 컴포넌트를 사용한 세로·가로 및 좁은 화면 Chromium UI QA에서 원형 브러시의 비율, 겹침과 잘림 확인
  • git diff --check 통과

Code signing policy

Free code signing provided by SignPath.io, certificate by SignPath Foundation.

SignPath Foundation 신청은 2026년 7월 30일 현재 심사 중입니다.

v1.9.0 Windows 설치 파일에는 Authenticode 서명이 적용되지 않으므로 SignPath Foundation 정책의 보호 대상이 아닙니다. 유효한 SignPath Foundation 서명이 있는 산출물만 해당 정책의 적용을 받습니다.

v1.9.0 Apple Silicon 산출물은 인증서가 설정되지 않은 경우 ad-hoc 서명만 적용되며 Apple이 확인한 개발자 신원이나 공증을 포함하지 않습니다. Gatekeeper 승인 전에 릴리스의 체크섬과 다운로드한 파일을 대조하세요.

v1.8.1

Choose a tag to compare

@github-actions github-actions released this 28 Jul 10:23

v1.8.1 패치노트

기준 범위: v1.8.0 이후부터 v1.8.1까지의 변경 사항입니다.
주요 포함 변경: 가져오기·내보내기 종류별 최근 폴더 기억, 취소·실패 시 기존 경로 보존, 최근 경로 저장소의 복구 안정성 강화.

가져오기 폴더 기억

작업 종류마다 독립된 최근 경로

  • 이미지 열기, 이미지 폴더 열기, 압축파일 열기와 압축파일 폴더 열기가 각각 마지막으로 성공한 폴더에서 다시 시작합니다.
  • 작업 공유 파일 가져오기, 사용자 글꼴 추가, 로컬 GGUF 모델과 MMProj 선택도 서로의 경로를 덮어쓰지 않고 각 대화상자에 맞는 최근 폴더를 사용합니다.
  • 하나의 공통 다운로드 폴더로 계속 초기화되던 흐름을 분리해, 서로 다른 위치의 원고·압축파일·모델을 번갈아 다룰 때도 마지막 작업 위치를 유지합니다.
  • 앱을 종료하고 다시 실행해도 최근 경로가 앱 데이터에 보존됩니다.

성공한 작업만 반영

  • 이미지·폴더·압축파일 가져오기는 미리보기만 열었을 때가 아니라 실제 가져오기가 완료된 뒤 최근 경로를 갱신합니다.
  • 대화상자를 취소하거나 가져오기와 글꼴 등록이 실패하면 이전에 성공한 폴더를 그대로 유지합니다.
  • 로컬 GGUF 모델과 MMProj 선택 경로는 각각 독립적으로 기억하며, 선택을 취소하면 기존 경로를 바꾸지 않습니다.

내보내기 폴더 기억

  • 작업 공유 파일 저장, 페이지 PNG 내보내기, 검수용 텍스트와 일반 텍스트 내보내기가 각각 마지막으로 저장한 폴더에서 시작합니다.
  • 파일 저장 대화상자는 최근 폴더 안에 기존 기본 파일명을 함께 제안해, 저장 위치를 유지하면서 이름을 바로 확인할 수 있습니다.
  • 저장이나 내보내기가 취소되거나 실패하면 최근 경로를 덮어쓰지 않습니다.

경로 저장 안정성

  • 최근 경로는 설정과 분리된 recent-dialog-paths.json에 대화상자 종류별로 저장합니다.
  • 기억한 폴더가 삭제되면 존재하는 가장 가까운 상위 폴더로 자동 복구하고, 복구할 위치가 없으면 운영체제 기본 위치를 사용합니다.
  • 저장 파일이 없거나 손상되어도 앱 실행과 파일 대화상자를 막지 않고 안전하게 기본 위치로 돌아갑니다.
  • 런타임 경로 파일이 앱 패키지에 섞이지 않도록 빌드 제외 규칙을 추가하고, Windows 완전 제거 시 함께 정리합니다.

프로젝트 문서

  • 기여 절차, 보안 취약점 비공개 제보 방법과 프로젝트의 공개 사용·검증 근거를 별도 문서로 정리했습니다.
  • SignPath Foundation 신청 심사 중 상태와 현재 Windows·macOS 산출물의 서명 범위를 README와 코드 서명 정책에 명확히 표시했습니다.

검증

  • TypeScript 타입 검사, ESLint, Prettier, 아키텍처 의존성·예산 검사, mock 경계 검사와 프로덕션 빌드 통과
  • Vitest 전체 255개 파일, 1,637개 테스트 통과·2개 건너뜀
  • 가져오기 성공·취소·실패, 모델과 MMProj 경로 분리, 글꼴 등록 실패, PNG 내보내기 취소와 최근 경로 저장·복구 회귀 테스트
  • 설치 패키지 제외 규칙과 Windows 완전 제거 정리 동작 회귀 테스트
  • git diff --check 통과

Code signing policy

Free code signing provided by SignPath.io, certificate by SignPath Foundation.

SignPath Foundation 신청은 2026년 7월 28일 현재 심사 중입니다.

v1.8.1 Windows 설치 파일에는 Authenticode 서명이 적용되지 않으므로 SignPath Foundation 정책의 보호 대상이 아닙니다. 유효한 SignPath Foundation 서명이 있는 산출물만 해당 정책의 적용을 받습니다.

v1.8.1 Apple Silicon macOS 산출물은 ad-hoc 서명만 적용되며 Apple이 확인한 개발자 신원이나 공증을 포함하지 않습니다. Gatekeeper 승인 전에 릴리스의 체크섬과 다운로드한 파일을 대조하세요.

v1.8.0

Choose a tag to compare

@github-actions github-actions released this 28 Jul 04:47

v1.8.0 패치노트

기준 범위: v1.7.0 이후부터 v1.8.0까지의 변경 사항입니다.
주요 포함 변경: 휠 조합을 지원하는 이미지 확대·축소 단축키, 원본만 보는 비교 토글, 사각형·원형 리터치 도구, 키보드 텍스트 블록 이동과 색상 스왑.

이미지 보기와 원본 비교

확대·축소 휠 단축키

  • 이미지 확대와 축소를 마우스 휠 위·아래에 직접 지정할 수 있습니다.
  • 일반 휠뿐 아니라 Ctrl, Alt, Shift와 휠을 조합한 입력도 각각 단축키로 등록할 수 있습니다.
  • 페이지 이동 단축키와 같은 설정 방식으로 동작하며, 등록된 조합은 작업 화면에서 이미지 배율만 변경합니다.
  • 휠 입력을 캡처할 때 실제 방향과 보조 키 조합을 표시해 원하는 동작을 바로 확인할 수 있습니다.

한 번에 전환하는 원본 비교

  • 원본과 비교를 누르면 작업 중인 텍스트 블록, 리터치 마스크·미리보기와 선택 표시를 자동으로 숨기고 원본 이미지만 표시합니다.
  • 버튼을 다시 누르면 비교하기 전의 텍스트 블록, 선택 상태와 편집 화면으로 그대로 돌아옵니다.
  • 비교 중에는 붓·도형·마스크를 비롯한 포인터 편집을 잠시 막아 원본을 보면서 처리본이 실수로 바뀌지 않습니다.
  • 원본과 번역 블록이 겹쳐 보이던 기존 비교 방식을 수정해 원본 자체를 방해 없이 확인할 수 있습니다.

더 빠른 리터치 작업

사각형·원형 덮기 도구

  • 기존 붓에 더해 채워진 사각형원형 리터치 도구를 추가했습니다.
  • 시작점부터 끝점까지 한 번 드래그하면 넓은 영역을 선택한 색으로 바로 덮을 수 있습니다.
  • 드래그 중 실제 적용 범위를 미리 표시하며, 이미지 경계를 벗어난 도형은 안전하게 잘라서 처리합니다.
  • 도형 리터치도 기존 이미지 작업 기록에 포함되어 실행 취소와 다시 실행을 사용할 수 있습니다.

알아보기 쉬운 색상 선택

  • 붓·사각형·원형의 색상 입력을 큰 색상 견본과 대문자 HEX 값으로 정리했습니다.
  • 색상 영역 안의 불필요한 팔레트 아이콘과 중복 도구 이름을 제거해 현재 색을 바로 구분할 수 있습니다.
  • 좁은 편집 패널에서도 색상 견본과 #FFFFFF 형식의 값이 잘리거나 겹치지 않습니다.

텍스트 블록 키보드 편집

방향키 이동과 자연스러운 가속

  • 선택한 텍스트 블록을 키보드 방향키로 이동할 수 있습니다.
  • 두 방향키를 함께 누르면 속도를 과도하게 높이지 않고 자연스럽게 대각선으로 이동합니다.
  • 짧게 한 번 누르면 정확히 이미지 기준 1px만 이동하며, 300ms 이상 계속 누른 뒤에만 반복 이동을 시작합니다.
  • 길게 누르는 동안에는 1px에서 최대 8px까지 부드럽게 빨라지고, Shift와 방향키를 함께 누르면 고정 10px씩 이동합니다.
  • 여러 블록을 선택한 경우 간격을 유지한 하나의 그룹으로 움직이며 페이지 경계를 넘지 않습니다.
  • 텍스트 입력이나 다른 편집 컨트롤에 초점이 있을 때는 방향키 입력을 가로채지 않습니다.

글자색·외곽선색 스왑

  • 한 번의 버튼 클릭으로 선택 블록의 글자색과 외곽선색을 서로 바꿀 수 있습니다.
  • 검은 글자·흰 외곽선을 흰 글자·검은 외곽선으로 전환하는 자주 쓰는 작업을 색상 값을 다시 입력하지 않고 처리합니다.

편집 안정성과 성능

  • 키보드 이동은 운영체제의 키 반복 속도 대신 앱이 관리하는 단일 입력 주기를 사용해 방향 전환과 대각선 이동이 일정하게 이어집니다.
  • 리터치 미리보기와 실제 적용이 같은 도형 계산을 사용하도록 통합해 드래그 중 보이는 범위와 결과의 차이를 줄였습니다.
  • 개발 중 컴포넌트 갱신에서도 키보드 이동 상태의 Hook 구성이 바뀌지 않도록 정리해 편집 화면 오류를 방지했습니다.
  • 개발 빌드 캐시가 런타임 자산을 잘못 재사용하지 않도록 제외 규칙을 보강했습니다.

검증

  • TypeScript 타입 검사, ESLint, Prettier, CSS 구조 검사와 프로덕션 빌드 통과
  • Vitest 전체 252개 파일, 1,625개 테스트 통과·2개 건너뜀
  • 확대·축소 휠 조합, 원본 비교 토글, 사각형·원형 리터치, 대각선 이동, 빠른 방향키 탭 1px 이동과 색상 스왑 회귀 테스트
  • 프로덕션 컴포넌트를 사용한 1440×900 및 900×700 Chromium UI QA에서 색상 입력의 잘림, 겹침과 가로 넘침 확인
  • 실제 앱을 1280×800 크기로 새로 실행해 편집 화면의 렌더러 오류가 없는 것을 확인
  • git diff --check 통과

Code signing policy

Free code signing provided by SignPath.io, certificate by SignPath Foundation.

SignPath Foundation 신청은 2026년 7월 28일 현재 심사 중입니다.

v1.8.0 Windows 설치 파일에는 Authenticode 서명이 적용되지 않으므로 SignPath Foundation 정책의 보호 대상이 아닙니다. 유효한 SignPath Foundation 서명이 있는 산출물만 해당 정책의 적용을 받습니다.

v1.8.0 Apple Silicon macOS 산출물은 ad-hoc 서명만 적용되며 Apple이 확인한 개발자 신원이나 공증을 포함하지 않습니다. Gatekeeper 승인 전에 릴리스의 체크섬과 다운로드한 파일을 대조하세요.

v1.7.0

Choose a tag to compare

@github-actions github-actions released this 26 Jul 05:46

v1.7.0 패치노트

기준 범위: v1.6.5 이후부터 v1.7.0까지의 변경 사항입니다.
주요 포함 변경: NVIDIA·AMD 공통 고품질 OCR 경로, Gemma 4와 Anime YOLO를 이용한 보수적 텍스트 그룹 보정, 편집 화면과 내보내기 안정성·성능 개선, 작업 취소 처리 수정.

OCR 및 번역 그룹 안정성 개선

GPU 풀로드 OCR 경로 개편

  • 일반 풀로드 모드는 NVIDIA CUDA와 AMD ROCm에서 PP-OCRv6 Transformers가 찾은 텍스트 조각과 좌표를 Gemma 4가 의미 단위로 묶는 공통 경로를 사용합니다.
  • 기존 NVIDIA PaddleOCR-VL 레이아웃 경로가 필요한 경우에는 새 CUDA 레거시 풀로드를 별도로 선택할 수 있습니다.
  • 두 풀로드 모드는 GPU 전용입니다. OCR 장치가 CPU이면 지나치게 느린 경로를 실행하지 않고 절약 품질로 안전하게 전환합니다.
  • AMD 설정에 CUDA 레거시 값이 남아 있으면 AMD에서 지원되는 일반 풀로드 경로로 자동 전환합니다.
  • 일본어 원문에서 일본어를 지원하지 않는 PP-OCRv6 tiny 인식 모델이 선택되지 않도록 최소 품질의 모델 선택을 수정했습니다.

Gemma 4 의미 그룹 검토 강화

  • Gemma 4는 OCR 원문과 좌표를 다시 작성하지 않고, 후보 텍스트 조각을 같은 대사로 묶을지 여부만 판단합니다.
  • 말풍선 본문, 후리가나, 효과음과 서로 다른 읽기 방향을 구분하고, 세로쓰기와 가로쓰기의 실제 읽기 순서에 맞춰 결과를 정렬합니다.
  • 모델 응답에 중복·누락된 조각이나 잘못된 그룹이 있으면 해당 응답을 적용하지 않고 검증된 기존 OCR 결과로 되돌아갑니다.
  • 고정된 번역 블록도 원문 보존, 블록 수와 식별자, 번역 응답의 완전성을 검사해 일부 블록이 빠지거나 다른 블록과 섞이는 문제를 줄였습니다.
  • 모델 요청 실패와 취소를 구분해, 취소는 즉시 전달하고 일반적인 검토 실패만 안전한 기존 결과로 복구합니다.

Anime YOLO 보조 그룹 판정

붙어 나온 말풍선과 효과음의 보수적 분리

  • Anime YOLO가 찾은 텍스트 영역을 OCR 대체 결과가 아닌 추가 검토 근거로 사용합니다. YOLO가 OCR 원문이나 좌표를 직접 변경하지는 않습니다.
  • 서로 다른 말풍선이나 읽기 시작 열이 하나로 합쳐진 경우, 독립된 검출 영역과 읽기 띠가 충분히 확인될 때만 분리 장벽을 적용합니다.
  • 하나의 연속된 세로 문장이 위아래 OCR 조각으로 나뉜 정상 사례는 다시 합치고, 서로 겹쳐 보이더라도 실제로 다른 말풍선인 사례는 분리된 상태를 유지합니다.
  • Paddle 분류가 불확실한 효과음이나 본문 조각은 엄격한 위치·검출 조건을 만족하는 후보에 한해서만 복구합니다.
  • 일반적인 정상 페이지에는 기존 결과가 유지되도록 낮은 신뢰도, 좌표 불일치, 애매한 중복 영역은 아무 변경 없이 무시합니다.

속도와 기존 결과 보호

  • YOLO 근거를 사용할 수 있는 애매한 페이지에서만 검출기를 실행하며, 이미 명확한 페이지에서는 모델을 초기화하지 않습니다.
  • 여러 페이지를 처리할 때는 하나의 검출기 실행 자원을 재사용해 페이지마다 모델을 다시 준비하지 않습니다.
  • YOLO는 번역용 GPU 설정과 별개로 CPU에서 실행되며, 검출 실패나 선택적 진행률 보고 실패가 OCR·번역 작업 전체를 중단시키지 않습니다.
  • 기존 OCR 캐시는 Paddle OCR을 다시 실행하지 않고 새 그룹 판정 근거만 갱신하도록 캐시 스키마를 마이그레이션합니다.
  • WebP 원본은 앱이 이미 변환한 PNG 데이터를 그룹 검토용 crop에도 재사용해, 일부 WebP 페이지에서 검토 박스가 나오지 않던 문제를 수정했습니다.

편집 화면과 작품 기억 관리

이미지 보기 조절 추가

  • 작업 화면에 확대, 축소, 현재 배율 표시와 배율 초기화 버튼을 추가했습니다.
  • 화면 맞춤, 가로 맞춤, 세로 맞춤, 100% 중 이미지 맞춤 방식을 선택할 수 있습니다.
  • 보기 조절 패널은 접거나 다시 펼칠 수 있으며, 한국어·영어·일본어·중국어 UI에 같은 기능을 제공합니다.
  • 페이지를 바꾸거나 작업 화면 크기가 달라져도 현재 페이지에 맞는 배율과 스크롤 상태가 안정적으로 갱신됩니다.

용어·기억 전체 초기화

  • 서식·용어 관리 화면에서 현재 작품의 용어집, 캐릭터 기억과 모든 화의 스토리 메모리를 한 번에 초기화할 수 있습니다.
  • 번역 규칙, 원본 페이지와 기존 번역 결과는 유지하며, 삭제 범위와 되돌릴 수 없다는 안내를 확인한 뒤 실행합니다.
  • 초기화가 끝나면 스토리 메모리를 비운 화의 수를 표시합니다.

렌더링과 내보내기 성능 개선

  • 같은 페이지 이미지를 원본, 선택 페이지와 인접 페이지에서 동시에 요청할 때 실제 이미지 요청 하나를 공유합니다.
  • 인접 페이지 이미지는 URL만 미리 받는 데 그치지 않고 디코딩까지 준비해 페이지 전환 시 표시 지연을 줄였습니다.
  • 다른 페이지로 이동하는 동안 직전 페이지 이미지가 잠깐 나타나지 않도록 페이지별 이미지 프레임을 분리했습니다.
  • 블록 이동과 크기 조절 중 변경되지 않은 번역 블록의 텍스트 배치를 다시 계산하지 않도록 렌더링 범위를 줄였습니다.
  • 빠르게 연속되는 진행 로그와 작업 이벤트를 묶어 전달해 대량 페이지 작업 중 메인 프로세스와 편집 화면의 불필요한 렌더링을 줄였습니다.
  • 이미지·PDF용 페이지 출력은 편집 화면과 같은 프로덕션 페이지 구성 요소와 스타일을 사용하도록 통합했습니다.
  • 화면과 내보내기의 블록 위치, 글꼴, 배경과 변형 결과를 픽셀 단위로 비교하는 회귀 검사를 추가했습니다.
  • 여러 페이지를 내보낼 때 렌더러를 재사용하고, 이미지 디코딩·페이지 로드·캡처 제한 시간과 실패 후 정리를 보강했습니다.

작업 취소와 런타임 안정성

  • 번역, 인페인팅과 페이지 이미지 내보내기 작업을 취소하면 취소됨 완료 이벤트를 먼저 전달한 뒤 활성 작업 상태를 정리하도록 순서를 수정했습니다.
  • 작업 상태를 너무 일찍 지워 취소 결과가 화면에 나타나지 않거나 이전 진행 이벤트가 다시 표시될 수 있던 문제를 방지했습니다.
  • 앱 종료와 개발 서버 재시작 시 남은 자식 프로세스, 오래된 임시 파일과 로그를 정리하는 흐름을 보강했습니다.
  • OCR·Gemma·인페인팅 실행기의 시작, 출력 처리와 오류 보고를 분리해 실제 실패 원인이 일반 오류에 가려지지 않도록 했습니다.

검증

  • Gemma 4 12B를 사용한 40페이지 기존 방식·개선 방식 비교에서 문제가 확인된 4페이지의 합침·분리·박스 누락 결과를 교정하고 나머지 36페이지의 그룹 구조가 유지되는 것을 확인
  • 정상 페이지에서는 YOLO를 실행하지 않는 경로, 검출 실패 시 무변경 복구, 캐시 마이그레이션과 WebP 검토 crop 회귀 테스트
  • TypeScript 및 JavaScript 타입 검사, ESLint, Prettier와 프로덕션 빌드 통과
  • Vitest 전체 248개 파일, 1,591개 테스트 통과·2개 건너뜀
  • Python OCR 테스트 60개 통과
  • 편집 화면과 페이지 내보내기의 DOM·픽셀 일치 검사 및 이미지 프로토콜 smoke test 통과
  • 프로덕션 컴포넌트를 사용한 Chromium UI QA에서 보기 조절의 배치, 접힘 상태와 좁은 화면 동작 확인
  • git diff --check 통과

Code signing policy

SignPath.io가 제공하고 SignPath Foundation이 인증서를 제공하는 무료 코드 서명 정책을 사용합니다.

v1.7.0 Windows 설치 파일에는 Authenticode 서명이 적용되지 않으므로 SignPath Foundation 정책의 보호 대상이 아닙니다. 유효한 SignPath Foundation 서명이 있는 산출물만 해당 정책의 적용을 받습니다.

v1.7.0 Apple Silicon macOS 산출물은 ad-hoc 서명만 적용되며 Apple이 확인한 개발자 신원이나 공증을 포함하지 않습니다. Gatekeeper 승인 전에 릴리스의 체크섬과 다운로드한 파일을 대조하세요.

v1.6.5

Choose a tag to compare

@github-actions github-actions released this 21 Jul 10:17
0cc8b43

v1.6.5 패치노트

기준 범위: v1.6.4 이후부터 v1.6.5까지의 변경 사항입니다.

텍스트 줄바꿈 방식 추가

  • 텍스트 블록마다 표준, 글자 단위, 단어 단위, 긴 문자열 넘침 방지 중 하나를 선택할 수 있습니다.
  • 선택 블록의 서식 패널, 여러 블록 직접 서식, 서식 일괄 적용, 새 블록의 기본 서식 설정에서 같은 옵션을 사용할 수 있습니다.
  • 선택한 방식의 동작을 짧은 설명으로 함께 표시하며, 좁은 편집 패널에서도 설명이 패널 밖으로 넘치지 않도록 줄바꿈합니다.
  • 기존 프로젝트의 가로·세로 블록은 각각 종전 줄바꿈 방식으로 자동 해석되므로 기존 문서의 모양은 바뀌지 않습니다.

화면 표시와 내보내기 일치

  • 편집 화면, 자동 글자 크기 계산, 이미지·PDF용 페이지 렌더링이 같은 줄바꿈 규칙을 사용합니다.
  • 가로쓰기와 세로쓰기, 부분 굵게·기울임 서식, 한중일 문장부호와 긴 영문·URL을 함께 처리합니다.
  • 이모지와 결합 문자 같은 한 글자 단위를 중간에서 쪼개지 않도록 줄 계산을 보강했습니다.

검증

  • TypeScript 타입 검사와 ESLint 통과
  • Vitest 전체 187개 파일, 1,210개 테스트 통과·2개 건너뜀
  • 프로덕션 컴포넌트를 사용한 1360px 및 390px Chromium UI QA에서 잘림, 겹침, 가로 넘침 확인
  • 프로덕션 빌드와 git diff --check 통과

Code signing policy

SignPath.io가 제공하고 SignPath Foundation이 인증서를 제공하는 무료 코드 서명 정책을 사용합니다.

v1.6.5 Windows 설치 파일에는 Authenticode 서명이 적용되지 않으므로 SignPath Foundation 정책의 보호 대상이 아닙니다. 유효한 SignPath Foundation 서명이 있는 산출물만 해당 정책의 적용을 받습니다.

v1.6.5 Apple Silicon macOS 산출물은 ad-hoc 서명만 적용되며 Apple이 확인한 개발자 신원이나 공증을 포함하지 않습니다. Gatekeeper 승인 전에 릴리스의 체크섬과 다운로드한 파일을 대조하세요.

v1.6.4

Choose a tag to compare

@github-actions github-actions released this 21 Jul 04:37

v1.6.4 패치노트

기준 범위: v1.6.3 이후부터 v1.6.4까지의 변경 사항입니다.
주요 포함 변경: AMD GPU OCR 런타임과 실패 처리 수정, Apple Silicon Alpha 3 실기 검증 결과를 반영한 macOS 정식 릴리스 추가.

AMD GPU OCR 안정성 수정

이슈 #44 런타임 의존성과 실행 경로 수정

  • 이슈 #44에서 확인된 AMD GPU OCR 초기화와 실행 실패를 추적할 수 있도록 ROCm 런타임 검증을 보강했습니다.
  • 설치 시점마다 달라질 수 있던 AMD OCR의 Transformers 범위를 transformers==5.13.1로 고정해 호환되는 의존성 조합을 재현합니다.
  • Paddle OCR 모델은 고정된 revision과 가중치 SHA-256으로 내려받아 원격 파일 변경이나 손상된 캐시를 그대로 사용하지 않습니다.
  • AMD OCR에 필요한 torch, torchvision, transformers, paddlex, paddleocr, safetensors 의존성을 실제 모델 생성 전에 확인합니다.
  • 앱이 관리하는 ROCm 런타임을 사용할 때 외부 ROCM_PATH, HIP_PATH, 라이브러리 경로가 섞이지 않도록 실행 환경을 격리하고, 명시적으로 외부 런타임을 허용한 경우에만 해당 경로를 전달합니다.
  • PyTorch가 실제로 읽는 PYTORCH_ALLOC_CONF에 메모리 allocator 설정을 전달해 AMD GPU 메모리 설정이 누락되지 않도록 했습니다.
  • torchvision과 Transformers 이미지 처리 모듈의 지연 import를 먼저 검사해, 네이티브 DLL이나 연산자 로딩 실패가 일반적인 모델 생성 오류에 가려지지 않고 원인과 함께 표시됩니다.

숨은 GPU → CPU 전환 완전 제거

  • GPU OCR 실패 뒤 같은 페이지, 다음 페이지, 배치 또는 앱 세션에서 CPU OCR로 몰래 바꾸던 모든 fallback 경로를 제거했습니다.
  • GPU 페이지 오류를 내부에서 다시 시도하거나 오류 난 페이지를 빈 결과로 건너뛰던 경로도 제거해 첫 처리 실패에서 전체 작업을 중단합니다.
  • AMD GPU OCR 준비나 실행이 실패하면 현재 OCR·번역 작업을 즉시 중단하고, 누락된 의존성, DLL 로딩, 장치 초기화 또는 페이지 처리 중 발생한 원래 오류를 표시합니다.
  • 실패한 페이지를 완료 또는 건너뜀으로 표시하지 않으며, 편집 중인 블록이 있어도 실패 원문을 실행 패널에 계속 표시합니다.
  • OCR 캐시는 장치, GPU backend, 품질, provider, engine과 모델 설정별로 분리해 CPU에서 만든 결과가 GPU 설정에서 재사용되지 않도록 했습니다.
  • CPU OCR을 사용하려면 사용자가 설정 → 하드웨어 · OCR에서 OCR 장치를 CPU로 직접 선택해야 합니다. 앱은 사용자의 GPU 선택을 임의로 변경하지 않습니다.
  • 이번 수정은 런타임 경로와 오류 정책을 바로잡고 회귀 테스트로 고정한 것입니다. 실제 RX 9070 계열 장치에서 모든 OCR 작업의 성공을 확인했다는 의미는 아닙니다.

Apple Silicon macOS 정식 릴리스

Windows와 같은 v1.6.4 릴리스에 포함

  • 이슈 #18에서 Apple Silicon Alpha 3의 실제 Mac 실행이 확인됐으며, 그 코드와 패키징 수정 사항을 반영한 macOS 빌드를 별도 Alpha 프리릴리스가 아닌 동일한 v1.6.4 정식 릴리스에 DMG와 ZIP으로 제공합니다.
  • 지원 범위는 Apple Silicon M1 이상과 macOS 14 이상입니다. Intel Mac은 지원하지 않습니다.
  • macOS의 Paddle OCR은 CPU 경로를 사용하며, Gemma와 지원되는 인페인팅 기능은 Apple Silicon Metal 런타임을 사용합니다.
  • 최종 v1.6.4 산출물은 Apple Silicon GitHub Actions 러너에서 설치, 첫 실행, 종료·재실행, 런타임 준비와 캐시 재사용 검증을 통과한 뒤 업로드합니다.

서명과 Gatekeeper 안내

  • v1.6.4 macOS 앱과 포함된 실행 파일은 무결성을 위한 ad-hoc 서명만 적용되며, Apple Developer ID 서명이나 공증이 적용된 빌드가 아닙니다.
  • 처음 실행이 Gatekeeper에 의해 차단되면 다운로드한 파일의 SHA-256을 먼저 대조한 뒤 시스템 설정 → 개인정보 보호 및 보안에서 해당 앱의 확인 없이 열기를 선택해야 할 수 있습니다.
  • 출처를 신뢰할 수 없는 DMG나 ZIP에는 이 절차를 사용하지 마세요.

재발 방지 및 검증

릴리스 검증 항목:

  • npm run check 전체 검사
  • Windows Check에서 Vitest 전체 184개 파일, 1,174개 테스트 통과·2개 건너뜀
  • 실제 프로덕션 컴포넌트를 사용한 UI QA와 넓은 화면·좁은 화면 Chromium 캡처 확인
  • AMD OCR 의존성, 격리된 런타임 경로, allocator 전달, GPU 실패 즉시 중단과 명시적 CPU 선택 회귀 테스트
  • Flux Metal Rust 테스트와 macOS용 Flux·Koharu 인페인팅 실행기 릴리스 빌드
  • 실제 electron-builder NSIS 컴파일, 패키지 런타임 검사와 격리된 신규 설치·잠긴 파일 업그레이드·사용자 데이터 보존 제거 smoke test
  • Apple Silicon에서 Metal 런타임 smoke, arm64 패키지·연결 라이브러리·ad-hoc 서명·DMG·ZIP·체크섬 검증과 설치·실행·종료·재실행 lifecycle 확인
  • git diff --check
  • GitHub Actions Check 통과 후 Windows 릴리스 워크플로가 정식 릴리스와 EXE를 게시하고, macOS 릴리스 워크플로가 검증된 DMG·ZIP·체크섬을 같은 릴리스에 순차 업로드
  • 두 릴리스 워크플로가 모두 성공하면 제공되는 산출물:
    • CarrotMangaTranslator-Setup-v1.6.4.exe — 311,600,309바이트(약 297.2MiB), SHA-256 6a892fad31db63d522b2735f554e5a7fec5a498a83f915ad6500b394354da8cc
    • CarrotMangaTranslator-1.6.4-macOS-arm64.dmg
    • CarrotMangaTranslator-1.6.4-macOS-arm64.zip
    • SHA256SUMS-macOS-arm64.txt

Code signing policy

SignPath.io가 제공하고 SignPath Foundation이 인증서를 제공하는 무료 코드 서명 정책을 사용합니다.

v1.6.4 Windows 설치 파일에는 Authenticode 서명이 적용되지 않으므로 SignPath Foundation 정책의 보호 대상이 아닙니다. 유효한 SignPath Foundation 서명이 있는 산출물만 해당 정책의 적용을 받습니다.

v1.6.4 Apple Silicon macOS 산출물은 ad-hoc 서명만 적용되며 Apple이 확인한 개발자 신원이나 공증을 포함하지 않습니다. Gatekeeper 승인 전에 릴리스의 체크섬과 다운로드한 파일을 대조하세요.

Unsigned Apple Silicon Alpha v1.6.3-mac-alpha.3

Choose a tag to compare

@github-actions github-actions released this 20 Jul 12:37
5511c69

Unsigned Apple Silicon Alpha v1.6.3-mac-alpha.3

실기 검증이 진행 중인 Apple Silicon 전용 Alpha입니다. 중요한 원본은 별도로 보관하고, 문제는 아래 Mac Alpha Issue 양식으로 알려주세요.

별도 실기 테스터를 확보하지 못한 상태에서 공개 검증을 시작합니다. Apple Silicon Mac이 있다면 직접 설치해 번역과 인페인팅을 사용해 보시고, 성공 여부와 오류 로그를 알려주시면 다음 Alpha를 고치는 데 큰 도움이 됩니다. 오류가 나면 앱의 문제 신고 기능이 만든 익명화 로그를 Issue에 첨부해 주세요.

지원 범위

  • Apple Silicon M1 이상, macOS 14 이상 (Intel Mac 제외)
  • 로컬 Gemma 4 12B·26B·31B Metal
  • Flux Klein·LaMa Manga·AOT Metal 인페인팅
  • Paddle OCR CPU, Codex/API 번역, 편집·가져오기·저장·내보내기
  • 앱 데이터: ~/Library/Application Support/manga-gemma-translator

메모리 등급과 현재 검증 상태

  • 16GB 이상: 12B, AOT, LaMa, Flux — 실기 결과 접수 전 미검증
  • 24GB 이상: 26B — 실기 결과 접수 전 미검증
  • 32GB 이상: 31B + DFlash CPU-ring — 실기 결과 접수 전 미검증

모델 가중치는 첫 사용 때 체크섬 검증 후 내려받습니다. 대략 12B 7.6GB, 26B 13.1GB, 31B 15.8GB 외에 OCR·인페인팅 모델 공간이 필요하며 네트워크에 따라 오래 걸릴 수 있습니다.

설치

  1. DMG를 열고 앱을 /Applications로 옮깁니다.
  2. 처음 실행이 차단되면 시스템 설정 → 개인정보 보호 및 보안에서 해당 앱의 확인 없이 열기를 선택합니다.
  3. 출처를 신뢰할 수 있는 이 GitHub Release의 SHA256과 다운로드 파일을 먼저 대조하세요.

테스터 체크리스트

  • 모델 다운로드, 중단 후 재시도, 캐시 재사용
  • 번역 시작·취소·재실행과 앱 재시작 후 저장 상태
  • AOT·LaMa·Flux 인페인팅 및 수동 보정
  • 이미지/폴더/CBZ 가져오기와 PNG/TXT/CSV 내보내기
  • 31B 사용 시 로그에 DFlash CPU-ring 경로가 명시되는지 확인

자세한 항목은 함께 첨부된 MAC_ALPHA_TEST_CHECKLIST.md를 사용해 주세요.

알려진 제한

  • GitHub의 7GB M1 빌드 러너는 대형 모델 품질·장시간 메모리 시험을 대신하지 못합니다.
  • 패키지 GUI 앱의 LaunchServices 가져오기·저장·재실행·내보내기 수명주기 스모크를 통과했습니다.
  • 인증서가 없는 빌드는 ad-hoc 서명이므로 Gatekeeper에서 수동 승인이 필요합니다.
  • Intel Mac과 macOS 13 이하는 지원하지 않습니다.

문제 제보

Mac Alpha Issue 열기 — 앱의 문제 신고 기능을 쓰면 칩, 통합 메모리, macOS, Metal 장치, 선택 모델과 익명화된 로그가 자동으로 채워집니다.

문제없이 동작한 경우에도 사용한 Mac 모델, 통합 메모리, Gemma·인페인팅 조합과 체크리스트 결과를 남겨주시면 해당 메모리 등급을 검증 완료로 바꾸는 데 활용하겠습니다.