From 005828c3fd8777c6f0185db4d32e8811361aef26 Mon Sep 17 00:00:00 2001 From: Tyler Longwell Date: Sat, 25 Jul 2026 12:55:23 -0400 Subject: [PATCH] fix(desktop): use licensed preset harness logos MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Replace the incorrect Oh My Posh and Dify marks with the exact upstream Oh My Pi and Kimi Code assets. Use xAI’s official Grok logomark under its nominative brand terms, with presentation-only backgrounds for marks that need contrast. Remove the unproven Cursor bitmap and deliberately retain the generic terminal fallback because Cursor publishes assets without granting redistribution permission. Record exact provenance and keep the drift guard explicit about that exception. Co-authored-by: Tyler Longwell Signed-off-by: Tyler Longwell --- desktop/public/harness-logos/CREDITS.md | 10 ++++++++-- desktop/public/harness-logos/cursor.png | Bin 1149 -> 0 bytes desktop/public/harness-logos/grok.png | Bin 1093 -> 0 bytes desktop/public/harness-logos/grok.svg | 4 ++++ desktop/public/harness-logos/kimi.png | Bin 1185 -> 11486 bytes desktop/public/harness-logos/omp.png | Bin 3382 -> 0 bytes desktop/public/harness-logos/omp.svg | 16 ++++++++++++++++ .../features/onboarding/ui/RuntimeIcon.tsx | 10 ++++++---- .../onboarding/ui/presetLogos.test.mjs | 17 ++++++++++++++++- 9 files changed, 50 insertions(+), 7 deletions(-) delete mode 100644 desktop/public/harness-logos/cursor.png delete mode 100644 desktop/public/harness-logos/grok.png create mode 100644 desktop/public/harness-logos/grok.svg delete mode 100644 desktop/public/harness-logos/omp.png create mode 100644 desktop/public/harness-logos/omp.svg diff --git a/desktop/public/harness-logos/CREDITS.md b/desktop/public/harness-logos/CREDITS.md index f3a53a13b..654a6b742 100644 --- a/desktop/public/harness-logos/CREDITS.md +++ b/desktop/public/harness-logos/CREDITS.md @@ -11,6 +11,12 @@ license permits redistribution. |---|---|---|---|---|---| | `hermes.png` | [NousResearch/hermes-agent](https://github.com/NousResearch/hermes-agent) | `6ad632b` | MIT © 2025 Nous Research | `website/static/img/logo.png` | Cropped the baked-in border frame, padded to square, resized to 64×64, quantised to a 16-colour palette | | `openclaw.svg` | [openclaw/openclaw](https://github.com/openclaw/openclaw) | `b06f40a` | MIT © 2026 OpenClaw Foundation | `ui/public/favicon.svg` | Removed the SMIL animation elements (renders the upstream rest pose statically — verified pixel-identical to the upstream frame at t=0); minified paths | +| `omp.svg` | [can1357/oh-my-pi](https://github.com/can1357/oh-my-pi) | `667111575ebba136dadfd6989379e7f67e0d40d9` | MIT © 2025 Mario Zechner; © 2025–2026 Can Bölük | `assets/icon.svg` | None | +| `kimi.png` | [MoonshotAI/kimi-cli](https://github.com/MoonshotAI/kimi-cli) | `4a550effdfcb29a25a5d325bf935296cc50cd417` | Apache-2.0; NOTICE: Kimi Code CLI © 2025 Moonshot AI | `web/public/logo.png` | None | +| `grok.svg` | [SpaceXAI brand guidelines](https://x.ai/legal/brand-guidelines) | Retrieved 2026-07-25 | xAI Brand Guidelines: marks may be used to accurately refer to xAI or its services; logos must be used exactly as provided | `SpaceXAI_Grok_Assets.zip` → `Grok_Logomark_Dark.svg` | None | -`amp.png`, `cursor.png`, `grok.png`, `kimi.png`, `omp.png`, and `opencode.svg` -predate this file; their provenance was not recorded when they were added. +`amp.png` and `opencode.svg` predate this file; their provenance was not +recorded when they were added. Cursor intentionally uses the generic terminal +fallback: Cursor's official brand page offers downloadable assets, but neither +that page nor its Terms of Service grants third parties permission to +redistribute them. The previous unproven `cursor.png` was removed. diff --git a/desktop/public/harness-logos/cursor.png b/desktop/public/harness-logos/cursor.png deleted file mode 100644 index 9888d570ccc283069f3f2797f69e9d21e22a7e36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1149 zcmV-@1cLjCP)00001b5ch_0Itp) z=>Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91K%fHv1ONa40RR91KmY&$07g+lumAu9=Sf6CRA>e5T1#)!KoH*bBT1W5 zqP8jzQHe{%59kHK2~J#r8z=q(2Yw3&;D=P4fD1P+Js}?AfYd?|X+!h0y?m(^*Sp!- z+SsWZX(Ovy@6IPajiPVCkb(ns!>w(&B>Y%JUq?eZCZ~6RUw8dY z*GpTM2q5pCC8cj4#6;E4${|Lvgj@mBMQy2>I2%!zBXn1Ymei5rEg`UwsUx2q1D<;1mHZ+^ldK+Y9_{2~?dNn*p1F zf)QBwDWukcGvk3pI=*Hlss6NNL3mnK+|EY;1@2A1`(b#jE5r;BLA^*gL>Y!XpYyka zzaK|E3f_+d80PxqBLM9`!(czqJV(SuRFq_OZnVoM;&Wkn5}frh^Z3F=hdT9ZU8O9R#^F$~R)Ndz$5 z;QX5F8xAJ0>&KRKP8={FHe8=lJ{F?M9fbo|jutT-(J_GP7l-XH;~}+arh=EHA6s6W zcRXut);U+ajN#}+{*_5DWdL$;(W4(`FiM3di;G!gU>%p10N}IzDgmuf7QzVx2bhuO8V7hdyO^J-fX+Y& z>_~ADB9kJk3`vz3wm**tyT@IZC|4n4c+j{apU@`+9M1NG;QgRWg#iBT)R(twbu925bfjMnGLg3#!99i^a~c4xUz^f|jQ6k_n)O ztUE4MiLookp+UJE$|Qgaf77cyZ(XG_0M|XvKw}!d628kM0C%vcA;t#3%JlujOvwbG zvvd~?;lPls1LpY5f7E7R{xLRNuo*DNXa1w=GKvQQ!=4>A2m00001b5ch_0Itp) z=>Px#L}ge>W=%~1DgXcg2mk?xX#fNO00031000^Q000001E2u_0{{R30RRC20H6W@ z1ONa40RR91K%fHv1ONa40RR91KmY&$07g+lumAu9uSrBfRA>e5TFp)rK@jem*;y6@ zmBsjjiDERw#CVaIa4X!7GVS$VCy15h`EEv^FKp$OQel#+>kRE!fBO2!r9 z@3pfTY*r4p?8qWYb4(N)^5@>ayX#0Q~%VrgsP*fz=bH@| zs!{}iDq@Ij`$>$-mBHOhDw#FVc}kf`<6mM2!0=mB!!b~k;mx*bD;fv@bD@d}~suV zqOr-X8qYxKGpesaha-ivfvzMDQFrua#*_`br%fYUAj=dRy&*3EKxzNl{lzEmu&^UF z!Rv?C(gU1Ej!xN$i~I8{i;v&h&OMZr!Hspi?$2*jIF--?fWLdQ{A4d1);H<1BO$BE z^ZFIrSoJ4Z+vhtA4CsL~7s^k$%=VcJadxC#g|kA + + + diff --git a/desktop/public/harness-logos/kimi.png b/desktop/public/harness-logos/kimi.png index 8ca21cc776fdfa0632f576f1885b42e1a3af7c5b..033c0f4fb2e28a9daeca0205812d15bf3e547893 100644 GIT binary patch literal 11486 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

ito6*Bnp<%0D|*P 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 diff --git a/desktop/public/harness-logos/omp.png b/desktop/public/harness-logos/omp.png deleted file mode 100644 index 2c9bf588a4199d2335c143514a6b3ffba92a8ad2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3382 zcmV-64axF}P)004R>004l5008;`004mK004C`008P>0026e000+ooVrmw0000) zWmrjOO-%qQ0000800D<-00aO40096102%-Q00003paB2_0000100961paK8{00001 z0000$paTE|000010000$00000Mo~hr000beNkl!T9GHMm=qSjhvV6;}+aTvF$w$5~_m5#Vqt0Lnz4p6ruh>=ARMbH8w28<>o zC?q6#*%y+xzy9BO?}nGid)${02_^rK_wKv*oPYWL<=lJjj|QP&An*}1Z5EGD843nB zX(rPpmY~mfbJ;;>mdow!mF=3QLF*NVpKfv>2srGPEZVL$wYr0=H~tqD)eT5aN|11f zLy@q>{POzzaJfAp5Y&132*$%K4!K5#ibFa{*CTw+?++k1XE5f@o(yfti|+-6kddB( z(W8co&c>Av5K2Le-fwAZM`?M5nol15Gnq`CI{efJG%^qfhz=UeX0y_Vzg46%TEk$N zXs^X;LGG|2${3@Hl5tZ@D{AYTaNv*=$%zTb%FGZ!Kx=CooX)zR6o3%uA?*o#b(Ir) zioQd|!78PP*Xu)-oO3$s(bjsn695aRFj&lSdW+uANK3&%F+Mdp5jLw;cxaLeUQ||8 z!|m}RH6=wcKP=JV_xq7CC>;)mU3nv}a*6xBo;8*3tY%(KF(kWR$v5T>GyB$QI5o5Di zI|cXN^biLcXO##Znv;d>p;@q4EJ_B$y`H14EHc zF^PkyqfQnMX3h{fDjAP{X<~dRf#g#nf{Mu6DxsDjVW=TMW+IEq&}=13m)u9+s^AIl zK?2BNaRg;j52gUqk3?M*Py&`EMNp}$bz)!XJ{3yw0HC;qKZt6zvjMerjS7UwYyIt* zps-F1$;hy{MMvseNpJ;Xhm<|AN0zmIq zA_pR%U%BH1C^HZNCjj(*C2}AF`jtCQfHDISZ~{Q@S0dwj9F}cA^(1vH3%D_1k=XJD zHN#Jrd_pyAvb`qz3Wg?$kf1!;_Ld9-z(>e2*?!1VWo#70kT#cw@>&z}Q#?qv$llyB zv}7JOdd#S3x5Ag1i-1KQTVp+ziVTy-1zY1GK8GKJd+f`G0N~!|prjz4xv?E1Pm`UW z7#3;blq7q?7xV{y@7)VM7Y z+D9L&&-Vm0%pTf~Ylbx;?UUEVyX|5V!&@KG?OQzH$vy*(6Xyy5y?dWQ&c`HrFUiiG zqflh>cho<*U=fecpYD=fVoia-+>Sav%!@u;cvdscc9kM^+gnl)xHl1HmZS&sKVWl& z$H-R?$q)eK9V;cf%VvsXCI@l<O2TpbJ_}ZCx8tcv)#_%*>583ccHv)GnS^!K zY3R7-%FrqxZ<3;tY`@#9%aFcnEliF?+;;l{%$h0@BlN?8O58mEZuJI8fB6xWk6bVW z03*OF`uzU&B$W!Wu$7@|tX)F-p*^R;8eRcnDZx2zSqiPD0CLtn9lpbhEk%?21f`cO zgNy(EI3BZwOyMgyzKJqoJasYzfUbOFyQoUNsBtt3UuVcSdt!UOI}6UyTy1hXmht*5 z4h|{O($b=zRNwKum5vJlmB%5OT?BUd5pg|M-glW3`9m2M!6fopl;d~|?#?1U7j>Wg zfAD(%fSx)r)E&~(*|Fzw35&Ii9Z%Ukj)2sZB*T?9wz*xe(r~?*AsPrNDSXY{W7WF| zjGGIUVxz-f?puf?X{w5*WEUxM{P4)KHf!dE`1N&Hf;TnY$tQPx_uln8oOt<~ok`PL&qZ*w`?97bQfEj>r$!*g*hgKROO(GG`A&=08I9G`TD z@ZP&auGyqjh382OQT}mN<2f4UlbaMaVc2b<`7Sr-SXEyF`LM6Z69xEEk3ysVw4&o!vIkD9~a()gVF%C_We!B$VgM6`0kny z@m)zd?)bwzY}vLGc_U62W&AiK9a*)t_3D;1H#Y|<(wH=U+-U6laxdQh;A7-SKhG`m zufy8HP1v!s2$2dFNomhg(#~%CSH&1ON@XVB$EX&>JBkKFBgeY8;Xm|@O4qKDB6yhGo~PWNG39+ZN+Z0qxjo>xImO2 zbJi%;Qdc9bYaB!Hl9Q6K>#M!e^OLURO__WywtTij6~>t}CS$D3Nl0{H(4aI-pE?O= zoG}s?U3fn7N9E$MG;MjLZd`uZOcbu$YzP2DHGqZZhU@3zkw=$e_t(X^;_{18QCW=z zxBdy~(f~zItXscXh4cv#H!w;P_RZl3($+ zW!NUbt$6)O6=@-UW_6u%Nt8q0%x%u;=x}4srPJ{Ivk&5hWh-RGaLaj3^#ZoHbEDK4 z83ustSkR&o!FcJFH?dvv*(OC!r^q>aG1ITm`*~UxKO)S08!g zTc1OD@2=j6tA2hfs;g^7H%QHur@X_CrJ19$A)BTDaA zJ-3yIYNRc$0cGU}P*S>Is(yn?2iAa+lKnEL6#*`RB9Kcbm0rJb3-*6sf#&8`G`F;= z0#{q#AnDVNuXYz>%hsK!t8bLmrb^oP8bBHRJ0vZ+-0UFFk3Qa}#@0zo9t-I1qHnQh zZwZ>3Td;R;sVt|`wH_II5eD;+DK;cK3sa|G1ntu=_Xn3Oe$-H#9Pi8+f^4VbI!&*$ zOVlL7Sg05&YQ2}Dr-N27dnyWKsp49_blFM;7LVDyNPe8doYwF97~14TKI}wg0i`V* zL!w*~TW|yN8cpB);5;5P8uc_$1CR0%*(PUb8Ps`Dh)y(~WR(;kiCjfAToaJSo|Uhb zCa&E@d%jak7H?`4NHUV+^v+FAj662;O-h(JK9ahQGk1yF?qeh8MLRZB1ENiicAj@) zlP68UqC4he?3jGK`F5eCSe^26tk8_cuP@Jch4(l~qL-Hcdkt2+@t$y$wp3|Tf8w97 zsIb;U`8bK{HJd&GfLiJI2Rx?Nnb*wa{ziQU01b@{_x@-+b?lQGK*lEv4FGVmc&e}T z9EgCvLiS|gd&) + + + + + + + + + + + + + + + diff --git a/desktop/src/features/onboarding/ui/RuntimeIcon.tsx b/desktop/src/features/onboarding/ui/RuntimeIcon.tsx index 3cee0be9a..2debea409 100644 --- a/desktop/src/features/onboarding/ui/RuntimeIcon.tsx +++ b/desktop/src/features/onboarding/ui/RuntimeIcon.tsx @@ -19,9 +19,8 @@ const RUNTIME_LOGOS: Record = { // Public-path logos for bundled presets. Served from /harness-logos/ at runtime. // Keys match the preset `id` values emitted by the backend PRESET_HARNESSES. export const PRESET_LOGOS: Record = { - cursor: "/harness-logos/cursor.png", - omp: "/harness-logos/omp.png", - grok: "/harness-logos/grok.png", + omp: "/harness-logos/omp.svg", + grok: "/harness-logos/grok.svg", opencode: "/harness-logos/opencode.svg", kimi: "/harness-logos/kimi.png", amp: "/harness-logos/amp.png", @@ -55,8 +54,9 @@ export function RuntimeIcon({ const { isDark } = useTheme(); // Only use bundled logo maps — never render user-supplied avatar URLs for // custom/preset entries (tracking pixel / spoofing vector, security line). + const id = runtime.id.trim().toLowerCase(); const imageUrl = getRuntimeLogoUrl(runtime); - const shouldForceForegroundColor = !imageUrl && runtime.id === "goose"; + const shouldForceForegroundColor = !imageUrl && id === "goose"; if (isBuzzRuntime(runtime)) { return ; @@ -69,6 +69,8 @@ export function RuntimeIcon({ className={cn( "rounded-md object-contain", className, + id === "omp" && "bg-[#0d0d0d] p-1", + id === "grok" && "bg-white p-1", shouldForceForegroundColor && (isDark ? "brightness-0 invert" : "brightness-0"), )} diff --git a/desktop/src/features/onboarding/ui/presetLogos.test.mjs b/desktop/src/features/onboarding/ui/presetLogos.test.mjs index 81b22ec8b..6f477fff6 100644 --- a/desktop/src/features/onboarding/ui/presetLogos.test.mjs +++ b/desktop/src/features/onboarding/ui/presetLogos.test.mjs @@ -46,9 +46,24 @@ test("PRESET_HARNESSES parse found the preset ids", () => { ); }); +const FALLBACK_ONLY_PRESETS = new Set([ + // Cursor publishes official assets, but neither its brand page nor terms grant + // third parties permission to redistribute them. Keep the generic icon. + "cursor", +]); + for (const id of presetIds) { - test(`preset "${id}" has a bundled logo`, () => { + test(`preset "${id}" has a bundled logo or an approved fallback`, () => { const logoPath = PRESET_LOGOS[id]; + if (FALLBACK_ONLY_PRESETS.has(id)) { + assert.equal( + logoPath, + undefined, + `preset "${id}" must keep the generic TerminalSquare fallback until ` + + "its vendor grants logo redistribution permission", + ); + return; + } assert.ok( logoPath, `preset "${id}" has no PRESET_LOGOS entry — it renders the generic ` +