verstak/cmd/verstak-gui
mirivlad b42aa35ee8 fix: bypass Wails v2 []string marshalling via JSON.stringify + end-to-end test
Root cause: Wails v2.12.0 cannot reliably marshal []string arguments
from JavaScript to Go when called through positional binding.
The event IDs array arrived empty on the Go side, causing no
worklog_entry_events INSERTs.

Fix:
- AcceptSuggestionWith now accepts eventIDsJSON (string) instead of
  eventIDs ([]string). Frontend passes JSON.stringify(eventIds).
- Backend json.Unmarshal into []string before validation.
- Pre-insert validation: each eventID checked in activity_events.
- Atomic tx: entry create + linking in single Begin/Commit.
- INSERT (not INSERT OR IGNORE) — failure is a hard error.
- Post-commit verification: JOIN COUNT(*) must match len(eventIDs).
- End-to-end test: TestAcceptSuggestionWithEndToEnd creates a node,
  3 activity events, accepts suggestion, verifies all 3 linked.

Other changes:
- GetWorklogEntryEvents: fixed column name (details_json -> metadata).
- openActivityTarget(ev): new function for 'Посмотреть' button that
  navigates to specific note/file/folder instead of just opening node.
- All 'openNodeById(ev.nodeId)' in event contexts replaced with
  'openActivityTarget(ev)'.
2026-06-03 16:00:17 +08:00
..
frontend-dist fix: bypass Wails v2 []string marshalling via JSON.stringify + end-to-end test 2026-06-03 16:00:17 +08:00
app.go feat: worklog source field, suggestion logic fix, modal form, activity navigation 2026-06-03 12:27:50 +08:00
bindings_actions.go refactor(gui): разделить app.go на binding-файлы по доменам, вынести sync apply 2026-06-02 10:47:38 +08:00
bindings_activity.go Step 16.1: global worklog dashboard + conservative suggestions 2026-06-03 09:56:17 +08:00
bindings_files.go refactor(gui): разделить app.go на binding-файлы по доменам, вынести sync apply 2026-06-02 10:47:38 +08:00
bindings_nodes.go feat: node search picker, ByNode grouping fix, PDF export 2026-06-03 10:56:13 +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_suggest.go fix: bypass Wails v2 []string marshalling via JSON.stringify + end-to-end test 2026-06-03 16:00:17 +08:00
bindings_sync.go refactor(gui): разделить app.go на binding-файлы по доменам, вынести sync apply 2026-06-02 10:47:38 +08:00
bindings_worklog.go fix: bypass Wails v2 []string marshalling via JSON.stringify + end-to-end test 2026-06-03 16:00:17 +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
suggest_test.go fix: bypass Wails v2 []string marshalling via JSON.stringify + end-to-end test 2026-06-03 16:00:17 +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