Документация: удалён черновик 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
|
||||
|
||||
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)
|
||||
|
||||
[](https://github.com/mirivlad/verstak-official-plugins/releases)
|
||||

|
||||
[](LICENSE)
|
||||
|
||||
</div>
|
||||
|
||||
> **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
|
||||
|
|
|
|||
|
|
@ -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