forked from unom/punktfunk
The sync engine's fingerprint says we would compute the same entries again. It does NOT say the host still holds them — and the host may accept a payload and store less of it than was sent: an art path outside its allowed roots is stripped and the games kept (deliberately, a cover must not cost a library), a launcher tile it cannot open is dropped the same way. Once that happens the fingerprint is a permanent "no changes". The operator fixes the host side, nothing republishes, and the only way out is to delete the plugin's cache file — which is exactly the advice a portable-Playnite library with 70 dropped covers was given. So the two triggers with a person behind them always apply: `startup`, the restart everyone reaches for, and `manual`, the console's Sync-now button and the CLI's `sync`. Both mean "publish my library NOW", and "no changes" is the wrong answer to that. The loop reasons keep the short-circuit, which is where it earns its keep — they are what would otherwise PUT the whole library every few minutes.