You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
저장 직후 '준비 중' 구간을 알림에 드러냄: 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)로 확인할 수 있다.