Match Windows ZoomIt behavior: bug fixes and UI polish - #34
Merged
Conversation
added 20 commits
July 17, 2026 21:50
…ng joins and preview
…nly (match Windows)
…n via Ctrl+W/Ctrl+K
There was a problem hiding this comment.
Pull request overview
This PR batches a set of behavior fixes and UI polish changes to bring ZoomIt for Mac closer to Windows ZoomIt parity, including options-dialog structure, input behavior, capture/overlay behavior, and visual alignment tweaks.
Changes:
- Refactors/updates the Settings (Options) UI: separate Live Zoom tab, grid-aligned Break tab, always-on-top settings window, corrected Draw/Type tab behaviors.
- Improves parity and UX across modes: static zoom no longer exits at 1x, panorama selection border is distinct (blue) and Escape cancels capture, break-timer background drawing respects flipped coordinates, break timer prevents idle display sleep.
- Adds/updates self-tests covering the newly introduced behaviors and regressions.
Reviewed changes
Copilot reviewed 16 out of 16 changed files in this pull request and generated 1 comment.
Show a summary per file
| File | Description |
|---|---|
| Sources/ZoomItMacCore/Settings/SettingsWindowController.swift | Splits Live Zoom into its own tab, adds always-on-top behavior, refactors Break tab layout into a grid, updates Draw/Type tab behavior. |
| Sources/ZoomItMacCore/Settings/SettingsStore.swift | Adjusts default typing font size to 20pt for Windows parity/UI polish. |
| Sources/ZoomItMacCore/SelfTest/SelfTestRunner.swift | Adds self-tests validating the new parity behaviors and UI rendering expectations. |
| Sources/ZoomItMacCore/Overlay/ZoomCanvasView.swift | Updates W/K drawing shortcuts to use Ctrl for blank-screen and adds helper decision function. |
| Sources/ZoomItMacCore/Overlay/BreakTimerController.swift | Fixes break-timer background rendering in flipped views; acquires/releases idle-sleep assertion during break timer. |
| Sources/ZoomItMacCore/Core/ModeCoordinator.swift | Changes zoom-out floor behavior so static zoom stays active at 1x while live zoom still exits. |
| Sources/ZoomItMacCore/Capture/WebcamOverlayController.swift | Makes the webcam overlay draggable and keeps the recorded composite frame in sync. |
| Sources/ZoomItMacCore/Capture/VideoClipEditorController.swift | Ensures changing the transition updates existing append joins and refreshes preview/timeline. |
| Sources/ZoomItMacCore/Capture/SnipController.swift | Adds border-color customization and a render-for-testing helper for selection UI. |
| Sources/ZoomItMacCore/Capture/RecordingController.swift | Preserves original file when trimming by choosing copy vs move based on edit output. |
| Sources/ZoomItMacCore/Capture/PanoramaController.swift | Adds Escape-to-cancel capture behavior and uses blue selection border for panorama region selection. |
| Sources/ZoomItMacCore/App/IdleSleepAssertion.swift | Introduces an injectable IOKit assertion wrapper to prevent idle display sleep during break timer. |
| Sources/ZoomItMacCore/App/AppIcon.swift | Adds a standardized rounded-square icon renderer for dialogs/pickers. |
| Sources/ZoomItMacCore/App/AppDelegate.swift | Reorders status menu via a declarative entry list; adds Draw item; pads menu-bar icon rendering. |
| Sources/ZoomItMacCore/App/AppController.swift | Adds Draw activation hook and switches permissions dialog icon to the standard rounded-square icon. |
| Sources/ZoomItMacCore/Annotations/AnnotationController.swift | Updates default typing font size and changes fallback system font weight to regular. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
Comment on lines
+606
to
+611
| escapeLocalMonitor = NSEvent.addLocalMonitorForEvents(matching: [.keyDown]) { [weak self] event in | ||
| guard event.keyCode == 53 else { return event } | ||
| Task { @MainActor in self?.cancelCapture() } | ||
| return nil | ||
| } | ||
| } |
MarioHewardt
approved these changes
Jul 20, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
A batch of bug fixes and UI polish to bring ZoomIt for Mac closer to the Windows ZoomIt behavior. Each change is committed individually and covered by the
ZoomItMacSelfTestself-test suite (all passing).Behavior fixes (Windows parity)
Options dialog (match Windows)
UI polish
Not included
Testing
swift buildsucceeds.swift run ZoomItMacSelfTestpasses (new tests added for each behavioral change).