릴리즈 노트

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

현재 버전v1.2.0-ko.15

1.2.0-ko.12

1.2.0-ko.122026년 4월 24일
GitHub
Xteink X4와 동일한 펌웨어가 이제 Xteink X3에서도 동작합니다. 하드웨어 감지는 런타임에 자동으로 이루어지며, 각 기종 고유 기능은 해당 기기에서만 노출됩니다.

새 기능 (X3 전용)

조작 옵션

  • 기울여 페이지 넘기기 (Controls 카테고리) — QMI8658 IMU로 기기 기울임을 감지해 페이지를 넘깁니다.
    • 옵션: 꺼짐 / 정방향 / 역방향
    • 방향 감지는 현재 화면 회전(세로/가로/반전)에 맞춰 자동 보정됩니다.

리더 옵션 (상태 표시줄 설정)

  • 상태바 시계 (Customise Status Bar) — DS3231 RTC 기반의 HH:MM 표시.
    • NTP 자동 동기화: Wi-Fi 네트워크에 연결되는 순간 자동으로 시각을 맞춥니다 (별도 메뉴 없음).
    • UTC 오프셋을 30분 단위로 조정 가능 (UTC-12:00 ~ UTC+14:00). 참고 한국 표준시 UTC+09:00

X4 사용자를 위한 변경

  • 위 두 기능은 X4에서 설정 메뉴에 표시되지 않습니다halTiltSensor.isAvailable() / halClock.isAvailable()가 X4에서 false이므로 작동하지 않는 옵션

내부 변경

  • lib/hal/HalTiltSensor.{h,cpp}, lib/hal/HalClock.{h,cpp} 추가 (upstream juicecultus PR #1636, #1612 cherry-pick)
  • 설정 리스트와 상태바 커스터마이즈 액티비티가 런타임 하드웨어 감지에 따라 메뉴 항목을 동적으로 필터링
  • 기울기 극성(polarity) 옵션을 위한 전용 번역 키 STR_TILT_NORMAL / STR_TILT_INVERTED 추가 — 기존 STR_NORMAL("정방향") / STR_INVERTED("역방향")가 줄 간격·화면 방향 등 다른 맥락에서도 쓰이기 때문
  • 개발용 default 빌드의 LOG_LEVEL을 2 → 1로 낮춤 (X3 기능 추가 후 DEBUG 레벨에서 플래시 오버플로 방지). 실제 OTA/릴리즈 펌웨어는 기존과 동일한 INFO 레벨

검증

  • pio run (default): Flash 99.6%, 여유 26,803 B
  • pio run -e gh_release: Flash 99.6%, 여유 27,905 B
  • pio check --fail-on-defect low --fail-on-defect medium --fail-on-defect high: PASSED
  • bin/clang-format-fix (llvm@21): idempotent

1.2.0-ko.11

1.2.0-ko.112026년 4월 24일
GitHub

1.2.0-ko.11 — TXT 리더 업스트림 리뷰 반영

upstream PR #1747의 CodeRabbit 리뷰 피드백을 한국어 포크에도 백포트했습니다. 기능 추가는 없고 TXT 리더의 버그 및 UX 수정입니다.

수정

  • UTF-8 코드포인트 보호findBreakPosition의 최소 진행 경로가 한 번에 한 바이트만 소비해서 한국어처럼 UTF-8 다바이트 문자를 쓰는 경우 페이지 경계에서 잘못된 바이트로 파싱될 수 있었음. 이제 최소 한 개의 완전한 코드포인트만큼만 진행.
  • 뒤로 점프 시 Back 동작 정상화jumpPages가 뒤로 점프할 때 이전 오프셋을 history에 밀어넣어, 다음 Back 눌림이 오히려 앞으로 점프하던 문제. 이제 뒤로 점프 시 history를 초기화해서 Back이 계속 뒤로 이동.
  • EOF 복구 개선render() 진입 시 currentOffset >= fileSize이면 snapToLineStart(fileSize)를 호출했는데, 그 함수가 fileSize 자체를 반환해서 빈 페이지만 렌더됨. 이제 findBackwardPageStart(fileSize)로 진짜 마지막 페이지 시작점을 찾음.
  • 저장된 진행률 경계 수정loadProgresssavedOffset == fileSize(EOF)를 허용해서 재실행 시 빈 페이지가 나왔음. 이제 <로 엄격하게 검사.
  • 메뉴 진행률 표시 방향 인식 — 리더 메뉴 상단의 "n/m pages | Book: n%" 라인이 가로/역세로에서 hint gutter를 무시하고 화면 전체 기준으로 중앙 정렬되던 문제. 이제 contentX/contentWidth 기준으로 정렬해서 제목과 동일하게 gutter를 존중.

검증

  • pio run 성공
  • pio check --fail-on-defect low/medium/high PASS
  • bin/clang-format-fix (llvm@21) idempotent

1.2.0-ko.10

1.2.0-ko.102026년 4월 23일
GitHub

1.2.0-ko.10 — TXT 리더 옵션 메뉴 추가

TXT 리더에 EPUB 리더와 동일한 리더 옵션 메뉴를 추가했습니다. 리딩 중 Confirm 버튼을 눌러 메뉴를 열 수 있습니다.

새 기능

  • 읽기 방향 — 세로 / 가로(시계) / 반전 / 가로(반시계) 순환 선택
  • 자동 넘김 (분당 페이지) — OFF / 1 / 3 / 6 / 12 pages-per-minute, 활성화 시 상태바에 현재 속도 표시
  • 길게 눌러 페이지 점프 — OFF / 10 / 20 / 50 / 100 페이지. 옵션 활성화 시 좌/우 또는 측면 버튼을 1초 이상 누르면 설정된 step만큼 이동. 짧게 누르면 기존처럼 1페이지 이동
  • % 위치로 이동 — 슬라이더로 책의 원하는 % 지점으로 점프 (EPUB의 퍼센트 선택기 재사용)
  • 스크린샷 촬영 — 현재 페이지를 BMP로 SD 카드에 저장
  • 홈으로 이동 — 리더 종료

세부 동작

  • 다중 페이지 점프는 러닝 bytes-per-page 추정치를 사용하며, 점프 후 Back으로 이전 위치 복귀 가능
  • 읽기 방향은 전역 설정(SETTINGS.orientation)에 저장되어 다음 실행에서도 유지됨
  • 자동 넘김 / 페이지 점프 step은 리더 세션 내에서만 유효 (ephemeral)

변경된 파일

  • src/activities/reader/TxtReaderActivity.{h,cpp} — 리더 메뉴, 자동 넘김, 점프 로직
  • src/activities/reader/TxtReaderMenuActivity.{h,cpp} — 신규
  • src/activities/ActivityResult.hMenuResult.pageJumpOption 추가
  • lib/I18n/translations/{english,korean}.yamlSTR_PAGE_JUMP_STEP 추가
30개의 릴리즈 중 4-6