# Ditchcord Features Matrix ## ✅ Completed Features | Feature | Status | Notes | | :--- | :---: | :--- | | Multi-server support | [x] | Scalable workspace switching with instant cache | | Instant Load Pagination | [x] | 100-message "Recent Activity Cache" per channel | | On-demand History Expansion | [x] | Lazy-load deep channel history via surgical subscriptions | | Voice Channels | [x] | WebRTC audio signaling via SpacetimeDB | | Screen Sharing | [x] | WebRTC video/screen sharing support | | Threaded Conversations | [x] | Create threads from messages with unified scroll context | | User Profiles | [x] | Avatars, Banners, Biographies, and Display Names | | **User Statuses** | [x] | Custom status messages shown in member list and profile | | **Message Grouping** | [x] | Merge consecutive messages from same user within 5 mins | | **Server Management** | [x] | Create, Rename, Leave, Delete, and Upload Server Avatars | | **Private Servers** | [x] | Servers restricted to invited members only via `public` flag | | **Server Invites** | [x] | Secure 12-char codes with full URL join support and usage limits | | **Direct Messages** | [x] | Private 1-on-1 messaging with instant conversation focus | | **End-to-End Encryption (E2EE)** | [x] | Opt-in GPG encryption for DMs with dual-encryption for self-readability | | **Navigation Persistence** | [x] | Automatically returns user to last active server/channel on reload | | **Join Status Feedback** | [x] | User-visible error reporting for invalid/expired invites (no backend panics) | | **Max 5 images per message** | [x] | Reducer-level enforcement and UI staged image limits | | **Consolidated Subscriptions** | [x] | Merged 5+ state tables into 2; reduced network overhead | | **Restricted Visibility Views** | [x] | RLS-like filtering for user states and typing activity | | Dark/Light Mode Themes | [x] | Full theme engine with persistence and 7+ premium presets | | Custom Emojis | [x] | Upload, categorization, and global picker support | | Typing activity in a channel | [x] | Real-time indicators with restricted shared-context visibility | | Responsive Design | [x] | Media queries for various screen sizes | | Server Ownership | [x] | Tracked in the `server` table | | Sync settings to SpacetimeDB | [x] | User profile and server memberships are persistent | | **Zep System Assistant** | [x] | Automated welcome DMs for new users | ## 🚀 Planned Features (PM Prioritized) ### Phase 1: Core Engagement & Reliability High-impact features that bridge the gap between "experimental" and "usable daily driver." | Feature | Priority | Difficulty | Notes | | :--- | :---: | :---: | :--- | | **Read Status** | P0 | Med | Unread indicators for channels and servers | | **@ Mentions** | P0 | High | Global tagging and notification triggers | | **Group DMs** | P1 | Med | Multi-user private conversations (3+ users) | | **Notifications** | P1 | High | RLS-protected delivery of mentions/DMs | | **View Optimization** | P1 | Med | Refactor nested loops in `views.rs` to use semijoins (O(N) scaling) | | **Rate limiting** | P1 | High | Prevent spam and module resource exhaustion | ### Phase 2: Enhanced Messaging UX Improving the quality of life for active conversations. | Feature | Priority | Difficulty | Notes | | :--- | :---: | :---: | :--- | | **Replying to messages** | P2 | Med | Standalone replies (distinct from threads) | | **Profile Preview Cards** | P2 | Med | Quick-view user details when clicking in member list | | **Permissions System** | P2 | High | Simplified RBAC (Admin/Member/Guest roles) | | **S3 Media Offloading** | P2 | High | Optional background worker for SeaweedFS/S3 storage | | **Spoiler Content** | P3 | Low | Mark text or images as spoilers | ### Phase 3: Platform & Polish Expanding reach and refining the feel of the application. | Feature | Priority | Difficulty | Notes | | :--- | :---: | :---: | :--- | | **Hotkey Support** | P3 | Med | Keyboard navigation and quick-switch shortcuts | | **Voice Clips** | P3 | Med | Record and attach short audio messages | | **Ephemeral Channels** | P4 | Med | Snapchat-style disappearing message channels | | **Custom Input Refactor** | P4 | Low | Disable platform-native autocorrect for a cleaner chat feel | | **Watch Party** | P4 | High | Synchronized video playback in voice channels | ---