Guild access tokens (15-min TTL) are persisted in localStorage but were
never refreshed on page (re)load - only the center token was. After the
TTL elapsed, GET /channels failed with 401 ('Failed to load channels').
Re-issue guild tokens via refreshGuilds() on mount and reload channels
when the guild token changes.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- create-channel modal: Public checkbox (default off), self excluded from
member list (creator auto-added), shows member display names
- Settings modal to edit your own display name
- members panel shows names and marks (you)
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- createChannel falls back to selectedGuildId when guildDbId is unknown,
so the first channel of a guild can be created (no chicken-and-egg)
- channel is created under the currently selected guild
- errors now show in a dismissible modal instead of the Messages pane
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>