Follow-up from #123 slice 3 (PR #177). Not a defect — the farm logo has exactly one home today (the sidebar), and that home suits only one kind of image.
What we learned by using it
The sidebar renders the logo in a small square slot (object-fit: contain, ~26px). That works for a compact single-element mark and fails for everything else:
- A wide wordmark keeps its aspect and loses its height → a sliver.
- A detailed illustration (a scene with several elements + text) shrinks to unreadable mush.
- A square, simple mark (a symbol or single letter, tight-cropped) reads cleanly.
We now document that guidance (upload a square mark — settings screen, Help, GLOSSARY, PR #177), but documentation is a workaround. Farmers will keep uploading their real, detailed logo. The product should have a place for it.
Scope — three related pieces, do as much or little as fits
1. Sidebar: render a wide logo at natural aspect (the original #179)
.brand-logo is a fixed 26×26 square. Let it use height: ~24px; width: auto; max-width: ~140px so a wide mark uses the horizontal space instead of collapsing. Won't rescue a busy scene, but helps wordmarks.
web/src/components/FarmBrand.tsx, web/src/styles.css (.brand-logo, .brand, .brand-name).
- Decide the name-vs-logo interaction: a wordmark already contains the farm name, so showing
.brand-name beside it is redundant (keep both, or hide the text and move the name to alt).
2. A larger surface for the detailed logo — a post-login splash
A hero logo shines at size. Show it on a brief startup splash after login, before the dashboard renders — a full-size branded moment.
Hard constraint, state it up front: the login screen is pre-auth. It has no farm context and cannot call the auth-gated /account/logo (that endpoint needs the Authorization header — the reason the SPA fetches the logo through the API client and renders a blob URL). So a login-screen splash cannot show the farm's logo. Only a post-login surface (token in hand, farm resolved via FarmProvider) can. Build the splash there, or drop the idea — do not point it at the login screen.
- Candidate: a transient splash in the authenticated shell on first load, using
FarmProvider's farm + the same useLogoObjectUrl hook.
- Open question: is a splash worth the interstitial delay, or is a large branded panel somewhere in-app (a farm "about"/settings header) the better home? Decide in the issue.
3. (Optional) Separate compact mark vs. hero logo
The durable fix if non-designer farmers keep uploading detailed logos: let a farm upload BOTH a hero logo (used at the splash / large surfaces) and a compact mark (used in the sidebar). More model + upload UI + a second farm_logos-style asset; only worth it if 1+2 don't settle it.
Out of scope
Follow-up from #123 slice 3 (PR #177). Not a defect — the farm logo has exactly one home today (the sidebar), and that home suits only one kind of image.
What we learned by using it
The sidebar renders the logo in a small square slot (
object-fit: contain, ~26px). That works for a compact single-element mark and fails for everything else:We now document that guidance (upload a square mark — settings screen, Help, GLOSSARY, PR #177), but documentation is a workaround. Farmers will keep uploading their real, detailed logo. The product should have a place for it.
Scope — three related pieces, do as much or little as fits
1. Sidebar: render a wide logo at natural aspect (the original #179)
.brand-logois a fixed 26×26 square. Let it useheight: ~24px; width: auto; max-width: ~140pxso a wide mark uses the horizontal space instead of collapsing. Won't rescue a busy scene, but helps wordmarks.web/src/components/FarmBrand.tsx,web/src/styles.css(.brand-logo,.brand,.brand-name)..brand-namebeside it is redundant (keep both, or hide the text and move the name toalt).2. A larger surface for the detailed logo — a post-login splash
A hero logo shines at size. Show it on a brief startup splash after login, before the dashboard renders — a full-size branded moment.
Hard constraint, state it up front: the login screen is pre-auth. It has no farm context and cannot call the auth-gated
/account/logo(that endpoint needs the Authorization header — the reason the SPA fetches the logo through the API client and renders a blob URL). So a login-screen splash cannot show the farm's logo. Only a post-login surface (token in hand, farm resolved viaFarmProvider) can. Build the splash there, or drop the idea — do not point it at the login screen.FarmProvider's farm + the sameuseLogoObjectUrlhook.3. (Optional) Separate compact mark vs. hero logo
The durable fix if non-designer farmers keep uploading detailed logos: let a farm upload BOTH a hero logo (used at the splash / large surfaces) and a compact mark (used in the sidebar). More model + upload UI + a second
farm_logos-style asset; only worth it if 1+2 don't settle it.Out of scope