Пилю Nitinol. Это локальный заметочник, где кроме заметок живут задачи, код, логи, схемы и связи между документов. С июля вышло больше десяти версий, последняя, 0.24.0, появилась 3 ноября 2026 года. Дальше расскажу, что приложение сейчас умеет и какие планы развития.

Главное окно Nitinol

Главное окно Nitinol

Сайт и установщики: nitinol.app. Есть сборки под Windows, macOS на Apple Silicon и Linux (.deb и AppImage). Приложение бесплатное, и для себя, и для работы. Исходный код закрыт, по крайней мере пока. Это публичная бета, известные проблемы собраны на отдельной странице.

Отдельное спасибо всем, кто присылал отзывы и продолжает пользоваться Nitinol. Телеметрии в приложении нет, поэтому знаю я немного: сервер обновлений видит примерно 50 разных адресов в неделю. Значит, столько людей его как минимум запускают, а больше узнать нельзя. Меня безмерно радует, что мой софт кому-то заходит и приносит пользу, это вдохновляет развивать проект.

Оглавление

Зачем ещё один заметочник

Говорят что в аду есть отдельный котел для вайбкодеров которые делают заметочники на Electron, чтож, в нем пополнение)

Больше десяти лет мои записи расползались по Notepad++, Trello, OneNote и Obsidian. Эту историю я рассказывал в первой части, а во второй объяснял, почему данные лежат в базе и почему поиск обходится без RAG. С тех пор у меня три требования, и они не менялись. Поиск должен находить, в том числе по-русски и по коду. Всё должно работать, даже если я ничего не раскладываю по полочкам: дисциплина за эти годы ко мне так и не пришла. Данные храняться локально, бекапы там где хочу.

Чем Nitinol отличается от привычных заметочников. Аккаунт не нужен, сервер тоже, всё работает офлайн. Плагинов нет, всё встроено(это осознанный выбор). Данные лежат в SQLite, а не в папке с Markdown (почему так, расскажу ниже). И есть инструменты для логов и кода, которых в заметочниках обычно нет.

Ложка хороша к обеду

Пользователей у меня пока немного. Судя по отзывам, некоторым хватает одного спейса, десятка проектов и обычных текстовых заметок. Такому человеку не нужно разбираться с доской, схемами или ассистентом, и мне это нравится. Под такой сценарий приложение и сделано.

По-умному это называется прогрессивным раскрытием, по-простому «ложка хороша к обеду». Nitinol не вываливает на человека сразу всё, что умеет. Функция появляется тогда, когда она нужна, но найти её можно всегда: кнопкой, через меню или сочетанием клавиш. Стараюсь применять этот принцип везде, где возможно, чтобы когнитивно не перегружать пользователя.

Заметка не притворяется задачей. Пока страница не на доске, у неё нет статуса, срока и приоритета. Добавил на доску — справа появились эти поля. Страница при этом та же самая, копия не создаётся.

С командами так же. В Ctrl+K после > открывается список команд. «Форматировать JSON» и «Минифицировать JSON» в нём есть, только когда открыт JSON. В списке покупок они не нужны, и там их нет.

И с мелочами так же: «Повторять» появляется у задачи только после того, как задан срок.

Захват за тридцать секунд

Этим я пользуюсь достаточно часто.

Ctrl+Shift+Space (на macOS ⌘⇧Space, сочетание можно поменять в настройках) открывает маленькую карточку поверх любого окна. Первая строка станет заголовком, Enter сохраняет запись в проект. Проект выбирается тут же: Tab переключает проекты, Alt+↓ открывает список с поиском. Если случайно закрыть карточку, черновик не пропадёт.

Карточка быстрого захвата: первая строка станет заголовком, проект внизу

Карточка быстрого захвата: первая строка станет заголовком, проект внизу

Страницы

Страницы бывают двух видов: «Документ» (текст с оформлением, внутри ProseMirror) и «Простой текст» (внутри CodeMirror 6). Лежат они в одном дереве проекта вместе со схемами, в любом порядке.

Документ: таблица, чек-лист и блок кода

Документ: таблица, чек-лист и блок кода

Что есть в документе:

  • меню по /, справа в нём подсказаны markdown-сокращения (#, -, 1., [], >);

  • таблицы: можно закрепить шапку и первый столбец, объединить ячейки, включить разряды в числах. Скопированная таблица вставляется в Excel, Word и почту таблицей. С этим пришлось повозиться: Excel пересчитывает пиксели по DPI экрана, и размеры в итоге заданы в пунктах;

  • картинки вставляются в своём размере, их можно тянуть мышью, есть «Оригинальный размер»;

  • проверка правописания работает без сети, есть свой словарь;

  • тумблер «Типографика при наборе» ставит «ёлочки», тире и многоточия (по умолчанию выключен).

У папки может быть обложка. Это страница или схема, которая открывается по клику на папку (по сути, получаются подчинённые страницы). Имя папки и заголовок обложки совпадают. Так у раздела появляется своя страница, а вложенные лежат прямо под ней.

Код, логи и файлы с диска

Кусок кода, лог или конфиг здесь обычная страница. Её находит поиск, на неё можно сослаться из задачи. У страниц простого текста есть свои инструменты:

  • подсветка синтаксиса, в том числе PowerShell и BAT/CMD;

  • фильтр строк, как в grep;

  • форматирование и сжатие JSON и XML;

  • расшифровка выделенного: JWT, Base64, epoch, URL-encoding. Выделил токен в логе, и рядом открылся его JSON с подсветкой и поиском;

  • несколько курсоров, сортировка строк и удаление дублей.

Фильтр логов: уровни и grep по регулярке, остальные строки приглушены

Фильтр логов: уровни и grep по регулярке, остальные строки приглушены

Выделил токен в логе — «Инструменты → Декодировать» раскрывает JWT

Выделил токен в логе — «Инструменты → Декодировать» раскрывает JWT

Бывают файлы, которые не хочется тащить в заметки. Ctrl+O открывает такой файл вкладкой, копия в базе не создаётся. Обычный текстовый файл в UTF-8 можно править, Ctrl+S сохраняет прямо в него. Несохранённые правки не теряются: после перезапуска вкладка вернётся вместе с ними. Открытые файлы собираются в сайдбаре в проекте «Файлы с диска». Он есть только на этом устройстве, и в него можно бросить целую папку из проводника. Тут я пытаюсь отучиться вести заметки в текстовых редакторах типа Notepad++)

Файл с диска открыт вкладкой: правка в 9-й строке ещё не сохранена, внизу путь, кодировка и проверка YAML

Файл с диска открыт вкладкой: правка в 9-й строке ещё не сохранена, внизу путь, кодировка и проверка YAML

У вкладки файла есть «Сравнить с файлом на диске» и «Версии файла…». В версиях лежит то, что было в файле при прошлых сохранениях, к любой можно откатиться.

Поиск

Ctrl+K ищет по страницам, коду, задачам и схемам. В каждом результате виден кусок текста с совпадением. Клик открывает страницу сразу на найденном месте и подсвечивает его.

Ctrl+K: результаты из разных проектов с фрагментом совпадения

Ctrl+K: результаты из разных проектов с фрагментом совпадения

Как устроен поиск, я подробно разбирал во второй части, здесь коротко. Это полнотекстовый поиск FTS5 в той же SQLite. Слова приводятся к основе (Snowball для русского, Портер для английского), поэтому «системы» находят «систему». parseConfig находится ещё и по parse, и по config. Чем ближе друг к другу слова запроса в тексте, тем выше результат. Есть фильтры по типу, дате и запертости (type:, before:, after:, is:locked).

Файлы из «Файлов с диска», кроме «Недавних», ищутся по имени, а файлы UTF-8 до 5 МБ ещё и по содержимому.

Доска и календарь

Карточка на доске и есть страница задачи. Перетащил в другую колонку, и статус поменялся. Перетащил внутри колонки, и поменялся порядок. У каждого спейса свой набор колонок, лишние в проекте можно спрятать. Готовые задачи по умолчанию через неделю скрываются с доски (срок настраивается).

Доска: карточка — это страница задачи

Доска: карточка — это страница задачи

Задача с датой сама появляется в календаре (есть месяц, неделя и день). Перетащил событие, и срок сразу поменялся, а рядом появилась кнопка «Отменить». У повторяющихся задач есть «Отметить всю серию выполненной», а напоминание можно «Отложить» на 10 минут, на час или до 09:00 завтра.

Календарь: задачи с датой встают сами

Календарь: задачи с датой встают сами

Схемы

Схемы рисуются на холсте Excalidraw. Справа панель с наборами фигур: основные, блок-схема, C4, BPMN, базы данных, архитектура, сеть. Фигуры ищутся по названиям и синонимам. У выделенной фигуры есть точки связи: кликнул, и рядом встала копия со стрелкой, протянул к другой фигуре, и они соединились. К элементу схемы можно привязать ссылку на страницу.

Холст Excalidraw с открытой панелью фигур

Холст Excalidraw с открытой панелью фигур

Схему можно описать и текстом, для этого в заметке есть блок Mermaid.

Связи, встраивание, спейсы, история версий

Связи. Страницы, задачи и схемы ссылаются друг на друга. Кнопка связей в шапке страницы показывает их графом или списком. В списке два раздела: «Ссылается на» (куда ведёт эта страница) и «Упоминают» (кто ссылается на неё). Можно отфильтровать схемы, заметки или задачи.

Граф связей страницы

Граф связей страницы

Те же связи списком: куда ссылается страница и кто её упоминает

Те же связи списком: куда ссылается страница и кто её упоминает

Встраивание. Через «Вставить» в документ можно встроить другую страницу или схему. Встроенная страница показывается в рамке, править её тут нельзя, только там, где она лежит. Поэтому одна страница не бывает открыта в двух редакторах сразу, и правки не затирают друг друга. Схема встраивается картинкой, двойной клик открывает холст.

В заметку встроены схема с холста и страница docker-compose.yml

В заметку встроены схема с холста и страница docker-compose.yml

Спейсы. Спейсы нужны, чтобы рабочее не смешивалось с личным. Доска, календарь, поиск и ассистент работают внутри выбранного спейса (поиск при желании можно расширить на все). Переключатель стоит над деревом проектов. Новый проект создаётся в текущем спейсе, набор колонок доски у каждого спейса свой.

Переключатель спейсов над деревом проектов

Переключатель спейсов над деревом проектов

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

Ассистент и MCP

Ассистент видит ваши записи, но сам ничего не меняет, только предлагает. Он может создать задачу или заметку, поменять срок, статус или метки, поправить текст страницы простого текста. Каждое действие приходит карточкой и выполняется только после кнопки «Создать» или «Изменить». Схему он создаёт только пустую, рисовать придётся самому. Работает на вашем ключе: OpenAI, Anthropic, DeepSeek, OpenRouter, GigaChat, YandexGPT, любой OpenAI-совместимый сервер (LM Studio, vLLM) или локальная модель через Ollama.

Второй способ подключить ИИ — встроенный MCP-сервер. Через него Claude Code, Codex и другие агенты читают заметки. С 0.24 они могут и писать, но только если включить тумблер «Разрешить запись». Новые заметки и задачи агент создаёт сам, в разрешённых проектах. А чтобы изменить существующее, он должен спросить: в окне появляется «Агент просит правку», и без подтверждения ничего не поменяется.

Карточка MCP-сервера в настройках «Доступ извне»

Карточка MCP-сервера в настройках «Доступ извне»

Шифрование, экспорт, синхронизация

Шифрование по умолчанию выключено, чтобы первый запуск не начинался с придумывания пароля. Включается в настройках: задаёте пароль и получаете фразу восстановления из 12 слов. Она вернёт доступ, если пароль забудется.

Шифруются база и вложения. Настройки, логи и то, что вы сами экспортировали, остаются открытыми. Файлы с диска тоже не шифруются и лежат там, где лежали. Можно включить блокировку, когда за компьютером никого нет; замок закроется только после того, как все правки записаны. Отдельную страницу можно запереть, тогда заголовок виден, а текст нет. Текст запертой страницы не доходит ни до интерфейса, ни до поиска, ни до ассистента.

Настройки → Защита: пароль, автоблокировка, фраза восстановления

Настройки → Защита: пароль, автоблокировка, фраза восстановления

Тут возможно спорное решение: данные хранятся в SQLite, а не в папке с .md-файлами. Подробно я писал об этом во второй части. Главный довод такой: кучу отдельных файлов зашифровать можно, но тогда теряется смысл файлов, а индекс поиска всё равно придётся прятать. Зато данные можно забрать несколькими способами(если надоел Nitinol и хочется сбежать прихватив все даные):

  • ZIP-экспорт всего или одного проекта (внутри JSON и вложения), из него же можно восстановиться;

  • экспорт в Markdown, всего или одного проекта, с папками;

  • автономный архив: страницы, вложения и схемы в виде HTML, который открывается в браузере без Nitinol, ссылки работают;

  • автоматический бэкап с восстановлением;

  • в обратную сторону работает импорт папки с заметками (Obsidian, Joplin или просто .md и .txt), Evernote (.enex) и Notion.

Синхронизация между своими устройствами бесплатна. Она идёт через ваше хранилище, моего сервера там нет:

  • облачная папка: OneDrive, Google Диск, Яндекс Диск, Dropbox или iCloud; мастер настройки сам найдёт папку облака на компьютере, а если не найдёт, можно указать любую папку, которую облако синхронизирует;

  • WebDAV;

  • S3-совместимое хранилище: AWS S3, Cloudflare R2, Backblaze B2, Wasabi или свой MinIO либо Garage.

В хранилище попадают только зашифрованные данные. Исключение одно: если вы сами включили «Ключ флота в облаке», ключ лежит рядом с данными. Так проще восстановиться, но приватности меньше. Новое устройство можно подключить заявкой (её подтверждают на уже подключённом устройстве, сверив короткий код) или фразой синхронизации из 8 слов (это отдельная фраза, не та, что от шифрования). Если одну страницу по-разному поправили на двух устройствах, остаётся более поздняя правка. Вторая не пропадает, она лежит в «Конфликтах синхронизации», и версии можно сравнить. Если на другом компьютере спешат часы, приложение об этом предупредит: правки с такого устройства могут затереть ваши.

Настройки → Синхронизация: первый компьютер или подключение к уже настроенной

Настройки → Синхронизация: первый компьютер или подключение к уже настроенной

Техническая часть

  • Electron 43, React 18, TypeScript, Tailwind;

  • ProseMirror для документов, CodeMirror 6 для кода и простого текста;

  • Excalidraw для холста, Mermaid в песочнице, FullCalendar, React Flow для графа;

  • SQLite с шифрованием (better-sqlite3-multiple-ciphers) в ней лежат все данные, FTS5 для поиска;

  • интерфейс не имеет доступа к Node и общается с главным процессом только через типизированный IPC, данные каждого канала проверяются Zod;

  • обновления подписаны Ed25519, сборка для macOS подписана и нотаризована;

  • Vitest, Playwright для e2e.

Немного цифр на 10 ноября 2026 года: чуть больше 300 тысяч строк TypeScript без тестов, больше двух тысяч файлов с тестами, пять тысяч с лишним коммитов с 7 июня. Да, заметочник по-прежнему написан навайбкожен. Код пишут Claude и Codex по конвейеру, про который я рассказывал в двух статьях: «Покажи мне свой харнесс» и «Обвязка вокруг модели».

Разработка с LLM стала немного странной, но такова реальность)

Разработка с LLM стала немного странной, но такова реальность)

Установщик для Windows весит 132 МБ. Внутри Chromium и Node, а сверху редакторы, календарь, холст и SQLite с шифрованием.

Что дальше

Android, затем iOS. На телефоне будет полноценное приложение, а не только «быстро записать на ходу». Доска, календарь, поиск и ассистент работают со всеми данными, поэтому на телефоне будет лежать вся база. Синхронизироваться он будет так же, как второй компьютер. Выпущу в Google Play и в RuStore. Сначала будет закрытый тест в Google Play, и первыми позову тех, кто уже пользуется версией для компьютера. Записаться можно будет на сайте и через форму обратной связи в приложении, когда до теста останется немного.

Платный синк в дополнение к бесплатному. Бесплатная синхронизация через облачную папку, WebDAV и S3 остаётся и никуда не денется. Платный «Синк Nitinol» нужен тем, кому лень что-то настраивать и хочется мгновенной синхронизации. Это хранилище, которое будет на серверах Nitinol. На сервер уходят те же зашифрованные данные, что и в любое другое хранилище. Ключей у сервиса нет, прочитать записи он не может, а доступ только у клиентов.

Стабильная версия

Следующая большая цель — версия 1.0. От слова «стабильная» легко ждать чуда: фичи, которая всё изменит, или починки того самого бага. Для меня стабильность значит ответственность перед людьми, которые уже доверили приложению свои записи.

Главное работает уже сейчас, в бете. На мой взгляд худшее, что может сделать заметочник, это потерять то, что в него записали (Trello и Confluence из первой части я помню хорошо). Поэтому данные пользователя для меня важнее любой фичи и важнее простоты кода. Это правило стоит в самом начале AGENTS.md. Если упрощение схемы, миграции, да вообще любое изменение кода могут потенциально потерять данные, то они не пройдут. А цепочка «записал → сохранилось → открыл заново» проверяется кучей тестов. Отсюда второе правило: если замечен риск для данных, его нельзя молча отложить, он записывается отдельно и разбирается до релиза.

До 1.0 осталось:

  • Закрыть мелкие баги. По отдельности они не мешают работать, а вместе создают ощущение «сыровато».

  • Убрать шероховатости интерфейса. Неровные отступы, разнобой в подписях, лишние шаги. Эти мелочи влияют на то как воспринимается приложение в целом.

  • Проверить на разном железе и ОС. Windows, macOS и Linux, слабые и мощные машины, разные экраны. Фразу восстановления и перенос старой базы надо проверить на живых устройствах, одних тестов тут мало.

  • Довести начатое до конца. Всё, что сейчас в работе (схемы, синхронизация, внутреннее устройство ядра приложения), должно быть доделано.

  • Работа с большими файлами. Файлы на 100 МБ и больше должны открываться и не подвешивать на вермя приложение.

  • Написать документацию. Понятную справку по всем возможностям.

Дату 1.0 не называю. Выйдет, когда закрою эти пункты и соберусь с духом)

Заключение

Скачать можно на nitinol.app. Там же журнал изменений и установщики трёх последних версий, на случай если обновление что-то сломает. Баги и идеи присылайте на hi@nitinol.app или через форму в самом приложении.

Вопрос читателям: интересно мнение тех, кто уходил из Obsidian или Notion и вернулся обратно: почему уходили и почему вернулись?