История

Tidy вернулся: история полной переработки спустя 6 лет

12 мин чтения
Tidy Team
Tidy App Icon
v2.0 NEW RELEASE

Если вы читаете это, возможно, вы помните Tidy. Может быть, вы пользовались им в 2018 или 2019 году. Может быть, вы пролистывали сотни фотографий, наводя порядок в галерее одним движением большого пальца. Может быть, вы оставили нам отзыв. Если так -- спасибо. Мы прочитали каждый из них.

Читайте также: Что нового в Tidy 2.1 и 2.2: сортировка по альбомам, еженедельные челленджи и другое

А потом мы исчезли.

Шесть лет Tidy лежал нетронутым в App Store. Без обновлений. Без новых функций. Без коммуникации. Приложение всё ещё работало -- в основном -- но мир вокруг продолжал двигаться. iOS развивалась. Телефоны получили лучшие камеры (и более объёмные фотобиблиотеки). Новые приложения появлялись и исчезали. А Tidy просто… лежал.

Читайте также: Как организовать фотографии на iPhone: Полное руководство (2026)

Сегодня всё меняется. Tidy v2.0 -- это полная переработка с нуля. Не обновление. Не освежение. Совершенно новое приложение, построенное с нуля на современных технологиях, с новыми функциями и всем, чему мы научились за годы после первого запуска.

Читайте также: Как AI находит дубликаты и похожие фото (и почему это лучше ручного поиска)

Это история о том, как мы к этому пришли.

Оригинальный Tidy: 4,8 звёзд и 723 отзыва

Tidy вышел в 2018 году с простой идеей: наведение порядка в фотобиблиотеке должно ощущаться как игра. Свайп вправо -- оставить фото. Свайп влево -- удалить. Без сложных меню, без систем папок, без организационных фреймворков. Только быстрые, инстинктивные решения, которые устраняют беспорядок.

Реакция нас удивила. За несколько месяцев Tidy набрал сотни отзывов со средней оценкой 4,8 из 5 звёзд. К моменту, когда мы достигли 723 отзывов, картина была ясна: людям нравилась механика свайпов. Им нравилась скорость. Им нравилось, что скучная задача стала увлекательной.

Tidy в цифрах

  • 4,8 Рейтинг
  • 723 Отзыва
  • 31 Язык
  • 2018 Год запуска

Users told us things like “this is the app I did not know I needed” and “I cleared 3,000 photos in one afternoon.” The app was translated into 31 languages. It appeared in App Store features in multiple countries. For a small indie app with a focused purpose, it punched well above its weight.

Оригинальный Tidy был написан на Swift 4 с использованием архитектуры MVC, которая была стандартом для iOS-разработки в то время. Это было добротное приложение для своей эпохи. Но технологии движутся быстро, и к 2019 году начали проявляться трещины.

Почему мы молчали 6 лет

Честный ответ: так сложилась жизнь.

Tidy был создан маленькой командой, и когда приоритеты сместились -- как это бывает у инди-разработчиков -- приложение оказалось в конце списка. Не было драматичной истории, ни покупки, ни решения о закрытии. Просто медленный дрейф, который случается, когда побочный проект перестаёт получать внимание.

Тем временем разрыв между тем, где находился Tidy и где он должен был быть, продолжал расти:

  • SwiftUI появился в 2019 году и быстро созрел, из-за чего интерфейсы на UIKit стали выглядеть устаревшими
  • Фотобиблиотеки выросли в размерах. Средний пользователь iPhone перешёл с 2 000-5 000 фото к 10 000-50 000
  • AI и машинное обучение перешли из экспериментальных в ожидаемые. Пользователи стали ожидать, что приложения будут умными
  • Виджеты iOS и Live Activities создали новые поверхности, которые от приложений ожидалось поддерживать
  • Требования к конфиденциальности резко возросли -- пользователи стали требовать обработку данных на устройстве и прозрачность
  • Сам Swift прошёл через версии от 5.0 до 6.0 со строгой конкурентностью и новыми возможностями языка

К тому моменту, когда мы серьёзно взглянули на Tidy снова, оригинальная кодовая база была археологией. Код на Swift 4, который не компилировался с современными инструментами. Паттерны UIKit, которые были дважды заменены. Архитектура, которая не могла поддержать ни одну из функций, которые теперь ожидали пользователи.

У нас было два варианта: попытаться залатать и обновить старую кодовую базу или начать с чистого листа.

Решение переписать с нуля

Мы выбрали переписать. Вот почему.

Обновление старого Tidy означало бы перенос кода со Swift 4 на Swift 6, переписывание всего интерфейса с UIKit на SwiftUI, замену архитектуры MVC на что-то современное, добавление новых фреймворков Apple (Vision, Core ML, StoreKit 2, WidgetKit) и каким-то образом заставить все эти изменения работать вместе, не сломав существующее приложение.

In software development, there is a famous essay by Joel Spolsky called “Things You Should Never Do, Part I,” which argues that rewriting from scratch is almost always a mistake. And for most projects, he is right. But Tidy was the exception:

  • Ноль общего кода -- После оценки старой кодовой базы мы подсчитали, что менее 5% оригинального кода можно было бы переиспользовать. Язык слишком сильно изменился, фреймворки были совершенно другими, а архитектура -- несовместимой
  • Другая платформа -- Оригинальный Tidy был нацелен на iOS 11. Новый Tidy нацелен на iOS 18. Это фактически разные платформы с разными возможностями, языками дизайна и ожиданиями пользователей
  • Расширенный охват -- Оригинальный Tidy делал одну вещь: свайп для очистки. Новому Tidy нужны были AI-фильтры, фоторедактор, режим сравнения, геймификация, виджеты, Live Activities и многое другое. Пытаться прикрутить всё это к старой архитектуре -- всё равно что надстраивать этажи на одноэтажный дом, ставя их на крышу
  • Чистый фундамент на будущее -- Начало с нуля означало, что мы можем принять строгую конкурентность Swift 6 с первого дня, использовать SwiftData вместо Core Data, реализовать правильную Clean Architecture и заложить фундамент, который будет поддерживать годы будущей разработки

Решение о переписывании далось не быстро. Мы потратили недели на оценку старого кода, прототипирование в обоих направлениях (обновление vs. переписывание) и в итоге пришли к выводу, что полная переработка будет быстрее, чище и приведёт к лучшему приложению, чем любая попытка модернизировать оригинал.

Tidy App Icon

Готовы навести порядок в галерее?

Скачайте Tidy и начните свайпать. Обнаружение дубликатов с AI, умные фильтры и встроенный фоторедактор.

Всё новое в Tidy v2.0

Так что же мы создали? Вот каждая крупная функция и улучшение в новом Tidy.

Переписывание на SwiftUI для современной iOS

The entire app is built with SwiftUI, Apple’s modern declarative UI framework. This means fluid animations, native support for Dynamic Type (accessibility text sizing), automatic Dark Mode support, and a consistent, polished look across every screen. The UI feels like it belongs on iOS 18 because it was built specifically for it.

Умные AI-фильтры

This is the biggest addition to Tidy’s core experience. Instead of manually scrolling through your entire photo library, you can now use AI-powered filters to surface specific types of photos that are likely candidates for cleanup:

  • Размытые фото -- AI определяет фотографии с размытием движения, дрожанием камеры или промахом фокуса
  • Низкое качество -- Обнаруживает плохо экспонированные, чрезмерно сжатые или иначе некачественные изображения
  • Похожие фото -- Группирует почти идентичные фотографии с помощью перцептуального хеширования, чтобы вы могли выбрать лучшую и удалить остальные
  • Дубликаты -- Находит точные и почти точные дубликаты на основе метаданных и визуального сходства
  • Лучшие кадры -- В группе похожих фото AI предлагает самый чёткий и лучше скомпонованный вариант
  • Utility - Identifies screenshots, receipts, documents, and other “utility” photos that you probably do not need to keep forever

All AI processing happens on your device using Apple’s Core ML and Vision frameworks. No photos are uploaded to any server. The analysis runs in the background while your phone is charging overnight, so it is ready when you are.

Полноценный фоторедактор с 29 фильтрами

Tidy v2.0 включает полноценный набор инструментов для редактирования фото. Это не простой редактор яркости/контрастности -- это профессиональная система редактирования из пяти категорий:

  • Настройка -- 10 ползунков настройки, включая экспозицию, света, тени, контрастность, насыщенность, теплоту, резкость, зернистость и размытие фона
  • Бьюти -- 6 натуральных бьюти-инструментов с бодипозитивным посылом (Сглаживание кожи, Портретный свет, Осветление глаз, Коррекция овала лица, Увеличение глаз, Объём губ)
  • Ретушь -- Восстанавливающая кисть и отбеливание зубов для точечных коррекций
  • FX -- 29 креативных фильтров от тонких плёночных эмуляций до смелых художественных эффектов
  • AI -- Повышение разрешения и эффекты переноса стиля на базе AI

Редактор включает отмену/повтор, слайдер сравнения до/после и масштабирование щипком на холсте. Каждое редактирование неразрушающее -- вы можете сохранить как новую копию или заменить оригинал.

Режим сравнения

Одной из самых запрашиваемых функций для оригинального Tidy была возможность сравнивать похожие фото бок о бок. Tidy v2.0 реализует это с помощью специального режима сравнения, который включает ленту миниатюр для быстрого просмотра, масштабирование щипком для детального осмотра и слайдер до/после для оценки правок.

Геймификация

Оригинальный Tidy делал очистку увлекательной благодаря механике свайпов. Tidy v2.0 развивает это дальше с помощью полноценной системы геймификации:

  • Статистика сеансов -- Просмотренные, сохранённые, удалённые фото и время каждого сеанса
  • Серии очистки -- Отслеживание ежедневных и еженедельных серий для набора темпа
  • Достижения -- Система достижений с анимацией конфетти и тактильными эффектами
  • Карточки очистки для шеринга -- Красивые графики-итоги, готовые к публикации в соцсетях

20 языков, включая RTL

Tidy v2.0 запускается с поддержкой 20 языков: английский, иврит, арабский, персидский, русский, французский, хинди, румынский, испанский, португальский, немецкий, итальянский, японский, корейский, нидерландский, польский, тайский, турецкий, упрощённый китайский и традиционный китайский.

Три из этих языков (иврит, арабский и персидский) пишутся справа налево (RTL). Каждый экран в Tidy спроектирован так, чтобы корректно переключаться для пользователей RTL, включая свайп-игру, редактор, слайдер до/после и все элементы навигации. Поддержка RTL -- не запоздалая мысль, она заложена в основу.

Интерактивные виджеты и Live Activities

Interactive Widgets let you start a cleaning session from your Home Screen with a single tap. Live Activities show your cleanup progress on the Lock Screen and Dynamic Island in real time. Together, they reduce the friction between “I should clean my photos” and actually doing it.

Подписка Gold

Tidy v2.0 -- бесплатное приложение. Основная свайп-игра, базовые фильтры и сравнение фото доступны без оплаты. Для тех, кто хочет большего, Tidy Gold открывает:

  • Все умные AI-фильтры (обнаружение размытых, похожие фото, лучшие кадры, служебные)
  • Полный фоторедактор со всеми 29 фильтрами и бьюти-инструментами
  • Продвинутые функции геймификации
  • Без рекламы

Gold доступен как подписка на 1, 3 или 6 месяцев. Мы выбрали эту модель, потому что она выравнивает наши стимулы с вашими: мы преуспеваем только если вы продолжаете считать Tidy достаточно ценным, чтобы продолжать пользоваться.

Технические вызовы переработки

Переписывание приложения с нуля звучит освобождающе -- и так оно и есть, поначалу. Но это также несёт свои вызовы. Вот некоторые из самых значительных технических препятствий, с которыми мы столкнулись.

Строгая конкурентность Swift 6

Swift 6 ввёл строгую проверку конкурентности -- компилятор обеспечивает потокобезопасность на этапе сборки. Это отлично для предотвращения багов, но невероятно требовательно при разработке. Каждый фрагмент разделяемого изменяемого состояния должен быть защищён актором, помечен как Sendable или изолирован на главном потоке.

Для приложения работы с фото это особенно сложно, потому что обработка фотографий по своей природе конкурентна. Загрузка миниатюр, запуск AI-анализа, применение фильтров, сохранение правок -- все эти операции происходят в фоновых потоках, в то время как UI обновляется на главном потоке. Правильная настройка модели конкурентности потребовала значительных усилий, но результат -- приложение, которое практически не падает из-за проблем с потоками.

Перцептуальное хеширование для обнаружения похожих фото

Поиск похожих фотографий звучит просто, пока не попробуешь реализовать это в масштабе. Tidy использует технику под названием перцептуальное хеширование (pHash) для визуального сравнения фотографий. Каждая фотография сводится к 64-битному хешу, представляющему её визуальное содержание, и фотографии с похожими хешами группируются вместе.

Сложность заключалась в настройке порога сходства. Слишком строго -- и связанные фото не группируются вместе. Слишком свободно -- и несвязанные фото оказываются в одной группе. Мы остановились на пороге расстояния Хэмминга 10 для стандартных сравнений и 14 для серийных снимков (сделанных в течение 10 секунд), с максимальным диаметром группы 14 для предотвращения чрезмерного роста кластеров.

Нам также пришлось выбрать правильный алгоритм кластеризации. Простой жадный подход иногда разделял связанные фото на отдельные группы. Мы реализовали кластеризацию Union-Find, которая корректно определяет связные компоненты и применяет ограничение по диаметру только к чрезмерно большим группам. Результат -- естественные, интуитивно понятные группировки фотографий.

Обработка AI на устройстве

Запуск AI-моделей на устройстве -- это постоянный компромисс между точностью и производительностью. Модель, которая обрабатывает фото за 2 секунды, непригодна, когда нужно проанализировать 30 000 фотографий. Модель, работающая за 10 миллисекунд на фото, может быть недостаточно точной.

Мы решили это с помощью фоновой обработки. Tidy использует iOS BGProcessingTasks для запуска полного AI-анализа ночью, пока телефон заряжается и подключён к WiFi. Анализ включает обнаружение размытия, оценку качества, хеширование сходства и обнаружение лиц -- всё обрабатывается с высокой точностью, потому что нет давления времени. К утру результаты готовы.

Для функций реального времени (таких как бьюти-редактор) мы используем оптимизированные конвейеры, жертвующие некоторым качеством ради скорости. Бьюти-инструменты работают с интерактивной частотой кадров благодаря шейдерам Metal GPU и фильтрам Core Image от Apple, которые аппаратно ускорены на всех современных iPhone.

Metal-шейдеры для деформации лица

Бьюти-инструменты, изменяющие черты лица (Коррекция овала, Увеличение глаз, Объём губ), используют шейдеры Metal CIWarpKernel для деформации меша в реальном времени. Написание этих шейдеров потребовало работы в ограниченном подмножестве Metal Shading Language, совместимом с конвейером Core Image.

Один особенно коварный баг был связан с деформацией линии подбородка. Первоначальная реализация размещала якорь деформации по неправильной вертикальной координате (на лбу вместо подбородка), из-за чего функция коррекции овала изменяла не ту часть лица. Потребовалось тщательное изучение системы координат лицевых ориентиров фреймворка Vision, чтобы правильно выставить позиционирование.

Поддержка RTL-верстки

Поддержка языков справа налево -- это больше, чем просто переворот выравнивания текста. Каждый интерактивный элемент должен корректно работать в обоих направлениях. Свайп-игра сохраняет своё смысловое значение в RTL -- жесты остаются теми же, потому что они основаны на семантике оставить/удалить, а не на направлении влево/вправо. Слайдер до/после в фоторедакторе корректно переключает ориентацию. Потоки навигации разворачиваются. И каждое ограничение верстки было протестировано в режимах LTR и RTL.

Что дальше

Tidy v2.0 -- это фундамент, а не финишная черта. Вот предварительный обзор того, над чем мы работаем для будущих обновлений:

  • Инструменты обрезки и поворота -- Появятся в v2.1 с направляющими выравнивания и пресетами соотношения сторон
  • Интеграция с Siri и App Intents -- Команда «Привет, Siri, начни сеанс очистки фото» будет работать напрямую
  • Сжатие видео -- Уменьшение размера больших видеофайлов с сохранением качества
  • Челленджи по очистке -- Еженедельные и ежемесячные вызовы с тематическими целями (например, «Неделя чистки скриншотов»)
  • Прогноз места -- AI-предсказания того, когда на вашем телефоне закончится память, основанные на ваших привычках фотографирования
  • Больше AI-фильтров -- Включая фильтр обнаружения мемов и улучшенную категоризацию

Мы также изучаем интеграцию с Foundation Models API от Apple для поиска на естественном языке прямо на устройстве (например, «покажи мне фото моей собаки на пляже»), хотя это зависит от графика выпуска API Apple.

Наша цель -- выпускать значимые обновления каждые 4-6 недель. Мы больше не замолчим.

Спасибо нашему сообществу

Прежде чем закончить, мы хотим сказать кое-что напрямую тем, кто пользовался оригинальным Tidy и, возможно, читает эти строки.

Спасибо за отзывы. Спасибо за запросы на новые функции. Спасибо за отчёты об ошибках. Спасибо за твиты, сообщения и рекомендации друзьям. Вы создали нечто особенное вокруг простого приложения, и мы благодарны за это.

Мы знаем, что шесть лет молчания -- это долго. Мы знаем, что доверие, однажды утраченное, требует усилий для восстановления. Мы намерены заслужить его обратно -- не обещаниями, а стабильными обновлениями, прозрачной коммуникацией и приложением, которое становится всё лучше.

Если вы пользовались оригинальным Tidy, мы будем рады видеть вас снова. Скачайте v2.0, попробуйте и расскажите нам, что думаете. Ваши отзывы определили первую версию Tidy и будут определять каждую последующую.

А если вы новичок в Tidy -- добро пожаловать. Вы присоединяетесь в самом начале чего-то, чем мы по-настоящему гордимся. Надеемся, вам понравится.

Лучшее время навести порядок в фотобиблиотеке было шесть лет назад. Второе лучшее время -- прямо сейчас.

Хотите узнать, что умеет новый Tidy? Начните с наших гайдов по натуральным бьюти-фильтрам, сравнению фото бок о бок, формированию привычки очистки с помощью геймификации и использованию виджетов и Live Activities для быстрого доступа к очистке.

Tidy App Icon

Готовы навести порядок в галерее?

Скачайте Tidy и начните свайпать. Обнаружение дубликатов с AI, умные фильтры и встроенный фоторедактор.