릴리즈 노트

CrossPoint Reader 한국어 펌웨어 버전별 변경사항

현재 버전v1.2.0-ko.15

v1.2.0-ko.5

1.2.0-ko.52026년 4월 19일
GitHub

요약

XTC / XTCH / TXT 책 관련 네 가지 회귀를 수정합니다.
  1. 잠자기 화면 커버: XTC/XTCH/TXT 를 읽던 중 슬립 진입 시 책 표지가 아니라 기본 슬립 화면이 뜨던 버그 (1.0.0-ko.1 부터 조용히 깨져 있었음).
  2. 홈 화면 썸네일 영구 유실: Heap 단편화로 malloc 실패하면 coverBmpPath 가 빈 값으로 영구 저장되어 재부팅해도 돌아오지 않던 문제.
  3. 홈 화면 흰색 카드: 썸네일 재시도 대기 중 Lyra / Lyra3Covers 테마가 fallback 아이콘을 안 그리고 빈 흰색 사각형만 표시.
  4. 대용량 XTC 책의 썸네일/페이지 로딩 실패 → 흰색 카드 재발: 2000+ 페이지 XTC 파일은 XtcParser::open() 이 페이지 테이블 전체를 한 번에 메모리에 올려(2871페이지 → ~46KB 연속 블록) 이후 썸네일용 48KB 할당이 실패. upstream #1648 을 cherry-pick 해 페이지 테이블을 on-demand 읽기로 전환.

한국어 버전 변경 사항

수정

  • 잠자기 커버 화면 복구 (XTC / XTCH / TXT)SleepActivity 의 BMP 무결성 검증이 헤더 크기를 70바이트로 하드코딩. 1-bit BMP 실제 헤더는 62바이트라 XTC/TXT 커버가 매번 8바이트 부족으로 판정돼 삭제. Bitmap::getDataOffset() 으로 파싱된 실제 헤더 오프셋 사용.
    • 480×800 1-bit XTC 커버 검증: 62 + 60 × 800 = 48062 bytes → 기존 60 × 800 + 70 = 48070 bytes (FAIL) → 수정 후 48062 = PASS.
  • 홈 화면 XTC 썸네일 영구 유실 방지generateThumbBmp 실패 시 coverBmpPath 를 지우지 않도록 변경하고, 이미 빈 값이 저장된 기기 복구를 위해 홈 진입 시 확장자 기준으로 템플릿 경로 재구성.
  • Lyra / Lyra3Covers 테마: 썸네일 파일 없을 때 fallback 렌더openFileForRead 실패도 hasCover = false 로 떨어뜨려 빈 사각형 대신 책 아이콘 fallback 이 나오도록.
  • 대용량 XTC 페이지 테이블 lazy-loading (upstream #1648 cherry-pick, fedcb2f)XtcParser::open() 이 페이지 테이블 전체를 메모리에 올리던 것을 on-demand 방식으로 변경.
    • Before: 페이지 수 × 16B 연속 블록 (2871 페이지 → 46KB, 4187 페이지 → 65KB)
    • After: 0 bytes — 페이지 접근 시마다 SD 카드에서 16B 씩 읽기
    • 페이지 전환 오버헤드는 SD seek+read (~0.1–0.5ms) 로 e-ink refresh (1–2초) 대비 무시 수준
    • 모비 딕처럼 2000+ 페이지 XTC 도 이제 홈 썸네일 정상 생성

유지된 한국어 전용 기능

  • UnifiedFontFamily / SdFontFamily 글꼴 시스템
  • 합성 볼드(Synthetic Bold) 렌더링
  • 자간 조절 / 첫 줄 들여쓰기 / 글자 단위 줄바꿈
  • SD 카드 커스텀 글꼴 로딩 (KoPub Batang 기본)
  • 1.2.0-ko.3: BW 버퍼 할당 실패 시 abort() 크래시 방지
  • 1.2.0-ko.4: v1→v2 i18n 마이그레이션으로 업그레이드 후 키릴 표기 버그 수정

주의

  • [env:default] 로컬 빌드는 LOG_DBG 문자열 용량으로 파티션 한계 (6,881,280 B) 를 약간 초과할 수 있습니다. 로컬 디버깅에는 pio run -e gh_release -t upload 권장 (LOG_ERR/LOG_INF 는 그대로 출력).

v1.2.0-ko.4

1.2.0-ko.42026년 4월 19일
GitHub

요약

1.1.x에서 1.2.0-ko.x로 업그레이드했을 때 기본 UI 언어가 한국어 대신 벨라루스어(키릴 문자)로 바뀌던 현상을 수정합니다. 기존 기기는 다음 부팅 시 자동으로 한국어로 복귀합니다.

한국어 버전 변경 사항

수정

  • 언어 설정 마이그레이션 (v1 → v2): upstream 1.2.0에서 Belarusian 언어가 추가되며 내부 Language enum에서 BE=11, KOREAN=12로 밀려, SD 카드에 저장된 기존 값(11)이 Belarusian으로 재해석되어 부팅 시 키릴 문자가 표시되던 문제.
    • SETTINGS_VERSION을 2로 올리고, v1 파일의 인덱스 11을 현재 KOREAN 인덱스로 자동 재매핑
    • 마이그레이션 결과를 v2로 다시 저장하므로 기기당 1회만 실행
    • 다른 언어(EN, ES, FR, DE, CS, PT, RU, SV, RO, CA, UK)는 인덱스 변동이 없어 사용자 선택 그대로 유지

알려진 제한

  • 1.2.0-ko.2/.3에서 의도적으로 Belarusian을 선택한 사용자는 이 마이그레이션으로 Korean으로 되돌아갑니다. 바이너리 파일로는 "1.1.x의 Korean=11"과 "1.2.0의 Belarusian=11"을 구분할 수 없습니다. 필요 시 설정에서 다시 Belarusian을 선택해 주세요.

유지된 한국어 전용 기능

  • UnifiedFontFamily / SdFontFamily 글꼴 시스템
  • 합성 볼드(Synthetic Bold) 렌더링
  • 자간 조절 / 첫 줄 들여쓰기 / 글자 단위 줄바꿈
  • SD 카드 커스텀 글꼴 로딩 (KoPub Batang 기본)
  • 1.2.0-ko.3에서 수정된 BW 버퍼 할당 실패 시 abort() 크래시 방지

v1.2.0-ko.3

1.2.0-ko.32026년 4월 18일
GitHub

요약

힙 단편화 상황에서 간헐적으로 발생하던 리부트 크래시를 수정한 패치입니다. (특정 사용자에게서 발생하는 증상)

한국어 버전 변경 사항

수정

  • 그레이스케일 렌더 경로 abort() 크래시 수정: EPUB 리더에서 storeBwBuffer()가 힙 단편화로 실패했을 때 반환값을 무시하고 anti-aliasing 경로로 진입하던 버그를 수정. 이후 clearScreen() + page->render() 과정에서 추가 힙 할당이 실패하며 abort()가 호출되어 재부팅되던 문제를 차단합니다. 단편화 상태에서는 anti-aliasing만 건너뛰고 BW 렌더링은 정상적으로 표시됩니다 (graceful degradation).
  • 실패 시 시리얼에 [ERS] storeBwBuffer failed (heap fragmented) — skipping grayscale pass 로그 출력

임시 회피책 (이전 버전 사용자용)

본 패치 적용 전이라면 설정 → Text Anti-Aliasing OFF 로 그레이스케일 경로를 우회해 크래시를 회피할 수 있습니다.
30개의 릴리즈 중 10-12