Документация: удалён черновик PLAN_FILES_IMPROVEMENTS, добавлен README.ru.md с шапкой

This commit is contained in:
mirivlad 2026-07-18 18:06:44 +08:00
parent 1bcad23b58
commit 1a201bed6d
3 changed files with 108 additions and 166 deletions

View File

@ -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)
[![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)
</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

91
README.ru.md Normal file
View File

@ -0,0 +1,91 @@
<div align="center">
# Официальные плагины Верстака
### Базовый набор плагинов — Файлы, Заметки, Редактор, Активность, Журнал и другие.
[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)
</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).

View File

@ -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`