18ba644388
* fix(plugins): serialize empty sync-result arrays instead of null Sync's result slices (Added/Installed/Missing/Errors) stayed Go nil when nothing changed, and encoding/json marshals a nil slice as null. The frontend's SyncResult type declares these as non-nullable arrays and reads result.added.length unconditionally, so a routine "everything up to date" sync crashed with "can't access property 'length', e.added is null". Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * refactor(plugins): initialize sync-result slices at construction Per review feedback (Claude, Greptile): normalizing nil slices at each return site in sync() left the invariant fragile — a future early return would silently reintroduce the null-serialization bug. Initialize SyncResult's slices non-nil at the struct literal instead, and append the scan results onto them. Also tighten the regression test to check exact JSON field values instead of a raw strings.Contains("null") substring search. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> --------- Co-authored-by: Kandev Agent <agent@kandev.dev> Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>