feat: ship the Hermes Agent mark, register WorkBuddy's generic one - #134
Merged
Conversation
lobe-icons publishes a Hermes Agent mark under the same MIT licence the four existing vendor marks already come from -- the LICENSE file hashes identical to the copy in this repository -- so it ships unmodified with source, owner and SHA-256 recorded. It is byte-identical to lobe-icons' nousresearch.svg but for the <title>, which is correct rather than a mix-up: Hermes Agent is Nous Research's product, so the company mark identifies it. Recorded in the entry so the reuse is not mistaken for carelessness later. Aider and WorkBuddy get nothing. Neither has a mark in lobe-icons, Aider has no published brand kit and an Apache-2.0 code licence that grants no trademark rights, and WorkBuddy publishes no vector at all. Copying either favicon would ship vendor artwork with no redistribution basis, which is the thing asset-rights.json exists to prevent. WorkBuddy is now a registered `generic` rather than reaching AgentIcon's unknown-Agent fallback. Both render the same glyph, so the states were indistinguishable -- "evaluated, nothing redistributable exists" now reads differently from "never looked at". Two new tests. One re-hashes every asset against its recorded sha256, because nothing verified that claim before: reducing the Hermes coordinate precision -- which I considered, since 3132 of its 4096 coordinates carry three decimals, 0.00075px at 18px -- would have left the manifest asserting a hash that no longer matched. The other asserts every Agent and desktop Agent has a registered mark, so a new one cannot quietly land on the fallback. Refs #133 Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Addresses the actionable part of #133. One of the four got a real mark; three did not, and I did not invent one for them.
Hermes Agent — shipped
lobe-icons publishes a Hermes Agent mark under the same MIT licence the four existing vendor marks come from. I verified the LICENSE file hashes identical to the copy already in this repository, so it is the same audited basis rather than a new one to evaluate.
It is byte-identical to lobe-icons'
nousresearch.svgbut for the<title>. That is correct, not a mix-up: Hermes Agent is Nous Research's product, so the company mark identifies it. Recorded in the manifest entry so nobody later reads the reuse as carelessness.Verified in the running app: the row now renders
data-mark-kind="asset"and inheritsrgb(58,58,60)from its neighbours, socurrentColorresolves against the page rather than painting black.Aider, WorkBuddy — deliberately nothing
Neither has a mark in lobe-icons. Aider has no published brand kit, an open logo/branding issue from 2024, and an Apache-2.0 code licence that grants no trademark rights. WorkBuddy publishes no vector at all.
Copying either favicon would ship vendor artwork with no redistribution basis, which is exactly what
asset-rights.jsonexists to prevent. So they keep generic symbols — and WorkBuddy is now a registeredgenericrather than reachingAgentIcon's unknown-Agent fallback. Both render the same glyph, so the two states were indistinguishable; "evaluated, nothing redistributable exists" now reads differently from "never looked at".ChatGPT Desktop already had a mark in the app — that gap is site-only, tracked in #133.
Two things I nearly got wrong
The 19.7KB asset. Every existing mark is ≤1.7KB, and 3132 of Hermes' 4096 coordinates carry three decimals — 0.00075px at 18px. I was going to reduce the precision. That would have been a modification under MIT requiring a declared change, and it would have silently invalidated the recorded hash. Shipped byte-identical instead, so
modifiedstays absent.The measurement that almost misled me. I rasterised the mark and found 30% of pixels at 18px were mid-grey, and nearly concluded the asset was too detailed for the UI. Then I measured the existing codex mark as a control: 47% grey at the same size. Antialiasing at 18px is universal, not a defect in this asset. Without the control I'd have rejected a perfectly good mark.
New tests
ships each asset byte-identical to its recorded hash— nothing verified that claim before. I confirmed it catches the precision reduction I'd contemplated. It iterates the manifest rather than Agent ids, becausechatgpt-desktopreuses codex's rights object and has nofileof its own.registers a mark for every Agent and desktop Agent— so a newly added Agent cannot quietly land on the fallback.Note the hash test uses
path.join, notnew URL(..., import.meta.url): Vite statically rewrites that form into an asset reference, which replaced the interpolated filename withundefinedat transform time. That cost me a few iterations.Verification
330 frontend tests (43 files),
go test ./..., 6 e2e,check-docs.py, and the release-compliance gate — which caught the new asset and required regeneratingthird_party/;--checknow passes.NOTICEupdated: six assets, five from lobe-icons unmodified, and the Aider/WorkBuddy reasoning stated.Sources: lobe-icons · Aider · Aider logo issue
🤖 Generated with Claude Code