This file tracks implementation status. Completed items use - [x]; future ideas are plain bullets without a checkbox.
- CLI diagnostics (
-doctor,-doctor-json) on client and server binaries for env/config/update checks - Message editing, deletion, and pinning
- Message reactions
- Direct messages between users
- Chat channels (join/leave with per-channel messaging)
- Typing indicators and read receipts
- Message search (server-side)
- E2E encryption for file transfers
- Connection status indicator, @mention tab completion, unread count
- Multi-line input (Alt+Enter / Ctrl+J)
- Chat history export
- WebSocket rate limiting
- Docker Compose for local development
- Refactor database connection and initialization logic into a unified function.
- Dynamically select DB driver and connection string at runtime.
- Add support for PostgreSQL and MySQL in addition to SQLite.
- Ensure schema and queries work with SQLite, PostgreSQL, and MySQL.
- Adjust types where necessary (BOOLEAN, TIMESTAMP/DATETIME).
- Maintain a unified schema that works across all backends.
- Add conditional logic for DB-specific schema tweaks.
- Validate CREATE TABLE statements in all target backends.
- Test queries for compatibility and performance.
- Enable SQLite Write-Ahead Logging (WAL) mode for performance gains.
- Implement batch TTL-based message deletion.
- Add indexing for frequently queried columns.
- Cache displayed/recent messages in server memory to reduce repeated DB reads.
- Persist reactions to the database.
- Persist last channel per user across reconnects (
user_channels). - Add read receipt state tracking per user.
- Dialect tests (DSN detection, placeholder rebinding) and SQLite-backed integration tests; exercise PostgreSQL/MySQL against live databases separately.
- Document setup steps for PostgreSQL and MySQL.
- Provide working connection string examples.
- Include troubleshooting tips for common DB connection issues.
- Increase test coverage for client and server packages.
- Consider using
sqlxor a lightweight ORM to reduce SQL dialect handling. - Explore migrations tooling for schema changes.
- Evaluate other client-server DB options based on user demand.
- Per-user notification rules.
- Plugin auto-updates and dependency resolution.