Skip to content

v0.17.3

Choose a tag to compare

@eigger eigger released this 06 Sep 06:13
· 51 commits to master since this release

Kibble v0.17.3

변경 및 수정 사항

  • 저장 직후 '준비 중' 구간을 알림에 드러냄: v0.17.2가 8초 대기를 없앴지만, 저장 → 전송 시작 사이의 첨부 손질·Cache 복사 구간은 여전히 알림도 퍼센트도 없어 "저장 중이 너무 길다"로 보였다. showUploadPreparingNotification()으로 상단바에 "사진 n/N장 준비 중"을 띄우고, 진행률 스로틀에 단계(preparing/uploading)를 넣어 준비→업로드 전환이 500ms를 기다리지 않고 즉시 갱신되도록 개선.
  • 업로드 준비 구간 단축: Background Fetch 경로는 손질 직후 원본을 Cache에 넣는데, 그 직전에 snapshotFile이 같은 파일을 ArrayBuffer로 한 번 더 읽고 있었다. snapshot: false로 파일당 읽기를 2회에서 1회로 줄이고 최대 점유를 절반으로. 병렬 손질(Promise.all)을 한 장씩으로 되돌려 사진 여러 장에서 메모리가 장 수만큼 뛰던 것과 '준비 중 n/N' 카운터가 항상 N으로 시작하던 것을 함께 해결.
  • 상단바 트레이 아이콘 여백 제거: badge-96.png의 발바닥이 96px 캔버스의 약 56%만 차지해, 안드로이드가 비트맵 전체를 24dp로 줄이면 글리프가 ~13dp로 쪼그라들었다. 스몰 아이콘을 컨테이너 안에 그리는 런처에서 이것이 "작은 흰 사각형"으로 보인다. 글리프가 캔버스를 거의 채우도록 다시 그리고 shell 캐시를 v10으로 격상.
  • 동영상 썸네일이 됐다 안 됐다 하던 버그 해결: 대표 프레임을 720p 변환이 끝난 뒤에 뽑고 있어, 변환이 타임아웃(8×실시간, 상한 15분)이나 OOM으로 죽으면 failed로만 표시되고 포스터는 시도조차 되지 않았다 — 작은 영상은 변환을 건너뛰어 포스터가 붙으므로 큰 영상만 썸네일이 없는 패턴이 됐다. 추출을 변환 앞으로 옮기고 별도 updateMany로 즉시 붙여, 변환이 어떻게 끝나든 포스터가 남고 큰 영상은 썸네일이 몇 분 일찍 생기도록 해결.
  • 포스터 없이 끝난 기존 영상 복구: 상태가 종단(ready/skipped/failed)으로 가면 다시 뽑을 경로가 없어 그 영상은 영구히 썸네일이 없었다. 기동 시 한 번, 최대 50건을 메우는 backfillMissingPosters() 추가.
  • 업로드 직후 썸네일이 안 보이던 문제 해결: 업로드 응답에는 posterPath: null이 담기고 폴링·재조회가 없어 새로고침 전까지 자리표시자 또는 맨 <video>(안드로이드 크롬은 대개 검게 칠함)로 남았다. GET /api/attachments/posters로 해당 첨부의 상태만 되물어 제자리에 덮는 훅을 추가 (2s→30s 백오프, 8회, 화면이 가려지면 대기).
  • 백업 내보내기 401 사유 구분: /api/backup/export의 401 네 가지(티켓 없음 / 서명 불일치·만료 / 용도 불일치 / 재사용)가 전부 같은 {"error":"unauthorized"}로 나가 원인 진단이 불가능했다. missing_ticket · invalid_ticket · wrong_purpose · ticket_already_used로 나누어 응답과 서버 로그 양쪽에 기록.
  • 백업 응답에 Content-Length 추가: 없으면 chunked로 나가 브라우저가 진행률을 그리지 못하고, 길이 없는 응답을 통째로 버퍼링하는 프록시에 취약했다. 아카이브 빌드 소요 시간·크기도 로그로 남김.
  • 백업 프리플라이트 추가: GET /api/backup/export/preflight(관리자·읽기 전용)로 tar 사용 가능 여부, UPLOAD_DIR 접근, 여유 공간(원본의 2배 — files/ 복사본 + tar.gz)을 미리 확인. 다운로드는 새 탭이 받아 가므로 앱이 실패를 볼 방법이 없었으나, 이제 눌러 보기 전에 앱 안에서 이유가 표시된다. 통과 시 원본 용량을 안내해 아카이브 생성 동안 탭이 비어 있는 것이 정상임을 알림.

참고

  • DB 마이그레이션 없음.
  • 상단바 배지가 그대로라면 설치형 PWA는 WebAPK 갱신 또는 재설치가 필요할 수 있다 (매니페스트 아이콘이 설치 시점에 굽혀지기 때문).
  • 백업의 unauthorized가 네 사유 중 어느 것인지는 이번 릴리스의 서버 로그(ticket rejected)로 확인할 수 있다.