- Replace logging.basicConfig with QueueHandler/QueueListener
so all log output writes from a single thread
- Add %(threadName)s to format for thread identification
- send_summary now accepts original_sender (raw From header)
- Context stores original_sender separately from AI-generated sender
- _do_send_reply tries original_sender first, then AI sender fallback
- Reply prompt now has an inline '取消回复' button instead of typing text
- AI reply selection adds '换一批' button: passes all previous suggestions
to AI to generate different replies
- '我想说:' button: lets user type a hint/tone instruction, AI tailors
suggestions accordingly
- Cancel button also works on prompt/hint messages (deletes them)
- Extract _show_ai_suggestions helper for reuse