Об этом проекте
GridSnap — это утилита с открытым исходным кодом, созданная на Tauri v2, React 18, TypeScript и Rust. Она представляет конфиденциальные данные — SSH-команды, учетные данные, API-ключи, строки подключения и фрагменты кода — в виде виртуализованной таблицы, которую можно вызвать по глобальному горячему клавишу (по умолчанию Ctrl+Shift+Space).
Движок таблицы: виртуализованная сетка 1000×26; навигация по клавиатуре (стрелки, Tab, Enter, Escape); редактирование по вводу; выделение нескольких ячеек кликом-перетаскиванием или Shift+стрелка; копирование через кнопку наведения или Ctrl+C (формат TSV для диапазонов); вставка TSV-данных через Ctrl+V; изменение размера столбцов и строк; поиск по всем ячейкам с мгновенным выделением; ручное сохранение через Ctrl+S; встроенная панель помощи с ярлыками и советами.
Листы: несколько листов с цветными вкладками; добавление, удаление и переименование с подтверждением удаления; перетаскивание для изменения порядка; переключение через Ctrl+Tab и Ctrl+Shift+Tab; прямой переход через Ctrl+1-9; палитра быстрого переключения Ctrl+K; действия правой кнопкой на вкладке. Листы поддерживают маскировку (весь лист показывает ●●●●), маскировку/демаскировку отдельных ячеек и опциональные пароли на лист. Защищенные паролем листы блокируются при каждом переключении вкладок, поиск на заблокированных листах отключен, а удаление защищенного листа требует подтверждения паролем. Защита от брут-форса вводит двухминутный тайм-аут после 10 неправильных попыток, сохраняемый между перезапусками.
Безопасность: по умолчанию без пароля, с хранилищем в виде незашифрованного JSON до установки пароля. Опциональный мастер-пароль шифрует хранилище. Пароли на листы используют AES-256-GCM с выводом ключа Argon2id (64 МБ памяти, 3 итерации, 4 параллелизма) и хранят токен проверки вместо открытых хешей. Формат хранения: соль (16 Б) | nonce (12 Б) | шифртекст | тег (16 Б). Ключи обнуляются после использования через zeroize Rust. Приложение не устанавливает исходящих сетевых соединений и не содержит телеметрии или облачных компонентов.
Интеграция с десктопом: всегда на переднем плане безрамочное окно с пользовательской полосой заголовка; системный трей с показом/скрытием; настраиваемый глобальный горячий клавиш; кнопка закрытия сворачивает в трей; опциональный запуск при старте системы; заявленный размер пакета около 8,5 МБ и ОЗУ около 30 МБ.
Темы: 11 встроенных тем, выбираемых в Настройках — Carbon (по умолчанию), Midnight, Ocean, Aurora, Deep Teal, Light, Velvet, Nordic, Rose, Terminal и Slate. Темы используют пользовательские свойства CSS и могут быть расширены добавлением записи в src/theme/themes.ts.
Сборка из исходников: требуются Node.js 18+ и Rust 1.70+. Клонируйте репозиторий, затем в директории gridsnap выполните npm install, npm run tauri dev для разработки или npm run tauri build для производства.
Использование: первый запуск открывается напрямую; навигация через клики или стрелки; редактирование двойным кликом или Enter; копирование через кнопку наведения или Ctrl+C; вставка TSV-данных через Ctrl+V; сохранение через Ctrl+S; создание листов через вкладку +; переключение листов через клик по вкладке, клавиатурные ярлыки или поиск Ctrl+K; переупорядочивание перетаскиванием вкладок; маскировка листов или ячеек через правый клик; установка паролей на лист или мастер-пароля по необходимости; скрытие через Ctrl+Shift+Space или кнопку закрытия; выход из меню значка трея.
Технологический стек: оболочка Tauri v2 с использованием нативного веб-представления ОС; фронтенд React 18 + TypeScript; CSS Modules с пользовательскими свойствами; пользовательский рендерер виртуализованной таблицы (префикс-сумма плюс бинарный поиск); состояние Zustand; сборка Vite 6; шифрование AES-256-GCM + Argon2id на Rust; зашифрованное хранилище JSON на локальной файловой системе.
Проект распространяется под лицензией MIT.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.