DayDesk для Windows, macOS, iOS и Android: задачи, встречи, привычные перерывы, единая почта и виджеты. Desktop-клиент работает на Tauri 2, мобильный — на Expo и React Native.
Native Windows and macOS productivity workspace with tasks, reminders, desktop widgets, a unified inbox, encrypted local mail cache, OAuth/IMAP integrations and secure email attachments.
- обзор дня с задачами, событиями и письмами;
- создание, редактирование, завершение и удаление задач с датой, временем, категорией, приоритетом, повтором и отдельным напоминанием;
- создание, редактирование и удаление встреч, обеда, ужина, фокус-времени и личных событий;
- календарь с выбором дня, сортировкой расписания и настраиваемыми напоминаниями от 5 минут до 1 часа;
- двусторонняя синхронизация основного Google Calendar и Outlook Calendar: просмотр, создание, изменение и удаление встреч;
- фоновые системные уведомления о предстоящих событиях из Rust-планировщика;
- настраиваемый «Ритм дня»: повторяющиеся напоминания о воде, питании, перерывах и фокусе по выбранным дням недели;
- мобильный редактор «Ритма дня» с созданием, изменением, удалением, выбором дней и переходом из системного уведомления;
- мобильные папки «Входящие» и «Отправленные» Gmail, Outlook и IMAP с поиском, фильтрами, безопасным текстовым reader и OAuth-входом через системный браузер;
- мобильное скачивание входящих вложений до 2 МБ по запросу через системное меню iOS/Android без постоянного локального кэша;
- мобильный импорт одиночных
.ics-приглашений из письма в редактируемую встречу с локальным напоминанием; - превращение открытого письма в редактируемую задачу со сроком и напоминанием без копирования тела письма;
- приватные фоновые уведомления о новой почте без показа отправителя или темы на экране блокировки;
- мобильное создание и подтверждение писем, ответы из reader и исходящие вложения через Gmail API, Microsoft Graph или защищённый SMTP;
- системный трей: закрытие основного окна скрывает DayDesk, не останавливая напоминания;
- настраиваемый автозапуск в скрытом режиме при входе в Windows или macOS;
- отдельные компактные окна «План на сегодня» и «Ритм дня» с режимом
alwaysOnBottom; - экраны задач, календаря, почты и галереи виджетов;
- реальное подключение Yandex, Mail.ru, iCloud и корпоративной почты по защищённому IMAP;
- Gmail через OAuth 2.0 и Gmail API, Outlook / Microsoft 365 через OAuth 2.0 и Microsoft Graph;
- единый список последних писем, ручное обновление, автоматическая синхронизация каждые пять минут и подключение нескольких аккаунтов;
- поиск по отправителю, теме и тексту превью во всех подключённых ящиках;
- безопасное чтение полного текста писем из Gmail, Outlook и IMAP прямо в DayDesk;
- просмотр списка вложений и безопасное скачивание файлов из Gmail, Outlook и IMAP;
- создание и отправка писем, ответы и исходящие вложения через Gmail API, Microsoft Graph или защищённый SMTP;
- локальный SQLite-кэш писем с шифрованием AES-256-GCM;
- хранение паролей и OAuth-токенов только в Keychain macOS или Credential Manager Windows.
- отдельный защищённый sync-сервис в
server/: регистрация устройства, батч-синхронизация задач, локальных событий и ритуалов, разрешение конфликтов и tombstones удалений; - двусторонняя синхронизация планов между desktop и mobile каждые 30 секунд, с ручным запуском и офлайн-очередью;
- хранение device-token настольного клиента только в Keychain macOS или Credential Manager Windows.
npm install
npm run desktop:devМобильный клиент находится в mobile/:
cd mobile
npm install
npm run ios
# или npm run androidДля быстрой проверки интерфейса в браузере:
npm run devПолная локальная проверка перед изменениями:
npm ci
npm audit --audit-level=moderate
npm run build
cd src-tauri
cargo fmt --check
cargo clippy --all-targets --all-features -- -D warnings
cargo test --all-targets -- --test-threads=1macOS (DayDesk.app и установочный образ DayDesk.dmg):
npm run build:macУниверсальная сборка одновременно для Apple Silicon и Intel:
rustup target add aarch64-apple-darwin x86_64-apple-darwin
npm run build:mac:universalWindows (DayDesk-setup.exe и DayDesk.msi):
npm run build:windowsНа Windows нужны Microsoft C++ Build Tools с workload «Desktop development with C++», WebView2 и Rust MSVC. MSI/NSIS лучше собирать непосредственно на Windows. Для публичного распространения обе сборки нужно подписать, а macOS DMG — также нотариализовать через Apple Developer.
Расписание напоминаний передаётся из интерфейса в Rust-процесс и проверяется каждые 15 секунд. Поэтому после закрытия основного окна DayDesk продолжает работать через иконку в системном трее. Левый клик по иконке возвращает окно, а в меню доступны команды открытия, скрытия и полного выхода.
Автозапуск включается пользователем в разделе «Настройки». При входе в систему приложение стартует с аргументом --background, синхронизирует сохранённые события и остаётся скрытым до первого обращения.
Платформенные параметры разделены между src-tauri/tauri.windows.conf.json и src-tauri/tauri.macos.conf.json; Tauri автоматически применяет подходящий файл во время сборки.
Для сборки обеих платформ в GitHub предусмотрен ручной workflow .github/workflows/desktop-builds.yml. Он публикует универсальный macOS DMG и Windows x64 EXE/MSI как downloadable artifacts.
В разделе «Виджеты» можно создать регулярные напоминания, выбрать время, категорию, дни недели и интервал уведомления. Ритуалы появляются в расписании на сегодня и календаре, передаются в фоновый Rust-планировщик и продолжают работать после сворачивания основного окна. Для них доступен отдельный компактный виджет рабочего стола.
На iOS и Android раздел «Ритм дня» открывается с главного экрана. Там доступны те же операции создания, редактирования, включения и удаления; изменения сохраняются офлайн и попадают в общую очередь синхронизации. Разрешение на уведомления запрашивается только после явного сохранения включённого ритуала.
В редакторе задачи доступны ежедневный, будний, еженедельный и произвольный повтор по дням недели. После выполнения DayDesk сохраняет завершённый экземпляр и создаёт следующий актуальный дедлайн, пропуская уже прошедшие даты и не создавая дубликаты серии. Напоминание задачи можно отложить на 10 минут прямо из списка.
Запустите DayDesk Sync Server, затем в настольном приложении откройте «Настройки» и укажите адрес сервера, setup-код и название устройства. На телефоне те же параметры находятся на экране синхронизации, доступном по значку облака на вкладке «Сегодня».
Настольный клиент автоматически обменивается задачами, локальными событиями и настройками «Ритма дня» каждые 30 секунд. Изменения, сделанные без сети, остаются в локальной очереди; при первом подключении локальные и серверные записи объединяются без удаления данных, существующих только на одном устройстве. Точные правила произвольного повтора desktop-задач и отложенное время напоминания сохраняются в общем протоколе.
События Google Calendar и Outlook не копируются в sync-сервис: они продолжают загружаться из исходного календаря, сохраняя его права доступа и служебные идентификаторы. Через DayDesk Sync передаются только локальные события.
Setup-код используется только для регистрации и не сохраняется. Выданный device-token не передаётся в React и хранится только в системном защищённом хранилище. Для внешнего сервера приложение требует HTTPS; обычный HTTP разрешён лишь для localhost и адресов частной локальной сети.
Мобильный клиент подключает Gmail и Outlook через OAuth 2.0 с PKCE в системном браузере, а Yandex, Mail.ru, iCloud и другие ящики — через IMAP. Из mobile можно переключаться между входящими и отправленными, создать письмо или ответить из reader, выбрать до 10 файлов общим размером 2 МБ и проверить получателей перед необратимой отправкой. Входящие вложения до 2 МБ открываются через системное меню и удаляются из временного cache после его закрытия. Одиночное .ics до 256 КБ можно открыть как черновик встречи: DayDesk проверяет название, даты, место и часовой пояс, а сохраняет событие только после подтверждения в редакторе. Любое письмо можно превратить в задачу: в защищённый временный черновик попадает только очищенная тема, а окончательное название и срок пользователь подтверждает сам. Sync-сервис шифрует OAuth-токены и пароли AES-256-GCM; телефон не сохраняет секреты, почтовые черновики или тексты писем в AsyncStorage. Reader отображает только обычный текст без выполнения HTML и загрузки пикселей отслеживания.
Фоновая проверка почты включается отдельно в настройках синхронизации. Она использует системные планировщики iOS и Android с минимальным интервалом 15 минут, объединяет найденные письма в одно уведомление и не показывает отправителя или тему на экране блокировки. Для сравнения запусков в SecureStore хранятся только короткие SHA-256-отпечатки идентификаторов писем.
Gmail и Outlook / Microsoft 365 подключаются через системный браузер по OAuth 2.0 с PKCE. DayDesk запрашивает отдельные минимальные разрешения на чтение и отправку почты, автоматически обновляет сессию и не получает пароль пользователя. После обновления со старой read-only версии OAuth-аккаунт нужно один раз переподключить. Перед сборкой нужно указать client ID провайдеров — подробности находятся в инструкции по настройке OAuth.
Для Yandex, Mail.ru, iCloud и корпоративных провайдеров работает IMAP. В разделе «Почта» выберите провайдера или укажите адрес его IMAP- и SMTP-серверов. DayDesk читает почту только через TLS на порту 993, а отправляет через SMTPS 465 или обязательный STARTTLS 587. Если в почте включена двухфакторная защита, создайте отдельный пароль приложения в настройках провайдера.
Пароль существует во frontend только на время заполнения формы и не попадает в сохраняемое состояние, localStorage или логи. После успешной проверки он сохраняется Rust-сервисом в Keychain macOS либо Credential Manager Windows. При отключении аккаунта запись удаляется оттуда.
Отправитель, тема, превью и загруженное тело каждого письма сохраняются в локальной SQLite-базе только в зашифрованном виде. Для каждого поля создаётся отдельный случайный nonce, а ключ шифрования хранится в Keychain macOS либо Credential Manager Windows. Тексты писем не сохраняются в localStorage.
Поиск выполняется после расшифровки данных только в памяти Rust-процесса, поэтому открытый поисковый индекс с текстом писем на диске не создаётся.
Полный текст загружается только после открытия письма. MIME и HTML обрабатываются в Rust, после чего React получает обычный текст: скрипты, удалённые изображения и пиксели отслеживания из письма не запускаются. Размер ответа и отображаемого текста ограничен, а вложения не загружаются автоматически.
Вложения скачиваются по одному напрямую из Rust-процесса в системную папку «Загрузки», поэтому содержимое файла не передаётся в React/WebView и не сохраняется в почтовом кэше. DayDesk повторно проверяет идентификатор вложения, очищает имя от небезопасных символов, ограничивает размер файла 20 МБ и никогда не перезаписывает существующий файл — для совпадающего имени создаётся новый вариант с номером. Метаданные вложений в SQLite-кэше шифруются вместе с остальными данными письма.
Исходящий редактор создаёт только обычный текст и не сохраняет черновик после закрытия. Перед реальной отправкой показывается отдельный экран подтверждения с отправителем, получателями, темой и числом файлов. Выбранные файлы читаются Rust-процессом в ограниченную временную память и выдаются frontend только как одноразовые идентификаторы. В этой версии можно прикрепить до 10 файлов суммарно не больше 2 МБ; это позволяет одинаково безопасно работать с прямой отправкой Microsoft Graph, Gmail API и SMTP.
OAuth-аккаунты Google и Microsoft можно отдельно включить в разделе «Календарь». DayDesk синхронизирует основной календарь Google или календарь по умолчанию Outlook за период от 30 дней назад до 365 дней вперёд. Автоматическое обновление выполняется каждые 10 минут, также доступна ручная синхронизация.
Новые встречи можно оставить только в DayDesk либо сразу сохранить в выбранный внешний календарь. Изменения и удаления отправляются провайдеру до обновления локального интерфейса. События на весь день импортируются в режиме просмотра, чтобы не исказить их даты при преобразовании часовых поясов.
Для календаря используются отдельные минимальные разрешения calendar.events у Google и Calendars.ReadWrite у Microsoft. Аккаунты, подключённые в предыдущей версии DayDesk, нужно один раз переподключить, чтобы выдать это разрешение. Подробности находятся в инструкции по настройке OAuth.