Skip to content

✨ Updater improvements#771

Merged
SenpaiHunters merged 8 commits into
developfrom
updater-improvements
Jul 30, 2025
Merged

✨ Updater improvements#771
SenpaiHunters merged 8 commits into
developfrom
updater-improvements

Conversation

@mrkai77

@mrkai77 mrkai77 commented Jul 29, 2025

Copy link
Copy Markdown
Owner
  • Swaps old Loop.app with new Loop.app, rather than first deleting the existing bundle then unarchiving the new app
  • Checks for updates 2 seconds after launch, this also helps initialize the Updater class immediately (as static properties are lazily initialized)
  • Updater class now has a logger
  • Including development updates is now tracked using the Defaults package rather than from within the updater
  • Enabling/disabling updates is now also tracked using the Defaults package to reflect defaults write changes

This should hopefully fix some issues where Loop.app becomes unlaunchable after updating.

@mrkai77 mrkai77 requested a review from Copilot July 29, 2025 23:34
@mrkai77 mrkai77 self-assigned this Jul 29, 2025

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This PR improves the Loop updater system by implementing more robust update mechanisms, better state management, and immediate initialization. The changes focus on replacing the old Combine-based approach with async/await patterns and using the Defaults package for persistent settings.

  • Replaces timer-based updates with Task-based async operations for better resource management
  • Implements atomic app bundle swapping instead of delete-then-extract pattern for safer updates
  • Migrates updater settings to use Defaults package for better persistence and reactivity

Reviewed Changes

Copilot reviewed 6 out of 6 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
Loop/Updater/Updater.swift Complete refactor to use async/await, adds logging, implements atomic bundle swapping, and migrates to Defaults-based settings
Loop/Updater/UpdateView.swift Removes unnecessary bindings and simplifies view data flow
Loop/Luminare/Loop/AboutConfiguration.swift Updates UI to bind directly to Defaults instead of updater properties
Loop/AppDelegate.swift Adds 2-second delayed update check on app launch
Loop.xcodeproj/xcshareddata/xcschemes/Loop.xcscheme Fixes missing $ in build script path
Loop.xcodeproj/project.pbxproj Adds duplicate Luminare package dependency

Comment thread Loop.xcodeproj/xcshareddata/xcschemes/Loop.xcscheme Outdated
Comment thread Loop.xcodeproj/project.pbxproj Outdated
Comment thread Loop/Updater/Updater.swift
Comment thread Loop/Updater/Updater.swift
@mrkai77 mrkai77 requested a review from SenpaiHunters July 29, 2025 23:38
@SenpaiHunters SenpaiHunters merged commit f1ecf93 into develop Jul 30, 2025
1 check passed
@SenpaiHunters SenpaiHunters deleted the updater-improvements branch July 30, 2025 05:56
@mrkai77 mrkai77 removed the Bug label Jul 30, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants