- Flutter now calls /models/list and /models/switch (desktop endpoints)
- Added get_optional_auth() helper that supports both desktop unlock and mobile JWT
- Removed duplicate mobile-only model endpoints
- Desktop client unchanged - still works with app_state unlock
- Backend now returns models as list of dicts with name, size, filename
- Fixed current_model to be a dict instead of string
- Added file size calculation and formatting
- Server URL persistence now works correctly in Flutter app
- Initialize ApiClient in main() to load saved server URL from storage
- Add serverUrl getter to ApiClient
- Login screen now loads and displays saved server URL
- Server URL is properly persisted between app restarts
- Add POST /api/mobile/models/switch endpoint
- Allows hot-swapping AI models from mobile app
- Saves model preference for next startup
- Uses JWT authentication
- Add POST /api/mobile/chat endpoint with Form data
- Uses JWT authentication like other mobile endpoints
- Supports session_id (optional) to continue existing chats
- Returns AI response with mood context and session ID
- Add /api/mobile/chat/sessions endpoint
- Add /api/mobile/chat/sessions/{id}/messages endpoint
- Add /api/mobile/models/list endpoint
- Fix mobile login to initialize AI components (emotion detector, RAG, Qwen)
- Models now load when connecting from mobile app, same as desktop
- Use Docker host network mode for automatic IP detection
- Add FastAPI startup event to display Mobile URL
- Change frontend API path from hardcoded IP to relative path