fix-missing-thumbnails retries files the server will always refuse #109

Closed
opened 2026-09-23 05:34:58 +02:00 by clawbot · 1 comment
Collaborator

Problem

helper fix-missing-thumbnails tries to repair files the server will never let it change, reports them as failed, and exits 1 on every run. Upstream FileController.UpdateThumbnail (server/pkg/controller/file.go:707-733, commit af32f237295536a3aef6b57698d9d5ad204576b4) refuses in two cases:

  • when the caller does not own the file. quak lists and repairs every file in every album, including files other people own in albums shared with the account (src/thumbnails.ts:58, :210), and it has no ownerID check;
  • when the new thumbnail is larger than the size recorded for the existing one. quak encodes at a fixed 720 px and quality 50 (src/thumbnails.ts, THUMB_MAX_DIMENSION, THUMB_JPEG_QUALITY) without checking the file's recorded thumbnail size (thumbnail.size, src/model/types.ts:35-38). For the "empty thumbnail (0 bytes)" case that size is 0, so no replacement can ever be accepted.

Each of these files is downloaded in full before the upload is refused.

Definition of done

  1. list-missing-thumbnails and fix-missing-thumbnails report files the account does not own as skipped with a reason, and do not download them.
  2. The fixer re-encodes at lower quality or size until the thumbnail fits within the recorded thumbnail.size. When it cannot (the size is 0 or unknown), the file is skipped with the reason, not failed.
  3. Tests with a fake API cover a file owned by someone else, a file whose recorded size forces a smaller encode, and a recorded size of 0.
  4. make check green; TODO.md updated in the same commit.

Model: opus-5-5

## Problem `helper fix-missing-thumbnails` tries to repair files the server will never let it change, reports them as failed, and exits 1 on every run. Upstream `FileController.UpdateThumbnail` (`server/pkg/controller/file.go:707-733`, commit `af32f237295536a3aef6b57698d9d5ad204576b4`) refuses in two cases: - when the caller does not own the file. quak lists and repairs every file in every album, including files other people own in albums shared with the account (`src/thumbnails.ts:58`, `:210`), and it has no `ownerID` check; - when the new thumbnail is larger than the size recorded for the existing one. quak encodes at a fixed 720 px and quality 50 (`src/thumbnails.ts`, `THUMB_MAX_DIMENSION`, `THUMB_JPEG_QUALITY`) without checking the file's recorded thumbnail size (`thumbnail.size`, `src/model/types.ts:35-38`). For the "empty thumbnail (0 bytes)" case that size is 0, so no replacement can ever be accepted. Each of these files is downloaded in full before the upload is refused. ## Definition of done 1. `list-missing-thumbnails` and `fix-missing-thumbnails` report files the account does not own as `skipped` with a reason, and do not download them. 2. The fixer re-encodes at lower quality or size until the thumbnail fits within the recorded `thumbnail.size`. When it cannot (the size is 0 or unknown), the file is `skipped` with the reason, not `failed`. 3. Tests with a fake API cover a file owned by someone else, a file whose recorded size forces a smaller encode, and a recorded size of 0. 4. `make check` green; `TODO.md` updated in the same commit. Model: opus-5-5
clawbot self-assigned this 2026-09-23 05:34:58 +02:00
Author
Collaborator

Implemented in #119: both thumbnail helpers skip files another account owns without fetching them; the fixer skips a recorded thumbnail size of 0 or unknown before downloading, and otherwise steps down in quality and size until the encrypted thumbnail fits, skipping the file if nothing fits.

Model: opus-5-5

Implemented in https://git.eeqj.de/sneak/quak/pulls/119: both thumbnail helpers skip files another account owns without fetching them; the fixer skips a recorded thumbnail size of 0 or unknown before downloading, and otherwise steps down in quality and size until the encrypted thumbnail fits, skipping the file if nothing fits. Model: opus-5-5
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sneak/quak#109