verstak/cmd/verstak-gui
mirivlad 23b3d07071 fix: tree DnD — correct cycle detection, reactive indicators, canonical reload
Backend:
- Fix MoveNode validation: wouldCreateCycle walks from newParentID up
  toward root, rejects if nodeID is encountered (parent into descendant)
- Allow moving descendant to ancestor (C into A) and child to root
- Add isContainerType validation for new parent
- Add 8 tests covering all scenarios + duplicate ID invariant

Frontend TreeNode.svelte:
- Build parent map from full tree (not just loaded children)
- canDrop uses parent map for cycle detection
- Reactive drop-valid/drop-invalid CSS via pre-computed dropAllowed map
- Keyed {#each nodes as node (node.id)} for correct identity tracking
- Auto-expand container on 600ms drag-over hover
- Proper dragleave detection (ignore transitions to child elements)
- Clean up state on dragend

Frontend App.svelte:
- reloadTreePreservingExpanded: fresh roots + children (no patching)
- Root area visual drop indicator (dashed outline)
- dragleave handler for root area

Clean up stale GUI dist assets
2026-06-03 05:27:20 +08:00
..
frontend-dist fix: tree DnD — correct cycle detection, reactive indicators, canonical reload 2026-06-03 05:27:20 +08:00
app.go gui: sidebar tree UX fixes — has_children, preserve expanded, double-click, DnD visual 2026-06-03 03:48:53 +08:00
bindings_actions.go refactor(gui): разделить app.go на binding-файлы по доменам, вынести sync apply 2026-06-02 10:47:38 +08:00
bindings_activity.go refactor: implement template-driven node tree and human-readable vault layout 2026-06-02 12:47:06 +08:00
bindings_files.go refactor(gui): разделить app.go на binding-файлы по доменам, вынести sync apply 2026-06-02 10:47:38 +08:00
bindings_nodes.go fix: tree DnD — correct cycle detection, reactive indicators, canonical reload 2026-06-03 05:27:20 +08:00
bindings_notes.go refactor(gui): разделить app.go на binding-файлы по доменам, вынести sync apply 2026-06-02 10:47:38 +08:00
bindings_settings.go fix: context menu close, OpenFolder for TypeFile nodes, tab highlight visibility 2026-06-03 04:56:11 +08:00
bindings_sync.go refactor(gui): разделить app.go на binding-файлы по доменам, вынести sync apply 2026-06-02 10:47:38 +08:00
bindings_worklog.go refactor(gui): разделить app.go на binding-файлы по доменам, вынести sync apply 2026-06-02 10:47:38 +08:00
main.go refactor: implement template-driven node tree and human-readable vault layout 2026-06-02 12:47:06 +08:00
move_node_test.go fix: tree DnD — correct cycle detection, reactive indicators, canonical reload 2026-06-03 05:27:20 +08:00
sync_apply.go sync_apply FS-first rewrite; CreateNodeFromTemplate rollback; DeleteNodeAndChildren fail on trash errors; PLAN.md update 2026-06-03 02:22:49 +08:00
vault_check.go fix: второй стабилизационный pass vault layout — sync payload, bindings, vaultPath, tests 2026-06-02 17:03:05 +08:00
vault_layout_test.go fix: third stabilization pass — template children as nodes, atomicity, fs_path validation, sync_apply compat, smoke test 2026-06-03 02:05:53 +08:00
vault_migrate.go refactor: implement template-driven node tree and human-readable vault layout 2026-06-02 12:47:06 +08:00
wails.json chore: add wails.json, remove wails3 artifacts, rebuild binaries 2026-06-03 01:48:12 +08:00