feat: mobile-like window size and always-visible stats

- Changed window size to mobile phone format (400x800)
- Removed width condition for ActiveProxyFooter - now always visible
- Added run-umbrix.sh launch script with icon copying
- Stats cards now display on all screen sizes
This commit is contained in:
Umbrix Developer
2026-01-17 13:09:20 +03:00
parent ec5ebbd54b
commit 76a374950f
245 changed files with 7931 additions and 1315 deletions

View File

@@ -0,0 +1,227 @@
# История изменений системы обновлений
## Версия 1.1 - Упрощение и Desktop-фокус
**Дата:** 2024
### 🎯 Главное изменение
Система обновлений переориентирована **только на Desktop платформы** (Windows, macOS, Linux).
Android версия использует Google Play Store для автоматических обновлений.
---
### ✨ Что изменилось
#### Код приложения
1. **new_version_dialog.dart** - Упрощён:
- ✅ Android: Открывает браузер/Google Play
- ✅ Desktop: Скачивание с прогресс-баром + автозапуск установщика
- ❌ Удалены: Android permissions, MethodChannel, InstallHandler
2. **about_page.dart**:
- Кнопка "Проверить обновления" видна **только на Desktop**
- Android не показывает кнопку (обновления через Google Play)
3. **Android код удалён**:
-`InstallHandler.kt` - удалён
-`REQUEST_INSTALL_PACKAGES` permission - удалён из манифеста
- ❌ Регистрация InstallHandler в MainActivity - удалена
#### Документация
1. **README.md** - Обновлён:
- Добавлено предупреждение о Desktop-only
- Изменена диаграмма процесса обновления
- Добавлены ссылки на Google Play для Android
2. **README_DESKTOP.md** - Создан:
- Подробная инструкция для Desktop платформ
- Структура файлов (.exe, .dmg, .AppImage)
- Примеры конфигурации
3. **api.php** - Обновлён комментарий:
- Указано, что API только для Desktop
- Упомянуто использование Google Play для Android
---
### 🧹 Что почистили
#### Удалённые файлы
- `android/app/src/main/kotlin/com/umbrix/app/InstallHandler.kt`
#### Удалённые permissions
- `android.permission.REQUEST_INSTALL_PACKAGES` из AndroidManifest.xml
#### Удалённый код
- MethodChannel для проверки Android permissions
- Функции `checkInstallPermission()`, `requestInstallPermission()`
- Сложная логика установки APK из приложения
---
### 📦 Зависимости
Используемые пакеты **только для Desktop**:
- `dio` ^5.4.1 - HTTP запросы и загрузка файлов
- `path_provider` ^2.1.1 - Временная директория для загрузок
- `open_file` ^3.3.2 - Открытие установщика после загрузки
Android теперь использует только:
- `UriUtils.tryLaunch()` - Открытие браузера/Google Play
---
### 🔄 Логика работы
#### Desktop (Windows/macOS/Linux)
```dart
if (Platform.isWindows || Platform.isMacOS || Platform.isLinux) {
// 1. Проверка обновлений на сервере
// 2. Показ диалога с информацией о версии
// 3. Скачивание с прогресс-баром (dio)
// 4. Сохранение в temp директорию
// 5. Автоматический запуск установщика (open_file)
}
```
#### Android
```dart
if (Platform.isAndroid) {
// 1. Проверка обновлений НЕ показывается (кнопка скрыта)
// 2. В production: прямая ссылка на Google Play
// 3. В debug: открытие браузера с download_url
}
```
---
### 🚀 Дальнейшие планы
#### Production деплой
1. **Windows**:
- Создание `.exe` установщика
- Подпись сертификатом
- Загрузка в `downloads/windows/`
2. **macOS**:
- Создание `.dmg` образа
- Нотаризация Apple
- Загрузка в `downloads/macos/`
3. **Linux**:
- Создание `.AppImage`
- Добавление `.deb` / `.rpm` пакетов
- Загрузка в `downloads/linux/`
4. **Android**:
- Публикация в Google Play Store
- Удаление кастомного сервера обновлений
- Автоматические обновления через магазин
---
### 💡 Почему так?
**Проблема:** Android требует сложные разрешения для установки APK из приложения:
- Нужен `REQUEST_INSTALL_PACKAGES` permission
- Пользователь должен вручную дать разрешение в настройках
- Это запутывает пользователей и выглядит нелогично
**Решение:**
- Android → Google Play Store (стандартный путь)
- Desktop → Собственный сервер обновлений (гибкость и контроль)
---
### 📝 Заметки разработчика
> "как то нелогично . но мы же его установили уже ... на андроид может и не надо такое обновление на exe надо будет"
Было принято решение упростить систему:
- На Android слишком сложно и нелогично обновлять APK изнутри приложения
- Google Play Store делает это автоматически и безопасно
- Desktop платформам нужна эта функция, так как нет централизованного магазина
- Разделение платформ упрощает код и улучшает UX
---
## Версия 1.0 - Первый релиз
**Дата:** 2024
- ✅ PHP API для проверки обновлений
- ✅ Web-панель администратора
- ✅ История версий
- ✅ Поддержка beta/stable релизов
- ✅ CORS настройки
- ✅ Rate limiting
- ✅ Логирование запросов
- ✅ Интеграция с Flutter приложением
**Проблемы версии 1.0:**
- Пыталась поддерживать Android с установкой APK
- Требовала сложные Android permissions
- Запутанная UX для пользователей Android
---
## Миграция с 1.0 на 1.1
### Для разработчиков
1. Обновите код приложения (Flutter):
```bash
git pull
flutter pub get
flutter build apk --debug # для тестирования
```
2. Удалите старый APK с устройства:
```bash
adb uninstall com.umbrix.app
```
3. Установите новую версию:
```bash
adb install build/app/outputs/flutter-apk/app-debug.apk
```
### Для сервера
Ничего менять не нужно! API осталось совместимым.
Просто обновите документацию:
- `README.md` ← основной файл
- `README_DESKTOP.md` ← подробности для Desktop
### Для пользователей
**Android:**
- Обновления теперь через Google Play Store
- Кнопка "Проверить обновления" больше не показывается
**Desktop:**
- Всё работает как раньше, но с улучшенным UX
- Прогресс-бар при скачивании
- Автоматический запуск установщика
---
## Контрольный список релиза
- [x] Упростить код для Android
- [x] Реализовать скачивание для Desktop с прогресс-баром
- [x] Удалить InstallHandler.kt
- [x] Удалить REQUEST_INSTALL_PACKAGES permission
- [x] Обновить README.md
- [x] Создать README_DESKTOP.md
- [x] Обновить комментарии в api.php
- [x] Протестировать на Android emulator
- [ ] Создать Windows .exe установщик
- [ ] Создать macOS .dmg образ
- [ ] Создать Linux .AppImage
- [ ] Опубликовать в Google Play Store
- [ ] Production деплой сервера