Juie

Руководство Juie

Juie объединяет заметки, дерево задач, канбан, календарь и свободные канвасы. Все эти виды показывают одни и те же данные: задача, перенесённая в календаре, не становится копией, а остаётся той же задачей в дереве и канбане.

Главное устройство

На desktop Juie состоит из четырёх областей: дерево тегов и служебные разделы, список заметок, основное окно и дерево задач. Боковые панели можно скрывать стрелками у краёв. На телефоне главные виды переключаются нижней навигацией, левая панель открывается отдельной шторкой, а задачи доступны как самостоятельный вид.

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

Язык интерфейса выбирается в настройках → «Интерфейс». Доступны English, Русский, Қазақша и Qazaqsha (QSL без диакритик). В Qazaqsha используются tag, tagsiz, Hijri, Jil, Ch для Ч и ia для сочетания ИЯ; выбор общий для приложения и сохраняется между запусками. Если язык ещё не выбирали, Juie открывается на английском. Названия месяцев и дней недели следуют выбранному языку. Смена языка переводит элементы приложения, но никогда не меняет текст существующих заметок и задач.

Новое пространство открывается пустым: Juie не создаёт приветственных заметок или задач поверх рабочего пространства. Полная справка доступна отдельной страницей на сайте Juie.

Заметки

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

Markdown и редактор

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

Контекстное меню редактора умеет включать и снимать жирный, курсив, зачёркивание, встроенный код, обычный список и checkbox. Основные операции имеют стандартные сочетания Cmd на macOS и Ctrl на Windows/Linux. Если выделение захватило перевод строки после текста, форматирование оставляет этот перевод за пределами маркеров. Специальный символ Markdown можно показать буквально через обратный слеш, например \*не курсив*; для буквальных двойных скобок экранируются обе открывающие: \[\[не ссылка]].

В настройках выбирается вид редактирования:

Кнопка Aa включает отдельный режим чтения. Он общий для приложения, а не для одной заметки. При переключении Juie сохраняет относительное место в длинном тексте. Направление письма определяется по содержимому, поэтому арабица отображается справа налево там, где это требуется тексту.

Оглавление, версии и публикация

Оглавление строится из заголовков открытой заметки и позволяет перейти к разделу. История версий сохраняет изменившееся состояние примерно раз в минуту и при выходе из заметки. В окне версий можно сравнить содержание и восстановить выбранный снимок.

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

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

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

Правила относятся только к явно опубликованным снимкам. Личное пространство модератору недоступно. Полная действующая редакция находится в docs/CONTENT_RULES.md.

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

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

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

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

Для публикации должна быть включена синхронизация и указан доступный сервер Juie. Локальный сервер даёт ссылку только внутри вашей сети; для ссылки из интернета серверу нужны публичный HTTPS-адрес и домен либо постоянный адрес хостинга. Сервер ограничивает число снимков и частоту обращений; пределы задаются переменными окружения.

Wiki-ссылки и обратные ссылки

[[Название заметки]] создаёт ссылку на другую заметку. Можно задать подпись: [[Название заметки|видимый текст]]. В режиме чтения ссылка открывается нажатием. Если цели ещё нет, Juie предлагает создать её. Если одинаковых названий несколько, выбор не делается молча.

Над тегами открытой заметки показаны обратные ссылки — заметки, которые ссылаются на неё. Индекс ссылок производный: обычный Markdown остаётся переносимым, а связи можно пересобрать после импорта или восстановления.

Теги

Теги организованы в дерево. Слеш задаёт вложенность: Работа/Juie находится внутри Работа. Ветку можно свернуть, переименовать, перетащить к другому родителю или удалить через контекстное меню. Удаление тега убирает его у заметок, но не удаляет заметки и их текст.

Перетаскивание заметки на тег добавляет этот тег. Заметка физически не перемещается и может иметь несколько тегов. «Без тегов» показывает заметки без единого тега.

Задачи и дерево

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

Фактическое выполнение хранится отдельно от срока. После checkbox рядом с названием появляется день YYYY.MM.DD; нажатие раскрывает точное время. Снятие галочки удаляет отметку, повторное выполнение создаёт новую. Назначенный срок и фактический день могут не совпадать.

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

Архивирование, удаление и восстановление родительской задачи действуют на всю ветку. Архив хранит ветку бессрочно, корзина удаляет её по сроку очистки.

Циклы и итерации

Обычную конечную задачу можно превратить в цикл, указав название повторения и количество. Juie создаёт неизменяемые итерации вроде Подход 1, Подход 2. Итерацию нельзя переименовать, открыть как страницу или сделать родителем.

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

Канбан

Канбан показывает только конечные обычные задачи в колонках «Сделать», «В работе» и «Готово». Перетаскивание между колонками меняет статус, внутри колонки — ручной порядок. В «Готово» видны десять последних выполненных задач.

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

Календарь

Календарь планирует задачи по календарным дням без почасового таймблокинга. Доступны день, три дня, две недели под названием «Неделя», месяц и год. Набор видов настраивается отдельно; начало недели выбирается между понедельником и воскресеньем.

В настройках можно выбрать обычный григорианский календарь или вычисляемый хиджри. Juie хранит срок задачи прежним календарным днём YYYY-MM-DD: смена системы меняет только месяцы, год и подписи на экране, поэтому не ломает существующие планы, экспорт и синхронизацию.

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

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

Канвасы

Канвасы живут в отдельной галерее и не смешиваются с заметками. На бесконечном рабочем столе размещаются живые карточки заметок и задач, текст, группы и связи. Есть pan/zoom, вписывание содержимого в экран, стопроцентный масштаб, цвета карточек и групп. Контекстное меню карточки в галерее удаляет канвас после повторного подтверждения; заметки и задачи внутри при этом не удаляются.

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

Поиск

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

Cmd/Ctrl+K открывает общий поиск по заметкам, задачам и названиям канвасов. Результаты разделены по типам. Заметка открывается в редакторе, задача — в своём месте дерева, канвас — в рабочем столе. Checkbox задачи можно переключить прямо в результатах.

Лупа в панели задач временно превращает поле создания в локальный поиск по дереву. Совпадение показывается вместе с приглушёнными предками. После потери фокуса поле автоматически возвращается к созданию задачи.

Импорт, экспорт и резервные копии

Настройки → «Данные» содержит перенос полного снимка .juie, Markdown-экспорт и импорт папки Markdown. .juie переносит структуру приложения на другое устройство. Markdown-экспорт создаёт одну папку с названием пространства и датой, внутри — обычные .md файлы. Импорт папки подходит, например, для Obsidian и сохраняет подпапки как теги, frontmatter и wiki-ссылки.

Автобэкап работает в выбранной пользователем папке, когда приложение активно:

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

Пространства, синхронизация и шифрование

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

Первое и каждое следующее пространство сразу требуют длинный пароль и получают собственный случайный мастер-ключ. Базы, поисковый индекс и синхронизируемые обновления защищаются AES-GCM, а пароль разворачивает мастер-ключ через PBKDF2. Фраза аккаунта открывает тот же ключ как аварийная вторая дверь. Пространства, созданные в старых версиях без пароля, автоматически не переписываются и не шифруются: такое преобразование могло бы повредить уже существующие данные.

Серверная регистрация необязательна для локальной работы. В разделе «Настройки → Аккаунт» укажите свой сервер: Juie зарегистрирует стабильный ID и производный токен, но не отправит фразу. Сервер хранит только хеш токена и разделяет документы разных аккаунтов; по токену нельзя восстановить фразу или расшифровать пространство. Регистрация не включает публикатор автоматически: владелец сервера выдаёт это право отдельно по ID аккаунта.

Для второго устройства восстановите автономный аккаунт той же фразой, затем выгрузите у пространства «Ключ для другого устройства», перенесите файл и выберите «Подключить по ключу». Сам файл не содержит заметки: после подключения они приходят с того же сервера синхронизации. Файл ключа чувствителен и не должен публиковаться. Автоматическое получение списка пространств только по фразе аккаунта пока не реализовано — файл ключа по-прежнему нужен для каждого.

Если локальное хранилище отказывает, Juie переходит в fail-closed: блокирует изменения и синхронизацию и явно показывает режим только чтения, вместо того чтобы притворяться, что новые данные сохранены.

ПИН защищает уже открытое приложение после выбранного периода бездействия — одной, двух или пяти минут с последнего действия в Juie. Переключение в другое приложение само по себе не блокирует экран: при быстром возвращении работа продолжается, а после истечения выбранного срока Juie просит PIN. Активность в других программах не сбрасывает этот локальный таймер. Это блокировка интерфейса, не замена шифрованию пространства. Отключение ПИНа требует действующий код.

Где лежат данные

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

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

Обновление и переустановка на Windows

Программа и пользовательские данные лежат раздельно. Файлы установленного приложения находятся в %LOCALAPPDATA%\Juie, а локальная база нативной Juie — в профиле %LOCALAPPDATA%\app.juie.desktop. Поэтому обычное обновление не требует выгружать и затем импортировать данные.

У каждого Windows-выпуска два варианта:

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

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

Платформы и ограничения текущей версии

Juie собирается для macOS, Android и Windows; другие desktop/mobile-сборки подготавливаются тем же Tauri-проектом. На macOS свободная область верхней плашки переносит окно, двойное нажатие разворачивает его без fullscreen.

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


Эта справка — часть продукта. При изменении пользовательского поведения её нужно обновлять вместе с кодом и патчноутом.