7550aff102a1a05d2bcfb14c8de561b093b10c90
- mail_archive.py: фикс вложений himalaya --dir → --downloads-dir; attachments/ только при has_attachment; идемпотентно - email_classifier.py: Qwen3:8b (Ollama) → теги info/urgent/task/meeting в frontmatter email.md - email_handlers.py: urgent→Telegram (Bot API+SOCKS5), task→Radicale VTODO, meeting→Radicale VEVENT; handled_* идемпотентность; --dry-run - .gitignore: игнор *.env.bak* - openspec: чейндж email-classification-handlers (в работе) - STATUS/TODO/WALKTHROUGH: прогресс сессии, подводные камни Radicale (http.client, Depth:1, формат дат)
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%
Shell
2%