feat: Implement core chat page with channel navigation, direct messages, and voice chat integration.
All checks were successful
Build and Release / build-and-release (push) Successful in 9m12s
All checks were successful
Build and Release / build-and-release (push) Successful in 9m12s
This commit is contained in:
12
CLAUDE.md
12
CLAUDE.md
@@ -14,9 +14,10 @@ See also: [CONVEX_RULES.md](./CONVEX_RULES.md) | [CONVEX_EXAMPLES.md](./CONVEX_E
|
||||
|
||||
## Key Convex Files (convex/)
|
||||
|
||||
- `schema.ts` - Full schema: userProfiles (with avatarStorageId, aboutMe, customStatus), channels (with category, topic, position), messages, messageReactions, channelKeys, roles, userRoles, invites, dmParticipants, typingIndicators, voiceStates, channelReadState
|
||||
- `schema.ts` - Full schema: userProfiles (with avatarStorageId, aboutMe, customStatus), categories (name, position), channels (with categoryId, topic, position), messages, messageReactions, channelKeys, roles, userRoles, invites, dmParticipants, typingIndicators, voiceStates, channelReadState
|
||||
- `auth.ts` - getSalt, verifyUser, createUserWithProfile, getPublicKeys (includes avatarUrl, aboutMe, customStatus), updateProfile, updateStatus
|
||||
- `channels.ts` - list, get, create (with category/topic/position), rename, remove (cascade), updateTopic
|
||||
- `categories.ts` - list, create, rename, remove, reorder
|
||||
- `channels.ts` - list, get, create (with categoryId/topic/position), rename, remove (cascade), updateTopic, moveChannel, reorderChannels
|
||||
- `members.ts` - getChannelMembers (includes isHoist on roles, avatarUrl, aboutMe, customStatus)
|
||||
- `channelKeys.ts` - uploadKeys, getKeysForUser
|
||||
- `messages.ts` - list (with reactions + username), send, remove
|
||||
@@ -36,9 +37,9 @@ See also: [CONVEX_RULES.md](./CONVEX_RULES.md) | [CONVEX_EXAMPLES.md](./CONVEX_E
|
||||
- `main.jsx` - ConvexProvider + VoiceProvider + HashRouter
|
||||
- `pages/Login.jsx` - Convex auth (getSalt + verifyUser)
|
||||
- `pages/Register.jsx` - Convex auth (createUserWithProfile + invite flow)
|
||||
- `pages/Chat.jsx` - useQuery for channels, channelKeys, DMs
|
||||
- `pages/Chat.jsx` - useQuery for channels, categories, channelKeys, DMs
|
||||
- `components/ChatArea.jsx` - Messages, typing, reactions via Convex queries/mutations
|
||||
- `components/Sidebar.jsx` - Channel creation, key distribution, invites via Convex
|
||||
- `components/Sidebar.jsx` - Channel/category creation, key distribution, invites, drag-and-drop reordering via @dnd-kit
|
||||
- `contexts/VoiceContext.jsx` - Voice state via Convex + LiveKit room management
|
||||
- `components/ChannelSettingsModal.jsx` - Channel rename/delete via Convex mutations
|
||||
- `components/ServerSettingsModal.jsx` - Role management via Convex queries/mutations
|
||||
@@ -62,7 +63,8 @@ See also: [CONVEX_RULES.md](./CONVEX_RULES.md) | [CONVEX_EXAMPLES.md](./CONVEX_E
|
||||
- Typing indicators use scheduled functions for TTL cleanup
|
||||
- CSS uses Discord dark theme colors via `:root` variables (`--bg-primary: #313338`, `--bg-secondary: #2b2d31`, `--bg-tertiary: #1e1f22`)
|
||||
- Sidebar width is 312px (72px server strip + 240px channel panel)
|
||||
- Channels are grouped by `category` field with collapsible headers
|
||||
- Channels are grouped by `categoryId` (references `categories` table) with collapsible headers and drag-and-drop reordering (@dnd-kit)
|
||||
- Categories are first-class entities with position-based ordering; uncategorized channels show under "Channels" group
|
||||
- Members list groups by hoisted roles (isHoist) then Online/Offline
|
||||
- Avatar component supports both image URLs and colored-initial fallback
|
||||
- Title bar has back/forward navigation arrows
|
||||
|
||||
Reference in New Issue
Block a user