fix(runtimes): use Qwen Code logo asset (#5716)

Co-authored-by: Eve <eve@multica-ai.local>
Co-authored-by: multica-agent <github@multica.ai>
This commit is contained in:
Multica Eve
2026-07-21 15:52:47 +08:00
committed by GitHub
parent 645e8a2983
commit 58162ed2eb
3 changed files with 17 additions and 12 deletions

View File

@@ -6,9 +6,12 @@ describe("ProviderLogo", () => {
it("renders the dedicated Qwen Code mark", () => {
const { container } = render(<ProviderLogo provider="qwen" className="runtime-logo" />);
const logo = container.querySelector('svg[viewBox="0 0 141.38 140"]');
const logo = container.querySelector('img[aria-hidden="true"]');
const logoSrc = decodeURIComponent(logo?.getAttribute("src") ?? "");
expect(logo?.querySelector('path[fill="#6D44E8"]')).not.toBeNull();
expect(logo?.getAttribute("alt")).toBe("");
expect(logoSrc).toContain("viewBox='0 0 141.38 140'");
expect(logoSrc).toContain("fill='#6D44E8'");
expect(logo?.classList.contains("runtime-logo")).toBe(true);
});
});

View File

@@ -1,5 +1,6 @@
import { useId } from "react";
import { Monitor } from "lucide-react";
import qwenLogo from "./qwen-logo.svg";
// Claude (Anthropic) — official mark, sourced from Bootstrap Icons (bi-claude)
function ClaudeLogo({ className }: { className: string }) {
@@ -283,17 +284,12 @@ function GrokLogo({ className }: { className: string }) {
);
}
// Qwen Code — official mark from QwenLM/qwen-code's desktop brand assets
// (packages/desktop/apps/electron/resources/brands/qwen-code/icon.svg).
// Qwen Code — official SVG copied verbatim from QwenLM/qwen-code's desktop
// brand assets (packages/desktop/apps/electron/resources/brands/qwen-code/icon.svg).
const qwenLogoSrc = typeof qwenLogo === "string" ? qwenLogo : qwenLogo.src;
function QwenLogo({ className }: { className: string }) {
return (
<svg viewBox="0 0 141.38 140" className={className} aria-hidden>
<path
fill="#6D44E8"
d="m140.93 85-16.35-28.33-1.93-3.34 8.66-15a3.323 3.323 0 0 0 0-3.34l-9.62-16.67c-.3-.51-.72-.93-1.22-1.22s-1.07-.45-1.67-.45H82.23l-8.66-15a3.33 3.33 0 0 0-2.89-1.67H51.43c-.59 0-1.17.16-1.66.45-.5.29-.92.71-1.22 1.22L32.19 29.98l-1.92 3.33H12.96c-.59 0-1.17.16-1.66.45-.5.29-.93.71-1.22 1.22L.45 51.66a3.323 3.323 0 0 0 0 3.34l18.28 31.67-8.66 15a3.32 3.32 0 0 0 0 3.34l9.62 16.67c.3.51.72.93 1.22 1.22s1.07.45 1.67.45h36.56l8.66 15a3.35 3.35 0 0 0 2.89 1.67h19.25a3.34 3.34 0 0 0 2.89-1.67l18.28-31.67h17.32c.6 0 1.17-.16 1.67-.45s.92-.71 1.22-1.22l9.62-16.67a3.323 3.323 0 0 0 0-3.34ZM51.44 3.33 61.07 20l-9.63 16.66h76.98l-9.62 16.66H45.67l-11.54-20zM57.21 120H22.58l9.63-16.67h19.25l-38.5-66.67h19.25l9.62 16.67L68.78 100l-11.55 20Zm61.59-33.34-9.62-16.67-38.49 66.67-9.63-16.67 9.63-16.66 26.94-46.67h23.1l17.32 30z"
/>
</svg>
);
return <img src={qwenLogoSrc} alt="" aria-hidden className={className} />;
}
export function ProviderLogo({

View File

@@ -0,0 +1,6 @@
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 141.38 140">
<path
fill="#6D44E8"
d="m140.93 85-16.35-28.33-1.93-3.34 8.66-15a3.323 3.323 0 0 0 0-3.34l-9.62-16.67c-.3-.51-.72-.93-1.22-1.22s-1.07-.45-1.67-.45H82.23l-8.66-15a3.33 3.33 0 0 0-2.89-1.67H51.43c-.59 0-1.17.16-1.66.45-.5.29-.92.71-1.22 1.22L32.19 29.98l-1.92 3.33H12.96c-.59 0-1.17.16-1.66.45-.5.29-.93.71-1.22 1.22L.45 51.66a3.323 3.323 0 0 0 0 3.34l18.28 31.67-8.66 15a3.32 3.32 0 0 0 0 3.34l9.62 16.67c.3.51.72.93 1.22 1.22s1.07.45 1.67.45h36.56l8.66 15a3.35 3.35 0 0 0 2.89 1.67h19.25a3.34 3.34 0 0 0 2.89-1.67l18.28-31.67h17.32c.6 0 1.17-.16 1.67-.45s.92-.71 1.22-1.22l9.62-16.67a3.323 3.323 0 0 0 0-3.34ZM51.44 3.33 61.07 20l-9.63 16.66h76.98l-9.62 16.66H45.67l-11.54-20zM57.21 120H22.58l9.63-16.67h19.25l-38.5-66.67h19.25l9.62 16.67L68.78 100l-11.55 20Zm61.59-33.34-9.62-16.67-38.49 66.67-9.63-16.67 9.63-16.66 26.94-46.67h23.1l17.32 30z"
/>
</svg>

After

Width:  |  Height:  |  Size: 956 B