Stop reading image files inside gemini/mistral commands; use pre-encoded image data from message parts
Rework loadImagesIfExists / loadImagesFromFileIds to return cached file_unique_ids and download only missing sizes
Encode cached images to base64 when assembling the reply chain
Make getPhotoMaxSize synchronous (returns PhotoSize), and map to URL only when needed
Await MessageStore.put / UserStore.put and prefetch single-image downloads on message receipt
- make MessageStore.put() return StoredMessage and allow collectReplyChainText() to work with StoredMessage
- move muted users + answers loading into Environment (add Answers model + GEMINI_IMAGE_MODEL)
- extract message handling into processNewMessage() and add media-group (album) caching/downloading by unique_file_id
- for Ollama: check model capabilities before sending images; use replyToMessage helper consistently
- add /geminiGenImage command stub for Gemini image generation