From 0aef27efc4b8db250f8128accdc5d4d128f755ba Mon Sep 17 00:00:00 2001 From: openhands Date: Sun, 9 Aug 2026 20:03:26 +0200 Subject: [PATCH] fix: omit default params in avatar URL for cleaner URLs - getAvatarUrl now omits direction=2, head_direction=3, size=m when they match defaults - URL now matches: figure=xxx&effect=14&img_format=apng --- src/lib/imager.test.ts | 8 ++++---- src/lib/imager.ts | 9 ++++++--- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/src/lib/imager.test.ts b/src/lib/imager.test.ts index 8d71f966..f6d9e53e 100644 --- a/src/lib/imager.test.ts +++ b/src/lib/imager.test.ts @@ -39,13 +39,13 @@ describe("getAvatarUrl", () => { envMock.env.NEXT_PUBLIC_IMAGER_URL = "https://img.example.com"; }); - it("builds a query string with defaults", () => { + it("builds a query string with defaults (omits default params)", () => { const url = getAvatarUrl("hd-180-1"); expect(url.startsWith("https://img.example.com?")).toBe(true); expect(url).toContain("figure=hd-180-1"); - expect(url).toContain("direction=2"); - expect(url).toContain("head_direction=3"); - expect(url).toContain("size=m"); + expect(url).not.toContain("direction=2"); + expect(url).not.toContain("head_direction=3"); + expect(url).not.toContain("size=m"); expect(url).toContain("img_format=apng"); expect(url).toContain("effect=14"); }); diff --git a/src/lib/imager.ts b/src/lib/imager.ts index cee1fe6a..9e68bc64 100644 --- a/src/lib/imager.ts +++ b/src/lib/imager.ts @@ -29,6 +29,7 @@ export function resolveImagerBase(): string { * Build an avatar image URL using the configured imager. * Uses effect=14 and img_format=apng by default for epicnabbo.nl compatibility. * Automatically converts old Habbo figure format to new epicnabbo.nl format. + * Omits default parameters (direction=2, head_direction=3, size=m) for cleaner URLs. */ export function getAvatarUrl( figure: string, @@ -48,13 +49,15 @@ export function getAvatarUrl( const params = new URLSearchParams({ figure: convertedFigure, - direction: String(direction), - head_direction: String(headDirection), - size, img_format, effect: String(effect), }); + // Only add non-default params + if (direction !== 2) params.set("direction", String(direction)); + if (headDirection !== 3) params.set("head_direction", String(headDirection)); + if (size !== "m") params.set("size", size); + if (headOnly) params.set("headonly", "1"); if (gesture) params.set("gesture", gesture); if (action) params.set("action", action);