Skip to content

Releases: MrDarkOm/amby-notes

Amby v0.1.9-beta.1

Amby v0.1.9-beta.1 Pre-release
Pre-release

Choose a tag to compare

@github-actions github-actions released this 20 Oct 13:11

Пробная версия для обкатки. Автообновление её не ставит: она скачивается вручную.

Главное в этой версии — рабочая область как в Obsidian: панели рядом, поиск в стиле Spotlight и живой граф связей. А ещё картинки в заметках получили свою панель и обрезку, страницы мастерской стали полноценными, и Amby теперь собирается для Windows и Linux на ARM.

✨ Главное

  • Несколько панелей рядом. Заметки, граф, базы, холсты и рисунки открываются слева, справа, сверху и снизу. Одну заметку можно открыть в двух панелях: правки видны сразу.
  • Поиск в стиле Spotlight. Одна строка ищет по заметкам, папкам, базам, холстам, тексту и тегам, с фильтром по типу и выбором, где искать.
  • Граф связей, как в Obsidian. Подсветка соседей, плавный зум, настройки, цветные группы и замок, который сохраняет раскладку.
  • Картинки в заметках. Своя панель: просмотр на весь экран, подпись, выравнивание, замена, обрезка, копирование и сохранение.
  • Windows и Linux на ARM. Появились отдельные сборки: установщик arm64-setup.exe и .AppImage с aarch64.

Важно: лицензия. С этой версии Amby распространяется под лицензией GNU AGPL-3.0, а не MIT. Пользоваться приложением можно как прежде, бесплатно и без ограничений. Условия меняются только для тех, кто распространяет изменённую версию: её исходный код нужно открыть. Версии до 0.1.8 включительно остаются под MIT.

🗂 Рабочая область

  • Разделение панелей: из меню вкладки, из меню заметки «⋯», из меню файла («Открыть справа / снизу») или перетаскиванием вкладки или файла к краю панели. Границы тянутся мышью, двойной щелчок возвращает 50/50.
  • Вкладки переключаются мгновенно и не пересобираются. Заметка остаётся там, где её прокрутили, а граф не перестраивается. «Назад» и «Вперёд» больше не показывают пустую вкладку.
  • Вкладки переставляются перетаскиванием, а закрытие вкладки снова плавное.
  • Кнопки док-панелей можно скрывать: правый щелчок по панели открывает список кнопок этой зоны.
  • Стартовое окно показывает недавние хранилища. «Управление хранилищем» открывает то же окно из боковой панели.
  • В избранное можно добавлять базы, холсты и рисунки, а не только заметки.
  • Переключатель «Автоматически показывать текущий файл» в дереве файлов, как в Obsidian, заменил кнопку «Найти активный файл».
  • Дерево файлов больше не дёргается при раскрытии папок: полоса прокрутки тонкая и появляется только при прокрутке.
  • Нижнюю плашку заметки можно скрыть из её меню «⚙» и вернуть через «⋯».

🔎 Поиск

  • «Перейти к файлу» (Cmd+O) открывает то же окно поиска со списком файлов и кнопками создания заметки, папки, базы, холста и рисунка.
  • Enter до появления результатов открывает первый из них. Первый Esc очищает запрос, второй закрывает окно.
  • Панель «Найти в заметке» стоит в правом верхнем углу и не уезжает при прокрутке.

🕸 Граф связей

  • Граф открывается в текущей вкладке и участвует в истории «Назад» и «Вперёд».
  • Настройки графа: фильтры (теги, вложения, только созданные заметки, объекты без связей), цветные группы по tag:#тег или path:папка, отображение и силы раскладки. Сохраняются для каждого хранилища.
  • Замок закрепляет узлы и сохраняет вид и масштаб даже после перезапуска. Новые заметки сами находят место рядом.
  • Раскладка разворачивается примерно втрое быстрее, подписи читаются поверх линий, узлы непрозрачные.
  • Щелчок по тегу открывает панель «Теги» с этим тегом. Узлы папок, холстов и других файлов тоже открываются.

✏️ Редактор

  • Панель выбранной картинки: «Открыть» (просмотр с масштабом и листанием), «Подпись», «Выравнивание», «Заменить…», «Обрезать», «Копировать», «Сохранить…», «Исходный размер», «Удалить». Те же действия есть в меню блока.
  • Обрезка картинки с форматами рамки (круг, квадрат, 4:3, 16:9 и другие) сохраняет новый файл рядом, а исходный не трогает.
  • Подпись и выравнивание записываются в обычный Markdown, и другие программы видят картинку как прежде.
  • Рядом с картинкой, стоящей в строке одна, больше нельзя случайно печатать: текст уходит на новую строку.
  • Выделение рисуется точно по строкам текста, без лишних полос, и не «зависает» после щелчка в другом месте.
  • Щелчок между строками ставит курсор точно под местом щелчка.
  • Панель форматирования появляется после окончания выделения, у его левого края, и едет вместе с ним при прокрутке.
  • Cmd+Backspace удаляет текст до начала строки, а в дереве файлов удаляет выбранные файлы.
  • Щелчок по тегу в заметке снова открывает панель «Теги».
  • Двойной щелчок в дереве файлов больше не включает переименование: оно доступно через контекстное меню.

🪶 Творческая мастерская

  • Модуль теперь выключен в новых рабочих областях. Включается в «Настройки → Модули». У тех, у кого он уже включён, ничего не меняется.
  • Страница мастерской: счётчики миров, историй и слов, полоса «Продолжить», карточки историй с фильтром, сортировкой и звездой избранного.
  • Разделы галереей: персонажи, локации и арки с категориями, обложками и историями, где встречается запись.
  • Стол истории — сетка виджетов: «Продолжить», «Прогресс», «Главы», «Заметки», персонажи, локации и арки. Порядок, ширину и видимость виджетов можно настроить.
  • Таймлайн вселенной: истории по порядку, который меняется перетаскиванием или с клавиатуры.
  • Страницы мастерской получили шапку как у заметок (назад, вперёд, хлебные крошки, меню «⋯») и нижнюю плашку с замком режима чтения.
  • Мастерская открывается в текущей вкладке, и каждый переход — шаг истории «Назад» и «Вперёд».
  • Шапка заметки внутри мастерской показывает путь по мастерской (история › глава › страница), а не папки.
  • Панель мастерской стала компактнее, а вкладки показывают векторные иконки вместо эмодзи.

🎨 Интерфейс

  • Системная синяя обводка фокуса больше нигде не рисуется. Пункты меню слегка «проседают» при нажатии.
  • «Размер шрифта» и «Задержка подсказок» в настройках стали пошаговыми ползунками.
  • Активная кнопка панели действий подсвечена акцентным цветом, поле переименования в дереве стало аккуратнее.
  • Открытый холст или рисунок подсвечивается в дереве файлов.
  • В «Настройки → Обновления» появилась строка о лицензии со ссылкой на исходный код.

🔒 Безопасность

  • Автообновление больше не использует библиотеку zip с тремя уязвимостями распаковки. Наши обновления её не используют, поэтому поддержка zip-архивов выключена.

Для разработчиков

  • Лицензия — AGPL-3.0-only с исключением для плагинов (LICENSE-PLUGIN-EXCEPTION.md). Для пулл-реквестов нужен CLA (CLA.md, бот в .github/workflows/cla.yml), правила — в CONTRIBUTING.md. Лицензии всех npm- и Rust-зависимостей совместимы.
  • Ветки dev → beta → main переводятся только через npm run promote. Пробные выпуски помечаются тегом vX.Y.Z-beta.N на beta.
  • Перед выпуском Rust-тесты идут на Windows и macOS, а набор WebKit — на macOS. Новые сборки: Windows arm64 (собирается на x64, только NSIS) и Linux arm64 (на нативном раннере).
  • Исправлены Rust-тесты, падавшие на Windows из-за разделителей путей. Список блокнотов больше не смешивает / и \.
  • Общие компоненты шапки и плашки страницы — page-chrome/. Раскладка графа хранится в .amby/graph-layout.json.

Установка

Система Что скачать
macOS (Apple Silicon) .dmg с aarch64 в названии
macOS (Intel) .dmg с x64 в названии
Windows (x64) установщик x64-setup.exe или .msi
Windows (ARM) установщик arm64-setup.exe
Linux (x64) .AppImage с amd64 в названии (обновляется сам, без пароля)
Linux (ARM) .AppImage с aarch64 в названии (обновляется сам, без пароля)

Если Amby уже установлена и автообновление включено, новая версия поставится сама при следующем запуске. Обновления подписаны: подделку приложение не установит.

Amby v0.1.8

Choose a tag to compare

@github-actions github-actions released this 16 Oct 14:00

Главное в этой версии — Творческая мастерская, собранная заново: одна папка на хранилище, у каждой вещи своя база, персонажи и места привязываются к историям, а сюжет держится на якорях и арках.

✨ Главное

  • Одна мастерская на хранилище. Папка «Мастерская» создаётся одной кнопкой «Инициализировать» — сразу со всеми разделами: Истории, Персонажи, Локации, Вселенные, Арки, Якоря, Заметки.
  • Персонажи принадлежат историям, а не папкам. Персонаж, локация или свой раздел связываются с одной или несколькими историями; история — со вселенной.
  • Якоря и арки. Ключевые события и сюжетные линии привязываются к главам и видны прямо там, где вы пишете.
  • Блокноты для заметок. Заметки раскладываются по папкам-блокнотам и связываются с историями.
  • Выделение и Backspace в редакторе работают так, как ожидаешь (подробности ниже).

Важно для тех, кто уже пробовал «Мастерскую». Проекты прежнего формата (папки с amby-project.json) не переносятся автоматически. Их файлы целы и открываются как обычные папки и базы, а в панели они собраны в тихую строку «Папки старого формата».

🪶 Творческая мастерская

Как она устроена

  • Мастерская — обычная папка в хранилище, её можно перенести целиком. Расположение меняется в «Настройки → Модули → Творческая мастерская».
  • История — папка со страницами текста и карточкой. Схема уровней выбирается при создании: «Роман», «Рассказ», «Комикс» (Книга → Том → Глава → Страница) или своя.

Панель

  • Две карточки. Сверху «Истории» — все или одна; снизу «Вселенные», где первый пункт всегда «Отдельные истории». Выбор запоминается.
  • Всё в охвате выбора. Персонажи, локации, заметки, якоря и арки показываются только те, что относятся к выбранной истории или вселенной. Страницы без истории собраны в группу «Без истории».
  • Стрелка открывает страницу. При наведении на карточку справа выдвигается стрелка — к странице истории, вселенной или «Отдельных историй».
  • Создание прямо в списке. Название и Enter. Персонаж, созданный при выбранной истории, сразу к ней привязан; история, созданная во вселенной, — к вселенной.
  • Пусто — значит пусто. Без историй панель предлагает «Создать первую историю» и не показывает пустых разделов.

Текст истории

  • Весь текст — одно дерево страниц с перетаскиванием и числом слов.
  • Статусы страниц: «Черновик», «В работе», «Готово» — цветной точкой в дереве.
  • Страницы переставляются и без мыши: «Выше», «Ниже», «Вложить», «Вынести» в меню строки (Shift+F10).
  • Рабочий стол истории: «Продолжить с…», ход работы и «Собрать рукопись» одним файлом Markdown.

Сюжет: якоря и арки

  • Якорь — ключевое событие, от которого строится текст. Арка — сюжетная линия персонажа или всей истории.
  • Якорь или арку можно перетащить на главу или выбрать в меню главы «Якоря ▸» / «Арки ▸».
  • В дереве у главы — значок якоря и цветные точки арок.
  • Справа от текста главы: «Отталкиваемся от» и «Должны прийти к» — ближайшие якоря до и после.
  • Лента якорей на рабочем столе отмечает пройденные; страница арки показывает её якоря и охваченные главы.
  • События вселенной — якоря, привязанные к самой вселенной, на её странице.

Заметки и блокноты

  • Блокнот — папка внутри раздела «Заметки», можно вкладывать.
  • Заметку переносят перетаскиванием или через «Переместить в блокнот»; ссылки на неё обновляются.
  • Удаление блокнота никогда не удаляет заметки: они поднимаются на уровень выше, а папка уходит в корзину.

Страницы

  • У вселенной своя страница с её названием: истории, события и мир этой вселенной.
  • «Отдельные истории» — такая же страница для историй без вселенной.
  • Вкладки разделов на этих страницах показывают только то, что к ним относится; вся база — кнопкой «Вся база».
  • Досье персонажа показывает его арки.

✏️ Редактор

  • Выделение через несколько строк больше не сбрасывается, когда отпускаешь мышь.
  • Backspace в начале заголовка. Пустая строка над ним удаляется, заголовок остаётся. Если сверху текст, заголовок сначала становится обычным текстом, а следующий Backspace склеивает строки.
  • Ручка блока появляется плавно, с задержкой, и всегда у той строки, куда попадёт щелчок.
  • Над вики-ссылкой больше не всплывает системная подсказка, закрывавшая кнопку «Отвязать».

🗂 Интерфейс

  • Правую панель можно выключить целиком: «Настройки → Интерфейс → Правая панель».
  • Новая пустая вкладка предлагает действия, как в Obsidian: новая заметка, база, холст, переход к файлу.
  • Фильтр по типу файлов в панели файлов: заметки, базы, холсты, рисунки.
  • Пустая база сразу открывается в своём виде с местом для первой строки — без отдельного баннера.
  • Правый щелчок по местам без своего меню больше не открывает системное меню окна.

🛠 Исправления

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

🔒 Безопасность

  • Обновлены библиотеки с известными уязвимостями: KaTeX (формулы), сетевые библиотеки Rust (rustls, quinn) и зависимости Excalidraw. Формулы рисуются как прежде.

Для разработчиков

  • Формат творческого модуля v3: маркер amby-workshop.json, настройки истории amby-story.json, история — прикреплённая база внутри базы «Истории». Контракт — docs/creative-format.md.
  • Новые журналируемые операции с откатом: init_workshop, complete_workshop, create_story, create_workshop_section, add_story_links, ensure_plot_links, create_workshop_entity; чтение — list_notebooks, list_text_stats, resolve_workshop_folder.
  • Сквозной тест contract_test.rs строит настоящую мастерскую в Rust и проверяет интерфейсную модель на её данных (real-workshop.fixture.json).
  • Замер в релизной сборке, 300 историй по 50 страниц: первое открытие ~3,3 с, повторное ~2,2 с (docs/performance-baseline.md).
  • AmbySelect: renderValue, action, onOpenChange, listWidth, chevronClassName.
  • Исправлен тест, падавший в CI на Windows при уборке временной папки.

Установка

Система Что скачать
macOS (Apple Silicon) .dmg с aarch64 в названии
macOS (Intel) .dmg с x64 в названии
Windows установщик -setup.exe или .msi
Linux .AppImage (обновляется сам, без пароля системы)

Если Amby уже установлена и автообновление включено, новая версия поставится сама при следующем запуске. Обновления подписаны: подделку приложение не установит.

Amby v0.1.5 — обновления и журнал изменений

Choose a tag to compare

@github-actions github-actions released this 27 Sep 19:49

Amby 0.1.5 — 2026-09-27

Диагностика

  • Режим отладки получил обзор состояния приложения, журнал с поиском и фильтрами, показатели времени операций и подготовку диагностического отчёта.

  • Можно записать воспроизведение проблемы, отметить момент сбоя и просмотреть JSON-отчёт перед сохранением. Запись продолжается после закрытия панели и ограничена по времени и числу событий.

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

  • Автоматические диагностические данные очищаются от содержимого заметок, названий, путей и секретов. Запись журнала на диск включается отдельно, а объём памяти и файлов ограничен.

  • Для разработчиков: добавлены план реализации Debug-режима, задания оркестрации Luna и проверяемые сценарии приёмки.

  • Очистка журнала сбрасывает старые события и в других окнах, даже при приостановленном просмотре; запоздавшая загрузка истории больше не возвращает удалённые записи.

  • Экран восстановления после ошибки запуска проверен на безопасный экспорт, отмену сохранения и повторную попытку после ошибки.

  • Для разработчиков: подготовлен подробный план ИИ-агента Amby с этапами оркестрации, ограничением доступа, журналом и откатом действий, обучением навыкам, мастерской плагинов и проверяемыми критериями приёмки.

  • Настоящий менеджер пакетов и криптографическая проверка Ed25519:

    • Реализована криптографическая проверка цифровых подписей манифестов по алгоритму Ed25519 (библиотека ring на бэкенде и WebCrypto на фронтенде) с валидацией SHA-256 контрольных сумм файлов и обязательным отклонением поддельных подписей (ed25519:anything).
    • Управление пакетами переведено в Rust-бэкенд: загрузка во временный staging-каталог с проверкой выхода за границы путей (.., абсолютные пути, спецсимволы), атомарная публикация в постоянную директорию modules/<id>/<version>/, сохранение истории версий в versions.json, многоверсионный откат (rollback) и безопасное удаление пакетов без затрагивания файлов заметок пользователя.
  • Физическое разделение и оптимизация стартового бандла (Excalidraw и Canvas):

    • Пакеты @excalidraw/excalidraw и @xyflow/react полностью исключены из предзагрузки в index.html и стартового бандла. Стили и исполняемый код холста загружаются строго динамически при открытии скетча или канваса.
    • Устранены зависимости Excalidraw от внутренних компонентов Canvas; нейтральные инструменты карточек и вставки заметок вынесены в общий модуль.
  • Изолированная среда выполнения сторонних плагинов (Worker Sandbox):

    • Выполнение кода плагинов сообщества вынесено в изолированный поток (Worker Runtime), лишённый прямого доступа к окну приложения (window), DOM (document), локальному хранилищу (localStorage) и нативным вызовам (__TAURI__).
    • Доступ к хранилищу и внешним ресурсам предоставляется исключительно через RPC-интерфейс к Capability Broker с валидацией разрешений, контролем путей внутри хранилища и возможностью принудительного завершения зависшего плагина.
  • Устойчивый безопасный режим (Safe Mode) и карантин:

    • Состояние безопасного режима и журнал сбоев карантина модулей сохраняются на диске и переживают перезапуск приложения. При превышении порога сбоев модуль автоматически изолируется.
  • Привязка контекста хранилища и профили возможностей:

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

    • Сохранение истории переименования опций: в определении свойств (SelectOption, StatusOption) реализовано хранение алиасов (aliases), что предотвращает потерю привязок значений в строках таблиц при переименовании и устраняет рассинхронизацию между сессиями.
    • Журналирование и восстановление пакетных изменений: операции массовой модификации фронтматтера защищены упреждающим журналом (BatchRecoveryJournal) и резервными копиями в .amby/recovery/database_batches/. При внезапном прерывании процесса незавершённые пакеты безопасно восстанавливаются при повторной инициализации хранилища.
    • Безопасный откат миграций: механизм отката проверяет контрольные суммы SHA-256 и оставляет неизменёнными файлы, не затронутые миграцией; манифест миграции гарантированно именуется <ИмяБазы>.json, а неизвестные и бинарные файлы бэкапятся перед очисткой каталога.
    • Корректная топология и вычисление формул: расчёт цепочек формул переведён на топологическую сортировку с поддержкой обращения к свойствам как по ID, так и по именам, явным определением циклических зависимостей и безопасной записью диагностических ошибок.
    • Устранение гонок при параллельных запросах: клиентский хук выборки строк отслеживает порядковый номер инвалидации (invalidationSeq) и автоматически перезапрашивает актуальные данные, если во время фонового запроса структура данных изменилась.
  • Надежность автосохранения и файловые операции:

    • Индикация конфликта внешних изменений: когда автосохранение приостанавливается из-за внешнего изменения открытого документа, в верхней части редактора отображается постоянное янтарное предупреждение с кнопкой перехода к диалогу разрешения конфликта, позволяя пользователю не потерять локальные правки при временном закрытии модального окна.
    • Устойчивость к блокировкам файлов на Windows: атомарная замена файлов снабжена серией повторных попыток с экспоненциальной задержкой при возникновении системных ошибок блокировки (ERROR_SHARING_VIOLATION и ERROR_ACCESS_DENIED), защищая от сбоев при параллельной активности антивируса или службы поиска Windows.
  • Для разработчиков: добавлен независимый аудит прототипа модульной архитектуры с проверкой реальной установки пакетов, подписи, изоляции плагинов, разделения чанков и покрытия обязательных сценариев.

  • Для разработчиков: добавлен подробный аудит проблем персистентности, файловых форматов и механизмов автосохранения (docs/storage-issues-audit.md) с систематизацией критических рисков потери данных, узких мест производительности и приоритетным планом доработок.

  • Для разработчиков: устаревшая и историческая проектная документация (ранние планы, логи контрольных точек дорелизных версий, завершённые ревью и промежуточные патчи) перемещена в каталог docs/archive/ с добавлением поясняющего реестра (docs/archive/README.md).

  • Для разработчиков: журнал изменений переведён на модульную файловую структуру в каталоге updates/ с раздельными файлами по каждой версии (upd_<версия>.md) и рабочим черновиком upd_next.md; обновлены регламенты выпуска в AGENTS.md, README.md и документации.

  • Для разработчиков: выполнена нормализация стандартов форматирования (Prettier и Rustfmt) с добавлением .git-blame-ignore-revs; восстановлена строгая валидация стиля кода без исключений.

  • Для разработчиков: проведена декомпозиция файлов-монолитов базы данных и frontmatter — из mutations.rs, format.rs, projection.rs, query.rs, formula.rs, migration.rs, discovery.rs и frontmatter.rs вынесено свыше 5 300 строк тестов в выделенные модули *_test.rs, что кардинально уменьшило объём продакшн-файлов при 100% сохранении тестового покрытия.

  • Для разработчиков: проведена масштабная декомпозиция фронтенд-монолитов: settings-dialog.tsx (сокращён с 1 932 до 928 строк, выделено 7 модульных компонентов в каталоге src/components/workspace/settings/) и database-workspace.tsx (сокращён с 3 104 до 2 344 строк, выделены database-dialogs.tsx, database-floating-toolbar.tsx, database-peek-editor.tsx, database-view-menu.tsx и database-layout-icons.ts), устранены предупреждения React Fast Refresh, при этом сохранены все контракты компонентов, типизация и 100% прохождение тестов.

  • Управление пакетами и динамическая загрузка (Этап А): реализован пользовательский интерфейс менеджера пакетов (ModulePackageManager) в настройках приложения с отображением размера на диске, активной версии, истории версий, установкой пакетов из файла (.json/.amby-pkg), отката версий и удаления. В ModuleHost реализован динамический загрузчик loadInstalledModule через commands.getModuleEntryPath и безопасный Tauri-протокол asset://, синхронизирующий жизненный цикл расширений при установке, откате и удалении пакетов.

  • Разгрузка глобальной блокировки записи (mutation_gate) и оптимизация автосохранения (Этап B):

    • Чтение файлов с диска, проверка CAS-ревизий и извлечение связей/тегов (extract_links) в команде сохранения заметки write_note вынесены из-под мьютекса соединения SQLite (conn_guard).
    • Мьютекс дисковых мутаций (mutation_gate) теперь удерживается исключительно на время атомарной записи файла и снимка истории, освобождаясь до начала транзакции обновления индекса SQLite.
    • Устранены взаимные блокировки параллельных запросов на чтение, поиск и автосохранение других открытых документов.
  • Автоматическая ротация и управление локальной историей заметок (Этап B):

    • Реализована автоматическая ротация устаревших снимков истории (autoPrune) при сохранении новых версий заметок с настраиваемыми лимитами максимального количества копий (maxCopies, по умолчанию 20) и срока хранения в днях (maxAgeDays, по умолчанию 30 дней).
    • В настройках модулей в секции истории добавлены переключатель автоматической ротации, поля конфигурации лимитов и кнопка ручной очистки старых версий (cleanupHistory), предотвращающие разрастание каталога .amby/history/.
  • Автономный пайплайн сборки пакетов и сетевой загрузчик из GitHub Releases (Этап C):

    • Создан автономный скрипт сборки модулей scripts/build-modules.mjs (npm run build:modules), упаковывающий amby.excalidraw и amby.canvas в автономные криптографически подписанные архивы .amby-pkg с расчётом SHA-256 контрольны...
Read more

Amby v0.1.4 — обновления и журнал изменений

Choose a tag to compare

@github-actions github-actions released this 20 Sep 19:12

Что нового в Amby v0.1.4

1. Устранение ложного статуса несохранённости (точки «●») и сдвига вкладок

  • Точная сериализация Markdown без замыкающих переводов строк: устранена первопричина появления точки ● при открытии коротких заметок (например, "Фев"). ProseMirror всегда добавляет два перевода строк (\n\n) в конце блоков, а функция restoreSourceFormatting ошибочно не удаляла их, если в оригинале перевода строк не было. Из-за этого заметка в памяти сразу считалась изменённой и требовала сохранения. Теперь форматирование восстанавливается байт-в-байт для любого исходного текста.
  • Автоматический сброс ложного статуса несохранённости (onContentClean): если после обработки транзакции или монтирования редактора Tiptap сериализованный текст совпадает с текущим значением документа, флаг изменений автоматически сбрасывается, предотвращая зависание точки ● на вкладке.
  • Корректное разрешение ссылок на заметки из Excalidraw: ссылки на заметки из скетчей теперь надёжно разрешаются по относительному пути и имени файла к соответствующему объекту дерева и его стабильному ULID, активируя уже открытый буфер без сбоев.
  • Исправление смещения вкладок поверх боковой панели: устранена ошибка, из-за которой при откреплённой боковой панели (плавающий режим) шапка не учитывала ширину открытой панели, и вкладки сдвигались влево на 264px, накладываясь на дерево файлов. Теперь отступ резервируется всегда, когда панель видима, и вкладки строго выравниваются по началу редактора.
  • Ручное сохранение через Cmd + S / Ctrl + S с принудительным сбросом буфера: при нажатии сочетания клавиш активный редактор (Tiptap или Source) немедленно сбрасывает все несохранённые правки в буфер и на диск, очищая точку ● без ожидания таймера автосохранения.

2. Улучшение работы с объектами и панелью инструментов в Excalidraw

  • Устранение ложного статуса несохранённости при открытии и переходе по ссылкам: устранена проблема, из-за которой при открытии файлов скетчей или переходе по ссылкам в Excalidraw вкладка сразу помечалась как изменённая (●). Внутренняя нормализация элементов движком Excalidraw при монтировании и фоновой синхронизации сцены больше не провоцирует ложный флаг изменений и преждевременную запись черновиков.
  • Реорганизованная панель инструментов с меню «Вставка»: добавлено единое выпадающее меню «Вставка» (Заметка, Изображение, Веб-интерфейс), а инструменты «Рамка» и «Лазерная указка» вынесены напрямую в основную панель инструментов.
  • Стандартные цвета и контуры карточек: карточки заметок и стикеры оформлены со стандартной обводкой и цветом (чёрный или белый), устранены двойные рамки и избыточная вложенная кнопка перехода к заметке.
  • Читаемый путь к заметке и кнопка «Обзор»: во всплывающей панели ссылки отображается аккуратный декодированный путь к заметке, а вместо кнопок ручного редактирования URL и привязки добавлена удобная кнопка «Обзор» для быстрой смены заметки.
  • Компактный раздел фигур «Объект»: геометрические фигуры (прямоугольник, ромб, круг) объединены в выпадающий раздел «Объект», открывающийся по клику. На панели отображается и подсвечивается последняя выбранная фигура. Сочетания клавиш синхронизируют активную фигуру.
  • Отображение карточек заметок в стиле Obsidian: карточки заметок теперь отображают полный Markdown с вертикальной прокруткой без искусственного обрезания до 250 символов, выделенным заголовком заметки, стилизованными бейджами тегов и быстрым открытием заметки.
  • Надёжное сохранение холста и сброс индикатора изменений: устранён циклический вызов рендера Excalidraw («Maximum update depth exceeded»), вызовы обновления сцены стабилизированы через useRef, а при успешной фоновой записи холста и скетча на диск индикатор несохранённых изменений (●) на вкладке теперь своевременно очищается.
  • Взаимное закрытие панелей и открытие библиотеки: открытие меню настроек холста автоматически закрывает боковую панель библиотеки и наоборот, исключая наложение окон; библиотека сразу открывается на вкладке просмотра библиотеки.
  • Адаптивность при уменьшении ширины области: при сжатии панели или разделении экрана элементы управления областью аккуратно смещаются на ряд выше, а панель инструментов остаётся снизу со скроллом при необходимости.

3. Стабилизация баз данных и Frontmatter-First архитектура

  • YAML Frontmatter как единственный источник истины для свойств: значения свойств строк базы данных теперь сохраняются напрямую в YAML frontmatter самих .md-файлов. Полностью устранены промежуточные шарды записей .ambd/records/ и вспомогательные файлы <note_id>.json. Все свойства читаются, изменяются и версионируются в самих заметках, обеспечивая полную прозрачность и совместимость со сторонними инструментами и системами контроля версий.
  • Обратимая история изменений ячеек и связей баз данных (Undo / Redo): при редактировании значений свойств в базах данных доступны кнопки «Отменить» (Undo) и «Повторить» (Redo) в панели инструментов, а также сочетания клавиш Cmd+Z / Cmd+Shift+Z (Ctrl+Z / Ctrl+Shift+Z / Ctrl+Y).
  • Защита от перезаписи внешних правок (CAS-проверка): если файл заметки был изменён внешней программой с момента мутации, отмена или повтор действия отвергаются с понятным сообщением об ошибке, предотвращая стирание чужих правок.
  • Транзакционный откат двусторонних связей: при отмене или повторе установки связи между заметками изменения в обоих файлах (источнике и цели) откатываются согласованно и атомарно.
  • Полнофункциональная типизированная фильтрация и сортировка данных: добавлены типизированные операторы фильтрации для дат (равно, не равно, после, до), множественного выбора (содержит) и отношений/связей (содержит по реальным связям между заметками).
  • Единая поддержка всех типов свойств: фильтрация и поиск в таблицах баз данных теперь бесшовно поддерживают все типы данных без исключений: текст, число, флажок, дата, выбор, статус, мультивыбор, ссылки, формулы и связи.
  • Вычисление формул (Formula) и агрегаций связанных данных (Rollup): топологическое вычисление формул с защитой от циклов и агрегация связей (count, countUnique, sum, avg, min, max).
  • Транзакционные пакетные обновления и атомарный откат при сбоях: при редактировании нескольких ячеек или строк базы данных сбой записи любого из файлов приводит к полному и автоматическому откату всех уже записанных файлов пакета к исходным байтам.
  • Контролируемая миграция устаревших форматов баз данных: модуль миграции с предварительным аудитом конфликтов, резервной копией и возможностью полного отката.
  • Дедупликация свойств схемы базы данных и YAML frontmatter: устранено дублирование строк свойств при просмотре заметок, входящих в состав базы данных. Свойства схемы базы данных, проецируемые в YAML frontmatter, теперь отображаются строго один раз в блоке свойств базы данных и автоматически исключаются из общего списка свойств frontmatter.
  • Устранение ошибки «View revision conflict»: каноническое согласование хэшей ревизий между SQLite-проекцией и манифестом представлений.

Amby v0.1.3

Choose a tag to compare

@github-actions github-actions released this 11 Sep 19:23

Signed installers and automatic-update metadata for Amby v0.1.3.

Amby v0.1.2

Choose a tag to compare

@github-actions github-actions released this 11 Sep 07:31

Что изменилось

Исправления

  • Исправлено рассыпание вложенных папок заметок-контейнеров в корень после создания и переноса файлов; перестроение дерева теперь выполняется без квадратичного обхода, устраняя сильные задержки на больших хранилищах.
  • В панели выбора эмодзи восстановлены штатные стили emoji-mart: поиск, навигация по категориям, сетка и внутренняя прокрутка снова работают, а необработанные огромные SVG больше не перекрывают содержимое. Поиск оформлен как во вкладке «Иконки», рядом возвращена кнопка базового оттенка кожи, а переключатели категорий снова находятся снизу.
  • При переименовании рамка поля ввода больше не сдвигает название элемента в дереве.
  • Иконки обычных заметок выровнены по одной вертикали с иконками раскрываемых элементов дерева.
  • Новые заметки получают свободное имя (Без названия, Без названия 1, Без названия 2 и далее), сразу публикуются атомарно со стабильным идентификатором, а при создании кнопкой или из контекстного меню корня, папки или другой заметки в дереве открывается переименование с фокусом и полным выделением названия.
  • Только что созданная пустая заметка больше не определяется как внешнее изменение: диалог конфликта не прерывает переименование, пустой редактор не добавляет перевод строки без действия пользователя, а фокус строки дерева не перехватывает фокус поля имени.
  • При выборе нескольких элементов контекстное меню показывает массовое удаление: выбранные файлы и папки последовательно перемещаются в корзину, вложенные элементы не удаляются повторно, а панель корзины обновляется сразу.
  • Recovery-черновики теперь привязаны к текущему хранилищу и поколению, а устаревшая очистка не может удалить более новую правку; отказ recovery больше не скрывает необходимость основного сохранения.
  • Последняя правка в Source и Canvas фиксируется сразу как несохранённая, а штатное закрытие, смена режима и смена хранилища предварительно публикуют отложенные буферы.
  • Асинхронные подписки на события Tauri теперь безопасно отменяются даже при поздней регистрации или ошибке, поэтому повторное открытие компонентов не оставляет дублирующиеся обработчики.
  • Исправлено восстановление последней правки при быстром наборе: черновики больше не отправляют IPC на каждый символ, а ошибки recovery не выдаются за успешное сохранение.
  • Неизвестные поля Canvas, включая данные плагинов, теперь сохраняются при редактировании; изменения во время drag не сериализуются на каждом кадре.
  • Быстрый переход показывает относительный путь и ищет по всему хранилищу до ограничения выдачи, поэтому одноимённые заметки различимы.
  • Откреплённая панель снова раскрывается при наведении на край после скрытия через контекстное меню.
  • Ручная проверка обновлений теперь доступна в Tauri dev-сборках; автоматическая установка по-прежнему не запускается во время разработки.
  • На Windows исправлены клики по строкам заметок, переработан заголовок окна и убрана нижняя линия под кнопками управления.
  • Ширина боковых панелей и размер окна теперь восстанавливаются после следующего запуска.
  • Док больше не скрывается отдельно: в меню осталось только закрепление левой и правой панели, а откреплённые панели вместе с доком автоматически раскрываются поверх основного содержимого с аккуратной тенью и скруглёнными краями.

Улучшения

  • В правой части строк появился слабозаметный индикатор типа элемента: папки отмечаются папкой, заметки — файлом, а избранные заметки — файлом со звездочкой. Иконка файла теперь работает как кнопка избранного: по нажатию заметку можно добавить или убрать из избранного. В разделе избранного сохраняются пользовательские эмодзи, кнопка снятия избранного отображается таким же чётким акцентным цветом, а действие избранного в контекстном меню обозначается обычной звездой в цвете текущего оформления.
  • Двойной клик по заметке, Canvas или папке в дереве сразу включает переименование с выделением названия.
  • Папки теперь всегда располагаются вверху каждого уровня дерева, а обычные заметки и заметки с вложениями сортируются вместе по выбранному имени или дате.
  • Перемещение, переименование и активация хранилища теперь согласуются общим шлюзом, а тяжёлые файловые и ссылочные операции не удерживают SQLite-блокировку.
  • Граф связей корректно обновляет новые рёбра, Canvas не перепарсивается на каждом кадре, а ручки блоков стали отзывчивее в больших заметках.
  • Тяжёлые редакторы активных и split-вкладок получают адресные обновления; скрытые буферы не подписывают весь workspace на каждую правку.
  • Проверка совместимости выделенного Markdown выполняется только при смене режима редактора, а не при каждом движении курсора.
  • Квота recovery рассчитывается по метаданным без полного повторного чтения всех черновиков; операции recovery сериализованы без блокировки основного сохранения.
  • Граф обновляет координаты SVG напрямую через DOM, а таблица и ручки блоков ограничивают работу до необходимых кадров, диапазонов и инвалидирующих событий.
  • Индекс заметки после записи строится из уже подготовленных байтов и метаданных, а файловые мутации удерживают SQLite-блокировку только на коротких фазах.
  • Перенос и создание файлов больше не запускают повторные полные сканирования хранилища и пересчёт ссылок, поэтому операции выполняются заметно быстрее.
  • Перенос файлов в дереве теперь применяется сразу без визуальной перезагрузки, а несколько выбранных файлов можно переместить одним перетаскиванием.
  • Дерево файлов обновляет только изменённые ветки, а новая заметка появляется сразу — без промежуточных пустых папок, повторной подгрузки и рывков.
  • Появление и скрытие откреплённых панелей стало заметно плавнее.

Для разработчиков

  • Подготовлен пошаговый план устранения проблем производительности с проверками сохранности данных и уточнениями по текущему коду.

Amby v0.1.1 — обновления и журнал изменений

Choose a tag to compare

@github-actions github-actions released this 08 Sep 07:15

Первое накопительное обновление Amby: встроенная система обновлений и прозрачный публичный журнал изменений.

Что нового

  • Безопасная проверка и установка новых версий через GitHub Releases.
  • Раздел «Обновления» в общих настройках: автопроверка, текущая версия и ручная проверка.
  • Понятные статусы загрузки и установки, прогресс и подтверждение перед перезапуском.
  • Публичный журнал updates.md для накопительного учёта изменений между выпусками.

Улучшения и безопасность

  • Настройка автообновления синхронизируется между главным окном и окном настроек.
  • Установщики и updater-архивы подписаны; неподписанные или изменённые пакеты отклоняются.
  • Добавлена проверка совпадения версий npm, Rust и Tauri перед выпуском.
  • Подготовлена автоматическая сборка macOS, Windows и Linux с публикацией только после успеха всей матрицы.