353 lines
9.4 KiB
Markdown
353 lines
9.4 KiB
Markdown
# Official Plugins
|
||
|
||
Официальные плагины — базовый набор инструментов Верстака. Они используют тот же
|
||
plugin runtime, что и сторонние. Их задача — показать, что платформа работает
|
||
через capabilities и contribution points.
|
||
|
||
Все официальные плагины используют префикс `verstak.*` в id.
|
||
|
||
## 1. `verstak.files`
|
||
|
||
Назначение:
|
||
|
||
- дерево/список файлов внутри дела;
|
||
- добавление файлов и папок;
|
||
- перемещение/переименование;
|
||
- открытие через Workbench (openProvider routing);
|
||
- trash/restore (через `verstak.trash`);
|
||
- file metadata.
|
||
|
||
Provides:
|
||
|
||
```
|
||
workspace.files
|
||
vault.files
|
||
entity.file
|
||
file.browser
|
||
```
|
||
|
||
Optional requires:
|
||
|
||
```
|
||
editor.text
|
||
viewer.file
|
||
preview.file
|
||
search.provider
|
||
```
|
||
|
||
Текущий статус: реализован. Открывает файлы через `api.workbench.openResource()`,
|
||
не импортирует редактор напрямую. Корзина выделена в отдельный плагин `verstak.trash`.
|
||
|
||
## 2. `verstak.notes`
|
||
|
||
Назначение:
|
||
|
||
- markdown notes как UI-слой над обычными `.md` файлами;
|
||
- каноническая папка `Notes/` внутри дела;
|
||
- `Overview.md` — обычное markdown-имя файла, не специальная UI-сущность;
|
||
- note metadata;
|
||
- rename с синхронизацией title/filename;
|
||
- conflict dialog при конфликте имён.
|
||
|
||
Provides:
|
||
|
||
```
|
||
workspace.notes
|
||
note.registry
|
||
```
|
||
|
||
Requires:
|
||
|
||
```
|
||
verstak/core/files/v1
|
||
```
|
||
|
||
Optional requires:
|
||
|
||
```
|
||
editor.text.markdown
|
||
search.provider
|
||
```
|
||
|
||
Текущий статус: реализован. Title и filename синхронизированы. При конфликте
|
||
имени показывается conflict dialog.
|
||
|
||
## 3. `verstak.default-editor`
|
||
|
||
Назначение:
|
||
|
||
- редактирование текста и markdown;
|
||
- toolbar;
|
||
- save flow;
|
||
- dirty state;
|
||
- markdown preview (встроен, не отдельный плагин);
|
||
- keyboard shortcuts (Ctrl+S).
|
||
|
||
Provides:
|
||
|
||
```
|
||
editor.text
|
||
editor.text.markdown
|
||
editor.note.markdown
|
||
```
|
||
|
||
Optional requires:
|
||
|
||
```
|
||
link.resolver
|
||
```
|
||
|
||
Текущий статус: реализован как единый плагин с тремя openProviders
|
||
(`text`, `generic-markdown`, `notes-markdown`). Использует `api.files.readText` /
|
||
`api.files.writeText`. Markdown preview — часть редактора, без отдельного
|
||
плагина предпросмотра.
|
||
|
||
## 4. `verstak.file-preview`
|
||
|
||
Назначение:
|
||
|
||
- inline preview для изображений через `api.files.readBytes`;
|
||
- metadata view;
|
||
- `Open External` через `api.files.openExternal`.
|
||
|
||
Provides:
|
||
|
||
```
|
||
viewer.file
|
||
viewer.image
|
||
preview.file
|
||
```
|
||
|
||
Текущий статус: базовый рендеринг изображений через публичный Files API,
|
||
плюс metadata файла. Текстовые файлы, код и markdown остаются за
|
||
editor-плагинами.
|
||
|
||
## 5. `verstak.activity`
|
||
|
||
Назначение:
|
||
|
||
- сбор activity events;
|
||
- отображение истории активности;
|
||
- реконструкция работы;
|
||
- worklog suggestions для Journal.
|
||
|
||
Provides:
|
||
|
||
```
|
||
activity.log
|
||
activity.provider
|
||
activity.reconstruction
|
||
```
|
||
|
||
Subscribes:
|
||
|
||
```
|
||
file.opened
|
||
file.changed
|
||
note.saved
|
||
action.started
|
||
browser.capture.received
|
||
case.selected
|
||
```
|
||
|
||
Текущий статус: реализован как глобальный sidebar view и workspace item.
|
||
Workspace tabs хранят свою activity stream; глобальный view агрегирует все
|
||
workspace streams. Предоставляет `activityProviders`; desktop runtime записывает
|
||
события в plugin storage даже когда Activity view не смонтирован. Реконструирует
|
||
worklog suggestions через контракт `verstak.activity.suggestWorklog`.
|
||
|
||
## 6. `verstak.journal`
|
||
|
||
Назначение:
|
||
|
||
- ручной журнал работ;
|
||
- billable/non-billable;
|
||
- приём suggested time из activity;
|
||
- создание записи из завершённого todo.
|
||
|
||
Provides:
|
||
|
||
```
|
||
worklog
|
||
journal
|
||
report.worklog
|
||
```
|
||
|
||
Optional requires:
|
||
|
||
```
|
||
activity.reconstruction
|
||
```
|
||
|
||
Текущий статус: реализован как глобальный sidebar view и workspace item.
|
||
Хранит записи в plugin settings namespace, импортирует не-billable записи
|
||
из `verstak.activity.suggestWorklog`, дедуплицирует по Activity suggestion id.
|
||
|
||
## 7. `verstak.browser-inbox`
|
||
|
||
Назначение:
|
||
|
||
- приём страниц, ссылок, выделенного текста и файлов из browser extension;
|
||
- pending queue с scoping по workspace;
|
||
- domain bindings;
|
||
- конвертация inbox entry в note/link/file;
|
||
- запись конвертаций в Activity.
|
||
|
||
Provides:
|
||
|
||
```
|
||
capture.browser
|
||
browser.inbox
|
||
domain.binding
|
||
```
|
||
|
||
Requires:
|
||
|
||
```
|
||
network.local
|
||
```
|
||
|
||
Optional requires:
|
||
|
||
```
|
||
workspace.notes
|
||
activity.log
|
||
search.provider
|
||
```
|
||
|
||
Текущий статус: реализован как глобальный sidebar view и workspace item.
|
||
Local receiver в paired mode с токеном. Поддерживает конвертацию в note
|
||
(через публичный Files API), link (`.url` файлы), text file attachments
|
||
и bounded binary attachments. Конвертации записываются в Activity.
|
||
|
||
## 8. `verstak.search`
|
||
|
||
Назначение:
|
||
|
||
- workspace-scoped search;
|
||
- поиск по мере ввода;
|
||
- поиск по именам файлов/папок и содержимому текстовых файлов;
|
||
- persistent search index;
|
||
- cross-provider runtime hosting.
|
||
|
||
Provides:
|
||
|
||
```
|
||
search
|
||
search.provider
|
||
search.indexer
|
||
```
|
||
|
||
Текущий статус: реализован как workspace item и `searchProviders` contribution.
|
||
Ищет по мере ввода, индексирует vault, обновляет индекс по файловым событиям,
|
||
поддерживает других search providers через runtime.
|
||
|
||
## 9. `verstak.secrets`
|
||
|
||
Назначение:
|
||
|
||
- защищённое хранилище доступов;
|
||
- workspace-scoped secrets;
|
||
- master password (AES-GCM).
|
||
|
||
Provides:
|
||
|
||
```
|
||
secret-store
|
||
secrets.read-ui
|
||
secrets.write-ui
|
||
```
|
||
|
||
Текущий статус: реализован. Desktop core имеет AES-GCM secret store,
|
||
разблокируемый один раз за сессию. Плагин показывает global и workspace-scoped
|
||
секреты, поддерживает редактирование, удаление, копирование markdown secret links.
|
||
Рендерит `verstak-secret://...` ссылки.
|
||
|
||
## 10. `verstak.todo`
|
||
|
||
Назначение:
|
||
|
||
- списки задач внутри дел и глобально;
|
||
- статусы: open, done, cancelled;
|
||
- приоритеты, due date, reminders;
|
||
- создание Journal записи из завершённого todo.
|
||
|
||
Provides:
|
||
|
||
```
|
||
workspace.todo
|
||
```
|
||
|
||
Текущий статус: реализован. Reminders с нативными desktop-уведомлениями
|
||
(при наличии capability `verstak/core/notifications/v1`). Поддерживает
|
||
создание Journal записи из todo с копированием фактических данных.
|
||
|
||
## 11. `verstak.trash`
|
||
|
||
Назначение:
|
||
|
||
- глобальный просмотр удалённых файлов;
|
||
- восстановление из корзины;
|
||
- перманентное удаление.
|
||
|
||
Provides:
|
||
|
||
```
|
||
trash.management
|
||
```
|
||
|
||
Текущий статус: реализован как глобальный sidebar view. Работает
|
||
с internal trash storage (`.verstak/trash/files/`).
|
||
|
||
## 12. `verstak.sync`
|
||
|
||
Назначение:
|
||
|
||
- ручная синхронизация vault;
|
||
- отображение статуса и конфликтов;
|
||
- настройки подключения к sync server.
|
||
|
||
Provides:
|
||
|
||
```
|
||
sync.ui
|
||
```
|
||
|
||
Requires:
|
||
|
||
```
|
||
network.remote
|
||
```
|
||
|
||
Текущий статус: реализован как глобальный sidebar view и settings panel.
|
||
Показывает vaultId, статус, unpushed count, ошибки и конфликты.
|
||
Не делает auto-resolve конфликтов.
|
||
|
||
## 13. `verstak.templates`
|
||
|
||
Назначение:
|
||
|
||
- шаблоны дел при создании;
|
||
- предопределённые наборы workspace tools;
|
||
- one-time применение (шаблон не привязан к делу после создания).
|
||
|
||
Provides:
|
||
|
||
```
|
||
case.templates
|
||
```
|
||
|
||
Текущий статус: реализован через built-in templates в desktop core
|
||
(General, Project, Writing, Admin, Minimal). Модальное окно создания
|
||
дела показывает описание шаблона и его вкладки.
|
||
|
||
## 14. `verstak.platform-test`
|
||
|
||
Назначение:
|
||
|
||
- тестовый плагин для отладки runtime;
|
||
- диагностические панели для проверки API;
|
||
- не для конечных пользователей.
|
||
|
||
Текущий статус: используется только при разработке.
|