Conversation
- Point SUFeedURL at cavaldos/ice-releases appcast - Derive MARKETING_VERSION and build number from git tag in release workflow - Disable automatic-download toggle unless automatic checks are on - Update copyright to cavaldos
When every pixel is below the alpha threshold, averageColor divided its color totals by a zero pixel count and returned a color whose components are all NaN. Return nil instead, as the function already does when it can't compute a color. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Ad-hoc signed builds get a designated requirement pinned to the binary's cdhash rather than a stable Developer ID. Since the hash changes with every build, the csreq recorded in the TCC database when the user first granted Accessibility/Screen Recording no longer matches after an update. System Settings still renders the row by bundle ID and shows the toggle as on, while tccd denies the app — so Ice looks authorized but behaves as though it is not. The stale rows have to be cleared before a new grant can bind to the current signature. Add script/fix-permissions.sh to do that, and document the behaviour in the README so users hitting it can recognize the symptom. Also note the Homebrew conflict: upstream Ice installs as the jordanbaird-ice cask and shares this bundle ID, so leaving it registered lets a later brew upgrade replace this build. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Reporting every nonzero tccutil exit as "nothing to reset" hid real failures, so the script could relaunch Ice claiming success while the stale entries were still in place and the re-grant would not stick. tccutil exits 64 when TCC holds no record for the bundle id at all, which is the expected result on a fresh install that has never prompted. Treat only that as a non-failure, report anything else with its actual message on stderr, and exit nonzero so the caller sees it. Every service is still attempted, so one failure does not skip the rest. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
pgrep/pkill -f matches the full argument list and treats the pattern as a regular expression, so a bundle path containing regex metacharacters could match more than intended. Matching the executable name is path-independent and has no regex surface, and is the form script/run.sh already uses. No behaviour change for the default path. Verified end-to-end for both the default and explicit-path invocations: the running instance is detected and quit, and the post-relaunch check passes. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01AAEniuh7ZZnTMtTgwRcm7w
docs: document permissions and add TCC recovery script
open -a resolves its argument through LaunchServices app-name lookup, which is the wrong tool when $APP is already a known bundle path (the default /Applications/Ice.app or the explicit argument this script already validated with -d). Passing the path directly to open avoids that indirection. Addresses the optional nit cavaldos left on PR #14 that didn't make it into the merge: #14 Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
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.
This pull request introduces several significant changes focused on improving performance, maintaining the project, and cleaning up dependencies. The most notable updates include adding a new GitHub Actions workflow for releases, optimizing menu bar detection logic for better efficiency, and removing unused dependencies and documentation.
Build and Release Improvements:
.github/workflows/release.yml) to automate building and releasing the app on GitHub using Xcode 26+ runners, ensuring compatibility with the latest macOS SDK and streamlining the release process.Performance Optimizations:
EventManagerby introducing a short-lived cache for menu bar window frames, reducing expensive calls to WindowServer, and throttling hover/scroll event handling to prevent excessive IPC and improve responsiveness. [1] [2] [3] [4] [5]Dependency and Project Cleanup:
CompactSliderandIfritSwift package dependencies and all related references fromIce.xcodeprojandPackage.resolved, simplifying the project and reducing build complexity. [1] [2] [3] [4] [5] [6] [7]Package.resolvedfor improved update handling and security.Documentation and Codebase Maintenance:
FREQUENT_ISSUES.mdfile, likely due to outdated content or a shift to alternative support channels.RunLoopLocalEventMonitor.swiftto clarify its correct usage and prevent misuse that could break UI interactions on newer macOS versions.EventTapand removal of an unused hotkey action. [1] [2]These changes collectively enhance the app's reliability, maintainability, and performance.