From 2d3364a42b8678cdc87da6b0c861b9efa51972b8 Mon Sep 17 00:00:00 2001 From: CoconutMacaroon Date: Sun, 27 Sep 2026 18:53:55 -0700 Subject: [PATCH 1/4] feat(editor): add WebP support --- src/shared/prosemirror-plugins/image-upload.ts | 2 +- test/shared/prosemirror-plugins/image-upload.test.ts | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/shared/prosemirror-plugins/image-upload.ts b/src/shared/prosemirror-plugins/image-upload.ts index 69aeed38..28b0a36d 100644 --- a/src/shared/prosemirror-plugins/image-upload.ts +++ b/src/shared/prosemirror-plugins/image-upload.ts @@ -94,7 +94,7 @@ export async function defaultImageUploadHandler(file: File): Promise { return json.UploadedImage; } -const defaultAcceptedFileTypes = ["image/jpeg", "image/png", "image/gif"]; +const defaultAcceptedFileTypes = ["image/jpeg", "image/png", "image/gif", "image/webp"]; const defaultSizeLimitMib = 2; enum ValidationResult { diff --git a/test/shared/prosemirror-plugins/image-upload.test.ts b/test/shared/prosemirror-plugins/image-upload.test.ts index 80e9d398..89f4a94d 100644 --- a/test/shared/prosemirror-plugins/image-upload.test.ts +++ b/test/shared/prosemirror-plugins/image-upload.test.ts @@ -146,15 +146,15 @@ describe("image upload plugin", () => { expect(findAddButton(uploader).disabled).toBe(true); const validationMessage = findValidationMessage(uploader); expect(validationMessage.textContent).toBe( - "Please select an image (jpeg, png, gif) to upload" + "Please select an image (jpeg, png, gif, webp) to upload" ); expect(validationMessage.classList).not.toContain("d-none"); }); - it("should accept jpeg, png and gif by default if no acceptedFileTypes option is provided", async () => { + it("should accept jpeg, png, webp and gif by default if no acceptedFileTypes option is provided", async () => { showImageUploader(view.editorView); expect(uploader.uploadField.accept).toBe( - "image/jpeg, image/png, image/gif" + "image/jpeg, image/png, image/gif, image/webp" ); await expect( @@ -190,7 +190,7 @@ describe("image upload plugin", () => { ) ).rejects.toBe("invalid filetype"); expect(findValidationMessage(uploader).textContent).toBe( - "Please select an image (jpeg, png, gif) to upload" + "Please select an image (jpeg, png, gif, webp) to upload" ); }); From c15fbe5b435463ea34ce5fc81cdd55aced36bedd Mon Sep 17 00:00:00 2001 From: CoconutMacaroon Date: Mon, 28 Sep 2026 18:19:34 -0700 Subject: [PATCH 2/4] feat(editor): add WebP unit test --- test/shared/prosemirror-plugins/image-upload.test.ts | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/test/shared/prosemirror-plugins/image-upload.test.ts b/test/shared/prosemirror-plugins/image-upload.test.ts index 89f4a94d..f40771cd 100644 --- a/test/shared/prosemirror-plugins/image-upload.test.ts +++ b/test/shared/prosemirror-plugins/image-upload.test.ts @@ -184,6 +184,15 @@ describe("image upload plugin", () => { "d-none" ); + await expect( + uploader.showImagePreview( + mockFile("some webp file", "image/webp") + ) + ).resolves.toBeUndefined(); + expect(findValidationMessage(uploader).classList).toContain( + "d-none" + ); + await expect( uploader.showImagePreview( mockFile("some bmp file", "image/bmp") From 1586be6ce95bf414487cb321025634ab62b403b0 Mon Sep 17 00:00:00 2001 From: CoconutMacaroon Date: Thu, 1 Oct 2026 10:09:03 -0700 Subject: [PATCH 3/4] fix(editor): fix formatting --- src/shared/prosemirror-plugins/image-upload.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/src/shared/prosemirror-plugins/image-upload.ts b/src/shared/prosemirror-plugins/image-upload.ts index 28b0a36d..45b75c33 100644 --- a/src/shared/prosemirror-plugins/image-upload.ts +++ b/src/shared/prosemirror-plugins/image-upload.ts @@ -94,7 +94,12 @@ export async function defaultImageUploadHandler(file: File): Promise { return json.UploadedImage; } -const defaultAcceptedFileTypes = ["image/jpeg", "image/png", "image/gif", "image/webp"]; +const defaultAcceptedFileTypes = [ + "image/jpeg", + "image/png", + "image/gif", + "image/webp", +]; const defaultSizeLimitMib = 2; enum ValidationResult { From 54c6f528a11d3903d016c7bb7a9587952cb9f9d0 Mon Sep 17 00:00:00 2001 From: CoconutMacaroon Date: Thu, 8 Oct 2026 10:11:04 -0700 Subject: [PATCH 4/4] feat(editor): add changeset for WebP support --- .changeset/funky-trains-deny.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/funky-trains-deny.md diff --git a/.changeset/funky-trains-deny.md b/.changeset/funky-trains-deny.md new file mode 100644 index 00000000..99efca58 --- /dev/null +++ b/.changeset/funky-trains-deny.md @@ -0,0 +1,5 @@ +--- +"@stackoverflow/stacks-editor": minor +--- + +Add support for WebP images