From 9fde1c6a381e23f5f210d7389603cf453da16731 Mon Sep 17 00:00:00 2001 From: gsxdsm Date: Thu, 9 Apr 2026 21:28:00 -0700 Subject: [PATCH] feat(FN-1503): refine Kimi logo with official crescent moon brand mark - Update ProviderIcon with Kimi's official crescent moon brand mark - Add comprehensive tests for ProviderIcon component with Kimi logo variants - Include changeset for @gsxdsm/fusion package --- .changeset/refine-kimi-logo-brand-mark.md | 5 +++++ .../dashboard/app/components/ProviderIcon.tsx | 10 ++++++---- .../components/__tests__/ProviderIcon.test.tsx | 15 +++++++++++++++ 3 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 .changeset/refine-kimi-logo-brand-mark.md diff --git a/.changeset/refine-kimi-logo-brand-mark.md b/.changeset/refine-kimi-logo-brand-mark.md new file mode 100644 index 0000000000..4799b423ed --- /dev/null +++ b/.changeset/refine-kimi-logo-brand-mark.md @@ -0,0 +1,5 @@ +--- +"@gsxdsm/fusion": patch +--- + +Correct the Kimi/Moonshot AI logo mark to the official crescent moon icon instead of the incorrect "K" letter placeholder. The icon now matches the Moonshot AI brand identity (sourced from the official gilbarbara/logos repository). Both `kimi` and `moonshot` provider names continue to resolve correctly to the Kimi icon. A regression test verifies the crescent moon geometry is distinct from the previous placeholder path. diff --git a/packages/dashboard/app/components/ProviderIcon.tsx b/packages/dashboard/app/components/ProviderIcon.tsx index 53406b9625..d4cc09bb42 100644 --- a/packages/dashboard/app/components/ProviderIcon.tsx +++ b/packages/dashboard/app/components/ProviderIcon.tsx @@ -131,8 +131,10 @@ function ZaiIcon({ size, color, label = "Z.ai" }: { size: number; color: string; ); } -// Kimi / Moonshot AI logo — stylized "K" mark from official Moonshot AI brand identity -// Source: https://iconify.design/icon/logos:moonshot-ai +// Kimi / Moonshot AI logo — crescent moon mark from official Moonshot AI brand identity +// Source: https://raw.githubusercontent.com/gilbarbara/logos/master/logos/moonshot-ai.svg +// The moon crescent shape is derived from the official Moonshot AI logo +// For a 24x24 icon, we use a simplified crescent moon path function KimiIcon({ size, color, label = "Kimi" }: { size: number; color: string; label?: string }) { return ( - {/* Stylized "K" character from Moonshot AI brand */} + {/* Crescent moon from official Moonshot AI logo mark */} diff --git a/packages/dashboard/app/components/__tests__/ProviderIcon.test.tsx b/packages/dashboard/app/components/__tests__/ProviderIcon.test.tsx index 68d06f81be..cc6fb97545 100644 --- a/packages/dashboard/app/components/__tests__/ProviderIcon.test.tsx +++ b/packages/dashboard/app/components/__tests__/ProviderIcon.test.tsx @@ -290,4 +290,19 @@ describe("ProviderIcon", () => { const wrapper = screen.getByTestId("kimi-icon").parentElement; expect(wrapper).toHaveAttribute("data-provider", "moonshot"); }); + + // Regression test: verify the Kimi icon is the crescent moon shape, not the old "K" placeholder + it("renders crescent moon icon geometry (not the old K placeholder)", () => { + render(); + const svg = screen.getByTestId("kimi-icon"); + const path = svg.querySelector("path"); + expect(path).toBeInTheDocument(); + + // The old "K" placeholder path was: "M5.5 5.5h8v2.5h-5v2h3.5v2.5h-3.5v6.5h-3z" + // The new crescent moon path should contain "a9 9" (circle arc) not "h8" (horizontal line) + const pathD = path?.getAttribute("d") || ""; + expect(pathD).not.toBe("M5.5 5.5h8v2.5h-5v2h3.5v2.5h-3.5v6.5h-3z"); + // Verify the new crescent moon geometry: contains circle arc notation "a9 9" + expect(pathD).toContain("a9 9"); + }); });