История изменений
Все значимые релизы trip2g. Самый свежий — сверху. Для каждого изменения указано
Что / Зачем / Как использовать, чтобы оператор или администратор мог решить,
стоит ли обновляться и как начать пользоваться функцией.
Теги старее v0.2.0 доступны только в истории git.
v0.5.1 — 2026-05-27
Секреты вебхуков: зашифрованные данные в теле доставки (0b72acf2)
- Что. У каждого change-вебхука и cron-вебхука в админке появился раздел Секреты. Добавляйте именованные пары ключ-значение (например
auth_token,api_key) — они хранятся зашифрованными и отправляются в каждом запросе доставки в полеpayload.secrets. Получатель вебхука читает их без дополнительных вызовов API. - Зачем. Cron-вебхуки — основа системы плагинов. Плагин — это веб-сервер (или serverless-функция), который получает payload с временным API-токеном и обрабатывает его, как правило в фоне, а затем патчит хранилище, когда готов. Плагины чаще всего stateless: им некуда безопасно хранить собственные учётные данные. Секреты решают эту проблему — trip2g хранит их зашифрованными и доставляет при каждом вызове, так что плагин остаётся credential-free на своей стороне. Если плагину нужно больше времени, он использует API-токен для асинхронных обновлений; секреты дают ему всё остальное для работы с внешними сервисами.
- Как. Откройте Admin → Change Webhooks (или Cron Webhooks) → выберите вебхук → прокрутите до раздела Секреты. Введите название и значение, нажмите Add Secret. Чтобы обновить значение — введите его в поле строки и нажмите Save. Чтобы удалить — нажмите иконку корзины (подтверждение на второй клик). Секреты появляются в теле доставки в виде
{ "secrets": { "auth_token": "...", "api_key": "..." } }.
v0.5.0 — 2026-05-26
Редактор файлов в браузере (для администраторов)
- Что. Администратор теперь может отредактировать любую страницу прямо на сайте. Иконка редактора появилась в правом верхнем углу админки и рядом с поиском на каждой странице. Откройте редактор, чтобы просмотреть все загруженные файлы деревом папок, открыть и отредактировать любой и сохранить. Файл можно откатить к прошлой версии.
- Зачем. Поправить опечатку или обновить страницу за секунды — без Obsidian и повторной синхронизации.
- Как. Нажмите иконку редактора (только админы). Заметка текущей страницы открывается сразу; любой другой файл — в дереве слева. Правки хранятся в браузере, пока не нажмёте «Сохранить»; панель версий позволяет загрузить и восстановить старую версию.
Публичный хаб курируемых баз
- Что. Раздел
hub/с двуязычным индексом баз знаний, доступных через хаб (первая запись — «Журнал Ника Сенина», отфильтрованные кейсы Code with Claude 2026). - Зачем. Просматриваемая публичная точка входа к федеративным базам.
- Как. См.
docs/ru/hub/_index.md; добавьте свою черезdocs/ru/hub/_create.md.
v0.4.1 — 2026-05-25
MCP Federation — один хаб поверх многих баз знаний
- Что. Ваш инстанс может работать как федеративный хаб. KB-заметка (заметка с
mcp_federation_kb_urlво frontmatter) регистрирует другую MCP-совместимую базу, аfederated_search/federated_similar/federated_note_htmlобращаются ко всем сразу через ваш единственный MCP-эндпоинт. Публичным базам аутентификация не нужна; приватные пиры используют общий HMAC-секрет. - Зачем. Один эндпоинт, одна точка авторизации — агент ищет по вашим заметкам, инстансам партнёров и внешним адаптерам (GitHub, Telegram) одновременно, без правки
.mcp.json. - Как.
- Документация:
docs/en/user/federation.md,docs/ru/user/federation.md - Публичная база: создайте заметку с
mcp_federation_kb_url(+ опциональноmcp_federation_kb_id) иfree: true. - Приватный пир: обменяйтесь федеративным секретом в Админка → Federation, затем добавьте KB-заметку.
- Документация:
Файлы Canvas (Base и Excalidraw — позже)
- Что. Файлы
.canvasсинхронизируются и рендерятся..baseи.excalidrawтоже принимаются синхронизацией, но их рендеринг появится позже — пока вместо сломанной страницы показывается понятная заглушка. - Зачем. Vault-ы с Canvas работают уже сейчас; Base и Excalidraw синхронизируются без ошибок, пока готовится полная поддержка.
- Как. Просто синхронизируйте — плагин и CLI принимают все три расширения; Canvas рендерится уже сейчас.
Telegram-боты навигации и canvas
- Что. Бот-браузер по wikilink-ам и навигация на основе canvas поверх Telegram business connection.
- Зачем. Читатели могут ходить по графу вашего vault прямо из Telegram.
- Как. См. документацию по Telegram; включите на business connection.
Админка и конфиг
- Что. GraphQL API для истории версий заметки; фильтр отправок форм в админке (статус / дата / обработано); переменные окружения принимают префикс
TRIP2G_(неизвестные — с предупреждением). - Зачем. Смотреть и откатывать контекст, разбирать отправки и безопаснее настраивать self-hosted инстансы.
- Как. Панели админки; добавьте префикс
TRIP2G_к любой переменной окружения.
Плагин синхронизации Obsidian + CLI
- Что.
- Принимает файлы
.canvas,.base,.excalidraw. - Показывает детали GraphQL-ошибки при неудачном push (больше нет «тихих» сбоев).
- Новый флаг
--exclude <glob>(можно повторять). Исключённые пути никогда не пушатся; если они уже есть на сервере — скрываются. Простое имя вродеdevсовпадает с этой папкой и всем внутри неё. По умолчанию ничего не исключается — грузится всё.
- Принимает файлы
- Зачем. Держать тестовые/демо или внутренние папки (например,
dev/,demo/) в репозитории, но вне опубликованного сайта — и обратимо скрывать их на сервере. - Как.
trip2g-sync ./docs --exclude dev --exclude demo. Если вернуть путь обратно — он снова публикуется и автоматически перестаёт быть скрытым.
v0.4.0 — 2026-05-21
Мутация updateNotes — атомарный find/replace по заметкам
- Что. Новая GraphQL-мутация патчит несколько заметок одной транзакцией через
PathMapвида{path → [{find, replace}]}. - Зачем. Позволяет внешним инструментам, агентам и скриптам согласованно править весь vault без отдельных запросов на каждую заметку. Никаких частичных состояний, если одна замена не прошла.
- Как.
- Документация:
docs/en/user/update_notes.md,docs/ru/user/update_notes.md - Пример:
updateNotes(input: { pathMap: { "notes/post.md": [{ find: "old", replace: "new" }] } }). - End-to-end спецификация:
e2e/updatenotes/*(см. коммитtest(e2e): add updateNotes e2e spec and demo fixture).
- Документация:
Forms admin — обработка отправок формы
- Что. Новая мутация
markFormSubmitProcessedи поляprocessedу submit-ов; админ помечает отправку как обработанную, UI по умолчанию скрывает обработанные. - Зачем. Замыкает работу с формами внутри админки — не нужно дёргать внешние сервисы.
- Как.
- Документация:
docs/en/user/forms.md,docs/ru/user/forms.md - Dev-справка:
docs/dev/forms.md - Frontmatter
can_submit/success_urlзадаёт условия отправки и страницу-подтверждение.
- Документация:
Smoke-render шаблонов — runtime-ошибки Jet видны сразу при загрузке
- Что. При загрузке заметок каждый успешно распарсенный Jet-шаблон выполняется на первых 10 заметках, которые ссылаются на него через frontmatter
layout:. Ошибки и паники рендера превращаются вNoteWarningна шаблоне. - Зачем. Раньше шаблон, который парсится, но падает на рендере (например,
{{ note.NoSuchField }}), ломался только при открытии страницы в браузере. Агент, делающий push-notes, об этом не знал. Smoke-render переносит ошибку на этап загрузки — варнинги попадают в тот же канал, что и parse-ошибки, и видны черезpushNotes/ админский список шаблонов без браузера. - Как. Автоматически, без флагов. После синхронизации ищите в варнингах шаблона
smoke render error/smoke render panic. Шаблоны безView(parse-ошибка) и без ссылающихся на них заметок пропускаются.
Отладка шаблонов — Meta.Debug() и глобальный debug()
- Что. В Jet-шаблонах:
{{ Meta.Debug() }}выводит метаданные заметки; глобальный{{ debug(<expr>) }}через reflection печатает тип, значение и набор методов любого выражения. - Зачем. Убирает цикл «угадай, что видит шаблон» при работе с layout-ами и компонентами.
- Как.
- Документация:
docs/en/user/jet.md,docs/ru/user/jet.md(раздел про отладку). - Пример:
{{ debug(note.M()) }}или{{ debug(note.Title) }}.
- Документация:
CLI renderlayout.py — рендер шаблона на заметке из терминала
- Что. Отдельный скрипт
scripts/renderlayout.pyплюс skillcheck_templatesдля агента. - Зачем. Дает preview шаблонов и воспроизведение проблем без браузера — удобно в CI и при правке
_layouts/. - Как.
- Документация:
docs/en/user/renderlayout.md,docs/ru/user/renderlayout.md - Skill:
docs/skills/check_templates.md
- Документация:
Исправления
layoutloader: nil-guard дляYieldNode.Parameters; ID шаблона в preview нормализуется как в продакшене.- Preview
renderlayout: autoimport, проводкаyield_blocksиhtmlInjectionsсовпадают с продакшеном. renderpreviewпарсит YAML-frontmatter изnote.srcкак реальный загрузчик.templateviews.GetStringsвозвращает пустой слайс вместоnil(нет сюрпризов при итерации в шаблоне).
Документация и chore
- Dev-справка по Forms + roadmap, BEM rendering skill, секция про
debug()в Jet. - Lint чист в
updatenotes,layoutloader,noteloader.
v0.3.1 — исторический (backfill)
Формы в заметках (первая версия)
- Что. Формы встраиваются в vault-заметки через frontmatter и рендерятся стандартным шаблоном. Поддержка нескольких форм в одной заметке; submit хранит
note_version_idиform_id. - Зачем. Опубликованный сайт собирает ввод (регистрации, контакты, опросы) без внешних сервисов.
- Как. См.
docs/dev/forms.mdиdocs/{en,ru}/user/forms.md.
HTML-инъекции в layout-ах
- Что. Кастомные HTML-инъекции (placement
head/body_end) теперь применяются и внутри Jet-layout-ов, не только в стандартном шаблоне. - Зачем. Аналитика, кастомные скрипты и SEO-теги работают и на страницах с кастомными layout-ами.
- Как. Админка → HTML injections, placement
headилиbody_end.
Переработанный переключатель языка
- Что. Dropdown с полными нативными названиями языков и нормализацией; флаг US для английского; многоязычные документы.
- Зачем. Мультиязычные сайты выглядят корректно и правильно выбирают альтернативу по языку.
- Как. Frontmatter
lang:/lang_redirect:; переключатель рендерится автоматически.
Preview-эндпоинт renderlayout (/_system/renderlayout)
- Что. Админский эндпоинт для рендера произвольного layout-а на заметке.
- Зачем. Редактор / IDE-интеграции могут показывать живой preview изменений в
_layouts/*. - Как. Спецификация:
docs/superpowers/specs/2026-05-10-renderlayout-endpoint-design.md.
Админка: включение/отключение API-ключей
- Что. GraphQL-мутация и кнопка в админке для переключения состояния API-ключа; автоматическая чистка логов API-ключей через 90 дней.
- Зачем. Можно приостановить ключ без его ротации; логи не разрастаются.
- Как. Админка → панель API keys.
Onboarding vault: конфиги для агентов
- Что. Скачиваемый онбординг-vault теперь содержит
.mcp.json,codex.json, antigravity-конфиг иAGENTS.md. - Зачем. Drop-in настройка AI-агентов над Obsidian-vault без ручной проводки.
- Как. Скачайте онбординг-vault, конфиги уже внутри.
Cronjob-ы заблокированы для редактирования по умолчанию
- Что. Редактирование cronjob-ов выключено, пока не передан
--cronjobs-allow-edit. - Зачем. Снижает риск ошибок в общих / production-развёртываниях.
- Как. Добавьте флаг в стартовый скрипт, если правда нужно редактировать cron через админку.
Заметные исправления
- Backlinks / similar notes исключают системные заметки (пути с
_). - TOC-якоря снова работают (id у заголовков попадает в HTML).
- Mesh template:
yield_blocksперенесён в<head>с документированными ограничениями.
v0.3.0 — исторический (backfill)
Документированный self-hosted деплой
- Что. End-to-end гайд по запуску trip2g на своей инфраструктуре.
- Зачем. Воспроизводимая установка вне хостинга.
- Как.
docs/{en,ru}/user/hosting.mdи связанные документы.
Sign-in wall + капча (Auth phase 1A)
- Что. Требование входа на конкретные заметки, капча на auth-флоу, усиленные сессии.
- Зачем. Закрывает приватный контент; снижает абьюз публичных auth-эндпоинтов.
- Как. Frontmatter / subgraph
require_signin; стандартный шаблон рендерит стену.
Vault-секции layout-а
- Что. Header / footer / sidebar могут браться из vault-заметок.
- Зачем. Авторы правят «обвязку» так же, как контент — без хаков в шаблонах.
- Как. Размещайте заметки по конвенциональным путям (см.
docs/dev/default_template.md).
Vault-патчи frontmatter
- Что. Markdown-файлы в vault могут декларировать патчи, которые применяются к frontmatter других заметок при загрузке.
- Зачем. Массово тегировать, ставить layout или нормализовать метаданные без правки каждой заметки.
- Как.
docs/dev/frontmatter_patches.md.
Поиск: эмбеддинги bge-m3 + микросервис эмбеддингов
- Что. Переход на модель
bge-m3; отдельный сервис embedding-server; топ-K векторного поиска сmatchOrigin. - Зачем. Лучше семантический поиск и развязка embedding-нагрузки.
- Как. Настройте эндпоинт эмбеддингов; векторный поиск доступен через существующие search-API.
Улучшения MCP
- Что. Результаты MCP-поиска адресуемы и самоописываемы, открываются как сфокусированный chunk-read; текстовые хиты маппятся в ближайшие чанки.
- Зачем. RAG-клиенты получают богаче и проще навигируемые результаты.
- Как. Подключайтесь по MCP; для проводки клиента см.
docs/user/ai-agent-docs-setup.md(если есть в вашем vault).
«Читать в Telegram» + Telegram UX
- Что. Кнопка на странице заметки; для опубликованных постов используются публичные TG-ссылки; UTM-теги на трафике из Telegram.
- Зачем. Замыкает связь между публикациями на сайте и аудиторией Telegram.
- Как. Автоматически для постов, опубликованных через TG; схема UTM описана в
docs/superpowers/specs/.
CLI exporttgchannel
- Что. Новая CLI-команда для экспорта Telegram-канала в Obsidian-markdown.
- Зачем. Один шаг от существующего канала к vault-у.
- Как.
go run ./cmd/exporttgchannel --help.
Заметные исправления
- Настраиваемая нормализация URL с 301-редиректами для альтернативных вариантов.
- Аудио рендерится как
<audio>, документы — как ссылки. - Очередь: устранена утечка горутин при двойном старте и deadlock при остановке.
- Wikilink
[[slug#anchor]]: якорь отрезается до lookup-а заметки. - Все варнинги
golangci-lintисправлены, добавлен pre-push хук.