|
| 1 | +# PDAI v0.7.1 — Release Notes |
| 2 | + |
| 3 | +## Новые функции |
| 4 | + |
| 5 | +### Избранное (Like) |
| 6 | + |
| 7 | +- Кнопка "Избранное" (сердце) в детальном просмотре изображения |
| 8 | +- Индикатор лайка в сетке галереи (красное сердце в правом верхнем углу) |
| 9 | +- Массовый лайк: кнопка "Лайк" в режиме выделения ставит лайк всем выбранным изображениям |
| 10 | +- Функция "Удалить неотмеченные" в меню галереи — удаляет все изображения без лайка |
| 11 | +- Real-time синхронизация состояния лайков между детальным просмотром и сеткой |
| 12 | +- Сохранение статуса между сессиями |
| 13 | + |
| 14 | +### Скрытие изображений |
| 15 | + |
| 16 | +- Массовое скрытие: кнопка "Скрыть" в режиме выделения скрывает все выбранные изображения |
| 17 | +- Real-time синхронизация состояния скрытия между детальным просмотром и сеткой |
| 18 | +- Fallback для Android < 12: затемнение с иконкой вместо размытия |
| 19 | + |
| 20 | +### Редактор изображений |
| 21 | + |
| 22 | +Встроенный редактор для обработки сгенерированных изображений: |
| 23 | + |
| 24 | +- Поворот влево/вправо |
| 25 | +- Отражение по горизонтали и вертикали |
| 26 | +- Регулировка яркости, контраста и насыщенности |
| 27 | +- Сохранение изменений в оригинал или как новое изображение |
| 28 | + |
| 29 | +--- |
| 30 | + |
| 31 | +### Галерея в стиле Immich |
| 32 | + |
| 33 | +Полностью переработанная галерея с улучшенной производительностью: |
| 34 | + |
| 35 | +**Умная загрузка:** |
| 36 | +- Миниатюры загружаются только для видимых элементов |
| 37 | +- Файловая загрузка миниатюр (без Base64) — исправлен OOM при быстрой прокрутке |
| 38 | +- BlurHash плейсхолдеры — размытое превью пока грузится миниатюра |
| 39 | +- Shimmer-анимация для элементов без BlurHash |
| 40 | +- Двухуровневый кэш для миниатюр и полных изображений |
| 41 | + |
| 42 | +**Управление сеткой:** |
| 43 | +- Размер сетки от 1 до 6 колонок (раньше 2-5) |
| 44 | +- Щипок для изменения размера миниатюр |
| 45 | +- Перетаскиваемый скроллбар для быстрой навигации |
| 46 | + |
| 47 | +**Выделение перетаскиванием:** |
| 48 | +- Долгое нажатие активирует режим выделения |
| 49 | +- Движение пальца выделяет диапазон изображений |
| 50 | +- Обратное движение снимает выделение |
| 51 | +- Автопрокрутка при достижении краёв экрана |
| 52 | +- Плавные анимации при открытии изображения |
| 53 | + |
| 54 | +**Действия в режиме выделения:** |
| 55 | +- Лайк (сердце) — поставить лайк всем выбранным |
| 56 | +- Скрыть (глаз) — скрыть все выбранные |
| 57 | +- Удалить — удалить все выбранные |
| 58 | +- Сохранить в галерею устройства |
| 59 | +- Экспорт |
| 60 | + |
| 61 | +**Обновление при удалении:** |
| 62 | +- Галерея автоматически обновляется при удалении изображений из детального просмотра |
| 63 | +- Галерея автоматически обновляется после завершения генерации |
| 64 | + |
| 65 | +--- |
| 66 | + |
| 67 | +### Улучшения интерфейса |
| 68 | + |
| 69 | +**Плавающий индикатор генерации:** |
| 70 | +- Глобальный виджет статуса генерации поверх всех экранов |
| 71 | +- Смахивание влево/вправо для временного скрытия |
| 72 | +- Автоматически появляется при изменении статуса (начало генерации, результат) |
| 73 | +- Не блокирует навигацию (drawer открывается поверх виджета) |
| 74 | + |
| 75 | +**Скрывающаяся шапка:** |
| 76 | +- Верхняя панель скрывается при прокрутке вниз |
| 77 | +- Появляется при прокрутке вверх или достижении начала списка |
| 78 | +- Стандартный NestedScrollConnection паттерн (как в Google Photos) |
| 79 | +- Унифицированная высота 72dp на всех экранах |
| 80 | + |
| 81 | +**Навигация свайпами:** |
| 82 | +- Свайп между вкладками домашнего экрана (HorizontalPager) |
| 83 | +- Drawer открывается только кнопкой (не свайпом с края) |
| 84 | + |
| 85 | +**Просмотр изображений:** |
| 86 | +- Двойной тап для увеличения/сброса масштаба |
| 87 | +- Свайп вверх/вниз для показа/скрытия информации |
| 88 | +- Исправлены артефакты при листании между изображениями |
| 89 | + |
| 90 | +**Панель навигации:** |
| 91 | +- Плавно скрывается при полноэкранном просмотре |
| 92 | +- Автоматически появляется при возврате в галерею |
| 93 | + |
| 94 | +**Детали изображения:** |
| 95 | +- Кнопка "Поделиться" |
| 96 | +- Кнопка "Сохранить в галерею устройства" |
| 97 | +- Кнопка "Избранное" (лайк) |
| 98 | + |
| 99 | +--- |
| 100 | + |
| 101 | +## Исправления |
| 102 | + |
| 103 | +### Экспорт изображений |
| 104 | +- Исправлен OOM при экспорте большого количества изображений |
| 105 | +- Прямое копирование файлов вместо загрузки в память (Base64) |
| 106 | +- Параллельная обработка (4 потока) для ускорения экспорта |
| 107 | + |
| 108 | +### Кнопка "Пожаловаться" |
| 109 | +- Отключена для Full и FOSS сборок (только Play Store) |
| 110 | + |
| 111 | +### Соотношение сторон |
| 112 | +- Соотношение сторон теперь всегда берёт за основу поле ширины (а не более длинную сторону) |
| 113 | + |
| 114 | +### Fal AI |
| 115 | +- Исправлена проблема с API ключами, содержащими управляющие символы |
| 116 | +- Поле `requestId` в ответе от Fal AI теперь необязательное (исправлен сбой при быстром завершении) |
| 117 | + |
| 118 | +--- |
| 119 | + |
| 120 | +## Визуальные изменения |
| 121 | + |
| 122 | +- Новый логотип PDAI |
| 123 | +- Обновлённая иконка уведомлений |
| 124 | + |
| 125 | +--- |
| 126 | + |
| 127 | +## Технические изменения |
| 128 | + |
| 129 | +### Зависимости |
| 130 | + |
| 131 | +- Добавлен BlurHash 0.3.0 для размытых плейсхолдеров в галерее |
| 132 | + |
| 133 | +### База данных |
| 134 | + |
| 135 | +- Миграция v10 → v11: добавлено поле `blur_hash` в таблицу результатов генерации |
| 136 | +- Миграция v11 → v12: добавлено поле `liked` для функции избранного |
| 137 | + |
| 138 | +### Новые компоненты |
| 139 | + |
| 140 | +- `ImageEditor` — экран редактирования изображений |
| 141 | +- `CollapsibleScaffold` — scaffold со скрывающейся шапкой |
| 142 | +- `DraggableScrollbar` — перетаскиваемый скроллбар |
| 143 | +- `DragSelectionState` / `DragSelectionUtils` — выделение перетаскиванием |
| 144 | +- `ThumbnailGenerator` — генератор миниатюр |
| 145 | +- `ImageCacheManager` — менеджер кэша изображений |
| 146 | +- `BlurHashEncoder` / `BlurHashDecoder` — кодирование и декодирование BlurHash |
| 147 | +- `GalleryItemStateEvent` — real-time синхронизация состояний скрытия/лайка |
| 148 | +- `GetThumbnailInfoUseCase` / `GetGalleryItemsRawUseCase` — use cases для файловой загрузки миниатюр |
| 149 | +- `ToggleLikeUseCase` / `DeleteAllUnlikedUseCase` — use cases для функции избранного |
| 150 | +- `LikeItemsUseCase` / `HideItemsUseCase` — use cases для массовых операций |
| 151 | + |
| 152 | +--- |
| 153 | + |
| 154 | +## Локализация |
| 155 | + |
| 156 | +Добавлены строки: |
| 157 | +- Поделиться, Редактировать, Сохранить в галерею |
| 158 | +- Повернуть, Настройки, Яркость, Контраст, Насыщенность |
| 159 | +- Удалить неотмеченные, подтверждение удаления неотмеченных |
0 commit comments