# История изменений (/ru/docs/memo/changelog)

Основные изменения `@wirecat/cli-memo` по версиям, от новых к старым. Используется
[семантическое версионирование](https://semver.org/); до `1.0.0` минорный выпуск может менять
интерфейс.

## 0.21.0 — 11.10.2026 [#0210--11102026]

### Исправлено [#исправлено]

* Подсказка после поиска без модели для поиска по смыслу называет команду, которая её скачивает,
  `tg models text download e5-small`[↗](/llms.mdx/docs/ru/tg/commands-personal/content.md#tg-models-text-download "Справочник команды: tg models text download"); раньше она называла несуществующую команду `memo models`.
* `memo projects context` находит проект по ключу (`HRB`) или по `project:<id>`, а не только по id;
  с ключом ответ был пустым.

### Изменено — может сломать скрипты [#изменено--может-сломать-скрипты]

* **`memo search mail` и `memo search messages` показывают каждый результат как ссылку на источник, затем
  кто и когда, затем отрывок.** Для письма вторая строка называет To, Cc и его ярлыки Gmail, а третья — тему;
  весь текст возвращается с `--full`. `--json` даёт каждому письму `email` (from, to, cc, bcc и reply-to с их
  ссылками `person:`, ярлыки, цепочку, прочитано и помечено) и `excerpt` вместо всего `text`; `--brief`
  оставляет только ссылку, заголовок, время, отправителя, отрывок и оценку. Поиск по почте больше не
  возвращает `coverage`. Основано на общей библиотеке 0.251.0.

### Исправлено [#исправлено-1]

* **Импорт почты больше не записывает адреса Cc в To.** В почте, импортированной раньше, они остаются в
  обоих полях; поиск показывает их только в Cc.

## 0.20.0 — 11.10.2026 [#0200--11102026]

### Что нового [#что-нового]

* Руководства в `docs/` следуют структуре страниц инструментов wirecat.dev: обзор, ежедневная работа, как
  устроен memo, рецепты, решение проблем, память и сгенерированный справочник команд (`pnpm generate`).
  Они написаны для читателей, которые не каждый день работают в терминале.
* `memo commands [path] --json` выводит дерево команд и их параметры, как в tg, max и drive, чтобы
  документация и агенты могли проверить команду до запуска.
* У каждой команды есть описание в `--help`, включая организации, проекты, связи, напоминания и список
  задач.

## 0.19.0 — 11.10.2026 [#0190--11102026]

### Что нового [#что-нового-1]

* `memo mcp` подсказывает подключённому агенту, когда сохранять: то, что произошло, — это факт (`facts_add`),
  вывод — это память (`memories_add`), то, что нужно сделать, — `actions_propose`, каждое с доказательством,
  и только то, что пригодится позже. `memo search …` и `memo notes show` заканчивают свой `--help` той же
  подсказкой для `memo facts add` и `memo memories add`.

### Изменено [#изменено]

* **Поиск по смыслу в почте находит письмо, в котором есть ответ.** Почта снова делится на части по
  отдельным письмам; повторно процитированный текст, приветствия и подписи по-прежнему отбрасываются. Раньше
  одна часть охватывала несколько писем цепочки, и результат указывал на самое новое из них. Первый запуск
  индексации после обновления один раз заново делит сохранённую почту и заново создаёт для неё векторы.
  Основано на общей библиотеке 0.249.0.

### Исправлено [#исправлено-2]

* Подготовка выпуска останавливается, если другая сессия продвигает main, пока идут её PR с версией или
  локальные проверки. Перед повтором просмотрите новый main; устаревшая подготовка не может слить лишний
  заголовок версии или запустить непроверенный исходный код.

## 0.18.0 — 11.10.2026 [#0180--11102026]

### Исправлено [#исправлено-3]

* В исходной истории изменений остался один заголовок 0.17.0: подготовка выпуска шла одновременно со слиянием
  его функций. Команды словаря и закреплённая версия общего хранилища те же, что в 0.17.0.

## 0.17.0 — 11.10.2026 [#0170--11102026]

### Что нового [#что-нового-2]

* **Создание меток с проверкой владельцем:** `memo vocabulary create` требует текущий отпечаток создания из
  предварительной проверки. Похожие метки ищутся в общем хранилище, включая неявную разметку тегами;
  устаревшие подтверждения отклоняются. Точные псевдонимы по-прежнему ведут к своей основной метке.
  `vocabulary audit` находит существующие лексические синонимы с явными пределами работы и вывода и сообщает о
  неполной проверке; он никогда не принимает и не объединяет их.

* **Поиск почты фильтрует по прочитанным и помеченным звёздочкой письмам и понимает `label:`.** `memo search mail`
  принимает `is:unread`, `is:read`, `is:starred` и `label:` (то же, что `mailbox:`), а также `date:>=2026-01-01`
  наряду с `date>=2026-01-01`. Работает на общей библиотеке 0.246.0.

## 0.16.0 — 11.10.2026 [#0160--11102026]

### Что нового [#что-нового-3]

* **Встречи проекта и зависимости задач.** `projects meetings list|link` требует точного провайдера и аккаунта
  встреч и принимает основной ключ проекта или явный псевдоним. `tasks link|unlink` управляет проверенными
  связями «заблокирована / продолжение / связана с»; `relations`, `readiness` и `ready` показывают общий граф
  задач. Поиск готовых задач ничего не берёт в работу. MCP-инструменты `task_relations`, `task_readiness` и
  `tasks_ready` только читают. Работает на фактически опубликованной общей библиотеке 0.242.0; новые ключи
  проектов содержат 3–4 символа, существующие ключи остаются действительными.

* **Просмотр основного словаря и проверенные псевдонимы.** `vocabulary list|resolve|preflight` показывает
  постоянные ID проектов, тегов и тем, явные псевдонимы и вероятные лексические дубликаты меток. Команда
  владельца `vocabulary aliases add|remove` требует текущий отпечаток предпросмотра. MCP-инструменты только для
  чтения `vocabulary_list`, `vocabulary_resolve` и `vocabulary_preflight` позволяют агенту повторно использовать
  каталог; принимать или менять псевдонимы они не могут. `facts_add` может привязать предложенный факт к
  основному проекту.

## 0.15.0 — 11.10.2026 [#0150--11102026]

### Изменено — может сломать скрипты [#изменено--может-сломать-скрипты-1]

* **`memo mail <account> import` заменяет `memo mail import --account <name>`; старой формы больше нет.**
  `<account>` — имя в `mail.accounts`, и оно обязательно, даже если настроен один аккаунт: memo больше не берёт
  первый. Отсутствующее или неизвестное имя — ошибка со списком настроенных. Импорт почты теперь берёт ту же
  блокировку, что `memo import` и таймер, поэтому они никогда не работают одновременно. `memo import`
  по-прежнему импортирует все аккаунты.
* **`bin/mail-password <account>` требует аккаунт**; без него скрипт печатает подсказку по использованию и
  настроенные имена, а не подставляет `gmail`.

### Что нового [#что-нового-4]

* **`memo search mail --account <address>`** ищет в одном почтовом аккаунте; без него — во всех. Адрес, которого
  нет в хранилище, даёт `not_found` со списком тех, что есть.

## 0.14.1 — 11.10.2026 [#0141--11102026]

### Исправлено [#исправлено-4]

* **npm снова ставит пакеты рядом друг с другом.** Работает на `@wirecat/cli-messaging` 0.241.0, чей
  `@wirecat/cli-meetings` 0.4.2 принимает cli-core 0.20.0. С 0.240.0 npm клал cli-messaging во вложенную папку
  со второй копией cli-core.

## 0.14.0 — 11.10.2026 [#0140--11102026]

### Изменено — может сломать скрипты [#изменено--может-сломать-скрипты-2]

* **На macOS memo хранит файлы там же, где на Linux**: `~/.config/cli-memo`, `~/.local/share/cli-memo` и
  `~/.cache/cli-memo` вместо `~/Library/…`. Первый запуск переносит туда старые папки вместе с общим хранилищем.
  Если работает `serve` мессенджера или MCP-сервер, memo печатает одно предупреждение, в этом запуске продолжает
  использовать старые папки и пробует снова в следующий раз. Linux и Windows не изменились. Работает на
  `@wirecat/cli-messaging` 0.240.0.

## 0.13.0 — 11.10.2026 [#0130--11102026]

### Что нового [#что-нового-5]

* **`mail.maxBodyChars` и `mail.maxAttachmentChars`** в настройках задают, сколько `memo mail import` сохраняет
  от текста письма (по умолчанию 1 000 000 символов) и от текста одного вложения (по умолчанию 200 000).
* **`memo facts add|list|show|accept|reverse`: что произошло, с доказательствами.** Факт — это факт, утверждение,
  вопрос, решение или обещание. Ваш принимается сразу; факт агента ждёт со статусом предложенного. Решение с
  `--supersedes` после принятия завершает то, которое заменяет; `reverse` завершает принятое решение. `memo mcp`
  предлагает `facts_add`, `facts_list` и `facts_show`.
* **Собственные задачи в проекте.** `memo tasks add --project <key> --title <title> --type bug|feature|chore`
  создаёт задачу без источника. `--priority`, `--parent`, `--description` и `--assignee` работают с любой задачей;
  `memo tasks update <id>` меняет их, `memo tasks list --project <key>` показывает задачи проекта, а
  `memo tasks close` закрывает задачу.

### Изменено — может сломать скрипты [#изменено--может-сломать-скрипты-3]

* **memo работает на `@wirecat/cli-messaging` 0.238.0**, версия хранилища 2: обновление хранилища переносит
  записи памяти вида «факт» в факты и копирует назначения задач; старые сборки memo по-прежнему его открывают.
* **Почта ищется по смыслу по цепочкам**, без повторно процитированного текста: первый `memo mail import` после
  обновления заново нарезает каждую цепочку и снова создаёт векторы для почты. Поиск по словам не изменился.
* **Вида записи памяти `fact` больше нет**: что произошло, теперь факт (`memo facts`). Хранилище перенесло
  существующие записи памяти вида «факт» в факты вместе с доказательствами и ссылками.
* **`memo tasks assign` принимает `--role` (исполнитель, рецензент или наблюдатель) и не принимает
  `--provider`/`--account`.** Команда записывает исполнителей задачи, которых читает `memo context`, а не связь
  `assigned-to`.

## 0.12.0 — 11.10.2026 [#0120--11102026]

### Что нового [#что-нового-6]

* **`memo notes add --meeting <id> --provider <provider> --account <account>` пишет заметку о встрече.**
  Команда принимает id встречи в хранилище, как `memo tags add --meeting`, и добавляет тот же предмет
  `meeting:<account id>/<meeting id>` рядом с любым `--about`. Встреча, которой нет в аккаунте, даёт
  `not_found`.

### Изменено — может сломать скрипты [#изменено--может-сломать-скрипты-4]

* **memo работает на `@wirecat/cli-messaging` 0.235.0.**
* **Отметки «прочитано» и «со звёздочкой» остаются актуальными.** `memo mail import` обновляет их у ранее
  сохранённой почты так, как их сейчас показывает почтовый ящик, не читая письма заново.
* **Обычные IMAP-аккаунты получают флаги.** Их письма записывают «прочитано» и «помечено», а помеченное письмо
  получает ярлык `Starred`, как письмо Gmail со звёздочкой, поэтому `search mail mailbox:starred` находит оба.
* **Длинные письма сохраняются целиком.** Раньше текст обрезался на 20 000 символов; теперь он хранится до
  1 000 000, а хранилище нарезает его на части для поиска.

## 0.11.0 — 11.10.2026 [#0110--11102026]

### Изменено — может сломать скрипты [#изменено--может-сломать-скрипты-5]

* **memo работает на `@wirecat/cli-messaging` 0.233.0.** Вложения импортированного письма теперь тоже ищутся по
  смыслу: после импорта их текст нарезается на части и превращается в векторы, а `search conversations` в tg и max
  отвечает на совпадение во вложении его письмом.

## 0.10.0 — 11.10.2026 [#0100--11102026]

### Что нового [#что-нового-7]

* **Ярлыки и звёздочки Gmail попадают в хранилище.** `memo mail import` читает ярлыки (`X-GM-LABELS`) и флаги
  каждого письма: каждый ярлык, включая «Входящие», «Важное» и «Отправленные», становится почтовым ящиком-ярлыком
  с простым именем, письмо со звёздочкой дополнительно получает `Starred`, а у новой почты записываются
  «прочитано» и «со звёздочкой». `search mail mailbox:important` находит их. Ярлыки заменяются при каждом запуске,
  потому что Gmail отдаёт список целиком; для папок сохраняется правило по каждому просмотру, и только папки
  решают, была ли удалена пропавшая почта. Если импорт не может прочитать строку ярлыков, ярлыки этого письма
  остаются прежними.

## 0.9.0 — 11.10.2026 [#090--11102026]

### Что нового [#что-нового-8]

* **Встрече можно поставить тег и написать о ней.** `memo tags add|remove --meeting <id>` с `--provider` и
  `--account` ставит метку на сохранённую встречу, `memo tags list --type meeting` показывает их, а `memo notes add --about
  meeting:<account id>/<meeting id>` пишет заметку о встрече.
* **`memo memories`** — `add`, `list`, `show`, `search`, `confirm` и `stale` для выводов, которые сделали вы и
  агенты, у каждого — доказательства и область `personal` или `work`. Ваши подтверждаются сразу; записи агента ждут
  со статусом предложенных.
* **`memo actions`** — `propose`, `list`, `show`, `approve` и `reject`. Одобрение превращает действие в задачу
  в том аккаунте, который выполнил бы действие; ничего не отправляется.
* **`memo agents log`** — что агенты сделали через MCP-серверы, по инструментам и агентам, без аргументов.
* **`memo mcp`** — MCP-сервер на stdio с `memories_add|list|show|search`, `actions_propose|list|show` и
  `agents_log`. Автор того, что записывает агент, — `memo-mcp`, и запись ждёт вас; каждый вызов записывается в
  журнал.

### Изменено — может сломать скрипты [#изменено--может-сломать-скрипты-6]

* **memo работает на `@wirecat/cli-messaging` 0.232.0.** `search mail` принимает `to:`, `cc:`, `bcc:` (человек, как
  в `from:`), `subject:` (только слова темы) и `mailbox:` (папка или ярлык Gmail).
* **Справка `search` и `search all` говорит, что не читает `search all`**: людей, память, проекты,
  организации и решения, — и отправляет известный вид к его собственному поиску.

## 0.8.0 — 11.10.2026 [#080--11102026]

### Изменено — может сломать скрипты [#изменено--может-сломать-скрипты-7]

* **Почта попадает в почтовые таблицы хранилища.** `memo mail import` сохраняет каждое письмо через
  `store.mail` из cli-messaging (0.231.0): цепочки, письма, To/CC/BCC, папки как почтовые ящики и текст вложений
  при его письме. Id остаются прежними, поэтому ссылка `msg:email/…`, тег или заметка, созданные раньше, по-прежнему
  находят своё письмо. Почта, сохранённая прежними импортами как сообщения, остаётся доступной для поиска и
  сохраняет старое правило удаления; она заново читается в почтовые таблицы, когда её охватывает окно импорта.
  Пока существуют оба варианта, `deleted` считает сохранённые строки: письмо, удалённое в источнике, считает своё
  письмо, своё старое сообщение и любую старую запись вложения. Вложение больше не отдельная запись: отчёт об
  импорте больше не содержит `attachments[].locatorId`, а заметка к записи вложения остаётся на этой старой записи.
* **Теги, задачи и контекст человека читают почтовые таблицы.** `tags list` сохраняет тег на письме, `tasks add`
  принимает источник письма `msg:email/…`, а задачи и контекст человека включают его почту.
* **Векторы для почты строятся из почтовых таблиц.** После сохранения `memo mail import` создаёт векторы для
  частей новой почты (`embedMail` из cli-messaging), поэтому `search conversations` в tg и max по-прежнему находит
  почту по смыслу. `--no-embed` и отсутствие модели работают как раньше.

## 0.7.1 — 11.10.2026 [#071--11102026]

### Исправлено [#исправлено-5]

* Поиск почты, наборы доказательств и контекст человека читают также письма, сохранённые в отдельных почтовых
  таблицах. Прежние импорты почты по-прежнему поддерживаются; в результатах поиска каждая ссылка на письмо
  показывается один раз.

## 0.7.0 — 11.10.2026 [#070--11102026]

### Изменено [#изменено-1]

* **memo работает на `@wirecat/cli-messaging` 0.226.0.** Хранилище чистит свои растущие журналы при открытии, не
  чаще раза в день: вызовы инструментов агентов старше 90 дней удаляются, а обработанное обновление бота старше
  30 дней теряет своё содержимое. Сначала обновите tg-cli и max-cli: все три инструмента используют общее
  хранилище.
* **`organizations add --kind`, `projects add --type` и `--scope` берут допустимые значения из хранилища**
  и отклоняют любое другое значение до открытия хранилища, называя допустимые.

### Исправлено [#исправлено-6]

* **`memo --version` печатает версию пакета.** Начиная с 0.5.0 она печатала 0.4.0: номер хранился в файле, который
  выпуск не обновлял. Теперь тест падает, если этот файл и `package.json` расходятся.
* Ссылки на пакеты, документация и тестовые данные везде используют пространство имён WireCat.

### Безопасность [#безопасность]

* **Старый `messages.db` удаляется**, когда хранилище открывается по пути по умолчанию: это незашифрованный файл,
  который использовался до `wirecat.db`, вместе с его `-wal` и `-shm`. Одна строка в stderr называет его. Он
  сохраняется, если задан `MESSAGING_STORE`, и пока другой процесс держит его открытым.

## 0.6.0 — 10.10.2026 [#060--10102026]

### Изменено — может сломать вызывающий код [#изменено--может-сломать-вызывающий-код]

* **memo работает на `@wirecat/cli-messaging` 0.218.0 и `@wirecat/cli-core` 0.19.3**, хранилище — в `wirecat.db`.
  Старый `messages.db` остаётся как есть и не читается: импортируйте заметки и почту заново и выполните
  `memo folders add <path>` для каждой папки, потому что id папки из старого хранилища нет в новом.
* **`memo entities` заменён на `memo organizations` и `memo projects`** (`add`, `list`, `context`),
  потому что хранилище теперь хранит их отдельно; `tags --entity` теперь `--organization` или `--project`, а ссылки
  `entity:` не находятся. Организация — это компания, команда, семья или сообщество; у проекта есть ключ.
* **Файл в папке заметок — это `document:<id>`, заметка, написанная в memo, — `note:<id>`.** `notes show`,
  `tags --note`, `tasks add` и `--about` принимают оба; голый id относится к написанной заметке. Доказательства
  в поиске и ссылки называют заметку-файл через `document:`.

### Безопасность [#безопасность-1]

* Быстрые проверки секретов остаются в PR; проверки безопасности исходного кода, рабочих зависимостей и
  workflow выполняются перед публикацией. Автоматические проверки Socket отключены.

## 0.5.1 — 10.10.2026 [#051--10102026]

### Изменено [#изменено-2]

* **Проект теперь распространяется по лицензии Apache License 2.0.** Условия — в `LICENSE`.

## 0.5.0 — 10.10.2026 [#050--10102026]

### Изменено — может сломать вызывающий код [#изменено--может-сломать-вызывающий-код-1]

* **Пакет называется `@wirecat/cli-memo`, а его репозиторий принадлежит WireCatLabs.** Используйте этот пакет
  для установки и обновлений.

## 0.4.0 — 09.10.2026 [#040--09102026]

### Изменено — может сломать скрипты [#изменено--может-сломать-скрипты-8]

* Общее хранилище больше не держит копии для старых версий (версия хранилища 28, cli-messaging 0.212.0).
  Заметки, связи и сущности, записанные до переработки заметок, один раз копируются в новые таблицы во время
  обновления. После него старый tg, max или memo отказывается открывать хранилище с сообщением "upgrade this
  tool" — обновляйте все три вместе.

## 0.3.0 — 09.10.2026 [#030--09102026]

### Изменено — может сломать скрипты [#изменено--может-сломать-скрипты-9]

* Команды поиска теперь находятся под `search all|messages|mail|notes` и используют общие сервисы и
  ранжирование. `search all` возвращает типизированные совпадения по источникам и отдельный список `tasks` со
  связанной открытой работой. Старые пути `memo search <query>` и `memo notes search` удалены без псевдонимов.
  Используйте `search notes --type` вместо `notes search --source`; `--all` и `--note-text` больше не нужны.

* Закреплена общая SDK 0.211.0 вместе с Telegram/MAX. Источники задач из старых скопированных заметок переходят
  на собственные ID заметок без изменения ID задач, области аккаунта и закрытых статусов. Перед открытием общего
  хранилища владельца обновите согласованные инструменты вместе.

### Исправлено [#исправлено-7]

* `search all` находит сообщения в хранилище, которое ещё не записало аккаунт, от имени которого он работает, и
  обращается к серверу мессенджера так же, как `search messages`. `search mail` без импортированной почты
  возвращает пустой результат с пояснением. Заметки, найденные по смыслу, должны быть так же похожи на запрос, как
  уже должны быть чаты, поэтому редкое слово больше не возвращает все заметки.

### Что нового [#что-нового-9]

* `tasks add note:<id> --provider <provider> --account <account>` создаёт задачи из собственных заметок —
  файловых или внутренних. Списки показывают текущий предпросмотр заметки; удалённые заметки оставляют задачи
  нетронутыми. Подтверждённые связи «заметка о человеке» и явные назначения входят в контекст человека.
  Общий поиск включает задачи, заметка которых совпадает. Повторное создание использует существующую задачу
  того же вида, в том числе закрытую.

## 0.2.1 — 08.10.2026 [#021--08102026]

* Закреплена cli-messaging 0.205.0 для соответствия согласованному выпуску Telegram/MAX. Собственные заметки,
  ссылки и ссылки на источники сохраняют ту же схему и поведение.

## 0.2.0 — 08.10.2026 [#020--08102026]

Заметки — отдельные записи в общем хранилище (cli-messaging 0.202.0, версии хранилища 25–27), а не сообщения
провайдера `notes`.

* `memo folders add|attach|list`: папка заметок получает id из хранилища, а настройки каждого компьютера
  привязывают её к пути и формату на этом компьютере (`obsidian` или `markdown`). `list` показывает папки,
  которые хранилище знает с другого компьютера. Папка, импортированная до версии хранилища 25, переносит свой
  путь в настройки при первом запуске. Импорт отказывается работать с папкой без id, а не придумывает его.

* Импорт записывает заметки, их ссылки и теги из файлов. Ссылка на заметку, которая есть в папке один раз,
  сохраняется по id заметки; имя, которого нет ни у одной заметки, остаётся как написано и указывает на человека,
  как только появится человек с таким именем, псевдонимом или именем пользователя. Перемещённый файл сохраняет
  свой id, ссылки и теги. Тег, добавленный вами, остаётся, когда файл перестаёт его указывать. То, что компьютер
  в последний раз видел о
  каждом файле, хранится в папке состояния memo, и открывается только изменённый файл — в том числе чтобы найти
  `memo-id`, который отмечает файл, экспортированный memo, и исключает его из импорта.

* `memo notes add|edit|remove|list|show|export` для заметок, написанных здесь, о сообщениях, чатах, контактах,
  людях, сущностях, задачах и других заметках; `--export [dir]` и `notes.export` записывают их как файлы, которые
  содержат `memo-id` и после правки никогда не перезаписываются.

* `memo notes about`, `memo context` и `memo note` читают сохранённые ссылки: заметки о человеке, заметки со
  ссылкой на него, заметки со ссылкой на заметку о нём. Полное имя, найденное в обычном тексте заметки, больше не
  показывается как догадка. Старый `people-notes.json` один раз переносится в хранилище как ссылки `about`.

* `memo notes search` работает на общем индексе заметок: слова и основы слов, язык запросов сообщений,
  `--exact`, `--source`, `--folder` по пути или id, а также поиск по смыслу, когда скачана e5-small: `memo
  import` и `memo notes import` создают векторы для заметок (`--no-embed`, `notes.embed: false`). Каждое
  совпадение говорит, чем оно найдено (`foundBy`), и называет человека, на которого ссылается найденная заметка.
  `memo search --all` охватывает заметки; `--note-text` также возвращает текст написанных заметок.

* Сущности и связи принадлежат владельцу: `entities` и `relationships add|list|remove|confirm`
  больше не принимают `--provider`/`--account`. `memo tags add --note <id>` ставит метку на заметку; `--person`,
  `--entity` и `--task` не требуют аккаунта. `--folder <id> [--path <subfolder>]` ставит метку на все заметки в
  папке или подпапке и заменяет `--chat` с `--provider notes`. `tags list` говорит, пришёл ли тег заметки из её
  файла.

* Заметки читаются в определённом формате: `obsidian` добавляет встроенные `#tags` и читает ссылки
  `[label](path.md)` помимо `[[wiki links]]`;
  `markdown` читает обычные ссылки Markdown. В обоих распознаются ссылки на `person:`, `msg:`, `note:`,
  `entity:`, `task:`, `chat:` и `contact:`.

* Открытые задачи и явные назначения задач из документов в контексте человека; tasks add/list/close
  используют общий сервис задач. Если подходит несколько аккаунтов, нужно выбрать один явно.

* Загрузка CSV/TSV, PDF, DOCX, XLSX, ODT/ODS, PPTX и EPUB через общее извлечение текста с сообщениями о
  необязательных движках и неподдерживаемых форматах, пределами для файла и текста, хешами содержимого и
  происхождением по страницам, строкам и ячейкам.

* Настраиваемый охват папок Gmail/IMAP, постоянные идентификаторы по Message-ID, вложения как источники текста и
  ограниченная индексация почты с возобновлением. Неполный список папки никогда не считается доказательством
  удаления; при изменённом наборе папок удаление пропускается.

* Метки основных людей, задач и сущностей, связи с организациями, семьёй и проектами, заданные вручную, общий
  поиск по выбранным источникам, а также наборы доказательств со ссылками и предложения модели с явным согласием
  на удалённую обработку.

* Постоянные локальные напоминания о задачах с квитанциями аренды, подтверждением получения, проверкой устаревших
  правок, откладыванием и отменой, а также автоматической отменой при закрытии задачи. Ничего не отправляется
  наружу, и системы-источники не изменяются.

* `memo tags add|remove|list`: локальные метки на импортированных заметках, письмах, сообщениях и папках или
  цепочках, которые адресуются по ID заметок и папок, ссылкам на сообщения или точной тройке
  провайдер/аккаунт/чат. Метки не зависят от регистра, общие с tg/MAX и не меняют исходные файлы и почтовые ящики;
  удалённые источники скрываются из списка.

* `memo notes search --tag <tag>` фильтрует результаты поиска по словам и по смыслу по общим правилам тегов,
  включая метки на папке заметки.

## 0.1.2 — 07.10.2026 [#012--07102026]

* cli-messaging 0.166.0, как в итоговых закреплённых версиях выпусков tg и max, включая защищённую подготовку
  чатов во время поиска и загрузки истории.

## 0.1.1 — 07.10.2026 [#011--07102026]

* cli-messaging 0.164.0, как в исходном коде tg и max: контекст человека теперь находит личные диалоги без
  записанных участников, возвращая последнее сообщение в каждую сторону и личные сообщения в существующих
  хранилищах Telegram.

* Процесс выпуска может выполнить пробный запуск для версии, которая уже есть в npm, чтобы проверять сборку
  пакета между выпусками. Публикация по-прежнему отказывается выпускать существующую версию.

## 0.1.0 — 06.10.2026 [#010--06102026]

* Команда `memo` с `--version` и `--help`.
* `memo notes about <name>` (раньше `memo notes <name>`): заметки о человеке, заметки со ссылкой на него и слабые
  упоминания по простому имени из папок Markdown, заданных через `--folder` или `notes.folders` в настройках.
* `memo mail import`: вся почта (All Mail) аккаунта Gmail в общее хранилище сообщений через Himalaya, только
  чтение; id цепочек и писем Gmail, возобновление с `--max`, а удаление в источнике стирает сохранённый текст.
* `memo note`: заметка о человеке, по одной на каждого человека общего хранилища. Связывание личностей — это
  `tg|max contacts link`, а не команда memo.
* `memo notes import`: заметки Markdown и текстовые заметки в общее хранилище как провайдер `notes`; правки
  сохраняются как версии, удалённые заметки теряют текст. `memo notes search <text>`: заметки по словам, с людьми,
  на которых они ссылаются, и известными людьми, чьё полное имя в них упоминается (догадка).
* `notes.ignore` в настройках и `--ignore`: файлы, папки или маски, которые никогда не читаются и не сохраняются.
* `memo import`: заметки и почта за один запуск, по изменениям: для заметок в хранилище ведётся список размеров,
  времени изменения и хешей содержимого, поэтому неизменённые файлы не читаются, а одинаковые не сохраняются.
  Блокировка не даёт запустить два импорта одновременно; сбой одного источника не останавливает остальные.
* `memo auto on [--every 5m] | off | status`: пользовательский таймер systemd для `memo import`. Источником
  служит `auto: { enabled, every }` в настройках; таймер подхватывает ручную правку при следующем запуске.
* `memo context <messenger>:<person>`: один ответ о человеке — контекст человека из cli-messaging по всем
  связанным личностям (включая почту), заметка о нём и заметки, где он назван, с указанием того, что не было
  прочитано и почему. Требует cli-messaging 0.150.0, которую закрепляют tg и max.
* Заметки превращаются в векторы для поиска по смыслу: `memo import` и `memo notes import` обрабатывают каждую
  изменённую папку и создают векторы для новых частей локальной моделью e5-small, не больше 600 за запуск,
  продолжая в следующем; `--no-embed` и `notes.embed: false` отключают это. `memo notes search` ранжирует
  одновременно по смыслу и по словам (`by` у каждого совпадения) и переходит на поиск по словам, если модели нет.
* cli-messaging 0.153.0, как закрепляют tg и max: длинная заметка или письмо превращается в векторы
  перекрывающимися частями, целиком.
