Skip to content

Latest commit

 

History

History
105 lines (73 loc) · 9 KB

File metadata and controls

105 lines (73 loc) · 9 KB

📋 Пошаговый план разработки FreeIt (Implementation Roadmap)

Документ декомпозиции и поэтапного плана реализации нативной утилиты FreeIt на Rust 2021 + Tauri v2 + Svelte 5.


🎯 Этап 1: Исследование и настройка Win32 ядра (Rust Engine)

  • 1.1. Интеграция Win32 Restart Manager API

    • Подключение windows-sys с crate-фичами Win32_System_RestartManager, Win32_Foundation, Win32_System_Threading, Win32_System_ProcessStatus, Win32_UI_WindowsAndMessaging.
    • Реализация функции Rust: get_locking_processes(path: &str) -> Vec<ProcessInfo>.
    • Поочерёдный вызов RmStartSession, RmRegisterResources (регистрация пути к файлу/папке) и RmGetList для получения списка PIDs и имён процессов.
  • 1.2. Низкоуровневый системный инспектор (NtQuerySystemInformation)

    • Вызов ntdll.dll с классом SystemExtendedHandleInformation для детекта скрытых системных дескрипторов и заблокированных папок, которые не определяются через Restart Manager.
    • Извлечение заголовка окна (через EnumWindows / GetWindowTextW) и иконки приложения (.exe) для отображения в UI.
  • 1.3. Логика разблокировки и выселения дескрипторов (Release Engine)

    • Реализация graceful_close_process(pid: u32) -> bool: отправка системных сигналов WM_CLOSE / WM_QUERYENDSESSION с таймаутом 3 секунды.
    • Реализация force_kill_process(pid: u32) -> Result<()>: закрытие хэндлов через NtDuplicateObject (DUPLICATE_CLOSE_SOURCE) или принудительное завершение TerminateProcess.
    • Реализация delete_on_reboot(path: &str) -> Result<()>: вызов MoveFileExW с флагом MOVEFILE_DELAY_UNTIL_REBOOT для системных файлов.

🛡️ Этап 2: Система безопасности и теневых бэкапов (Safe Vault)

  • 2.1. Создание модуля Safe Vault (vault.rs)

    • Реализация безопасного копирования заблокированного файла перед удалением через сырой бинарный поток FILE_SHARE_READ | FILE_SHARE_WRITE во временный каталог %LOCALAPPDATA%\Kobalt\FreeIt\Vault\.
    • Запись метаданных операции (vault_manifest.json: исходный путь, дата удаления, размер, список блокировавших процессов).
  • 2.2. Нативное удаление в Корзину Windows и интеграция с MiniBin

    • Удаление разблокированных файлов и папок через SHFileOperationW (FOF_ALLOWUNDO), чтобы элемент штатно попадал в системную Корзину Windows для возможности отмены/восстановления.
    • Оповещение оболочки Windows через SHChangeNotify(SHCNE_DELETE, ...) для синхронизации и мгновенного обновления статуса в MiniBin.

⏳ Этап 3: Отложенный вотчер (Watcher & Auto-Free)

  • 3.1. Разработка очереди ожидания (watcher.rs)

    • Использование асинхронного вотчера notify (на базе Win32 ReadDirectoryChangesW) для отслеживания момента высвобождения заблокированного файла с 0% CPU.
  • 3.2. Автоматическое удаление и уведомления

    • Автоматическое выселение файла при закрытии удерживающего процесса.
    • Отправка нативного Windows 11 Toast notification через tauri-plugin-notification: "Файл X удалён после закрытия Y".

🎨 Этап 4: Пользовательский интерфейс (Svelte 5 Runes + Tauri v2)

  • 4.1. Разработка UI компонентов

    • Сетка карточек заблокированных процессов с иконками приложений, PID, кнопками «Мягко закрыть» и «Убить процесс».
    • Цветовой индикатор риска (🟢 Безопасно, 🟡 Служба синхронизации, 🔴 Системный сервис Windows).
    • Кнопки быстрых действий: «Разблокировать все», «Удалить в Корзину», «Отложить удаление».
  • 4.2. Адаптивная стилизация Fluent Design

    • Эффект матового стекла Mica / Acrylic, поддержка тёмной и светлой темы Windows 11.
    • Drag-and-Drop зона для перетаскивания упрямых файлов прямо в окно программы.
  • 4.3. Интеграция предпросмотра PeekIt

    • Обработка нажатия клавиши Space: вызов CLI-команды peekit "C:\path\to\file" для предпросмотра заблокированного файла в режиме чтения.
  • 4.4. Человекочитаемые имена процессов (Human-Friendly Names)

    • Интеллектуальный маппер системных .exe в понятные описания (например, node.exe ➔ «Локальный dev-сервер Vite / Next.js»).
  • 4.5. ИИ-Консультант (Gemini API) и Настройки ключа / модели

    • Кнопка вызова краткого понятного объяснения причины удержания файла процессом («Почему заблокировано?»).
    • Автоматическое чтение общего API-ключа и выбранной модели из реестра Windows с DPAPI (HKCU\Software\KobaltTools\API).
    • Окно настроек FreeIt: ввод собственного Gemini API ключа и селектор модели (gemini-2.0-flash, gemini-1.5-flash и др.), если PolyShift не установлен.
    • Сохранение настроек в общий реестр HKCU\Software\KobaltTools\API для сквозного подхвата будущими утилитами Kobalt.

⚙️ Этап 5: Системная интеграция и Контекстное меню Windows

  • 5.1. Регистрация Shell Extension (Контекстное меню ПКМ)

    • Автоматическое добавление пункта "Разблокировать через FreeIt" в реестр Windows (HKCU\Software\Classes\*\shell\FreeIt).
    • Обработка аргументов командной строки при запуске freeit.exe "C:\path\to\file".
  • 5.2. Интеграция с плавающим карманом StashIt

    • Передача статуса блокировки файла в визитный виджет StashIt при перетаскивании.

🌐 Этап 6: Промо-сайт на Flutter Web и CI/CD

  • 6.1. Разработка лендинга (website/)

    • Оформление промо-страницы на Flutter Web с подключенным пакетом kobalt_ui (шапка KobaltNavBar, 3-колоночный футер KobaltFooter, сравнительные таблицы с конкурентами).
  • 6.2. Настройка GitHub Actions (.github/workflows)

    • Автоматическая сборка релизов Windows (.msi, Setup.exe, .zip portable).
    • Автопубликация промо-сайта на GitHub Pages.

📊 Матрица прогресса разработки

Модуль Описание Статус
Ядро Rust / Restart Manager get_locking_processes ⏳ В очереди
Release Engine Graceful close / Force kill / Delete on reboot ⏳ В очереди
Safe Vault Теневой бэкап и отмена ⏳ В очереди
Watcher Engine Отложенное удаление на notify ⏳ В очереди
Svelte 5 UI Карточки процессов, риск-индикаторы ⏳ В очереди
Shell Integration Контекстное меню ПКМ ⏳ В очереди
Flutter Web Site Промо-лендинг на kobalt_ui ⏳ В очереди