Skip to content

Latest commit

 

History

History
272 lines (200 loc) · 16.7 KB

File metadata and controls

272 lines (200 loc) · 16.7 KB

Singularity Sync

Version Obsidian

Двусторонняя синхронизация задач между Obsidian (плагин Tasks) и Singularity — кроссплатформенным планировщиком с привычками, канбаном и учётом времени.


✨ Возможности

Возможность Описание
🔄 Двусторонняя синхронизация Задачи синхронизируются в обе стороны — изменения в Obsidian отражаются в Singularity и наоборот
📋 Боковая панель Просмотр и управление задачами Singularity прямо в Obsidian — группировка по проектам, чекбоксы, фильтры
✅ Привычки (3 состояния) Настраиваемый трекер с тремя состояниями (не сделано / наполовину / полностью), цвета из Singularity
📝 Встраиваемая панель привычек Встраивайте интерактивный трекер привычек в любую заметку через блок ```singularity-habits
🔔 Уведомления ⏰ напоминание + #notify/30 смещение от ⏰ — напоминания синхронизируются в Singularity
📁 Файлы проектов Задачи хранятся в файлах проектов (/project/*.md) — файл определяет принадлежность к проекту
📝 Описания проектов Описание проекта из Singularity синхронизируется в секцию #### 📝 Notes файла проекта
📄 Шаблон проекта Настраиваемый шаблон для новых файлов проектов: {{title}}, {{singularity-id}}, {{date}}, {{emoji}}, {{note}}
🗑️ Soft-delete Удаление задач или файлов проектов в Obsidian мягко удаляет их в Singularity
⚡ Приоритеты 🔺⏫🔼🔽⏬ ↔ 0 / 1 / 2
🗂️ Разрешение конфликтов 4 стратегии: последняя версия / Obsidian / Singularity / вручную — при стратегии «вручную» открывается диалог с визуальным сравнением обеих версий задачи
🔒 SecretStorage Ключ API хранится в защищённом хранилище Obsidian, никогда — в открытом виде
⏱️ Статус-бар Время последней синхронизации отображается в строке состояния
📱 Мобильная поддержка Работает на десктопе и мобильных устройствах

📥 Требования

  • Плагин Obsidian Tasks должен быть установлен и включён. Singularity Sync использует формат задач плагина Tasks — эмодзи дат (➕🛫⏳📅✅❌) и маркеры приоритетов (🔺⏫🔼🔽⏬) парсятся по стандарту Tasks.

📥 Установка

Через BRAT (рекомендуется)

  1. Установите плагин BRAT из магазина Community Plugins
  2. Добавьте https://github.com/nodeus/singularity-sync в BRAT
  3. Включите Singularity Sync в Community Plugins

Вручную

Скопируйте main.js, manifest.json, styles.css в .obsidian/plugins/singularity-sync/.


🚀 Быстрый старт

  1. Получите API-ключ в личном кабинете Singularity
  2. Откройте Настройки → Singularity Sync в Obsidian
  3. Введите API-ключ и базовый URL (по умолчанию: https://api.singularity-app.com/v2)
  4. Запустите Singularity Sync: Синхронизировать из палитры команд (или нажмите иконку на ленте)
  5. Откройте панель Singularity через иконку на ленте или палитру команд

📝 Формат задач

Синхронизируются только задачи с тегом #todo. Ожидаемый формат:

- [ ] #todo Название задачи #теги ➕ YYYY-MM-DD ⏰ YYYY-MM-DD HH:mm 🛫 YYYY-MM-DD ⏳ YYYY-MM-DD 📅 YYYY-MM-DD 🔼 #notify/30 #notify

Стандартный порядок: #todo → описание → теги → ➕ → ⏰ → 🛫 → ⏳ → 📅 → ✅ → ❌ → приоритет → #notify теги.

Время допускается только в ⏰ (напоминание). Все остальные эмодзи дат (🛫⏳📅) — только дата (совместимость с Obsidian Tasks Plugin).

Проекты: принадлежность к проекту определяется файлом, не тегом.

  • Задачи в /project/Мой Проект.md → принадлежат проекту "Мой Проект"
  • Задачи в /tasks/tasks.md → входящие (без проекта)
  • Тег #имя-проекта в строке задачи не требуется

Frontmatter

Каждый файл проекта (/project/<имя>.md) содержит singularity-id в frontmatter, связывающий его с проектом в Singularity:

---
singularity-id: 550e8400-e29b-41d4-a716-446655440000
---

ID проставляется автоматически при создании файла. Не удаляйте и не изменяйте его вручную.

Порядок эмодзи

Позиция Эмодзи Значение Формат
1 ➕ Дата создания YYYY-MM-DD
2 ⏰ Напоминание YYYY-MM-DD HH:mm
3 🛫 Дата старта YYYY-MM-DD
4 ⏳ Запланированная дата YYYY-MM-DD
5 📅 Дедлайн YYYY-MM-DD
6 ✅ Дата выполнения авто
7 ❌ Дата отмены авто

Эмодзи приоритета (🔺⏫🔼🔽⏬) ставится после эмодзи дат, перед тегами #notify. ⏰ — единственный эмодзи с временем, остальные — только дата.

Маппинг приоритетов

Obsidian Singularity
🔺 ⏫ 0 (высокий)
🔼 1 (средний)
🔽 ⏬ 2 (низкий)

Теги уведомлений

#notify — смещение от ⏰ (время напоминания), НЕ от дедлайна.

Тег Значение
#notify или #notify/0 Напомнить ровно в время ⏰
#notify/30 За 30 минут до ⏰
#notify/1h За 1 час до ⏰
#notify/5h За 5 часов до ⏰
#notify/1d За 1 день до ⏰

Если ⏰ задан без #notify → отправляется notifies: [0] (напомнить в время ⏰). Если ⏰ нет → уведомления не отправляются.

Маппинг дат

Obsidian Singularity Правило
➕ createdDate + start (запасной) Используется как start, если нет 🛫
⏰ start (дата+время) Время напоминания
🛫 start (только дата) Переопределяет ➕
⏳ start (дата+время) Переопределяет 🛫
📅 deadline (дата) —
✅ checked: 1 + архив Завершает задачу

Поведение

Правило Описание
Сопоставление задач Сначала по externalId (БД плагина), затем по нормализованному заголовку
Soft-delete Удаление последней синхронизированной #todo из файла мягко удаляет задачу в Singularity. Удаление файла проекта удаляет весь проект
Переименование Переименование проекта в Singularity автоматически переименовывает .md файл в Obsidian
Теги с пробелами Теги с пробелами из Singularity конвертируются: #my tag → #my_tag

Диалог конфликта (стратегия «вручную»)

Когда Разрешение конфликтов установлено в manual, конфликты не решаются автоматически — плагин открывает диалог с обеими версиями задачи:

  • Обе версии показаны построчно (статус, приоритет, проект, теги, даты, уведомления) в едином порядке
  • Расходящиеся поля подсвечиваются бейджем ⚠️, сверху — сводка различий
  • Действия: Obsidian (оставить версию Obsidian), Singularity (оставить версию Singularity), Пропустить (решить на следующей синхронизации) и Создать новую в Singularity при неоднозначном сопоставлении задач
  • Даты отображаются в вашем локальном часовом поясе

⚙️ Настройки

Параметр По умолчанию Описание
Base URL https://api.singularity-app.com/v2 Адрес API Singularity
Файл задач /tasks/tasks.md Файл для входящих задач (без проекта)
Папка проектов /project Папка с файлами проектов — один .md на проект
Маркер секции задач #### 📝 Tasks Заголовок для секции задач в файлах проектов
Маркер секции описания #### 📝 Notes Заголовок для секции описания проекта (синхронизируется из Singularity)
Шаблон проекта (пусто) Шаблон для новых файлов проектов. Плейсхолдеры: {{title}}, {{singularity-id}}, {{date}}, {{emoji}}, {{note}}
Направление both both, forward или reverse
Разрешение конфликтов latest_wins Как разрешать конфликтующие изменения
Исключить теги GC, nosync Теги через запятую, которые не синхронизируются
Количество дней привычек 14 Количество последних дней в боковой панели привычек (1–14)

📄 Шаблон проекта

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

Плейсхолдер Заменяется на
{{title}} Название проекта
{{singularity-id}} UUID проекта в Singularity
{{date}} Текущая дата (YYYY-MM-DD HH:mm:ss)
{{emoji}} Эмодзи проекта (Unicode hex)
{{note}} Описание проекта (синхронизируется из Singularity)

По умолчанию (пустая настройка) создаётся:

---
singularity-id: {{singularityId}}
---
# {{title}}
#### 📝 Notes

🖥️ Боковая панель

Открывается автоматически при старте Obsidian, если была открыта ранее. Две вкладки:

📋 Вкладка задач

  • Группировка по проектам Singularity
  • Фильтр по проекту (выпадающий список)
  • Исключение тегов (ввод через запятую)
  • Чекбокс отмечает выполнение (обновляет и Singularity, и Obsidian мгновенно)
  • Отображение дедлайнов

✅ Вкладка привычек

  • Настраиваемое количество дней (1–14, в настройках ✅ Привычки)
  • 3 состояния: не сделано (пусто) → полностью → наполовину → не сделано
  • Клик циклически переключает состояния
  • Цвет ячейки соответствует цвету привычки в Singularity

📝 Встраиваемая панель привычек

Встраивайте интерактивный трекер привычек прямо в заметку с помощью блока singularity-habits.

Синтаксис

```singularity-habits
days: 14
- зарядка
- all
```

Параметры

Параметр Описание
days: N Количество последних дней (по умолчанию: 14)
- all Показать все привычки из аккаунта (по умолчанию)
- <название> Показать только выбранные привычки (фильтр по названию)

Поведение

  • Блок отображает сетку, аналогичную вкладке привычек в боковой панели
  • Клик по ячейке циклически переключает: пусто → наполовину (2) → полностью (1) → пусто (0)
  • Изменения мгновенно синхронизируются с API Singularity и обновляют боковую панель и все встраиваемые панели на странице
  • Работает в Live Preview и Reading View

⌨️ Команды

Команда Описание
Singularity Sync: Синхронизировать Полная двусторонняя синхронизация
Singularity Sync: Проверить подключение Проверка API-ключа и соединения
Singularity Sync: Открыть панель Singularity Открыть боковую панель

📊 Лимиты

Ресурс Лимит Примечание
Задачи (синхронизация) 1 000 За один запуск синхронизации. API возвращает не более 5 000 задач.
Задачи (панель) 200 Боковая панель показывает до 200 последних задач.
Проекты 100 Загружаются все проекты.
Теги 500 Все теги загружаются и кэшируются.
Привычки 100 Загружаются все привычки для панели.

Если у вас больше 1 000 активных задач — синхронизация обработает первые 1 000. Выполненные и архивированные задачи не учитываются в этом лимите.


🛡️ Безопасность

  • API-ключ хранится в SecretStorage Obsidian (не в data.json)
  • Ключ никогда не попадает в логи или файлы настроек
  • При сохранении settings и data.json очищаются от любых следов ключа

📄 Лицензия

MIT