DINKI·惦记
Русский ⌄
简体中文English日本語FrançaisDeutschEspañolPortuguês (Brasil)ไทย

ДНЕВНИК РАЗРАБОТКИ DINKI / 001

Шаг за шагом — для того, что дорого.

Как предложение становится функцией? И как небольшой недочёт получает внимательное исправление? Здесь мы рассказываем о пути DINKI от версии 1.0 до 1.1.1.

Посмотреть изменения ↗
Yaya
1.0 → 1.1.1BUILD 165
01 /

Семь направлений для более полных воспоминаний

Сначала расскажем, что изменилось, затем — почему мы так решили. Изменения покупок и режима зарядки отдельно перечислены среди улучшений и исправлений.

01

Продолжить с прежними данными

После участия в тестировании можно сохранить воспоминания в той же учётной записи.

Подробнее о процессе +

Исходная проблема

При переходе из тестовой версии в официальную прежние данные того же человека не появлялись.

Наше решение

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

Как это работает сейчас

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

02

Обсуждать изображения с Яей

Понять несколько изображений вместе, а затем решить, что сохранить.

Подробнее о процессе +

Исходная проблема

На фото бывает информация, которую хочется запомнить. Перепечатывать её неудобно, а неточную дату нельзя определять произвольно.

Наше решение

Поддерживать несколько изображений, удаление каждого по отдельности и уточняющие вопросы в контексте разговора. Сначала извлечь возможные данные для записи, затем уточнить, будет ли это небольшая заметка или важный момент. Даты вроде «в конце месяца» требуют уточнения.

Как это работает сейчас

Важный момент можно сохранить сразу, когда информация стала однозначной. Текст, голос и изображения используют общий сценарий разговора; текущую голосовую запись также можно остановить и отправить.

03

Небольшая заметка может стать важным моментом

У мимолётной записи может появиться дата, к которой хочется подготовиться.

Подробнее о процессе +

Исходная проблема

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

Наше решение

Переносить заголовок, описание, имеющуюся дату и фотографии. Если даты нет — предложить выбрать её. После успешного сохранения закрывать экран преобразования и исходную запись.

Как это работает сейчас

Небольшие заметки и важные моменты можно удалять с явным подтверждением. Пользователь принял сохранение после преобразования и возврат к списку.

04

Фотографии дополняют воспоминания

Выбрать из медиатеки или снять прямо сейчас.

Подробнее о процессе +

Исходная проблема

Некоторым воспоминаниям мало одной фразы. Фотография помогает сохранить все детали.

Наше решение

Добавить фотоприложения к небольшим заметкам и важным моментам, с выбором из медиатеки или съёмкой камерой. Предложение от @小菠萝.

Как это работает сейчас

Фото сохраняются вместе с записью и включаются в синхронизацию и резервное копирование. Восстановление вложений на нескольких устройствах ещё предстоит проверить. Отсутствие немедленного показа фото на экране завершения обработки ИИ оставлено для последующего исправления.

05

Кошки и собаки тоже важны

Сначала понять, кто в кадре, затем подобрать подходящие движения.

Подробнее о процессе +

Исходная проблема

Питомцам не нужно навязывать человеческую позу. А на групповом фото двигаться должен не только один человек.

Наше решение

Различать людей, питомцев и смешанные сцены, затем формировать три набора инструкций для движений с учётом поз. Если распознавание недоступно, использовать готовые варианты. Встроенный список разделяет людей и питомцев. Предложение от @ddcat.

Как это работает сейчас

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

06

У предложений есть своё место

Яя для связи с разработчиком собирает идеи, а благодарности сохраняют принятые предложения.

Подробнее о процессе +

Исходная проблема

Отзывы терялись среди разговоров, и пользователи не знали, были ли их предложения учтены.

Наше решение

Добавить отдельную карточку отзывов и благодарностей внизу раздела «Мой профиль», сохранив остальную структуру. К отзывам можно прикреплять изображения и голос. Благодарности сгруппированы по версиям, последняя раскрыта.

Как это работает сейчас

Каждая учётная запись может поддержать каждое предложение не более одного раза; сервер предотвращает повторы. Отзывы поступают в панель разработчика. Награды в виде подписки и Солнца пока остаются планом с неустановленными правилами; автоматическое начисление не обещается.

07

На привычном вам языке

DINKI поддерживает десять языков, и сайт тоже.

Подробнее о процессе +

Исходная проблема

Тексты, даты, кнопки и длинные фразы нельзя адаптировать только дословным переводом.

Наше решение

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

Как это работает сейчас

Сохранить бренд и смысл действий, проверить отсутствующие символы, подстановку запасных текстов и вёрстку длинных строк. Завершение перевода не означает, что все языки уже проверили носители.

Пример выбора персонажа · сборка 156, категории людей и питомцев ↗
Пример выбора персонажа · сборка 156, категории людей и питомцев
02 /

Небольшие детали, которые мы доводим до ума

Помимо новых функций, много времени уходит на то, что должно просто быть удобным. Изменения ниже сгруппированы по проблемам; несколько правок не считаются несколькими новыми функциями.

01Покупки и начисления+

Заранее загружать цены при запуске и не очищать уже полученные цены при каждом открытии страницы. Ошибка загрузки одного товара не мешает остальным. Во время покупки кнопка показывает «Обработка». После успешной проверки подтверждения покупки подписка и Солнце обновляются автоматически, а старые ответы не могут перезаписать новый баланс.

02Реальные и тестовые покупки+

Официальной учётной записью и личными данными можно пользоваться дальше. Смоделированные Apple покупки дают отдельные тестовые права. Исправлена совместимость привязки старых тестовых подписок, чтобы завершённая покупка не ожидала подтверждения бесконечно. Начисление подписок и Солнца из реального магазина проверено, в том числе после повторного открытия. Полный цикл продления и возврата средств ещё предстоит проверить.

03Вход и запуск+

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

04Фотографии и персонажи+

Исправить пустые миниатюры встроенных персонажей, отсутствие реакции после обрезки аватара и блокировки по состоянию при входе в генерацию из фото. Анимированные превью списка теперь используют лёгкие атласы прозрачных кадров; воспроизводятся все видимые карточки.

05Синхронизация и резервные копии+

Действительно сохранять объединённые данные на устройстве и обновлять интерфейс. При первом входе показывать подсказки по различиям с облаком, не открывая предпросмотр снова и снова. Синхронизировать только при необходимости — например, после изменений или по ручному запросу — и дополнить восстановление из старых файлов резервных копий.

06Разговоры и отзывы+

Поля ввода длиннее трёх строк прокручиваются, изображения выровнены вправо. Сообщения Яе для связи с разработчиком после отправки сразу появляются в списке; при ошибке их можно отправить повторно. Исправлены звёздочки вместо жирного текста, ошибки чтения отзывов и отсутствие кнопки голосового ввода.

07Диалоги и возврат+

Унифицировать центрированные диалоги с заголовком, описанием и кнопками, настроить лаймовую тему. Убрать ненужные маленькие карточки воспоминаний. Исправить белый экран после преобразования заметки в важный момент и оставшуюся страницу «Запись удалена».

08Зарядка и задачи+

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

09Сведения о конфиденциальности+

Сборка 165 меняет только текст: убирает обещание перехода на несуществующую страницу и сохраняет пояснения о первоначальном согласии на ИИ, сохранении локальных заметок после отказа и запросе отзыва согласия через каналы связи.

03 /

Как устроена реализация

Реальные проблемы этой разработки. Рассказываем о подходах, не раскрывая учётные записи, транзакции, закрытые ключи и внутренние интерфейсы.

FIELD NOTES / 01

Почему после удаления фона остаётся белый прямоугольник?

Белые и прозрачные пиксели — разные вещи.

Подробнее о процессе ↗

Закрасить фон белым или сохранить картинку в PNG недостаточно для прозрачности. Нужен отдельный альфа-канал, который задаёт видимость каждого пикселя.

Статичные изображения DINKI проходят сегментацию объекта и обработку масок: система предсказывает маску прозрачности объекта, сохраняя исходные цвета. Затем прозрачность и края проверяются на тёмном, лаймовом и бумажном фоне, чтобы не повредить белую одежду, блики в глазах и другие детали объекта.

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

Переключатель ниже лишь показывает уже готовый прозрачный материал на разных фонах. Он не загружает и не обрабатывает ваши фотографии заново в браузере.

FIELD NOTES / 02

Почему первые две карточки двигались, а остальные нет?

Превью в списке и полноразмерное видео решают разные задачи.

Подробнее о процессе ↗

Чтобы ограничить расход памяти, раннее решение ограничивало число одновременно воспроизводимых видео. Это снижало нагрузку, но оставляло остальные видимые карточки неподвижными.

Теперь список использует атласы прозрачных кадров, созданные из видео движений: 18 кадров на превью и бюджет кэша 32 МиБ. Все видимые карточки воспроизводятся; при прокрутке воспроизведение приостанавливается, за пределами экрана останавливается. Это похоже на GIF, но на деле представляет собой атлас кадров с альфа-каналом.

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

Системное предпочтение уменьшения движения по-прежнему должно учитываться. Плавность нужно измерять на реальных устройствах при одинаковой нагрузке; сама по себе архитектура не доказывает конкретный прирост производительности.

FIELD NOTES / 03

Почему после преобразования заметки в дату появлялся белый экран?

Данные уже изменились, а страница всё ещё ждала старую запись.

Подробнее о процессе ↗

Преобразование создаёт важный момент и удаляет исходную заметку. Если страница подробностей и окно редактирования привязаны к этой заметке, после удаления у нижней страницы больше нет содержимого для показа.

Исправленный редактор хранит стабильную копию черновика. Сначала завершается сохранение, затем родительская страница получает результат и закрывает преобразование и подробности через обратные вызовы закрытия. При отмене или ошибке сохранения введённое остаётся.

Это надёжнее, чем откуда угодно отправить две команды закрытия подряд: каждый уровень управляет собственным отображением, а после успеха происходит возврат к действительному списку.

Центрированные подтверждения используют общий компонент приложения с заголовком, пояснением и понятным действием, вместо отдельной системы сообщений на каждой странице.

FIELD NOTES / 04

Apple сообщает об успешной покупке. Почему баланс не изменился?

Ответ об оплате, проверка, начисление и обновление экрана — единая цепочка.

Подробнее о процессе ↗

Ответ Apple означает, что у транзакции есть результат. Серверу ещё нужно проверить заказ и его принадлежность, а также исключить повторное начисление. Изменение одной цифры на экране привело бы к расхождению баланса и реального учёта.

В этом обновлении к клиенту вновь подключено обновление подтверждённого кошелька и подписки. Более ранним запросам запрещено перезаписывать более свежие начисления. Ход операции показан на кнопке покупки; в обычной ситуации пользователю не нужно разбираться в действии «синхронизировать покупки».

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

Для месячной подписки и покупок Солнца в реальном магазине проверены начисление, статус подписки и повторное открытие. Полные сценарии реального возврата средств и продления остаются пунктами проверки перед публикацией.

Прозрачное — не белое: смените фон

Белые и прозрачные пиксели — разные вещи.

Прозрачное — не белое: смените фон
Существующий прозрачный персонаж DINKI
04 /

Как росла эта версия

  1. 144–147

    Десять языков, прежние данные и запуск

    Сначала дополнить продолжение работы с данными после 1.0, предварительную загрузку цен и базовые действия.

  2. 148–152

    Удобнее записывать и общаться

    Улучшить обновление начислений, фотографии и съёмку, понимание нескольких изображений, прямое сохранение важных моментов и анимированные превью списка.

  3. 153–156

    Включить предложения пользователей в продукт

    Добавить благодарности и поддержку предложений, движения питомцев и групп, Яю для связи с разработчиком и подготовить обзор обновления.

  4. 157–160

    Проверить с официальными сервисами

    Сверить список выпуска, исправить возврат после преобразования, разговоры по отзывам, вход и запросы Солнца, проверить сохранение прежних данных.

  5. 161–164

    Пройти всю цепочку покупки

    Подключить официальные данные, отделив тестовые права; исправить привязку старых подписок, обновление начислений и зарядку в альбомной ориентации.

  6. 165

    Привести текст в соответствие с поведением

    Исправить только сведения о конфиденциальности, сохранить принятые функции и после подтверждения в TestFlight отправить сборку на проверку Apple.

DINKI в записи ↗

05 /

Создавать продукт и сохранять его облик

Сохраняем происхождение и этап готовности рекламных изображений, фильма о бренде и раскадровок. Ранние материалы не выдаём за запись работы финальной версии.

Материалы сборки 156. Числа и статусы сохранены на тот момент; итоговый статус указан в записи о сборке 165 на этой странице.

История бренда за 30 секунд · Ранние концепции и схематичные интерфейсы из существующего фильма на сайте
Пример движения · Готовый встроенный материал, не гарантия каждого результата генерации

Некоторые существующие видео содержат китайский язык и сохранены в оригинале. Это не означает, что видео созданы на всех десяти языках.

Для 90-секундного рекламного фильма версии 1.1.1 пока есть только раскадровка, готового фильма ещё нет. Поэтому здесь нет фиктивной кнопки воспроизведения.

Сохранить путь и то, что ещё не закончено

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

Наверх ↑