4.2 KiB
4.2 KiB
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 |