Problem
The client-side matchesIgnore in internal/syncthing/client.go only handles three cases:
node_modules/ (trailing slash = dir match)
*.ext (single leading wildcard)
- Exact name matches
Syncthing's .stignore format also supports:
** (recursive glob)
? (single character wildcard)
!pattern (negation/re-include)
(?i)pattern (case-insensitive flag)
If a user adds docs/**/*.md or !important.txt to their .stignore, the TUI file list will show incorrect sync/hidden state for those files.
Fix
Replace the hand-rolled matching with filepath.Match for basic glob support, and handle the ! negation prefix. Document that ** and Syncthing-specific flags ((?i), (?d)) are not fully supported client-side, as full support would require reimplementing Syncthing's ignore engine.
Problem
The client-side
matchesIgnoreininternal/syncthing/client.goonly handles three cases:node_modules/(trailing slash = dir match)*.ext(single leading wildcard)Syncthing's
.stignoreformat also supports:**(recursive glob)?(single character wildcard)!pattern(negation/re-include)(?i)pattern(case-insensitive flag)If a user adds
docs/**/*.mdor!important.txtto their.stignore, the TUI file list will show incorrect sync/hidden state for those files.Fix
Replace the hand-rolled matching with
filepath.Matchfor basic glob support, and handle the!negation prefix. Document that**and Syncthing-specific flags ((?i),(?d)) are not fully supported client-side, as full support would require reimplementing Syncthing's ignore engine.