Add automatic SQLite database backup before migrations on every server
start. Backups are timestamped and stored in backups/, with WAL/SHM
files included. Old backups are pruned to keep only the 10 most recent.
Update dev.sh to use separate ports and database from production so both
can run simultaneously on the same machine:
- Production: server :3001, DB chat.db
- Development: server :3002, Vite :3003, DB chat-dev.db
Make Vite config dynamic via VITE_PORT and VITE_API_PORT env vars.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add user profile page with custom avatar upload (crop/resize to 256px),
avatar display throughout the app, and MD5-based Gravatar fallback.
Add image paste/attach support in chat with vision model detection via
OpenRouter API. Images can be pasted from clipboard or selected via file
picker, uploaded to the server, and sent alongside messages. The AI
receives images as base64 data URLs for multimodal models. Models with
vision support are indicated with a badge in the model picker.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Full-stack real-time group chat with Rust/Axum backend and Riot.js frontend.
Features:
- Auth (register/login/JWT), rooms, invites, WebSocket messaging
- AI responses via OpenRouter with tool calling (Brave Search + web fetch)
- Real-time tool usage indicators (searching/reading page)
- Collapsible tool results in message bubbles
- AI stats bar (model, tokens, speed, response time) persisted to DB
- Room soft-delete, /clear command, dynamic model fetching
- Markdown rendering with code highlighting and copy buttons
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>