Skip to content

v0.9.0

Choose a tag to compare

@c-orter c-orter released this 28 Oct 16:49
· 33 commits to main since this release

v0.9.0 (2024-10-25)

⚠ BREAKING CHANGES

  • config: Entries specifying previously described SyncPaths will be overridden by the hardcoded defaults
  • client & server: Removed .nosync file support. The .nosync system has been superseded by server/client side exclusions checkout the Configuration docs for more info on the new system
  • server: Renamed commonModExclusions -> exclusions

Features

  • Add support for empty folders (Fixes mods like AmandsSense and Bobby's music player)
  • Sync exclusions instead of excluded files to reduce network traffic, size of PreviousSync, and cost of hashing on client
  • Client and Server hashing processes have been made properly async to prevent blocking/freezing when loading
  • Massive hashing overhaul, moved from CRC to a two-prong solution depending on file size:
    * Small files (< 5MB) are hashed directly using Metrohash a tiny, performant non-cryptographic hash function
    * Large files (> 5MB) are hashed using an algorithm called ImoHash which uses file size and distributed sampling of files to quickly hash even very large files (bundles lmao)
    * Hashing on the server is now done via WASM for near native hashing performance instead of using JS
    * Renamed PreviousSync data key from crc -> hash
    * Client will now only request hashes for enabled and enforced sync paths reducing network traffic and load while hashing
  • SyncPaths are now applied in order of specificity and can "overlay" different settings into subdirectories (for example you could enforce BepInEx/config/RealismMod.cfg, while not enforcing the rest of your configs)
  • SyncPaths can now override less specific exclusions to "whitelist" files in excluded folders. For example:
    * A file or folder in an excluded directory can be added as its own syncPath and will override the exclusion
  • Added clientside exclusions list. ModSync_Data/Exclusions.json can now exclude files from syncing on the client
    * Can prevent files from being added/removed/updated even when present on the server
    * Enforced paths will ignore client exclusions
  • Renamed commonModExclusions -> exclusions
  • Removed .nosync file support. The exclusion system has been improved to the point where I think the nosync files were simply less useable. Let me know if you find any edge cases where they would've been better
  • Generally improved exception handling to provide more specific error messages and better reproduction information when things go wrong
  • client: always dump local hashes to improve debugging for user issues
  • config: hardcode plugin dll and updater exe as the mod doesn't work without them
  • plugin: increase timeout to 10 minutes when retrying requests

Bug Fixes

  • attempt to fix timeout when hashing files
  • client: enforced paths will still have their files deleted regardless of client config
  • config: add :Zone.Identifier files to default exclusions list