mirv 20a05569ac fix: второй стабилизационный pass vault layout — sync payload, bindings, vaultPath, tests
sync_apply.go:
- applyRemoteNodeCreate: полный payload (template_id/fs_path/sort_order/archived),
  INSERT сохраняет все поля, для folder-like создаётся физическая папка.
- applyRemoteNodeUpdate: принимает fs_path/template_id/archived,
  физическое переименование папки при изменении title/fs_path.
- applyRemoteNodeMove: принимает fs_path, обновляет parent_id+fs_path,
  физически перемещает папку (folder-like) или file record (note/file).

bindings_nodes.go:
- MoveNode: node.FsPath = newFsPath после UpdateFsPath;
  sync.RecordOp отправляет новый fs_path; note/file move to root — файл в vault root.
- RenameNode: EntityFile для file, EntityNote для note;
  коллизия → генерация уникального имени; файл переименовывается только после os.Rename.
- DeleteNode: единый вызов a.files.DeleteNodeAndChildren(), дублирование удалено.
- Исправлен deadlock с SetMaxOpenConns(1) — Query/Exec больше не конфликтуют.

files.Service.vaultPath: filepath.Rel-based проверка,
  sibling-prefix escape (/tmp/vault vs /tmp/vault_evil) отклоняется.

VaultCheck: SQL JOIN с n.deleted_at IS NULL, чтобы удалённые узлы
  не показывались как missing files.

Добавлены тесты: RenameFileNodeUsesEntityFile, MoveNoteToRoot,
  DeleteFolderLeavesVaultCheckHealthy, SyncNodeCreatePreservesFields,
  VaultPathSiblingPrefixEscape.
2026-06-02 17:03:05 +08:00
2026-05-31 19:11:20 +08:00

Верстак

Верстак — локальная программа, где по каждому клиенту или проекту лежат все его файлы, заметки, документы, ссылки, действия и история работ.

Это не замечатель, не CRM, не таск-трекер. Нишевая аудитория — люди, у которых работа организована через дела, а не через задачи:

дело → файлы → заметки → документы → действия → история → вернуться через месяц

Для кого

Один продукт — разные входные двери:

Кто Как видит Верстак
Фрилансер / дизайнер клиентские проекты, файлы, правки, история работ
Мастер по ПК клиенты, устройства, серийники, фото, журнал
Разработчик локальный workspace: заметки, репы, команды, файлы
Писатель / мейкер мастерская проектов: материалы, заметки, версии, история

Универсальные сущности

Базовая модель предельно проста — плагины добавляют функционал:

  • Дело — контекст для всего остального
  • Заметка — Markdown внутри vault
  • Файл / Документ — любой файл, привязанный к делу
  • Действие — кнопка запуска: URL, файл, папка, команда
  • Журнал — записи о затраченном времени

Плагины (шаблоны дел, календарь, канбан, импортёры) расширяют эти сущности без перекомпиляции программы.

Стек

Go + SQLite + Lua (плагины) + Wails + Bubble Tea.

Документация

S
Description
No description provided
Readme
28 MiB
Languages
Go 57.6%
Svelte 23.1%
JavaScript 11.8%
HTML 2.5%
Lua 1.9%
Other 3.1%