Commit Graph

31 Commits

Author SHA1 Message Date
44c308bd06 feat(frontend): closed-channel read-only UI
Closed channels: composer replaced by a read-only banner; history still
viewable; GuildChannel carries closed.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-15 16:52:44 +01:00
2d9aec8657 feat(frontend): render <@id> as @name mention chips
Markdown renderer turns <@userId> into a Discord-style mention chip
(@displayName, resolved via guild members; short-id fallback). Tokens
inside backticks stay literal; untranslated <@user.name:..> left as-is.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-15 15:52:43 +01:00
24eb458621 feat(frontend): per-message markdown rendering
Self-contained, HTML-escaped (XSS-safe) markdown for history messages;
each message rendered independently so a syntax error (e.g. unclosed
code fence) cannot leak into the next message.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-15 15:47:02 +01:00
8272ed495e feat(frontend): hide channel-members section for public channels
Public channel selected -> single guild member list (no In-channel split).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-15 15:27:36 +01:00
ab31afa13d feat(frontend): split members sidebar into channel + guild sections
When a channel is selected the Members panel shows 'In channel — N'
(that channel's members) above 'Guild — N' (all guild members).

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-15 15:00:24 +01:00
b04b099754 feat(frontend): channel type colors, triage/custom create fields, join/leave, dev mode
- per-x_type channel row colors (general/work/report/discuss/triage/custom)
- create-channel: required On-duty select (triage) / Listeners checklist (custom)
- channel Join/Leave in topbar; list carries isMember
- Developer mode toggle (Settings): show guild /ack + per-message wakeup
  metadata; off by default (metadata stays transparent)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-15 14:51:20 +01:00
396b2fd231 feat(frontend): channel type selector on create
Required Type dropdown (general|work|report|discuss|triage|custom) in the
create-channel modal; sends xType; shows type badge on channel rows.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-15 09:35:37 +01:00
53d21381d9 feat(frontend): Discord-style dark redesign
- full design system rewrite (dark theme, system tokens)
- chat shell: server rail / channel sidebar / message area / members
- message rows with avatars, author + time; empty/loading states
- login screen redesign; add-guild moved to a modal
- removed debug v1/v2/v4 panel toggles; members toggle in topbar

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-15 09:26:11 +01:00
1b70f27fc4 fix(frontend): refresh guild tokens on mount to avoid stale-token 401
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>
2026-05-15 09:14:10 +01:00
6b35d92aef feat(frontend): public channels, self-excluded member picker, editable display name
- 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>
2026-05-15 09:09:49 +01:00
c10cdcf2e5 fix(frontend): create channel under selected guild and surface errors via modal
- 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>
2026-05-15 08:52:25 +01:00
nav
40540ab8a6 feat(frontend): add guild join flow, members panel, and channel-create member modal 2026-05-14 16:58:12 +00:00
nav
75fee7c725 fix(frontend): require guildId for channel creation and fallback from channel list 2026-05-14 16:49:57 +00:00
nav
d0bbd4a20f feat(frontend): add collapsible v1/v2/v4 panels and guild members column 2026-05-14 16:46:38 +00:00
nav
12265e09ec feat(frontend): add create channel action in channel pane 2026-05-14 16:41:20 +00:00
nav
04d8f9e3bf feat(frontend): redesign post-login layout into guild/channel/chat panes 2026-05-14 16:38:19 +00:00
nav
4f28f102e0 feat(auth): remove center api key from frontend login flow 2026-05-14 14:17:12 +00:00
nav
cfaa1cb657 feat(frontend): translate UI to English and refresh layout styles 2026-05-14 13:33:37 +00:00
nav
4724678035 feat(frontend): require center API key on login/auth calls 2026-05-13 08:18:01 +00:00
nav
c906cde209 feat(frontend): login with center URL and consume center-issued guild tokens 2026-05-13 08:00:32 +00:00
nav
66c49ff654 feat(frontend): apply API key headers to center auth client 2026-05-13 06:58:18 +00:00
nav
edb06a5a31 feat(frontend): add request-id observability logs for api calls 2026-05-12 16:10:30 +00:00
nav
25bd1df290 feat(frontend): add loading empty and error states for chat operations 2026-05-12 16:08:17 +00:00
root
763f06ab8c feat(frontend): add typing presence and reconnect repull realtime behavior 2026-05-12 16:04:25 +00:00
root
e7faf92d3c feat(frontend): show next_expected_seq and page continuity hints 2026-05-12 16:00:38 +00:00
root
e7b2721280 feat(frontend): add message edit delete and ranged pull controls 2026-05-12 15:59:11 +00:00
root
048a55aaeb feat(frontend): load guild-channel lists and sync chat channel in url 2026-05-12 15:25:40 +00:00
root
d718128f89 feat(frontend): implement center auth session flow with route guard 2026-05-12 15:09:06 +00:00
root
6219fbbcfe feat(frontend): add api client and socket client wrappers with runtime config 2026-05-12 13:46:19 +00:00
root
b3291b5874 feat(frontend): add routing skeleton with workspace chat and login pages 2026-05-12 13:13:52 +00:00
root
196535ba5a feat: bootstrap React frontend shell with API and realtime wiring 2026-05-12 12:58:39 +00:00