Repository navigation
Shellit v0.9.2
Pre-release
Pre-release
🚀 Shellit v0.9.2 — Мобильная зрелость, чистота интерфейса и криптографическая гигиена (Mobile Resilience & Pure UX)
📌 О релизе / Release Overview
Релиз v0.9.2 концентрируется на мобильной экосистеме, криптографической устойчивости кросс-платформенной синхронизации и эргономике Android-клиента:
- Криптографическая гигиена и исправление синхронизации паролей (
BUG-051): Устранен критический сбой авторизации на мобильных устройствах после E2EE-синхронизации. Экспорт паролей серверов вSyncManagerполностью изолирован от дешифрования пустых приватных ключей, предотвращая сбой AES-GCM. Добавлена безопасная очистка памятиrawPassBytes, защита от дубликатов хост-ключей вfindKnownHost(..limit(1)) и явная информативная диагностика при сбоях расшифровки реквизитов вSessionConnectController. - Бережное отношение к сети и защита от Fail2ban: Отключен 15-секундный фоновый TCP-опрос сокетов на Android, вызывавший срабатывание защитных систем серверов. Добавлен нативный жест Pull-to-refresh (
RefreshIndicator) для обновления доступности хостов по запросу пользователя. - Очистка мобильного интерфейса и адаптивность: Из мобильного экрана настроек полностью скрыты неиспользуемые компоненты ИИ (Gemini Assistant). Добавлены горизонтальные фильтры сред (
PROD,STAGE,DEV) и папок вMobileHostsView, полноэкранный адаптивный диалог добавления хостов, расширенная панель вспомогательных клавиш терминала (:,_,$,&,PgUp,PgDn,ENTER) и компактная шапка консоли в горизонтальной ориентации.
Release v0.9.2 focuses on mobile ecosystem stability, cryptographic integrity in cross-device E2EE sync, and refined Android ergonomics:
- Cryptographic Hygiene & Vault Sync Resilience (
BUG-051): Fixed an issue where server passwords failed to decrypt on Android following vault synchronization. InSyncManager, passphrase export is cleanly decoupled from private key handling, preventing AES-GCM errors on empty keys. Added secure memory zeroization for passphrase buffers, duplicate tolerance infindKnownHost(..limit(1)), and explicit UI diagnostic feedback upon decryption failures. - Network Politeness & Fail2ban Prevention: Removed aggressive 15-second background TCP pings on mobile devices to prevent triggering brute-force and port-scan defenses on sensitive hosts. Replaced with single initial probe and user-driven Pull-to-refresh (
RefreshIndicator). - Streamlined Mobile UX & Responsive Touch Layout: Removed desktop-only AI and Gemini configuration cards from the mobile settings view. Introduced environment (
PROD,STAGE,DEV) and folder filter chips inMobileHostsView, responsive full-widthHostFormDialog, essential Unix terminal keys (:,_,$,&,PgUp,PgDn,ENTER), and compact landscape header metrics.
🔒 Ключевые изменения / Key Changes
1. Криптографическая устойчивость E2EE-синхронизации (BUG-051)
- Изоляция дешифрования в
SyncManager: Для серверов с парольной аутентификациейencryptedPrivateKeyимеет нулевой размер. Ранее вызовdecryptBytesпадал сArgumentError, прерывая экспорт пароляencryptedPassphrase. Теперь пустые ключи безопасно пропускаются (k.encryptedPrivateKey.isNotEmpty), а временный буфер пароля гарантированно зануляется в оперативной памяти (rawPassBytes.fillRange(0, length, 0)). - Безопасный поиск отпечатков хостов: В
findKnownHostдобавлен оператор..limit(1), исключающий падениеStateError: Too many elementsпри наличии дублирующихся записейknown_hosts. - Информативные ошибки аутентификации: В
SessionConnectControllerпри сбое расшифровки пароля или ключа клиент не пытается подключаться сpassword = null, а мгновенно возвращает четкое уведомление с рекомендацией перепроверить пароль или повторить синхронизацию. - Отказ от навязчивого сокетного пинга: Фоновый периодический опрос портов отключен на Android, защищая узлы от блокировок брандмауэрами.
2. Чистота и эргономика мобильного интерфейса
- Скрытие настроек ИИ: Карточка
AiSettingsCardи блок интеграции Gemini убраны из мобильного профиля настроек (SettingsScreen), устраняя визуальный шум и неиспользуемые параметры. - Интерактивные фильтры каталога хостов: В верхнюю часть
MobileHostsViewдобавлена горизонтальная лента чипов (All,Production,Staging,Development, а также папки), синхронизированная сhostFilterProvider. - Полноэкранный адаптивный
HostFormDialog: На экранах уже 600dp диалог разворачивается на всю ширину экрана с компактными отступами, обеспечивая удобный ввод учетных данных на сенсорной клавиатуре. - Расширенный
MobileAccessoryBar: В строку вспомогательных клавиш добавлены необходимые символы для Vim/Bash (:,_,$,&,PgUp,PgDn,ENTER), стрелки навигации сгруппированы рядом с модификаторамиCtrlиAlt. - Компактная шапка ландшафтного режима: При повороте устройства в горизонтальное положение высота верхней панели терминала сокращается с 46dp до 36dp, освобождая максимальное количество строк под вывод консоли.
- Защита от переполнений верстки: Кнопки действий карточек SSH-ключей в
KeychainScreenпереведены наWrap, исключая ошибки переполненияRenderFlexна узких смартфонах.
📦 Сборка и верификация / Verification
- Flutter & Dart Analysis: 0 ошибок, 0 предупреждений (
flutter analyze— All clear). - Unit & Regression Tests: 100% прохождение тестов по всем пакетам (63 теста
storage_vault, 150 тестовterminal_ui, 61 тестapps/shellit). - Сборка Android: Собран релизный тестовый APK
app-release.apk(~68.8 МБ), готовый к установке и проверке. - Сайт и документация: Актуализирован
StatsHUD.astro(51 разобранный инцидент, статус v0.9.2), добавлены главы Хроники (Акт XIII).
📦 Git Commits & Changes
🚀 Features & Enhancements
- feat(mobile): release v0.9.2 - mobile resilience, touch ergonomics, and vault sync fix (9bc79af)
📝 Documentation
- docs(roadmap): sync website roadmap dataset and PocketBase migration for v0.9.1 (0a67be0)
Full Changelog: v0.9.1...v0.9.2