# Changelog v1.0 ## [1.0.0] - 2026-05-11 ### Added - Project rename: VoIdea → VoIdeaAI (config, main.py, .env.example, PWA) - Phase 0: Database models and initial Alembic migration (8 tables) - Phase 1: Chat sessions with auto-title (LLM), sidebar, history - Phase 6: Rate limiting (slowapi) on all auth endpoints - Phase 7: Security hardening — security headers middleware, brute force protection (5 attempts), refresh token rotation, separate JWT reset secret - 26 agents: 1 Conductor + 13 role agents + 12 dev/ops agents - Voice pipeline: Web Speech API → Whisper API, SpeechSynthesis TTS - Yandex OAuth + Disk integration (7 scopes) - Password reset via email (JWT token, 1h expiry) - AES-256 encryption service (Fernet, PBKDF2 600k) - Email service with Jinja2 templates and SMTP fallback logging - Google/Apple OAuth stubs with Drive client interfaces - Full PWA support: manifest, favicons, service worker - docs/full.md — comprehensive project specification (19 sections) ### Changed - Static files moved from `/assets` to proper StaticFiles mount in main.py - Conductor agent accepts session_id, auto-creates sessions - VoiceChat UI: sidebar with session list, text input alongside mic - .env: updated to unified DATABASE_URL format, new OAuth fields ### Security - All auth endpoints rate-limited (10/min login, 5/min register, 3/min forgot-password) - SecurityHeadersMiddleware: CSP, HSTS, X-Frame-Options, X-Content-Type-Options - Brute force: 5 failed login attempts → 15 minute block - Refresh token rotation on every refresh call - Password reset uses separate JWT secret key