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
list-missing-thumbnails and fix-missing-thumbnails report files the account does not own as skipped with a reason, and do not download them.
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.
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.
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
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
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Problem
helper fix-missing-thumbnailstries to repair files the server will never let it change, reports them as failed, and exits 1 on every run. UpstreamFileController.UpdateThumbnail(server/pkg/controller/file.go:707-733, commitaf32f237295536a3aef6b57698d9d5ad204576b4) refuses in two cases:src/thumbnails.ts:58,:210), and it has noownerIDcheck;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
list-missing-thumbnailsandfix-missing-thumbnailsreport files the account does not own asskippedwith a reason, and do not download them.thumbnail.size. When it cannot (the size is 0 or unknown), the file isskippedwith the reason, notfailed.make checkgreen;TODO.mdupdated in the same commit.Model: opus-5-5
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