Repository navigation
Webhook avatars were stored full size and never resized (GRYT-1185) - #569
Merged
Merged
Conversation
The webhook tab uploaded its avatar through POST /api/uploads. So the server kept it at whatever size it was sent. Now it uses POST /api/uploads/webhook-avatar, which resizes it like any other avatar and leaves your own avatar alone. An older server answers that route with a 404. The tab then says "This server needs an update before you can change a webhook's avatar." It doesn't retry through /api/uploads, because that would store it full size again. The webhook keeps the avatar it had. scripts/check-webhook-avatar-upload.mjs covers the route, the 404 message, and that nothing else gets called after a 404. Co-Authored-By: Claude Opus 5 <[email protected]>
This was referenced Sep 15, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Vikunja: GRYT-1185. Server: Gryt-chat/server#191. Docs: Gryt-chat/docs#115.
The webhook tab uploaded its avatar through
POST /api/uploads. So the server kept it at whatever size it was sent. Now it usesPOST /api/uploads/webhook-avatar, which resizes it like any other avatar and leaves your own avatar alone.Older servers: a server without the route answers 404. The tab then says "This server needs an update before you can change a webhook's avatar." and the webhook keeps the avatar it had. It doesn't retry through
/api/uploads, because that would store the picture full size again. That's what client#561 did for group pictures. No released server has the route yet. Until one does, changing a webhook's avatar gives that message on every server.utils/uploadWebhookAvatar.tsposts to the new route and throws the update message on a 404. It still readsfileId, and a refusal still carries the server's message.scripts/check-webhook-avatar-upload.mjschecks the route and header, a refusal's message, that a 404 gives the update message with no second request, and that the tab doesn't call an upload route itself. I mutation-checked it: pointing at the old route, falling back to/api/uploadson a 404, and treating a 404 like any other refusal each make it fail.How I checked
Throwaway server on the server branch with filesystem storage, this branch on :3687, headless Chrome:
POST /api/uploads/webhook-avatar(201), then thePATCH. The server stored a 599-byte 256×256 AVIF with a 128 px thumbnail, and my own avatar stayed empty.yarn lint,yarn buildand everytest:*step in CI pass locally.🤖 Generated with Claude Code