WinSCP is a great tool, I am using it since version 1 and I recommended it to all my friends.
On my job I have to maintain several web projects and each of them has its own particularities regarding the directory structure and file names and types. I use the "Synchronize" and "Keep remote directory up to date" commands all the time. In order to use this functionality at maximum I have to deal with different lists of include/exclude masks in order to avoid overwriting server-specific configuration files with test configuration files, to avoid overwriting files generated on server or to speed up the synchronization by ignoring big directories containing files which never change.
To cut to the chase:
1. the edit field for include/exclude masks is way too short; it can accommodate about 40-45 characters; I usually have lists of masks of 120 characters or longer;
2. the syntax of the masks has a lot of quirks and even having the help page at hand I usually spend 15-20 minutes or more to add a non-trivial exclusion rule; for example, one which targets some specific files from a directory without affecting the files with the same name from other directories.
Suggestion(s) for improvement: create an UI for editing the masks. You could add a button next to the existing edit field which will open a new modal window where the user can edit the masks.
The masks editor could, in my vision, display each of the mask rules as an item in a listbox, with buttons for add, edit, delete, move up, move down. Making the mask editor window resizeable will help a lot. If it's not easy to make it resizeable then making it approximately the same size as the "Preferences" window should be enough.
When the user closes the "masks editor" with OK, the mask string is assembled (by joining the masks with ';') and it replaces the existing string in the edit field.
This editor will help a lot because this way the user can see at a glace most (all?) of the masks rules, add/remove rules and find the problems easier. However it is only the tip of the iceberg and it covers only the annoyance #1 exposed above.
Annoyance #2 is bigger and having implemented the suggestion for it will help a lot the power users to waste less time while writing the mask rules. The problem with the mask rules is as follows: I read the help, write the rule to exclude some file(s) located in some subdirectory while not affecting files with the same name located in other subdirectories (need to add paths in the mask for that) then I close the "transfer settings preset" window and I start synchronization. It takes several minutes to scan the entire directory structure and then I find the mask is not good and the file is not excluded. I abort the synchronization, open the transfer settings window and start over: read the help, scratch my head, rewrite the rule and so on, and so forth until, finally, 5-10 attempts and 30 minutes later I find out all I needed to do was to add a slash or an asterisk or something else somewhere.
Suggestion for improvement: on the mask editor described above put an edit field where the user can enter a path, local or remote, or a fragment of a path assumed being relative to the current local or remote directory. Then, when a button is pressed check that specific path or fragment against all the masks and tell the user if the path will be included or excluded on the transfer (or which rules affect it). This way, with instant feedback, editing of the masks with paths will become piece of cake and not the frustrating experience it currently is.
Keep doing the good work.