diff --git a/README.md b/README.md index 0781131..c75739e 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,26 @@ +
+ # Verstak Official Plugins -The first-party plugin set for Verstak Desktop: Files, Trash, Notes, editor and -preview providers, Browser Inbox, Activity, Journal, Todo, Search, Secrets and -Templates. Plugin bundles are built into independent directories that the -desktop host loads from its `plugins/` folder. +### The first-party plugin set — Files, Notes, Editor, Activity, Journal and more. + +**English** · [Русский](README.ru.md) + +[![Release](https://img.shields.io/github/v/release/mirivlad/verstak-official-plugins?include_prereleases\&label=release)](https://github.com/mirivlad/verstak-official-plugins/releases) +![Status](https://img.shields.io/badge/status-alpha-orange) +[![License](https://img.shields.io/github/license/mirivlad/verstak-official-plugins)](LICENSE) + +
> **Alpha software.** Build this repository together with compatible > `verstak-desktop` and `verstak-sdk` checkouts. +Verstak Official Plugins is the first-party plugin set for Verstak Desktop: +Files, Trash, Notes, Default Editor, File Preview, Browser Inbox, Activity, +Journal, Todo, Search, Secrets, Sync, and Templates. Plugin bundles are built +into independent directories that the desktop host loads from its `plugins/` +folder. + ## Build Requirements: Node.js with npm, Go and Python 3. Keep this repository next to diff --git a/README.ru.md b/README.ru.md new file mode 100644 index 0000000..cebb867 --- /dev/null +++ b/README.ru.md @@ -0,0 +1,91 @@ +
+ +# Официальные плагины Верстака + +### Базовый набор плагинов — Файлы, Заметки, Редактор, Активность, Журнал и другие. + +[English](README.md) · **Русский** + +[![Релиз](https://img.shields.io/github/v/release/mirivlad/verstak-official-plugins?include_prereleases\&label=release)](https://github.com/mirivlad/verstak-official-plugins/releases) +![Статус](https://img.shields.io/badge/status-alpha-orange) +[![Лицензия](https://img.shields.io/github/license/mirivlad/verstak-official-plugins)](LICENSE) + +
+ +> **Alpha-версия.** Собирайте этот репозиторий вместе с совместимыми +> версиями `verstak-desktop` и `verstak-sdk`. + +Официальные плагины — базовый набор инструментов Верстака: Файлы, Корзина, +Заметки, Редактор, Предпросмотр, Входящие из браузера, Активность, Журнал, +Задачи, Поиск, Секреты, Синхронизация и Шаблоны. Плагины собираются в +независимые пакеты, которые desktop-приложение загружает из папки `plugins/`. + +## Состав + +| Плагин | Назначение | +|--------|------------| +| `verstak.files` | Файловый менеджер внутри дела | +| `verstak.trash` | Корзина: восстановление и удаление | +| `verstak.notes` | Заметки в формате Markdown | +| `verstak.default-editor` | Редактор текста и Markdown | +| `verstak.file-preview` | Предпросмотр изображений | +| `verstak.activity` | История активности и реконструкция работы | +| `verstak.journal` | Журнал работ | +| `verstak.browser-inbox` | Приём материалов из браузера | +| `verstak.search` | Поиск по файлам и заметкам | +| `verstak.secrets` | Защищённое хранилище доступов | +| `verstak.todo` | Списки задач | +| `verstak.sync` | Синхронизация между устройствами | +| `verstak.templates` | Шаблоны дел | + +Все плагины используют один и тот же runtime, что и сторонние. + +## Сборка + +Требования: Node.js с npm, Go и Python 3. Репозиторий должен находиться рядом +с `verstak-sdk`, чтобы проверка manifest использовала SDK-схему. + +```bash +npm --version +go version +./scripts/check.sh +./scripts/build.sh +``` + +Сборка создаёт пакеты в `dist//`. Чтобы установить их в соседний +desktop-репозиторий: + +```bash +cd ../verstak-desktop +./scripts/install-dev-plugins.sh +``` + +## Портативные архивы плагинов + +Сборка архивов под конкретную платформу (Linux): + +```bash +sudo apt install gcc-mingw-w64-x86-64 +./scripts/package-portable.sh v0.1.0-alpha.1 +``` + +Команда создаёт `release/verstak-official-plugins-linux-amd64-.tar.gz` +и `release/verstak-official-plugins-windows-amd64-.zip`, а также +`SHA256SUMS`. Каждый архив распаковывается прямо в `plugins/` desktop-приложения. +Frontend и manifest общие; нативные Go sidecar собираются под целевую ОС. +Это локальная операция упаковки, она не создаёт GitHub Release. + +## Публикация GitHub Release + +```bash +./scripts/publish-github-release.sh v0.1.0-alpha.1 +``` + +Требуется авторизованный [`gh`](https://cli.github.com/) CLI и чистый +актуальный `main`. Создаёт и отправляет аннотированный тег, затем создаёт +или обновляет GitHub Release с Linux-архивом, Windows-архивом и `SHA256SUMS`. + +## Лицензия + +Copyright © 2026 Verstak contributors. Распространяется на условиях +[GNU AGPLv3 или новее](LICENSE). diff --git a/plugins/files/PLAN_FILES_IMPROVEMENTS.md b/plugins/files/PLAN_FILES_IMPROVEMENTS.md deleted file mode 100644 index 8913082..0000000 --- a/plugins/files/PLAN_FILES_IMPROVEMENTS.md +++ /dev/null @@ -1,162 +0,0 @@ -# План улучшений файлового менеджера Verstak2 - -> **Архитектура:** Плагин `verstak.files` в монорепозитории `verstak-official-plugins`. -> Код: `plugins/files/frontend/src/index.js` (vanilla JS, VerstakPluginRegister). -> API: `api.files.*`, `api.workbench.openResource()`, `api.settings`, `api.events`, `api.commands`. - -## Порядок реализации - -| # | Feature | Приоритет | Зависит от | -|---|---------|-----------|------------| -| 1 | Контекстное меню (правый клик) | 🔥 High | — | -| 2 | Open External / Show in Explorer | ✅ Done | `files.openExternal` | -| 3 | Кастомный ConfirmModal | 🔥 High | — | -| 4 | Duplicate | 🔥 High | — | -| 5 | Cut/Copy/Paste | 🔥 High | — | -| 6 | Множественное выделение | 🔥 High | — | -| 7 | Drag-and-Drop | 🔥 High | — | -| 8 | Клавиатурная навигация (Ctrl+A, Escape, стрелки) | Medium | #6 | -| 9 | Богатые иконки (как в v1) | Medium | — | -| 10 | История навигации | Medium | — | -| 11 | Rename с валидацией | Medium | — | - ---- - -### Feature 1: Контекстное меню (правый клик) - -**Описание:** При правом клике на файле/папке показывать меню с действиями. - -**Пункты меню:** Open, Open External, Show in Explorer, Rename, Duplicate, Cut, Copy, Delete — с разделителями. - -**Архитектура:** -- Событие `contextmenu` на `.files-item` -- Позиционирование у курсора (event.clientX/Y) -- Кастомный `
` с пунктами, закрывается по клику вне или Escape -- Класс `.files-context-menu` для стилей - -**Файлы:** `plugins/files/frontend/src/index.js` - ---- - -### Feature 2: Open External / Show in Explorer - -**Описание:** Пункты меню для открытия файла во внешнем приложении и показа -файла/папки в системном файловом менеджере. - -**Текущий v2 статус:** плагин использует публичные методы -`api.files.openExternal(relativePath)` и `api.files.showInFolder(relativePath)`, -guarded by `files.openExternal`. Fallback modal с vault-relative path и кнопкой -`Copy Path` показывается только если API недоступен или вернул ошибку. - -**Файлы:** `plugins/files/frontend/src/index.js` - ---- - -### Feature 3: Кастомный ConfirmModal - -**Описание:** Вместо `window.confirm()` — стилизованный modal с кнопками Отмена/Удалить, опасным стилем (красная кнопка). - -**Архитектура:** -- Функция `confirmModal(message, options)` возвращает Promise -- Создаёт overlay + modal в DOM -- Закрывается по Escape или кнопке Отмена - -**Файлы:** `plugins/files/frontend/src/index.js` - ---- - -### Feature 4: Duplicate - -**Описание:** Копирование файла/папки в той же папке с добавлением суффикса (напр. "filename_copy.ext", "filename_2.ext"). - -**Архитектура:** -- Для файла: `api.files.readText()` + `api.files.writeText()` с новым именем -- Для папки: рекурсивное копирование (сложнее, можно defer) -- Пункт в контекстном меню: "Duplicate" - -**Файлы:** `plugins/files/frontend/src/index.js` - ---- - -### Feature 5: Cut/Copy/Paste - -**Описание:** Буфер обмена внутри файлового менеджера. Cut → перенос. Copy → дублирование. Paste в текущую папку. - -**Архитектура:** -- `clipboard: { items: [...], mode: 'cut'|'copy' }` -- Клавиши Ctrl+X/C/V -- Пункты в контекстном меню - -**Файлы:** `plugins/files/frontend/src/index.js` - ---- - -### Feature 6: Множественное выделение - -**Описание:** Ctrl+click (toggle), Shift+click (range), Ctrl+A (select all). Массовые операции (Trash, Copy, Paste). - -**Архитектура:** -- `selectedPaths: Set` вместо `selectedPath: string` -- Ctrl+click → toggle entry в Set -- Shift+click → range select от последнего клика -- Действия применяются ко всем выделенным - -**Файлы:** `plugins/files/frontend/src/index.js` - ---- - -### Feature 7: Drag-and-Drop - -**Описание:** Перемещение файлов/папок между папками через drag-and-drop. - -**Архитектура:** -- HTML5 DnD API: `dragstart`, `dragover`, `drop` на `.files-item` -- При drop на папку → `api.files.move()` -- Визуальная индикация (подсветка папки при наведении) -- Отмена по Escape - -**Файлы:** `plugins/files/frontend/src/index.js` - ---- - -### Feature 8: Клавиатурная навигация - -**Описание:** Escape (снять выделение), Ctrl+A (select all), стрелки (навигация по строкам). - -**Зависит от:** Feature 6 (множественное выделение) - -**Файлы:** `plugins/files/frontend/src/index.js` - ---- - -### Feature 9: Богатые иконки - -**Описание:** Как в v1 — отдельные SVG иконки для image, video, audio, pdf, document, spreadsheet, presentation, archive, code, text. - -**Архитектура:** Расширить функцию `fileIcon()`. - -**Файлы:** `plugins/files/frontend/src/index.js` - ---- - -### Feature 10: История навигации - -**Описание:** Кнопки Back/Forward в тулбаре, как в браузере. Хранение стека посещённых папок. - -**Архитектура:** -- `historyStack: string[]` с индексом -- back() / forward() / push(path) - -**Файлы:** `plugins/files/frontend/src/index.js` - ---- - -### Feature 11: Rename с валидацией - -**Описание:** Проверять имя через API до применения. Показывать ошибку под полем, а не в placeholder. - -**Архитектура:** -- Проверка: не пустое, нет `/`, нет null byte, не `.verstak` -- API коллизии: `api.files.metadata(newPath)` — если существует, ошибка - -**Файлы:** `plugins/files/frontend/src/index.js`