From 330becf678f5f83571959aa6c43d4d3b4cb58ec5 Mon Sep 17 00:00:00 2001 From: Misha Skvortsov Date: Wed, 19 Aug 2026 22:25:28 +0300 Subject: [PATCH] feat: add Ornith brand mark for staff picks The Ornith 1.5 staff picks (atomic-chat-conf#12) ship `icon: "ornith"`, which had no bundled asset, so the Hub fell back to a letter avatar. Adds the org mark and both resolution paths: the `ornith` icon key for the manifest, and an `ornith` family rule so community quants of the family get the mark too. Co-Authored-By: Claude Opus 5 --- web-app/public/images/model-provider/ornith.webp | Bin 0 -> 6666 bytes web-app/src/lib/__tests__/model-logo.test.ts | 4 ++++ web-app/src/lib/model-logo.ts | 2 ++ 3 files changed, 6 insertions(+) create mode 100644 web-app/public/images/model-provider/ornith.webp diff --git a/web-app/public/images/model-provider/ornith.webp b/web-app/public/images/model-provider/ornith.webp new file mode 100644 index 0000000000000000000000000000000000000000..678646e83e99845a268eaee17f9ecf39b0f8cad9 GIT binary patch literal 6666 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 UP!0S1MBb`g5#FB&)T{si058Tj@c;k- literal 0 HcmV?d00001 diff --git a/web-app/src/lib/__tests__/model-logo.test.ts b/web-app/src/lib/__tests__/model-logo.test.ts index 6ae95352a..8484225af 100644 --- a/web-app/src/lib/__tests__/model-logo.test.ts +++ b/web-app/src/lib/__tests__/model-logo.test.ts @@ -42,6 +42,7 @@ describe('iconKeyLogoSrc', () => { 'bytedance', 'inclusionai', 'nanbeige', + 'ornith', ] for (const key of keys) { expect(iconKeyLogoSrc(key), `missing logo for "${key}"`).toBeTruthy() @@ -99,6 +100,9 @@ describe('modelFamilyLogoSrc', () => { expect(modelFamilyLogoSrc('unsloth/MiniMax-M2.7-GGUF')).toBe( '/svg/minimax.svg' ) + expect(modelFamilyLogoSrc('AtomicChat/Ornith-1.5-35B-A3B-GGUF')).toBe( + '/images/model-provider/ornith.webp' + ) }) it('keeps Bonsai on its own mark rather than the Qwen base it was built from', () => { diff --git a/web-app/src/lib/model-logo.ts b/web-app/src/lib/model-logo.ts index fc7458802..2b2cad6a8 100644 --- a/web-app/src/lib/model-logo.ts +++ b/web-app/src/lib/model-logo.ts @@ -9,6 +9,7 @@ const FAMILY_LOGO_RULES: Array<[RegExp, string]> = [ [/gemma/i, '/svg/google-color.svg'], [/\bglm\b|chatglm/i, '/svg/zai.svg'], [/bonsai/i, '/images/model-provider/prism-ml.webp'], + [/ornith/i, '/images/model-provider/ornith.webp'], [/qwen|qwq/i, '/svg/qwen-color.svg'], [/(?> = { prism: '/images/model-provider/prism-ml.webp', inclusionai: '/images/model-provider/inclusionai.webp', nanbeige: '/images/model-provider/nanbeige.webp', + ornith: '/images/model-provider/ornith.webp', huggingface: '/images/model-provider/huggingface.svg', }