verstak/internal/core
mirivlad 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
..
actions stabilization: server.go split + i18n templates + frontend localization 2026-06-02 11:08:29 +08:00
activity server i18n: move inline HTML to templates.go, localize all handler strings 2026-06-02 11:26:54 +08:00
config sync: overhaul sync system — device pairing, server_sequence, auto-sync, dashboards 2026-06-02 02:26:05 +08:00
files fix: второй стабилизационный pass vault layout — sync payload, bindings, vaultPath, tests 2026-06-02 17:03:05 +08:00
nodes fix: complete vault layout transition — fs_path everywhere, no more spaces/ 2026-06-02 15:43:40 +08:00
notes fix: complete vault layout transition — fs_path everywhere, no more spaces/ 2026-06-02 15:43:40 +08:00
plugins stabilization: server.go split + i18n templates + frontend localization 2026-06-02 11:08:29 +08:00
search steps 8+9: worklog + FTS5 search 2026-05-31 02:25:25 +08:00
storage refactor: implement template-driven node tree and human-readable vault layout 2026-06-02 12:47:06 +08:00
sync stabilization: server.go split + i18n templates + frontend localization 2026-06-02 11:08:29 +08:00
templates refactor: implement template-driven node tree and human-readable vault layout 2026-06-02 12:47:06 +08:00
util step 2: init command + SQLite storage + migrations + config 2026-05-30 18:58:47 +08:00
vault step 2: init command + SQLite storage + migrations + config 2026-05-30 18:58:47 +08:00
worklog steps 8+9: worklog + FTS5 search 2026-05-31 02:25:25 +08:00
doc.go step 1: skeleton - go module, CLI stub with --version, structure 2026-05-30 18:42:19 +08:00
smoke_test.go refactor: implement template-driven node tree and human-readable vault layout 2026-06-02 12:47:06 +08:00