История изменений

Все обновления PinPilot — исправления, новые функции и улучшения

1.4.20
Изменено
  • Новый логотип и иконка приложения. Рустор отклонил прошлую версию: оформление копировало облик другого сервиса — на иконке был круг с буквой, как у Pinterest. Теперь на иконке лётчик в шлеме с очками, без чужих знаков. Тот же образ заменил логотип и значок сайта
  • Новая иллюстрация на странице загрузки и на первом экране главной: лётчик в полный рост
Исправлено
  • Защита лицензии. Триал больше нельзя продлить переустановкой приложения: сервер запоминает отпечаток устройства и отсчитывает срок от первого запуска. Закрыта возможность обойти ограничение частоты запросов подменой заголовка
1.4.19
Исправлено
  • Обновление приложения снова ставится. Право установки приложений убрали в 1.4.16, потому что из-за него Рустор отклонил версию 1.4.11. Но без этого права Android не даёт приложению запустить установщик: вместо установки открывались настройки, а самого PinPilot в списке не было, потому что право не объявлено. Если у вас версия 1.4.16, 1.4.17 или 1.4.18 — скачайте файл с сайта вручную, дальше обновления пойдут как обычно
Изменено
  • Две сборки: для сайта и для Рустора. Файл для сайта ставит обновление сам, в один тап, как было раньше. Файл для Рустора права установки не просит: магазин относит его к высокорисковым и требует отдельного обоснования, а обновления там ставит сам магазин
1.4.18
Исправлено
  • Автолайки действительно заработали. В прошлой версии способ постановки лайка был найден верно, но приложение подбирало для лайков что попало: из страницы поиска брались любые числовые номера подряд, включая номера людей и досок. На такой номер Pinterest отвечает отказом. Теперь номера берутся из настоящих ссылок на пины. Проверено на живом аккаунте: 3 лайка из 3 поставлены
1.4.17
Исправлено
  • Лайки снова ставятся. Pinterest изменил способ постановки реакции: прежний адрес перестал принимать запросы, поэтому лайки не проходили вовсе. Новый адрес найден перехватом настоящего запроса из веб-версии и встроен в приложение. Проверено: счётчик реакций на пине меняется
1.4.16
Изменено
  • Поля ввода теперь везде одного вида — с обводкой. Раньше на экранах настроек поле было залитым серым прямоугольником, а в диалогах — с обводкой. Обводка ещё и подсвечивает поле красным, если введённое не подходит, чего заливка не делала
1.4.15
Добавлено
  • Настройки лайков отдельным экраном: кнопка «Настройки лайков» в разделе «Аудитория». Выбираете, кого лайкать — по ключевым словам или пины аккаунтов конкурентов, — и задаёте частоту: сколько лайков в день, пауза между лайками, сколько лайков за один подход и перерыв между подходами
  • Лайки в статистике: в карточке на главном экране появилась своя ячейка «Лайки» — раньше они увеличивали только общий счётчик
  • Тёмная тема: приложение следует тёмному режиму телефона
Изменено
  • Переключатель «Автолайки» вернулся на главный экран — рядом с автопостингом, подписками и отписками
  • Единая система оформления: все экраны берут цвета, размеры и шрифты из общих настроек — теперь вид приложения правится в одном месте
Исправлено
  • Кнопка сохранения не нажималась на экранах лайков, подписок и отписок — её нижний край уходил под системную полосу жестов телефона
  • Шапка экрана «Настройки постинга» уезжала при прокрутке
  • Стрелка «назад» не работала ни на одном экране
  • Кнопки «Подтвердить» и «Добавить из галереи» ломались на две строки
1.4.14
Исправлено
  • Сервер лицензий снова доступен: с 1 сентября сертификат pinpilot.ru выпускался по новой цепочке, а в приложении были закреплены отпечатки старой — проверка лицензии и пробного периода падала. Отпечатки обновлены
1.4.11
Добавлено
  • Тренды — новый экран с живыми данными поиска Pinterest: растущие запросы по слову с графиком за 52 недели, режим «Сейчас в тренде», тап копирует ключ для парсинга. Страна следует за языком приложения
Исправлено
  • Диалоги с вводом больше не теряют текст — контент в скролле, кнопки поверх клавиатуры, случайное закрытие заблокировано (коллекции, обратная связь)
  • Карточки коллекций — тонкий прогресс вместо пилюли, меню «⋮» вместо соседних кнопок правка/удаление
  • Кнопки ИИ в потоке — настоящий робот на 5 кнопках генерации, дубль в шапках удалён
Изменено
  • Безопасность: логи без секретов, пиннинг pinpilot.ru, сессии без плейнтекста, проверка подписи APK, покупателям только подписанный релизный APK
  • Версия: 1.4.10 → 1.4.11 (code 44)
1.4.10
Исправлено
  • Отписка не учитывала взаимность — Pinterest убрал поля is_following_me из списка подписок; фикс в 1.4.7 дефолтил «нет поля = невзаимный» → отписывался со всех. Теперь для каждого кандидата при unfollowNonMutualOnly=true делается точечная проверка профиля через UserResource (поле explicitly_following_me): mutual → пропуск, подтверждённый невзаимный → отписка, не удалось проверить → не отписываемся с предупреждением в журнале. Консервативная политика: лучше не отписаться, чем случайно убрать подписчика
  • Тулбары к единому виду — иконка Help вместо текста «?», кнопка языка показывает код (RU/EN/ES/PT), заголовки секций настроек сгруппированы, переключатели в одну колонку, карточка статистики 3+2 с эллипсисом, плюралы для posts/streams на RU/EN/ES/PT, самоназвания языков (Русский, English, Español, Português (Brasil))
Изменено
  • Версия: 1.4.9 → 1.4.10 (code 43)
1.4.9
Изменено
  • Локальная ИИ-модель — генерация спинтакса для заголовка, описания и хэштегов теперь работает офлайн на устройстве. Пользователь сам решает, скачивать ли модель (~400 МБ), кнопка «Локальная модель ИИ» на главном экране. В настройках потока у карточек «Заголовок», «Описание» и «Хэштеги» появились поля «Тема» + кнопка «Сгенерировать»
  • Удалены облачные ИИ-провайдеры — Groq, Gemini, прокси-VPN, регистрация ключей. APK стал легче, код упростился, прокси из РФ больше не нужен для спинтакса
  • Справка главного экрана и настроек потока — обновлены под локальную модель (RU+EN)
  • Скрыты AI-кнопки в коллекции — vision-фильтр и генерация вариантов картинок убраны из UI
  • Версия: 1.4.8 → 1.4.9 (code 42)
1.4.8
Исправлено
  • Расчёт vs постинг — «Применить к потокам» писало в лимит потока весь остаток коллекции вместо распределённой доли (у потока стояло 1003). Теперь пишутся доли из расчёта
  • Дележ суточного остатка — остаток делился поровну на все включённые потоки, включая потоки с нулём готовых (поток с 825 готовыми получал ~33 из 100). Теперь делится пропорционально готовым постам, пустые потоки пропускаются
  • Дубли записей в журнале — загрузка аккаунта вызывалась дважды при старте, каждая запись двоилась. Лишние вызовы убраны, журнал отсекает подряд идущие повторы
  • Изоляция аккаунтов — расчёт готовых при промахе подтягивал чужую коллекцию с тем же id у активного аккаунта. Обход убран, правило везде одно: коллекция принадлежит аккаунту потока
Изменено
  • Подпись расчёта: «Лимит на сутки»
  • Версия: 1.4.7 → 1.4.8 (code 41)
1.4.7
Исправлено
  • Покупка не проходила — CryptoBot webhook извлекал payload.payload как UUID, а это JSON-строка {"order_id":"..."} — SELECT WHERE id=JSON никогда не находил заказ, все крипто-платежи оставались «ожидает оплаты». Теперь парсит JSON и активирует лицензию
  • Отписка пропускала всех — при отсутствии полей взаимности (is_following_me и т.д.) считал всех взаимными (isFollowingMe=true) и при «только невзаимные» отписывал 0. Теперь по умолчанию false
  • Форма покупки: защита от SecurityError в Safari private mode (падал весь doPayment), валидация email и ник ≥2, корректная обработка 429 и сетевых ошибок, восстановление кнопки
Изменено
  • YooKassa: детальное логирование webhook, серверная валидация email/ник
  • Версия: 1.4.6 → 1.4.7 (code 40)
1.4.6
Изменено
  • Технический релиз: актуализация даты истории изменений
1.4.5
Исправлено
  • Дубли в автопостинге — убран авто-сброс used при нуле готовых в расчёте (возвращал уже опубликованные пины). Теперь показывается только диагностика per-stream
1.4.4
Исправлено
  • Триал: баннер «последний день» висел после исчерпания и полный доступ возвращался — теперь `daysLeft <=0` считается истёкшим независимо от флага, `started_at` с пустым значением не сохраняется, добавлен повторный чек в `onResume`
1.4.3
Исправлено
  • Диагностика «нет заготовленных постов»: при нуле готовых в «Рассчитать» теперь выводится per-stream детали (источников, total/unused по коллекциям, exists для галерей) и подсказки — сразу видно причину нулевого расчёта
1.4.2
Исправлено
  • Отписка от взаимных: getFollowing не находил флаг взаимности и считал всех невзаимными — теперь без явного поля пользователь считается взаимным и не отписывается
  • Постинг «нет постов» и потеря изображений при ошибках: фейлы теперь откатывают бронь (markAsUnusedBatch), добавлен автовосстановитель залипших коллекций при расчёте
Добавлено
  • Английский язык (фаза А): создан res/values-en/strings.xml (123 строки), переключение автоматическое по системной локали
1.4.1
Добавлено
  • Собственная подпись релиза (сертификат PinPilot): приложение подписывается выпускным ключом проекта вместо debug-сертификата — корректное автообновление и лучшая репутация у Google Play Protect
  • Экран помощи при блокировке установки Google Play Protect: перед установкой показывается диалог с инструкцией («Подробнее» → «Всё равно установить», либо отключение сканирования в Google Play → Профиль → Play Protect → шестерёнка)
Исправлено
  • Проверка обновлений на сервере падала с 500: BOM в update_config.json ломал парсинг JSON; чтение переведено на utf-8-sig
1.4.0
Добавлено
  • Пробный период 3 дня: новое устройство получает 3 дня бесплатного доступа, в главном экране баннер с обратным отсчётом, по истечении — экран активации с покупкой лицензии
  • Парсинг из Telegram: импорт фото и видео из публичных каналов в коллекции, загрузка вглубь истории канала, фильтр стикеров и эмодзи, кнопка «Парсить ещё»
  • Парсинг изображений с любых сайтов по URL: рендеринг JavaScript-страниц (Яндекс.Картинки и подобные) с прокруткой для ленивой загрузки, автодобавление https:// к адресу, проверка ссылок на доступность перед добавлением
  • Инструкции на каждом экране: сворачиваемая панель помощи (кнопка «?» в шапке) — что делает экран и как им пользоваться
Исправлено
  • Экран активации лицензии не показывался новым пользователям — приложение было доступно без ключа; проверки восстановлены, лицензия больше не слетает при сетевой ошибке
  • Автообновление приложения не срабатывало из-за ошибки сборки релиза
  • Пинтерест: строгая релевантность отсекала все результаты парсинга по ключевому слову
  • Telegram: повторный парсинг коллекции шёл не в тот обработчик и не находил новые изображения
  • Наплыв текста в поле URL диалога коллекции
Изменено
  • ИИ-функции скрыты в интерфейсе пользователя (фильтрация, генерация вариантов, спинтакс) — включаются для тестирования скрытым переключателем
  • Версия: 1.3.23 → 1.4.0 (code 33)
1.3.23
Исправлено
  • Дубли пинов при параллельном постинге из одной коллекции: потоки, стартовавшие одновременно, брали одни и те же изображения. Теперь выбор атомарный — изображения резервируются с лимитом и сразу помечаются использованными
Изменено
  • Версия: 1.3.22 → 1.3.23 (code 32)
1.3.22
Исправлено
  • Расчёт постинга не влиял на автоматизацию: кнопка «Рассчитать» только показывала текст. Теперь после «Рассчитать» активна кнопка «Применить к потокам» — план записывается в потоки и соблюдается автоматизацией
Изменено
  • База данных: версия 22 → 23, в таблицу потоков добавлен столбец delegateApplied
  • Версия: 1.3.21 → 1.3.22 (code 31)
1.3.21
Исправлено
  • Отписка не работала (в статистике 0 отписок): убрана сломанная вторичная проверка взаимности — отписки реально уходят
  • Дубли видео-пинов: одно видео попадало в коллекцию 2–3 раза под разными разрешениями — добавлен дедуп по имени файла
  • Gemini vision-фильтр коллекций: модель обновлена с fallback-списком при 404
  • Генерация вариантов изображений (Nano Banana): новый эндпоинт с fallback на legacy
Изменено
  • Версия: 1.3.20 → 1.3.21 (code 30)
1.3.20
Исправлено
  • Дубли пинов при автопостинге: в createPin перед основным запросом выполнялся v3-каскад из четырёх запросов. Два из них возвращали «тихие» HTTP 200 с HTML — Pinterest создавал пин, но приложение не распознавало успех и создавало второй пин. Теперь на каждый пин ровно один запрос: PinResource для изображений, StoryPinResource для видео, WebView-фолбэк только при ошибке всех API
Изменено
  • Версия: 1.3.19 → 1.3.20 (code 29)
1.3.19
Исправлено
  • Лимит постов в день теперь соблюдается: раньше при делегировании интервалов общий лимит применялся к одному проходу цикла, а не к суткам — потоки постили заново каждый цикл. Теперь лимит считается по скользящему окну 24 часа: остаток = лимит минус посты за последние 24 часа, делится на число включённых потоков. Если остаток исчерпан — цикл пропускается
Изменено
  • База данных: версия 21 → 22, новая таблица post_log с метками времени каждого поста для скользящего окна, старые записи удаляются автоматически
  • Версия: 1.3.18 → 1.3.19 (code 28)
1.3.18
Добавлено
  • Глобальная настройка постинга в «Потоки автопостинга»: общий лимит постов в день (до 250) на все потоки вместо ручного ввода лимита в каждом
  • Счётчик «Готово к постингу» — сколько постов реально заготовлено во включённых потоках (файлы галереи + неиспользованные изображения и видео коллекций)
  • Кнопка «Рассчитать» — автоматически распределяет лимит по потокам и доскам, показывает интервал между постами и приглашает запустить автоматизацию
  • Переключатель «Делегировать интервалы приложению» — приложение само задаёт лимит и интервалы по глобальному лимиту, а поля интервалов и лимита в настройках потока блокируются
Изменено
  • Автоматор учитывает делегирование: при включённой настройке глобальный лимит делится поровну на включённые потоки, интервал считается автоматически по окну расписания
  • Версия: 1.3.17 → 1.3.18 (code 27)
Исправлено
  • Удалённые коллекции больше не возвращаются: убрано автосоздание тестовой коллекции «videotext» при каждом запуске приложения
  • Отписка взаимных: при включённой отписке только невзаимных признак взаимности берётся сначала из списка подписок, а повторная проверка по профилю консервативна — если профиль не отдаёт поля взаимности, подписчик не отписывается
1.3.17
Добавлено
  • Статистика привязана к аккаунту (БД Room): каждый аккаунт ведёт собственную статистику, без примесей от других
  • Детальная раскладка статистики: тап по карточке «Статистика» открывает разбивку по дням (посты/лайки/подписки/отписки/ошибки) и по доскам
Изменено
  • Отписка невзаимных: взаимность проверяется через профиль кандидата — взаимные подписчики больше не отписываются
  • Версия: 1.3.16 → 1.3.17 (code 26)
1.3.16
Исправлено
  • Дублирующиеся пины при автоматизации: раньше для одного материала приложение пробовало каскад из ~8 вариантов создания пина (v3 ×4, ApiPinResource, Pin, ApiCResource, PinResource, StoryPinResource, WebView). Если один вариант «тихо» создавал пин (HTTP 200 без распознанных данных), следующий создавал дубль — риск бана за спам. Теперь для изображений используется только PinResource, для видео — только StoryPinResource, и любой успешный ответ считается созданным пином с немедленной остановкой. Один пост = ровно один пин
  • Доски сохранялись без ID: если список досок не был свежим при сохранении настроек, доска записывалась голым именем без пары id:name → Пинтелрест отвечал «Доска не найдена». Теперь при сохранении имена сопоставляются с существующими ID досок
Изменено
  • Версия: 1.3.15 → 1.3.16 (code 25)
1.3.15
Исправлено
  • Ночная пауза автоматизации при пропаже интернета: добавлена проверка сети перед каждым циклом — при отсутствии соединения (например, включён авиарежим) приложение ждёт 5 минут с понятным статусом вместо молчаливого зависания на часы, и продолжает работу, когда интернет возвращается
  • Анимация цифр статистики замедлена — плавный пересчёт 1.2–3.2 сек (было 0.5–1.6 сек)
Изменено
  • Версия: 1.3.14 → 1.3.15 (code 24)
1.3.14
Исправлено
  • Статистика больше не «скачет вниз»: устранены гонки при инкременте (синхронизация), миграция legacy-файлов по максимуму и конфликты старых файлов — счётчики стабильно растут
  • Статистика привязана к username: единый ключ SharedPreferences вместо отдельных файлов на аккаунт — цифры не теряются при смене аккаунта
  • Пауза после битой картинки: если пост не удался, поток ждёт 20 секунд и переходит к следующему изображению вместо полной задержки 45–60 минут
Изменено
  • Версия: 1.3.13 → 1.3.14 (code 23)
1.3.13
Исправлено
  • Пауза после битой картинки: если пост не удался (повреждённое изображение, ошибка загрузки или создания пина), поток больше не ждёт полную задержку 45–60 минут — пауза 20 секунд и переход к следующему изображению. Полная задержка ставится только после успешного поста
  • Заморозка фоновой работы: процесс больше не усыпляется системой (Doze) в середине цикла — добавлен WakeLock
Добавлено
  • Запрос разрешения работать в фоне при запуске автоматизации (исключение из оптимизации батареи) — защита от жёсткого энергосбережения на itel и других устройствах
Изменено
  • Версия: 1.3.12 → 1.3.13 (code 22)
1.3.12
Исправлено
  • Лимит подписок: 401 теперь трактуется как rate-limit — цикл подписок прерывается сразу вместо фоллбека на WebView и десятков ошибок в логах
  • Консервативные дефолты: maxFollowsPerDay = 15 (было 50), задержка между подписками 60–180 сек (было 30–90) — снижен риск блокировок при длительной работе
  • SessionManager fallback: maxFollows = 15 (было 20)
Изменено
  • Версия: 1.3.11 → 1.3.12 (code 21)
1.3.11
Исправлено
  • Дубликаты аккаунтов: аккаунт теперь идентифицируется по стабильному Pinterest user id (миграция БД 17→18) — вход больше не создаёт копию, даже если извлечение никнейма упало и вернулся display name вместо реального ника (Soulexpert / breathefree0177)
  • Единственный активный аккаунт: при входе в другой аккаунт старый больше не остаётся активным — потоки, коллекции и настройки предыдущего аккаунта больше не отображаются в новом
  • Автообновление сессии: авторизованные куки больше не перезаписываются гостевой сессией при обновлении cookies — устранены массовые ошибки 401 после 25-минутного автообновления
  • Надёжное извлечение никнейма: API-запрос пробует ru.pinterest.com, если в www-куках нет csrftoken; все сбои логируются
Изменено
  • Версия: 1.3.10 → 1.3.11 (code 20)
1.3.10
Исправлено
  • Лимит подписок Pinterest: при срабатывании анти-бот лимита (HTTP 429) цикл подписок останавливается с одним предупреждением вместо десятков ошибок — статистика больше не засоряется
  • Статистика ошибок: ошибки подписки по rate-limit больше не увеличивают счётчик Errors в главном окне
Изменено
  • Версия: 1.3.9 → 1.3.10 (code 19)
1.3.9
Исправлено
  • Дубликаты аккаунтов при повторном входе: вход через «Сменить аккаунт» больше не создаёт новый пустой аккаунт, если регистр логина отличается (pinpilot1 / PinPilot) — аккаунт ищется по логину и по cookie сессии, все его потоки и коллекции сохраняются
  • Приоритет авторизованных cookies: при автообновлении сессии гостевая cookie больше не перезаписывает авторизованную — выбирается сессия с признаком входа (__Secure-s_a)
  • Публикация пинов: создание пинов снова работает через PinResource/create/ после повторной авторизации
Изменено
  • Версия: 1.3.8 → 1.3.9 (code 18)
1.3.8
Исправлено
  • Бейдж «Использовано» теперь показывается зелёным в режиме выделения — был невидим на тёмном фоне
  • Follow через WebView при 401: если API возвращает 401, подписка выполняется через WebView как запасной вариант
  • WebView follow: используется Handler вместо view.postDelayed для headless WebView — метод postDelayed не работает без attached window
Добавлено
  • Автоудаление использованных изображений при включённой настройке deleteUsedImages — файлы удаляются после публикации
Изменено
  • Версия: 1.3.7 → 1.3.8 (code 17)
1.3.7
Исправлено
  • Кнопка для видео-платформ «Парсить ещё» на экране деталей коллекции теперь работает — дозагружает видео по ключевому слову
  • Кнопка для видео-платформ «Парсить» в списке коллекций больше не скрыта — можно запустить парсинг повторно
  • Парсинг из списка коллекций: для видео-коллекций запускается VideoParser вместо ImageParser
  • Подпись в видео-диалоге: убрано «Видео скачиваются на устройство» — видео сохраняются как ссылки
Добавлено
  • Дозагрузка видео: можно повторно спарсить видео по тому же ключевому слову, не создавая новую коллекцию
Изменено
  • Версия: 1.3.6 → 1.3.7 (code 16)
1.3.6
Добавлено
  • Автообновление сессии: каждые 25 минут приложение незаметно обновляет cookies через WebView — сессия больше не истекает через час
  • Восстановление после сбоя сессии: если автоматизация обнаружила потерю авторизации — сначала пробует обновить куки, а не останавливается сразу
Исправлено
  • CSRF-токен: теперь берётся настоящий csrftoken из cookies вместо случайной строки — API перестал отвечать 403 на часть запросов
Изменено
  • Версия: 1.3.5 → 1.3.6 (code 15)
1.4.0
Добавлено
  • Автоматизация продолжает работать, даже если свернуть приложение или заблокировать экран — в статус-баре появляется уведомление с кнопкой остановки
  • Видео-платформы: поиск видео по ключевому слову — можно создать коллекцию видео, указав тему вместо ссылки
  • Диалог для видео-платформ создания коллекции с полем ключевого слова и подсказками
Исправлено
  • Исправлена редкая ошибка при запуске приложения без подключения к интернету
  • Исправлено дублирование потоков автопостинга — потоки больше не удваиваются при повторном входе в настройки
  • Статистика теперь привязана к аккаунту — при смене профиля показываются цифры только текущего аккаунта
Изменено
  • Автоматизация продолжает работать, даже если свернуть приложение или заблокировать экран — в статус-баре появляется уведомление с кнопкой остановки
1.3.5
Исправлено
  • Парсинг досок: resolveBoardNames больше не удаляет доски, если имена не совпали с API — только предупреждение
  • Сортировка досок: новые доски теперь вверху списка при выборе (сортировка по ID, не reversed)
  • Потоки без досок: если у потока нет выбранных досок, используется доска из общих настроек аккаунта
  • resolveBoardNames: добавлено сохранение name->id из ответа API — раньше массив досок оставался пустым
  • Цикл перебора username в resolveBoardNames: исправлен continue на break при несовпадении досок
Изменено
  • resolveBoardNames использует реальный Pinterest username вместо названия аккаунта в приложении
  • Версия: 1.3.4 → 1.3.5 (code 14)
1.3.4
Добавлено
  • Парсинг изображений через SearchResource API — надёжнее и больше картинок, чем HTML-регулярки
  • Иконки редактирования и удаления на карточках коллекций — долгий тап больше не единственный способ
  • Название доски в карточке потока — «Доска: Путешествия» сразу видно без открытия
Изменено
  • Выбор досок: отображаются только названия, без числового ID
  • Выбор коллекции в потоке: только название, без ключевого слова в скобках
  • Значения по умолчанию: мин. задержка 45 мин, макс. 60 мин, макс. постов 50
  • Новые доски в начале списка выбора
  • Версия: 1.3.3 → 1.3.4 (code 13)
Исправлено
  • Изоляция аккаунтов: коллекции больше не смешиваются между разными аккаунтами
1.3.3
Исправлено
  • Кнопка «Остановить» теперь работает — флаги автоматизации передаются напрямую через Intent, без гонки с БД
  • Приложение больше не вылетает при авто-восстановлении автоматизации с выключенными тумблерами
Изменено
  • Версия: 1.3.2 → 1.3.3 (code 12)
1.3.2
Исправлено
  • Авторизация: зелёная надпись «Авторизовано» больше не появляется на странице входа — приложение ждёт реального логина, даже если есть старые cookies
  • Поиск авторов для автоподписки: переписан на API Pinterest — теперь находит 48+ авторов за запуск вместо 0
  • Подписка на найденных авторов: API follow подтверждён рабочим (code 200 success)
Изменено
  • Версия: 1.3.1 → 1.3.2
1.2.1
Исправлено
  • Исправлена редкая ошибка при запуске приложения без подключения к интернету
1.2
Добавлено
  • URL-постинг: создание коллекции по ссылке на страницу — парсер извлекает все изображения (img src, og:image, twitter:image)
  • Превью по URL: изображения в коллекции загружаются через Coil прямо с сайта-источника, не занимая память устройства
  • Прямые ссылки: при автопостинге используется URL изображения вместо multipart-загрузки — экономия трафика и времени
  • Умное определение типа: URL-коллекции отображают адрес источника, кнопка «Парсить ещё» для дозагрузки, кнопка «Добавить из галереи» скрыта
1.1.5
Добавлено
  • Форма обратной связи с полем «Тема обращения» — при отправке открывается почтовый клиент с предзаполненными данными и вложенным лог-файлом
  • Логирование ошибок автоматизации в файл — все ошибки пишутся в pinflow_log.txt для анализа
Изменено
  • Отправка отзывов через почтовый клиент на support@pinpilot.ru (вместо отправки на сервер)
  • Ошибки автоматизации теперь сохраняются в лог-файл — не теряются при перезапуске приложения
1.1.4
Исправлено
  • Удаление использованных изображений — при включённой настройке удаляется и файл, и запись из БД (больше нет пустых клеток)
  • Диалог выбора досок больше не всплывает автоматически при входе в настройки
  • Клип на поле досок открывает выбор из уже загруженных
  • Логирование ошибок createPin для отладки зависших запросов
  • Cookie-баннер скрыт по умолчанию, появляется только при первом визите
  • Мобильное бургер-меню: крест при открытии, белый текст кнопки
Добавлено
  • Кнопка «Выбрать все» в коллекциях — выделяет все изображения за раз
  • Одноколоночный обзор — изображения во всю ширину экрана с сохранением пропорций
  • Кнопка «Отклонить» в cookie-баннере (ФЗ-152)
  • Кнопка «Купить» внутри мобильного меню
  • Страница changelog для отслеживания обновлений
Изменено
  • Удалён demo.mp4 (6 МБ) — не использовался
  • Усилен пароль админки
  • API-ключи перенесены в .env (chmod 600)
  • Rate limiting 30 req/min на платёжных эндпоинтах
  • bcrypt для паролей партнёров
  • Лого: png (876KB) → WebP (79KB)
  • OG-изображение 1200×630, canonical на partner-страницы
  • gzip включён в nginx
1.1.3
Исправлено
  • ProGuard R8: убран `-repackageclasses a`, добавлены `-keep` правила
  • Видео-пины: StoryPinResource/create/ с полным story_pin JSON
  • Доски: авто-фикс board IDs при запуске
  • Партнёрский дашборд: исправлена ошибка с закрытием БД
Изменено
  • Реф-коды партнёров в нижнем регистре
  • Минимальная выплата: 2 000 ₽
  • APK v1.1.3 (code 5) загружен на сервер
1.1.2
Исправлено
  • getFollowing: HTML-скрапинг → API UserFollowingResource/get/
  • unfollowUser: break после первого успешного запроса — цикл в 9× быстрее
  • Параллельные instance: guard от двух экземпляров
  • canvasAspectRatio: locale bug (запятая vs точка)
1.1.1
Исправлено
  • Дневной лимит отписок (maxUnfollowsPerDay) теперь действительно работает
  • Карточка статистики: счётчики не выходят за рамки при 4+ цифрах
Добавлено
  • Подсказки по требованиям к изображениям при создании коллекции
1.1
Добавлено
  • Автоподписки и отписки через внутренний API Pinterest
  • Подписка на подписчиков конкурентов
  • Пакетная отписка с настраиваемым интервалом
  • Видео-коллекции
  • Кастомные иконки приложения
  • Яндекс Метрика + Google Analytics
  • Оплата через YooKassa (карты, СБП, SberPay)
  • sitemap.xml, robots.txt
Изменено
  • Приложение переименовано в PinPilot
  • Room DB: версия 6 → 10
  • Оплата: Prodamus → YooKassa
1.0
Добавлено
  • Первый релиз: автопостинг, лайки, парсинг контента
  • Спинтакс для заголовков и описаний
  • Коллекции изображений (парсинг + галерея)
  • Управление досками
  • Авторизация через cookie в WebView
  • Система лицензий с оплатой через CryptoBot