GitHubUploader and CodebergUploader read the file SHA via GET before
issuing the PUT, but the GET went through URLSession's default cache.
On the next save the cached body would be replayed and the PUT would
target the previous commit's SHA, returning HTTP 409 conflict. The
fetchCurrentSHA calls now set .reloadIgnoringLocalAndRemoteCacheData
and a no-cache header, matching the pattern in RelayClient and
ThreadClient.