Документация: удалён черновик PLAN_FILES_IMPROVEMENTS, добавлен README.ru.md с шапкой
This commit is contained in:
parent
1bcad23b58
commit
1a201bed6d
21
README.md
21
README.md
|
|
@ -1,13 +1,26 @@
|
||||||
|
<div align="center">
|
||||||
|
|
||||||
# Verstak Official Plugins
|
# Verstak Official Plugins
|
||||||
|
|
||||||
The first-party plugin set for Verstak Desktop: Files, Trash, Notes, editor and
|
### The first-party plugin set — Files, Notes, Editor, Activity, Journal and more.
|
||||||
preview providers, Browser Inbox, Activity, Journal, Todo, Search, Secrets and
|
|
||||||
Templates. Plugin bundles are built into independent directories that the
|
**English** · [Русский](README.ru.md)
|
||||||
desktop host loads from its `plugins/` folder.
|
|
||||||
|
[](https://github.com/mirivlad/verstak-official-plugins/releases)
|
||||||
|

|
||||||
|
[](LICENSE)
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
> **Alpha software.** Build this repository together with compatible
|
> **Alpha software.** Build this repository together with compatible
|
||||||
> `verstak-desktop` and `verstak-sdk` checkouts.
|
> `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
|
## Build
|
||||||
|
|
||||||
Requirements: Node.js with npm, Go and Python 3. Keep this repository next to
|
Requirements: Node.js with npm, Go and Python 3. Keep this repository next to
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,91 @@
|
||||||
|
<div align="center">
|
||||||
|
|
||||||
|
# Официальные плагины Верстака
|
||||||
|
|
||||||
|
### Базовый набор плагинов — Файлы, Заметки, Редактор, Активность, Журнал и другие.
|
||||||
|
|
||||||
|
[English](README.md) · **Русский**
|
||||||
|
|
||||||
|
[](https://github.com/mirivlad/verstak-official-plugins/releases)
|
||||||
|

|
||||||
|
[](LICENSE)
|
||||||
|
|
||||||
|
</div>
|
||||||
|
|
||||||
|
> **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/<plugin-id>/`. Чтобы установить их в соседний
|
||||||
|
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-<version>.tar.gz`
|
||||||
|
и `release/verstak-official-plugins-windows-amd64-<version>.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).
|
||||||
|
|
@ -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)
|
|
||||||
- Кастомный `<div>` с пунктами, закрывается по клику вне или 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<string>` вместо `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`
|
|
||||||
Loading…
Reference in New Issue