mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2026-10-06 11:48:24 +00:00
A discovery run against a public relay returned 55 coordinators as a flat list of identical-looking rows. Each showed a name and one line of text, and that line was broken. **"Last announced Aug 7 ago".** `timeAgoNoDot` answers with a span for something recent and an absolute date for anything past a month, and one template served both. Every stale row read as nonsense. The date branch now gets a template with no "ago" in it. **Rows that could not be told apart.** The reference server ships as "My coordinator", so a dozen rows carried that name and nothing else. A pubkey prefix is appended to the names that actually collide, so the common case stays clean — "My coordinator · b9d8fac7" next to a plain "cordn-net". **Nothing about where or what.** The relays were already in `DiscoveredCoordinator` and simply never drawn; rows now show the hosts (two, then a count) and the coordinator's own `about` when it published one, which turns out to be the most telling line on the page: "Cordn coordinator running in a browser tab; key package quota 32 per identity". **55 rows deep.** Anything that has not announced in a month is folded behind "Show 55 that stopped announcing", with a line saying why it matters — creating a group on a coordinator that has gone away fails at the first call. Live ones are capped at eight with "Show all N". On group count: there is no such number to show. The eleven coordinator tools have no group listing and should not — a coordinator enumerating its groups to a stranger would leak exactly what the exposure card promises it does not. Liveness, relays and the advertised surface are the honest substitutes. **Not a LazyColumn**, which was my first instinct and is wrong here: this screen is a form, and a lazy list disposes what scrolls off, which for the text fields below would throw away focus and IME state mid-typing. Capping the rows bounds composition without putting a form inside a recycler. Also capitalises the last two stragglers, the screen title and the picker's call to action. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>