Ранний доступ

Ассистент, который проводит расход и двигает встречу

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

Приложения пока нет в сторах: TestFlight у своих и APK у близких.

Главный экран Life OS: кольцо дня, фокус дня, погода и крипта
Чат с ассистентом N.O.V.A.: карточки выполненных действий и источники данных

65 инструментов

Куда у неё есть запись

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

Деньги
Провести расход, поправить категорию, свериться с бюджетом. В базе появляется запись, а не совет её записать.
День и календарь
Создать задачу, закрыть её, перенести встречу, подвесить всё это к жизненной цели. Событие создаётся локально. В Google оно уедет, только если ты сам включишь синхронизацию.
Привычки
Отметить выполнение, разобрать серию, поставить заморозку на пропущенный день. Прощённый день в тепловой карте помечен как спасённый, а не как отработанный.
Почта
Читает входящие, ищет по ним, готовит черновик ответа и отправляет его. На этом список заканчивается, почтовым клиентом приложение не притворяется. Gmail API
Дневник, цели, подписки, отклики
Запись в дневник, новая цель, подписка на сервис, отклик на вакансию из ленты RemoteOK. Отклики лежат в той же базе, что деньги и привычки, поэтому их видно вместе.
Язык разговора
Нова понимает любой язык, на котором к ней написали. Интерфейс сделан на двух: английский и русский. 2963 ключа перевода на каждый язык
Размер приложения
13 разделов жизни плюс настройки. Это не один экран с виджетами, а 23 файла экранов. 15 пунктов навигации
Чат с ассистентом N.O.V.A.: карточки выполненных действий и источники данных
65
инструментов
у Новы, 17 из них только читают
13
разделов жизни
в одной базе на телефоне
672
автотеста
зелёные, 0 падений
0
трекеров
аналитики и рекламы в зависимостях

три пути

Ничего не меняется молча

Руками переносить ничего не надо: у трат три пути внутрь, а почта и календарь подключаются аккаунтом Google. Ни один из путей не пишет молча.

Карточка после каждого изменения

После действия в чат возвращается карточка: какая запись изменилась и на какую сумму.

Сканер сначала показывает

Кадр с камеры, скриншот или файл. Claude читает строки, они ложатся в предпросмотр, и пока ты не подтвердил, в расходах их нет.

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

Импорт объясняет, что выкинул

Уже записанные операции отсеиваются, и приложение говорит, сколько именно. Молчаливое «импортировано» не считается ответом.

Неоднозначную дату вроде 03.04 оно проговаривает вслух: вот так я понял. Все даты переворачиваются одним тапом.

monobank отдаёт выписку по кнопке

Жмёшь «забрать», и приложение тянет всё с момента прошлой синхронизации, заходя на три дня назад: заблокированные суммы разблокируются не сразу.

Дубли режутся дважды: по id банка и по паре день плюс сумма

Настройки признаются в конфликте

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

Ловится до того, как ты решишь, что уведомления сломаны

Выход открыт

JSON-бэкап нужен приложению, чтобы восстановиться. CSV нужен тебе, чтобы уйти.

Экран финансов: баланс, цель накоплений и найденный повторяющийся платёж

локальные правила

Связи считаются на телефоне

Связи между областями ищут правила, а не ИИ. Ничего не уходит наружу, квота не тратится, и это работает у человека, который ИИ вообще не подключал.

В плохие дни трачу больше

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

В дни встреч рвутся привычки

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

Ночная активность и утро назавтра

Поздняя активность сравнивается с настроением следующего дня. Обе половины связи лежат в одной базе: ни один трекер сна не знает твоего завтрашнего настроения.

Поиск одним запросом по 8 областям

Одна строка ищет сразу по восьми разделам, без прыжков между экранами и без выбора, где именно искать.

Догоняющий дайджест

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

Порог 2 дня

Главная

Считает время, а не галочки

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

Два процента рядом
Кольцо держит рядом долю прошедшего дня и долю закрытых на сегодня дел. День ушёл на 70, дела на 30, и отставание видно, пока его ещё можно догнать. Метрика на текущий момент, а не итог вечера
Шаги и сон рядом с делами
На Главной видно шаги и сон за сутки. Нове уходят все четыре показателя, включая пульс и калории. HealthKit и Health Connect
Цель как узел
К жизненной цели привязываются задачи, привычки, записи дневника и накопления. Ретро отдельно считает, сколько реального фокус-времени на неё ушло.
Возвращается к теме через дни
Обсудили тяжёлый разговор с начальником, и через несколько дней она сама спрашивает, как он прошёл. Не напоминание, которое ты завёл, а вопрос, который ты уже забыл. schedule_checkin
Журнал решений
Запись-решение связана с записью-исходом. Поэтому у вопроса «сколько моих решений висят без ответа» есть точный ответ, а не ощущение.
Недельный ритуал
Сначала разбор трёх прошлых приоритетов по факту, получилось или нет. Потом застрявшие цели и просрочки, в конце выбираешь три приоритета на новую неделю.
Главный экран: кольца привычек, ближайшее событие и список задач

порог 8

Молчит, пока данных мало

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

Инструмент отказывается делать вывод
Если закрытых решений меньше восьми, query_decisions не выдаёт закономерность. Он отдаёт сырой список записей и оставляет трактовку тебе.
Порог не подкручивается
Число 8 стоит в трёх местах кода независимо друг от друга. Это не ползунок чувствительности, а граница, ниже которой выводов нет.
Молчит, когда связей нет
Карточка связей появляется, только когда правило реально что-то нашло. Не нашло, и на Главной её просто нет, вместо бодрой пустой рамки.
Протухшая цена подписана часом
Если цены застряли дольше пятнадцати минут, на карточке появляется «данные на HH:MM», вместо того чтобы выдавать вчерашнее за живое.
Возраст кэша у новостей
Лента Google News подписана тем, сколько времени назад её тянули. Конвертер на Frankfurter показывает не только число, но и день, за который взят курс.
Снимок капитала старше 60 дней
Если оценка активов давно не обновлялась, приложение ставит пометку вместо того, чтобы показывать красивое свежее на вид число.
Витрина состояния служб
Девять внешних сервисов названы поимённо, и у каждого написано, что именно сломается для тебя, если он замолчит. Живых источников 11: Claude через свой прокси, Gmail, Google Calendar, Google WaveNet, Open-Meteo с погодой и геокодингом, CoinGecko, Frankfurter, Google News, RemoteOK, monobank и здоровье через HealthKit с Health Connect

хранение

Твоих данных у меня нет

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

123 ключа хранилища на телефоне

Всё, что ты завёл, лежит в памяти устройства и уезжает вместе с ним.

Ноль аналитики и трекеров

В зависимостях их просто нет. Это проверяется по списку пакетов, а не обещанием в политике.

0 аналитики, 0 трекеров, 0 рекламных SDK

monobank идёт мимо меня

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

Бэкап письмом самому себе

Единственная копия вне телефона устроена без единого моего сервера: бэкап приходит на твой ящик, ящик и есть хранилище.

Санитайзер на каждом холодном старте

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

Ключ Claude

В релизной сборке ключ Claude лежит на сервере, а не в приложении, поэтому из скачанного файла его не вынуть.

счётчик

Цена ИИ показана в долларах

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

Потолок переключает модель

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

Не выключается и денег не просит

Два режима

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

Читает вслух, видит файлы

У Новы есть голос, включая облачный. Фото она тоже видит, а PDF-выписку читает сканер в Финансах.

Google WaveNet

В доллары превращается только Нова

Кольцо, поиск, импорт выписки и локальные правила считаются на телефоне. Деньги уходят на запросы к Claude: разговор с Новой и разбор чеков.

сделано руками

Один автор, 672 теста

Приложение пишу я один, весь код тоже мой. Ниже то, на что ушло время помимо функций.

Тёмная тема одна
Светлой нет. Если тебе нужна светлая, это приложение не подойдёт, и лучше узнать об этом сейчас, а не после установки.
672 автотеста, 0 падений
55 файлов тестов проходят без падений. Это не обещание, что багов нет, это способ ловить свои же поломки до сборки.
Настройки ищутся, а не листаются
По 39 пунктам настроек работает поиск, а базовую конфигурацию ставит один из трёх пресетов в один тап. 39 пунктов, 3 пресета
302 подписи для скринридера
Размер текста двигается тремя ступенями. Подписи расставлены по всему приложению, а не только на главных кнопках. 302 accessibilityLabel
Кадр покоя вместо выключателя
Системное «Уменьшение движения» не глушит анимации грубо. У каждой вечной анимации описан кадр, на котором она останавливается в осмысленном месте.
122 иконки нарисованы вручную
40 из них для привычек. Тактильный отклик расставлен по всему приложению, а не на паре витринных экранов. 194 вызова тактильного отклика в 24 файлах

экраны

Как это выглядит

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

Экран привычек: прогресс дня, серии и тепловая карта
Привычки
Дневник: записи, настроение за 30 дней
Дневник
Почта: письма с фильтрами и поиском
Почта
Расходы по категориям: кольцо и легенда с суммами
Расходы

Напишу, когда откроется

Версия 1.6.0 собрана под iOS и Android: у своих она стоит через TestFlight, у близких через APK. В App Store и Google Play её нет. Пишу его один, поэтому дату называть не буду, пока не буду в ней уверен.

Почта нужна для одного письма: приложение открылось, вот ссылка. Один адрес, одно письмо. Никому его не передаю.