diff --git a/FEATURES.md b/FEATURES.md new file mode 100644 index 0000000..c9f58c5 --- /dev/null +++ b/FEATURES.md @@ -0,0 +1,69 @@ +# 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 | + +---