v1.3.1 - Robust Updater Caches & Native Markdown Rendering ๐ ๏ธ Latest
This release contains stability improvements to the auto-updater to resolve network caching issues, support non-standard GitHub release tag formats, and natively render formatted markdown release notes.
๐ What's New
๐ถ Live Update Cache Bypass:
- The Problem: The update check requests were cached by macOS
URLSessioncaches, resulting in the app showing "You're up to date!" even after a new version was published on GitHub. - The Solution: Added
.reloadIgnoringLocalAndRemoteCacheDatacache policy configuration to the update checker's HTTP request to force checks directly against GitHub's live API.
๐ท๏ธ Robust Tag Normalization (e.g., v.1.3.0):
- The Problem: Tagging releases on GitHub with non-standard formats (such as
v.1.3.0with a dot) resulted in the version parser stripping only thevand leaving.1.3.0which broke numeric version comparisons. - The Solution: Standardized tag cleaning to normalize
v.,v, and custom surrounding dots. Bothv.1.3.0andv1.3.0now clean up to1.3.0for safe numeric comparison.
๐ Robust Release Notes Matcher:
- The Problem: The app queried a static tags endpoint to fetch changelogs. Tag naming anomalies on GitHub resulted in 404 errors when looking up release notes.
- The Solution: Rewrote the fetcher to query the releases list and find the correct entry by matching normalized tag names, resolving tag formatting differences completely.
๐จ Clean Markdown Changelog Rendering:
- The Problem: The "What's New" modal displayed raw Markdown styling tags (like
##,***,-,**) literally as plain text. - The Solution: Wrapped the dynamic release notes string in SwiftUI's
LocalizedStringKeyinitializer, enabling SwiftUI to render styled headings, lists, and bold text natively.