I have a program which apparently writes files first as short-windows-style-filenames and then renames them to long (normal) filenames (or something similar happens internally).
Example:
Create as: BIGWOR~1.MP3
Rename to: Big World - Me Gusta.mp3
This confuses syncthing as for windows these two filenames are the same file.
But syncthing can not find the short filename anymore and the gets stuck with this (on another device):
I assume this occurs since watching for changes is enabled? Through that short filenames were introduced into the database, which confuses the heck out of Syncthing. This was fixed here: https://github.com/syncthing/syncthing/pull/4975. The broader issue is https://github.com/syncthing/syncthing/issues/3800, which has some similarity with the entire case (in-)sensitivity/forbidden names story (at the very least in the sense that it is highly annoying and cumbersome x) ).
That depends on how the windows API reacts to being called on test~1. Best case it will just return test~1 without an error and we will use that. “Worst” case it will return an error, then we won’t scan just test~1, but its parent directory. Either way the result will be correct, it’s just more or less efficient.