Skip to content

Latest commit

 

History

History
368 lines (279 loc) · 18.2 KB

File metadata and controls

368 lines (279 loc) · 18.2 KB

Aite Commander — описание возможностей и функций

Версия: 1.1.0 | Платформа: Windows (PyQt6) | Python: ≥ 3.12


Обзор

Aite Commander — десктопное приложение для управления закладками и ссылками, построенное по принципу иерархической организации. Название и философия вдохновлены Total Commander, но вместо файловой системы используется 4-уровневая структура: Сфера → Раздел → Категория → Ссылка.

База данных — SQLite с WAL-режимом и memory-mapped I/O. Интерфейс построен на PyQt6.


1. Иерархическая структура данных

Четырёхуровневая модель организации:

Уровень Таблица Описание
Сфера sphere Верхний уровень группировки (AI, Работа, Учёба, Личное и др.)
Раздел section Подраздел внутри сферы
Категория category Категория внутри раздела
Ссылка link Конкретная ссылка внутри категории

Все уровни поддерживают:

  • CRUD-операции (создание, чтение, обновление, удаление)
  • Порядок позиционирования (сортировка)
  • Иконки для каждого элемента
  • Каскадное удаление (при удалении родителя удаляются все вложенные элементы)

Типы ссылок

Тип Описание
web Веб-ссылка (URL)
file Файл на диске
folder Папка
program Программа/приложение
script Скрипт

2. Управление ссылками

CRUD и батч-операции

  • Создание, редактирование, удаление ссылок
  • Диалог создания/редактирования ссылки с полями: имя, URL, тип, аргументы, браузер, иконка
  • Массовые операции: пакетное создание, обновление, удаление, перемещение (до 5000 элементов за раз, настраивается через limits.bulk_operation_max_batch_size)
  • Уникальность: UNIQUE(category_id, name, url, args)

Избранные и недавние

  • Панель Избранное в верхней панели быстрого доступа (лимит: ui.max_favorites, по умолчанию 10)
  • Панель Недавние — ссылки, использованные в последнее время
  • Переключение статуса «Избранное» одним кликом

Поиск

  • Полноценный текстовый поиск по имени, URL, заметкам и аргументам ссылок
  • Дебаунс 300 мс для плавной работы (main_window._SEARCH_DEBOUNCE_MS)

Заметки

  • Поле заметок для каждой ссылки
  • Редактирование заметок через контекстное меню

3. Навигация и интерфейс

Дерево структуры

  • Левая панель — дерево Сфер → Разделов → Категорий
  • Высококачественная отрисовка иконок через кастомный делегат
  • Drag & Drop для переупорядочивания и перемещения элементов

Tiles-вид категорий

  • Центральная область — визуальная сетка категорий (Tiles)
  • Кастомный делегат с отрисовкой иконки + имени
  • Hover-эффекты, контекстное меню
  • Ленивая загрузка иконок

Таблица ссылок

  • Табличный вид ссылок с колонками: Избранное, Имя, Последнее открытие, Заметки
  • Дисковый кэш иконок с LRU-политикой (лимит файлов: 500, настраивается через icon_cache_max_files)
  • Drag & Drop для перемещения ссылок

Верхняя панель

  • Панель Избранного и Недавних
  • Панель быстрого добавления
  • Переключатель Сфер (Spheres Bar)

Строка состояния

  • Путь к текущему элементу
  • Статус базы данных
  • Количество ссылок

4. Управление базой данных

DatabaseManager

  • Потокобезопасное управление соединениями (thread-local)
  • WAL journal mode для производительности
  • NORMAL synchronous, 256 MB memory-mapped I/O
  • Настраиваемый размер кэша через переменную окружения APP_DB_CACHE_SIZE_KIB
  • Контекстный менеджер транзакций с автооткатом
  • Проверка здоровья соединения (ping)
  • Логирование времени выполнения всех операций

Миграции

  • 6 миграций: начальная схема, добавление browser_key, изменение уникального ограничения, индексы NOCASE, индексы производительности, индекс позиции избранного
  • Автоматический запуск миграций при инициализации

Резервное копирование

  • Автоматическое создание резервных копий SQLite
  • Настраиваемое максимальное количество копий
  • Восстановление из резервной копии с проверкой целостности
  • Фоновое создание/восстановление копий через воркеры

5. Импорт и экспорт

Полный импорт/экспорт

  • Экспорт всей структуры (Сферы → Разделы → Категории → Ссылки) вложенным JSON
  • Импорт полной структуры с восстановлением иерархии

Частичный импорт/экспорт

  • Экспорт отдельного раздела или категории
  • Поддержка пакетов .zip с иконками (StructureShareService)

Импорт из браузеров

  • Парсинг HTML-экспорта закладок из всех основных браузеров (Netscape формат)
  • Извлечение ссылок с категориями
  • Обработка base64-иконок
  • Нормализация URL

Профили браузеров

  • Обнаружение профилей Chrome, Edge, Firefox
  • Асинхронное сканирование профилей
  • Постоянный кэш профилей
  • Извлечение иконок из профилей браузеров

6. Отмена и повтор (Undo/Redo)

  • Полный стек отмены для операций со структурой и ссылками
  • Макрокоманды для группировки операций
  • Команды: создание, обновление, удаление, пакетные операции ссылок
  • Команды структуры: вставка разделов, вставка категорий
  • UndoDispatcher — диспетчер результатов отмены/повтора (регионы инвалидации, уведомления об ошибках)

7. Drag & Drop

  • Перетаскивание в дереве структуры для переупорядочивания
  • Перетаскивание ссылок между категориями
  • Кастомные pixmap для перетаскивания
  • MoveOperationsHandler для обработки операций перемещения

8. Темы оформления

5 встроенных тем:

Тема Описание
Light Светлая тема
Dark Тёмная тема
Dreamy Room Декоративная тема
Matrix Хакерская тема (зелёный на чёрном)
Violet Pulse Фиолетовая тема

Возможности тем:

  • Загрузка QSS-файлов с LRU-кэшированием
  • Блоки переопределения стилей
  • Инъекция размера шрифта
  • Пользовательские темы в отдельной директории
  • Импорт тем из .zip-пакетов с валидацией
  • Регистр тем (ThemeRegistry) с кэшированием метаданных

9. Интернационализация (i18n)

6 языков:

  • English (Английский)
  • Ukrainian (Украинский)
  • Russian (Русский)
  • French (Французский)
  • Spanish (Испанский)
  • German (Немецкий)

Возможности:

  • Переключение языка без перезапуска приложения
  • LanguageService — синглтон с сигналом languageChanged
  • Миксин ReTranslatable для автоматического обновления текста UI
  • Файлы переводов: .ts (исходные) и .qm (компилированные)

10. Горячие клавиши

40+ зарегистрированных комбинаций клавиш:

Категория Примеры
Глобальные F1–F8, Ctrl+Alt+комбинации
Таблица Ctrl+A, Ctrl+F, Ctrl+X, Ctrl+C, Ctrl+V, Ctrl+N, Ctrl+D
Редактирование Ctrl+Z, Ctrl+Y, Ctrl+X, Ctrl+C, Ctrl+V, Del, Ctrl+A
Панель доступности Alt+1–9
  • Полностью настраиваемые через настройки
  • Обнаружение конфликтов между комбинациями
  • Централизованный реестр HotkeyManager

11. Социальный шаринг

Поделиться ссылками через 10 каналов:

Платформа Способ
Telegram t.me/share/url
X (Twitter) twitter.com/intent/tweet
Facebook facebook.com/sharer
LinkedIn linkedin.com/sharing
Pinterest pinterest.com/pin/create
WhatsApp api.whatsapp.com/send
Viber viber://forward (с фоллбэкоп на буфер обмена)
Email (mailto) mailto: с шаблоном
Email Client Открытие системного почтового клиента
Gmail mail.google.com/mail
Буфер обмена Копирование текста

12. Проверка ссылок

Проверка доступности URL

  • Фоновая проверка доступности ссылок (DNS, HTTP-статус, SSL)
  • BadUrlCheckWorker — многопоточный воркер
  • Диалог BadUrlCleanupDialog с прогрессом
  • Пакетное удаление недоступных ссылок

Обновление иконок

  • Автоматическая загрузка фавиконов для веб-ссылок
  • IconRefreshWorker — фоновый пул потоков
  • Кэширование иконок с LRU и негативным кэшем
  • Миграция иконок ICO → PNG

13. Настраиваемость

Настройки (два хранилища):

  • QSettings (INI-формат) — тема, размер шрифта, горячие клавиши, макс. кол-во резервных копий, последний выбор в дереве, сортировка таблицы
  • settings.json — общие настройки приложения (пути, лимиты, интервалы)

Конфигурация:

  • Размеры окон и панелей
  • Размеры иконок и плиток
  • Лимиты панелей
  • Задержки запуска
  • Настройки логирования
  • Параметры базы данных

14. Производительность

  • WAL mode — параллельное чтение/запись в SQLite
  • Memory-mapped I/O (256 МБ) — быстрый доступ к данным
  • LRU-кэши — для иконок, QSS, тем
  • TTLCache (cachetools) — кэш структуры: maxsize=128, TTL=300 сек (5 мин)
  • Ленивая загрузка — иконки загружаются по мере необходимости
  • Фоновые воркеры — все тяжёлые операции в фоновом потоке
  • Дебаунс поиска — 300 мс
  • Кэширование структуры — 5 минут TTL (cachetools)
  • Потокобезопасные соединения — thread-local management

15. Архитектура

  • MVC/MVP с паттерном Facade
  • Слой сервисов — изоляция бизнес-логики от UI
  • Слой бизнес-контроллеров — StructureBusinessLogic, LinksBusinessLogic
  • UI-контроллеры — ActionController, MenuController, ThemeController, TopPanelsController и др.
  • Модульность — чёткое разделение на controllers, models, views, services, core
  • Result[T] тип — обработка ошибок со статусами SUCCESS/FAILURE/PARTIAL
  • UnitOfWork — декоратор транзакций для методов сервисов

16. Диалоги

Диалог Назначение
EntityDialogs (SectionDialog, CategoryDialog) Создание/редактирование разделов и категорий
NoteDialog Редактирование заметок к ссылкам
SettingsDialog Настройки приложения (тема, шрифт, хоткеи)
LinkDialog Создание/редактирование ссылок
ChromeProfileDialog Выбор профиля Chrome
BrowserProfileDialog Выбор профиля браузера для импорта закладок
ImportBrowserDialog Импорт закладок из браузера
FileSearchDialog Поиск файлов на диске
RestoreDbDialog Выбор и восстановление резервной копии БД
BadUrlCleanupDialog Проверка и удаление недоступных URL
AsyncOperationDialog Прогресс для асинхронных операций
DatabaseDialogs Подтверждение очистки избранного, восстановления БД, выбор файлов для импорта/экспорта

17. Тестирование

37 тестовых файлов, покрывающих:

  • Операции с БД (восстановление соединения, закрытие, миграции)
  • Батч-операции (атомарность, команды, сервис)
  • Структурные операции (кэш, сортировка, отложенные ссылки)
  • UI-компоненты (стили, темы, контекстное меню, снимки дерева)
  • Операции со ссылками (контроллер, обработка диалогов, команды)
  • Импорт/экспорт (импорт HTML из браузера)
  • Избранные/категории
  • Строка состояния
  • Обновление иконок, проверка URL
  • Защита архитектурного импорта

18. CLI-аргументы

Аргумент Описание
--debug Режим отладки
--log-level Уровень логирования
--no-gui Запуск без графического интерфейса
--version Версия приложения

19. Жизненный цикл приложения

  1. Инициализация: логирование, глобальный обработчик ошибок
  2. Запуск Qt: создание QApplication с HiDPI
  3. Ресурсы: загрузка иконок, тем, переводов
  4. БД: инициализация SQLite, запуск миграций, дефолтные данные
  5. Профили: ленивая загрузка профилей браузеров
  6. Работа: основной цикл Qt
  7. Завершение: грамотное закрытие с приоритетными обработчиками

Резюме

Aite Commander — это полнофункциональный менеджер закладок с:

  • 4-уровневой иерархической организацией
  • 5 типами ссылок (веб, файл, папка, программа, скрипт)
  • Импортом из всех основных браузеров
  • 5 темами оформления и 6 языками
  • Полным Undo/Redo и Drag & Drop
  • Социальным шарингом через 10 каналов
  • Автоматическим обновлением фавиконов и проверкой ссылок
  • Резервным копированием и восстановлением БД
  • 40+ горячими клавишами
  • 37 тестовыми файлами