mirror of
https://gitverse.ru/kpa39l/email-assistant.git
synced 2026-09-29 09:15:09 +00:00
39df85b51cd4263b0b3350e79eeb8926c7a95ec7
Причина: himalaya message read и attachment download используют IMAP BODY[], который по RFC 3501 выставляет \Seen на сервере (Microsoft Exchange). Пользователь: письма в ящике после скачивания становятся прочитанными. Фикс: - чтение тела: himalaya message read --preview (не ставит Seen) - вложения: fetch_attachments_imaplib() — сырой IMAP stdlib (socket+ssl), UID FETCH (BODY.PEEK[]), папки в modified UTF-7, литералы до 1.5МБ, MIME-encoded words, фолбэк himalaya + flag remove seen Проверено живьём: UID 14200 (INBOX, docx 1.1МБ) флаги ()->() — Seen не выставлен. Openspec: change no-mark-seen-on-archive заархивирован (2026-09-14-no-mark-seen-on-archive), 7/7 validate OK
Email Assistant
Локальный архив и ассистент почты. Инкрементальный архиватор писем с IMAP, SQLite FTS5-поиск, извлечение контактов из подписей через LLM, еженедельные дайджесты.
Стек: Himalaya CLI → Python → SQLite → Ollama (Qwen3:8b) → Yandex Disk
Статус: Фаза 1.5 — Индексация, поиск, дайджесты + Адресная книга (в работе)
Подробнее: STATUS.md
Оценка альтернатив
- Анализ Nylas CLI — почему Nylas не подходит для локального архива (2026-09-11)
- Анализ формата хранения: ФС vs Maildir — почему текущий формат удобнее Maildir для локальной LLM (2026-09-11)
CardDAV / CalDAV (контакты, календарь, задачи)
- Radicale (:5232, bigbox, Docker) — CalDAV/CardDAV-сервер. Карточки контактов синхронизируются двусторонне:
scripts/contacts_caldav_sync.py(push 81 контакт → vCard; pull правок/создания/удаления с телефона →contacts.json). - Vikunja (:3456) — трекер задач (в Docker, разворачивается).
- Android: DAVx⁵ (F-Droid/Play) для контактов/календаря, jtx board для задач Vikunja.
- Публичный доступ: через Caddy на vps02 (
cal.nixg.ru→ Radicale,tasks.nixg.ru→ Vikunja) — настройка = следующая задача; подробности и конфиги Caddy: STATUS.md → «DAVx⁵ (Android: CalDAV/CardDAV-мост)»
Description
Languages
Python
98.4%
Shell
1.6%