- Ya
- 4 Septemba 2026, 21:15 UTC
- Mwandishi
- Kamo
- Ahadi ya
- b525e1a
Every "which networks can I reach" row carried logoUrl and logoSimpleUrl derived from the org's alias alone, for any org whose alias was path-safe — which is all of them. An org whose theme folder was never provisioned has no img/logo.svg, so /network asked kamo-internal's image proxy for objects that were never there: MinIO answered NoSuchKey, the proxy reported that as a gateway failure, and the console logged GET **************** 502 (Bad Gateway) seven times on one load, each having spent a server-side fetch to arrive at the initial the card renders anyway. Nothing in the database records whether a logo exists — the simple slot has no column, and logoFullExt names the full logo's format rather than its existence — so OrgLogoPresence asks the object store and remembers the answer. Present is held 30 minutes, absent 5, and both the logo upload and theme provisioning forget the folder they just wrote, so an org's first logo appears on the next paint rather than when an entry lapses. The two URLs are now absent when there is no object, and that absence is the contract: it is the only thing that tells a client "there is no logo" apart from "one we have not asked for yet". logoFullExt is written only after an upload succeeded, so the full logo still needs no check of its own.