v1.3.4 - Automated Zero-Click Updates & Clean Changelog rendering π Latest
This release introduces a fully automated, background installer that updates the application on the fly without manual drag-and-drop actions, and implements a native block-level markdown parser to display a clean changelog layout.
π What's New
π Zero-Click Auto-Updates:
- The Problem: The app update flow previously opened a mounted DMG window in Finder requiring you to drag the app to your
/Applicationsfolder manually. This caused a conflict error stating "The app is in use and cannot be replaced" because the wrapper was still running. - The Solution: Built a silent background installer script. When you click Download & Install:
- The DMG mounts in the background quietly (
-nobrowse -noverify). - A background relauncher shell script is written to
/tmp. - The running app terminates and the relauncher script overwrites the bundle cleanly, detaches the volume, removes the installer DMG from your Downloads folder, and automatically restarts the new version.
- No Finder windows, no drag-and-drop conflicts, no manual clicks!
- The DMG mounts in the background quietly (
βοΈ Clean UI Changelog Block Parser:
- The Problem: The "What's New" sheet included repeated tag headers (like
# v1.3.2), raw markdown syntax (like##and-), and separator lines (---) because GitHub Release API returns Windows-style CRLF (\r\n) line endings, which broke basic text formatting. - The Solution: Implemented a native line-by-line block parser:
- Normalizes line endings (
\r\nto\n) so the markdown syntax parses properly. - Automatically filters out duplicate release headings and line breaks.
- Maps elements directly to beautifully styled native SwiftUI layouts (e.g. bold Netflix Red headers and custom red bullet points with indents).
- Normalizes line endings (