S7 review: align OAuth UI with S6's actual contract (server-26#225)

- complete: S6 returns streams_stopped, not stopped — the "N radio
  channels were stopped" note never showed.
- start: bot name is nested as bot.name.
- "The bot for a system" with an org-owned preferred bot now sends
  token_id (S6 accepts it today); system_id only for a platform-pinned
  pool bot, which still needs S6 to accept system_id.
- A 404 for one chosen bot no longer hides Connect and the picker
  (the message told the user to try Automatic, but the button was gone).
- Server count uses GET /tokens' per-bot server_cap when present.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Logan Cusano
2026-10-05 02:56:05 -04:00
co-authored by Claude Opus 5.5
parent dd3e5c9655
commit eaa0be07c5
4 changed files with 30 additions and 16 deletions
@@ -54,11 +54,12 @@ function Checks({ t }: { t: RadioBot }) {
function ServerCount({ t, cap }: { t: RadioBot; cap: number }) {
if (t.guild_ids == null) return null;
const n = t.guild_ids.length;
const full = t.org_id == null && n >= cap;
const limit = t.server_cap ?? cap;
const full = t.org_id == null && n >= limit;
return (
<div className={`text-xs mb-1 ${full || n >= DISCORD_UNVERIFIED_GUILD_LIMIT ? "text-sev-moderate" : "text-ink-muted"}`}>
{n} of {DISCORD_UNVERIFIED_GUILD_LIMIT} servers
{full && ` · full at ${cap}: Connect skips it, add another pool bot`}
{full && ` · full at ${limit}: Connect skips it, add another pool bot`}
</div>
);
}