Skip to content

Add resident automation and replace the storyboard Settings window#557

Open
moreaki wants to merge 5 commits into
mangerlahn:mainfrom
moreaki:issue-547-auto-refresh-updates
Open

Add resident automation and replace the storyboard Settings window#557
moreaki wants to merge 5 commits into
mangerlahn:mainfrom
moreaki:issue-547-auto-refresh-updates

Conversation

@moreaki

@moreaki moreaki commented Mar 14, 2026

Copy link
Copy Markdown

Summary

This branch adds resident automation for update checks and supported in-app upgrades, keeps Latest optionally available from the menu bar after the main window closes, and rewrites the active Settings experience in code so the new controls can be maintained sanely.

The biggest architectural change is the Settings window rewrite. I removed the active Settings window flow from Main.storyboard and replaced it with a code-driven SettingsWindowController plus code-built tab content. The storyboard version had become too complicated and brittle to make the new controls and layout work reliably, especially once the window needed dynamic sizing, a menu bar resident mode, and the additional settings sections.

What changed

Resident automation and runtime behavior

  • Adds schedule-based automatic update checks while Latest is running.
  • Adds schedule-based automatic installation for updates that Latest can already install directly.
  • Runs automatic checks again after wake when the configured schedule is due.
  • Prevents overlapping update-check runs.
  • Adds a resident mode so closing the main window can keep Latest alive in the menu bar.
  • Adds a Show Latest in the Dock while hidden option and keeps Dock/menu bar badges in sync from the app-level runtime.
  • Adds a Settings item to the menu bar menu.

Settings window rewrite

  • Replaces the old storyboard-backed Settings window with a code-driven window controller and code-driven tabs.
  • Splits the UI into General, Automation, and Locations tabs.
  • Rebuilds the General and Automation tabs from reusable AppKit section/row components.
  • Removes the dormant Settings scenes from Main.storyboard and cleans up the now-dead localized storyboard strings.

Locations improvements

  • Redesigns the Locations tab with a cleaner list layout.
  • Adds inline remove actions so deleting a folder no longer depends on selecting a row first.
  • Aligns the count badges and improves the row metadata.
  • Allows removing standard folders by persisting them as excluded defaults.

Startup integration

  • Adds Open Latest at login in General settings.
  • Uses SMAppService.mainApp on macOS 13+ so the login-item behavior is native to macOS.
  • Leaves the control disabled on older systems where that API is unavailable.

Notes

  • Automation still works only while Latest is running. This branch does not introduce a launchd agent or other out-of-process scheduler.
  • The new Settings window was moved out of the storyboard intentionally because the storyboard setup was too hard to evolve safely for these behaviors and layouts.

Validation

Built successfully with:

xcodebuild -project Latest.xcodeproj -scheme Latest -configuration Debug -destination 'platform=macOS,arch=arm64' CODE_SIGNING_ALLOWED=NO CODE_SIGNING_REQUIRED=NO CODE_SIGN_IDENTITY='' build

I also manually verified:

  • Settings opens from both Cmd-, and the menu bar menu.
  • The menu bar resident mode keeps Latest available after the main window closes.
  • The redesigned Locations tab supports inline removal, including standard folders.
  • The Open Latest at login toggle is present and wired up on macOS 13+.

Addresses #547.

Roberto Nibali added 3 commits March 15, 2026 00:27
Introduce resident automation for scheduled checks and supported auto-updates while Latest stays running. This moves badge and status-item state into the app delegate, keeps the app alive in the menu bar when requested, and refreshes after wake without duplicate runs.

It also replaces the storyboard-backed Settings window with a code-driven tabbed window. The old Settings scenes are removed from Main.storyboard because the storyboard layout had become too brittle to evolve reliably for the new controls and runtime behavior.
Rebuild the Locations tab in code with a cleaner card-style list, inline remove actions, and aligned count badges. Removing folders no longer depends on selecting a row first.

Standard scan folders can now be removed as well by persisting them as excluded defaults instead of forcing them to stay enabled forever.
Add a Startup section to General settings with a native login-item toggle. The setting uses SMAppService.mainApp on macOS 13 and later so it behaves like other macOS apps instead of introducing a custom launcher path.

On older systems the control stays disabled and reports that the feature is unavailable.
@moreaki

moreaki commented Mar 14, 2026

Copy link
Copy Markdown
Author

Reworked the Settings Component:

image image image

Made sure the "keep in" Dock and Menubar work regarding main window close, are configurable and show the proper badge:

Dock Menubar
image image

Menubar allows for Settings to be opened:
image

Automation has some default settings:

image image

Roberto Nibali added 2 commits March 15, 2026 01:14
Address issue mangerlahn#530 by adding a scoped font-size preference for the Your version and New version lines in the update list. The setting lives in General preferences and supports Standard, Large, and Extra Large without changing the rest of the UI scale.
@dtoub

dtoub commented May 9, 2026

Copy link
Copy Markdown

Any updates since 0.2.0-dev?

@dtoub

dtoub commented May 27, 2026

Copy link
Copy Markdown

Still getting crashes with 0.2.0-dev. Any updates? Thanks.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants