История изменений¶
Здесь документируются все заметные изменения. Формат основан на Keep a Changelog, а проект придерживается Semantic Versioning.
Unreleased¶
Изменения в main, которые ещё не вошли в тегированный релиз.
1.3.1 - 2026-05-19¶
Исправлено¶
- Экспорт по регулярному выражению больше не ограничен 100 000 записями; заменён курсорной пагинацией для полного экспорта больших объёмов.
- Интерфейс больше не зависает при поиске по истории с помощью регулярных выражений; сканирование перенесено в фоновый поток.
- Расчёт месячных временных диапазонов больше не смещается при переходе на летнее/зимнее время (DST).
- Фильтр скрытых доменов теперь корректно экранирует символы подстановки LIKE в именах доменов.
- Подсчёт записей по префиксам URL больше не дублирует перекрывающиеся префиксы.
- Ошибки очистки WebDAV теперь сообщаются, а не игнорируются молча; метка времени манифеста выровнена по времени загрузки.
- HTML-экспорт теперь вызывает ошибку при отсутствии маркера инъекции в шаблоне вместо создания повреждённого файла.
- Сохранение конфигурации при завершении работы подавлено для предотвращения повреждений; неудачные операции продвижения конфигурации теперь корректно откатываются.
- Исправлена ротация резервных копий конфигурации; добавлена защита от ложных срабатываний при обнаружении миграции.
- Загрузка данных значков теперь корректно обрабатывает ошибки базы данных без аварийного завершения.
- Поток резервного копирования экстрактора больше не блокирует неявно основной процесс при завершении работы.
- Устранена потенциальная взаимная блокировка при экспорте базы данных без FTS.
Сборка¶
- Исправлен скрытый импорт WebDAV в spec-файле PyInstaller с
webdav4наwebdav3, устраняя ошибки отсутствующего модуля в пакетных сборках.
1.3.0 - 2026-05-14¶
Добавлено¶
- Тема по умолчанию изменена с Dark на System, поэтому приложение сразу следует внешнему виду ОС.
- Предпросмотр количества записей в диалогах управления чёрным списком и скрытыми доменами, чтобы заранее видеть эффект перед подтверждением.
- Отдельная история недавних поисков для режима regex, чтобы рабочие сценарии расширенного поиска оставались чище.
- Переработанная иконка приложения с анимированным SVG-рендерером в трее вместо статических ресурсов.
- Многоязычный сайт документации на MkDocs.
Исправлено¶
- FTS-триггеры, которые могли тихо теряться после сбоя процесса, теперь восстанавливаются перед всеми путями записи истории.
- Поисковые токены
title:иurl:больше не перезаписывают друг друга; многословные запросы по полям теперь корректно разбиваются на AND-термы. - Скрытые домены теперь корректно фильтруются в быстром поиске overlay.
- Исправлено граничное условие времени в инкрементальном извлечении Safari.
- Удалён неверный фильтр путей в browser scanner, который исключал нестандартные установки.
- Теперь шифртекст пароля WebDAV сохраняется, даже если расшифровка не удалась при загрузке конфигурации.
- Одноэкземплярный запуск теперь безопасно переключается на fallback, если не удаётся записать token-файл.
- Исторические записи теперь корректно мигрируются при принятии прежнего device identity.
- Сигнал
sync_progressтеперь защищён от аргументов неверного типа, отправленных из рабочего потока. - Восстановлен показ прогресса синхронизации в реальном времени; жизненный цикл QThread-обёртки усилен против сбоев destroyed-while-running.
- Исправлен жизненный цикл потока резервного копирования, а исключения авто-бэкапа теперь изолированы от потока синхронизации.
- Устранены гонки при межпоточной отправке сигналов и проблемы жизненного цикла QThread во время синхронизации.
- FTS-триггеры теперь восстанавливаются сразу после исключения upsert, чтобы закрыть окно записи.
_ro_lockтеперь удерживается на обоих этапах запроса вget_records, что устраняет гонку соединения.- Манифест WebDAV sync теперь загружается до очистки старых бэкапов, чтобы после сбоя не оставался устаревший манифест.
- Записи в кэш доменов теперь защищены блокировкой для предотвращения TOCTOU-гонки.
- Устаревший page cache теперь вытесняется в regex-пути load-more, чтобы предотвратить пустые строки.
- Устранено мерцание диалога в левом верхнем углу при первом открытии.
- Размер шрифта автодополнения теперь ограничивается допустимым диапазоном в Linux.
- Предотвращена минимизация в трей, если системный трей недоступен.
Производительность¶
- O(N) очистка
vt_cacheзаменена на LRU-вытеснение на уровне страниц. - Блокировка записи теперь освобождается перед
VACUUM INTOвexport_without_fts. - Общий реестр и наборы фильтров в extractor manager теперь защищены блокировкой для предотвращения гонок данных.
Сборка¶
- Добавлен fallback Qt platform для Linux; зависимости xcb теперь пакуются для запуска из коробки.
- Добавлены подробные правила
.gitattributesдля окончаний строк и бинарных файлов.
1.2.2 - 2026-04-29¶
Исправлено¶
- Команда CLI
restoreвсегда восстанавливала последний бэкап вместо выбранного пользователем. - Команда CLI
restoreне учитывала флаг восстановления favicon. CLI restore --replaceиспользовал небезопасную замену базы данных.- Вводные таймеры планировщика не отменялись, из-за чего после перепланирования срабатывали устаревшие callbacks.
- Исправлено использование API размера терминала, что восстановило форматирование вывода во всех CLI-командах.
1.2.1 - 2026-04-23¶
Добавлено¶
- Кнопка «Найти в истории» на карточках закладок для быстрого перехода.
- Нажатие на область тега или заметки на карточке закладки теперь сразу открывает редактор.
Исправлено¶
- Устранены конфликты глобальных сочетаний
Ctrl+F/Ctrl+R; теперь они надёжно работают в представлении истории. - Счётчики посещений на разделителях дат теперь учитывают текущие фильтры и режим просмотра скрытых записей.
1.2.0 - 2026-04-23¶
Добавлено¶
- 14 настраиваемых глобальных и внутриприкладных сочетаний клавиш с отдельной панелью настроек.
- Режим просмотра Hidden Records: отдельное представление для мягко скрытых записей.
- Мягкое скрытие домена: возможность скрыть все записи домена без удаления, с отдельным интерфейсом управления.
- Портативный режим: автоматическое обнаружение файла-маркера
.portableв корне приложения и перенаправление всех данных в подкаталогdata/. - Пункт «Search the Web» в overlay быстрого доступа и в выпадающем списке автодополнения, с настраиваемыми пресетами поисковых систем.
- Настройка запуска «Стартовать свёрнутым в трей».
- Режим ленивой минимизации в трей: окно и подсистемы откладываются до первого открытия.
- Разделители дат теперь восстанавливаются после переключения видимости или перестановки столбцов.
- Отслеживание системного режима Dark/Light в реальном времени.
Изменено¶
- Загрузки WebDAV переведены с chunked на atomic streamed, что заметно повысило надёжность и устранило утечки временных файловых дескрипторов в Windows.
- В headless-режиме теперь пропускаются GUI-подсистемы и используется меньший кэш SQLite, что снижает потребление памяти в фоне.
- Вытеснение кэша доменов и иконок изменено с полного
clear()на FIFOpopitem(), что устранило периодические всплески очистки. - Переключатели видимости столбцов перенесены в подменю для более чистой панели инструментов.
Исправлено¶
- Несогласованности WAL при чтении после записи устранены за счёт унификации порядка блокировок жизненного цикла соединений.
- Исправлен сбой VACUUM, вызванный
prune_tombstonesво время_vacuuming=True. - Tombstone-записи теперь очищаются во время VACUUM, чтобы предотвратить неограниченный рост таблицы.
- Исправлены рывки прокрутки после удаления/скрытия/показа; позиция прокрутки теперь сохраняется вместо прыжка наверх.
- Длинные заголовки больше не выталкивают кнопки действий за пределы экрана в карточках настроек.
- Устранён ложный горизонтальный скроллбар после смены темы.
- Чтение закладок и аннотаций теперь сразу видит свежие данные после записи; проблема устаревшего WAL snapshot устранена.
- Windows Junction больше не обходятся при BFS-сканировании браузеров.
- Интервал
QTimerтеперь ограничиваетсяINT32_MAX, чтобы избежать переполнения целого на очень больших интервалах. BrowserMonitorтеперь корректно завершается при выходе из приложения.- Многословные CLI-запросы поиска теперь принимаются без кавычек.
- Длинный табличный вывод в CLI теперь обрезается с многоточием, чтобы не выходить за пределы строки.
- Ошибки
encrypt_textтеперь пробрасываются наружу вместо молчаливой потери пароля WebDAV. get_bookmarked_urlsтеперь используетDISTINCT, чтобы исключить дубли URL в результатах.
Производительность¶
- Двухшаговая keyset pagination в
get_recordsустраняет O(N) offset scan на больших историях. - Пагинация regex-поиска перенесена на уровень SQL, что устранило полный O(N)-скан таблицы.
- Уменьшены лаги быстрой прокрутки за счёт оптимизации горячих путей paint,
data(), разбора URL иeventFilter. DashboardPageтеперь пропускает обновления статуса браузеров, когда окно скрыто.
Безопасность¶
- Шифрование обновлено до формата V2 с независимыми HKDF-подключами для шифрования и аутентификации.
- Для защиты от replay-атак в IPC одноэкземплярного режима добавлена аутентификация на основе nonce.
- Исправлена XSS-уязвимость в HTML-экспорте: SVG-иконки теперь очищаются перед встраиванием.
- Таймаут неактивности master password теперь использует
time.time(), чтобы корректно считать время во время сна системы. - Закрыты лазейки обхода master password и исправлен устаревший UI сессии.
Сборка¶
- Добавлен standalone-артефакт
tar.gzдля macOS. - Добавлены portable ZIP и setup installer для Windows.
- В CI теперь кэшируется standalone Python runtime для Windows, что сокращает время сборки.
1.1.1 - 2026-04-12¶
Исправлено¶
- Исправлен вертикальный дрейф overlay (
Ctrl+Shift+H) при повторном открытии. - Исправлено случайное появление горизонтального скроллбара в таблице истории.
- Исправлено отсутствие обновления страницы закладок после изменений из страницы History.
- Исправлено, что метка времени
bookmarked_atне обновлялась при конфликте. - Исправлена потенциальная гонка при инициализации клиента WebDAV.
- Исправлены устаревшие попадания фильтра из-за неочищенного
_excl_cacheпосле сброса соединения.
Производительность¶
- Запросы истории и загрузка бейджей закладок/аннотаций перенесены в фоновый поток, чтобы не блокировать UI.
- Отображаемый домен теперь определяется через JOIN с таблицей
domains, а не через разбор URL для каждой строки в пути рендера. - Удалён лишний второй VACUUM из
export_without_fts. - Подзапрос
NOT INдляhidden_recordsзаменён на более эффективную коррелированную проверкуNOT EXISTS.
1.1.0 - 2026-04-11¶
Добавлено¶
- Глобальный overlay быстрого поиска в стиле Spotlight (
Ctrl+Shift+H): мгновенный поиск по истории, закладкам и аннотациям из любого приложения. - Расширенный синтаксис поиска:
domain:,after:,before:,title:,url:,browser:,device:,is:bookmarked,has:note,tag:. - Встроенное ghost-text автодополнение и выпадающие подсказки с fuzzy matching в строке поиска.
- Страница статистики с годовой heatmap в стиле GitHub, круговой диаграммой использования браузеров, 24-часовой гистограммой активности и экспортом изображения высокого разрешения в один клик.
- Система закладок и аннотаций: помечайте URL тегами и добавляйте rich-text заметки для своей личной базы знаний.
- Headless CLI
hsyncс командамиsync,backup,search,export,restore,config,dbи watch-режимом. - Shell completion для
hsyncчерезargcompleteдля Bash, Zsh и Fish. - Управление identity устройства: переименование устройств, удаление устаревших и принятие прежнего identity после переустановки ОС.
- Восстановление WebDAV теперь сливает данные с локальной базой вместо разрушительной замены.
- Нативный drag-and-drop экспорт URL из таблицы истории (
Alt+перетаскивание или перетаскивание favicon) на рабочий стол или в редакторы. - Всплывающий scroll time bubble: показывает дату, ведущий домен и шкалу плотности активности при перетаскивании скроллбара.
- Добавлена нативная поддержка QQ Browser, Sogou, Twinkstar, CentBrowser, 2345 Explorer, Liebao, UC Browser (Desktop), Quark.
- Добавлена поддержка форков Firefox: Waterfox, LibreWolf, Pale Moon, Basilisk, SeaMonkey.
- Добавлена поддержка каналов Canary/Dev/Beta для Chrome, Edge и Brave.
- Добавлено BFS deep scan для автоматического обнаружения portable и нестандартных установок браузеров.
- Добавлена анимация fade-in/fade-out для overlay.
- Переработан мастер первого запуска для более простой начальной настройки.
- Добавлен мастер миграции для без потерь из установок v1.0.x.
- Добавлено контекстное меню скроллбара для режимов отображения time bubble.
- Добавлена инерционная плавная анимация scroll time bubble.
Исправлено¶
- Устранены проблемы блокировки файлов при WebDAV-бэкапе в Windows.
- Исправлен прыжок позиции скроллбара при переключении темы Dark/Light.
- Многословные FTS-запросы теперь используют семантику AND для более точной выдачи.
- UPDATE в
normalize_domainsтеперь выполняется пакетами по 5000 строк, чтобы избежать долгих write lock. - Скрытые записи исключены из аналитической статистики и быстрого поиска overlay.
_ensure_connтеперь защищён флагом_vacuuming, чтобы предотвратить конкурентный доступ во время VACUUM.
Производительность¶
- Извлечение SQLite переписано с пакетными вставками и предкомпилированными regex, что снизило потребление памяти и повысило скорость.
- Рендер favicon оптимизирован с помощью LRU-кэша и перекраски SVG, что устранило подвисания при быстрой прокрутке.
- Начальная загрузка страницы истории теперь использует постепенную инициализацию, сокращая время до первого отображения.
1.0.0 - 2026-03-24¶
Первый стабильный релиз.
Добавлено¶
- Агрегация истории браузера из Chromium-браузеров, Firefox-браузеров и Safari, включая Chrome, Edge, Brave, Opera, Vivaldi, Arc и другие.
- Локальная база SQLite с полнотекстовым поиском FTS5 на trigram tokenizer для поиска подстрок с задержкой в миллисекунды.
- Облачный WebDAV-бэкап и восстановление с ZIP-сжатием и SHA-256 проверкой целостности.
- Поддержка нескольких браузеров и профилей с WAL-safe копированием базы данных.
- Виртуальная прокрутка для плавной навигации по спискам истории на миллионы записей.
- Интеграция с системным треем и уведомлениями о статусе синхронизации.
- Шифрование WebDAV-учётных данных master password через HKDF-SHA256 с интеграцией системного keyring.
- Пакеты для Windows и macOS.