Skip to content

Update project to Swift 6, Xcode 26.x & >= macOS 15.x#899

Open
sammcj wants to merge 2 commits intoleits:masterfrom
sammcj:fix_calendar_permissions
Open

Update project to Swift 6, Xcode 26.x & >= macOS 15.x#899
sammcj wants to merge 2 commits intoleits:masterfrom
sammcj:fix_calendar_permissions

Conversation

@sammcj
Copy link
Copy Markdown

@sammcj sammcj commented Mar 5, 2026

Status

READY

Description

  • Updated project and scheme for Xcode 26.3 / Swift 6
  • Bumped minimum macOS deployment target from 12.0 to 15.6
  • Migrated sandbox entitlements from .entitlements file to build settings (ENABLE_APP_SANDBOX, ENABLE_OUTGOING_NETWORK_CONNECTIONS, ENABLE_RESOURCE_ACCESS_CALENDARS, ENABLE_USER_SELECTED_FILES)
  • Reformatted Info.plist (Xcode auto-reformat, no functional changes)

Notes

  • The deployment target bump would be a breaking change for users on macOS < 15.6.
  • Sandbox behaviour is unchanged - the entitlements are now declared via build settings rather than the .entitlements file, which is the modern Xcode approach.

Fixes #898

Removed from .entitlements Replaced by build setting
com.apple.security.app-sandbox ENABLE_APP_SANDBOX = YES
com.apple.security.files.user-selected.read-write ENABLE_USER_SELECTED_FILES = readwrite
com.apple.security.network.client ENABLE_OUTGOING_NETWORK_CONNECTIONS = YES
com.apple.security.personal-information.calendars ENABLE_RESOURCE_ACCESS_CALENDARS = YES

Checklist

Steps to Test or Reproduce

  • Build succeeds on Xcode 26.3
  • App launches and displays calendar events
  • Google Calendar integration still works (network entitlement)
  • Calendar access permission prompt appears on first launch
  • In-app changelog displays the new version entry

Summary by CodeRabbit

  • Chores
    • Updated project for Xcode 26.3 / Swift 6 compatibility
    • Raised minimum macOS deployment target to 15.6
    • Migrated and revised sandbox/entitlements configuration and related permissions
    • Updated in-app changelog to include a Version 4.12 entry

@dosubot dosubot Bot added the size:L This PR changes 100-499 lines, ignoring generated files. label Mar 5, 2026
@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Mar 5, 2026

Walkthrough

Project updated for Xcode 26.3 / Swift 6; macOS deployment target raised to 15.6. Sandbox entitlements were removed from the entitlements file and migrated to build settings. Added Simplified Chinese (zh-Hans) and Portuguese (pt) localizations. Development team entries and symbol generation flags added to build configurations.

Changes

Cohort / File(s) Summary
Project configuration
MeetingBar.xcodeproj/project.pbxproj, MeetingBar.xcodeproj/xcshareddata/xcschemes/MeetingBar.xcscheme
Bumped Xcode LastUpgrade/LastUpgradeVersion to 2630; added zh-Hans and pt to knownRegions; raised MACOSX_DEPLOYMENT_TARGET to 15.6; enabled STRING_CATALOG_GENERATE_SYMBOLS; added DEVELOPMENT_TEAM to additional targets/configs; toggled sandbox/network/calendar/user-file capability flags in build settings.
Entitlements & capabilities
MeetingBar/MeetingBar.entitlements
Removed sandbox-related entitlements (com.apple.security.app-sandbox, files.user-selected.read-write, network.client, personal-information.calendars); left time-sensitive user notifications entitlement. Capabilities now configured via build settings.
Info / Runtime metadata
MeetingBar/Info.plist
Reordered and repackaged top-level keys; preserved existing keys (CFBundle*, URL types, calendar usage descriptions, encryption flag) with minor structural reordering.
Changelog & UI
CHANGELOG.md, MeetingBar/UI/Views/Changelog/Changelog.swift
Added unreleased 4.12.0 changelog entry and conditional UI section describing Xcode/Swift upgrade, macOS target bump, entitlements migration, and new localizations.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

Suggested labels

lgtm

Suggested reviewers

  • leits

Poem

🐰 I hopped through Xcode fields so wide,
Swift six carrots glowing by my side,
Sandbox seeds moved into build-time beds,
New tongues now sing where locale hat rests. 🎋📦

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Linked Issues check ✅ Passed The PR directly addresses issue #898 by migrating sandbox entitlements from the .entitlements file to build settings, restoring calendar permission declarations that were lost in the .entitlements removal.
Out of Scope Changes check ✅ Passed All changes are directly related to fixing calendar permissions and updating project settings; added Chinese and Portuguese localisations align with internationalization scope mentioned in checklist.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately summarizes the main changes: updating to Swift 6, Xcode 26.x, and macOS 15.x minimum deployment target, which aligns with the primary modifications across the build configuration and project files.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@sammcj sammcj force-pushed the fix_calendar_permissions branch from 5bd6e76 to c74676f Compare March 5, 2026 23:18
Copy link
Copy Markdown

@coderabbitai coderabbitai Bot left a comment

Choose a reason for hiding this comment

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

🧹 Nitpick comments (3)
MeetingBar.xcodeproj/project.pbxproj (3)

378-378: Project-level deployment target also inconsistent.

The project-level configurations (Debug line 378, Release line 443) still have MACOSX_DEPLOYMENT_TARGET = 12.0, while the MeetingBar target overrides this to 15.6. While target-level settings take precedence, having consistent values at the project level improves clarity and avoids confusion for contributors.

Also applies to: 443-443

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@MeetingBar.xcodeproj/project.pbxproj` at line 378, The project-level
MACOSX_DEPLOYMENT_TARGET is set to 12.0 in project configurations
(Debug/Release) while the MeetingBar target uses 15.6; update the project-level
MACOSX_DEPLOYMENT_TARGET entries so they match the MeetingBar target (set both
Debug and Release project configuration keys MACOSX_DEPLOYMENT_TARGET to 15.6)
to keep project and target deployment targets consistent and avoid confusion.

536-558: Deployment target inconsistency between main app and test target.

The MeetingBar app target has MACOSX_DEPLOYMENT_TARGET = 15.6 (lines 479, 513), but the MeetingBarTests target still has MACOSX_DEPLOYMENT_TARGET = 12.0 (lines 536, 558). While tests can technically have a lower deployment target, this inconsistency may cause issues if tests use APIs available only in 15.6+.

Consider aligning the test target deployment target with the main app target for consistency.

♻️ Suggested fix
 14619A2225EC26DF00F3098F /* Debug */ = {
     ...
-    MACOSX_DEPLOYMENT_TARGET = 12.0;
+    MACOSX_DEPLOYMENT_TARGET = 15.6;
     ...
 };
 14619A2325EC26DF00F3098F /* Release */ = {
     ...
-    MACOSX_DEPLOYMENT_TARGET = 12.0;
+    MACOSX_DEPLOYMENT_TARGET = 15.6;
     ...
 };
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@MeetingBar.xcodeproj/project.pbxproj` around lines 536 - 558, The
MeetingBarTests build configurations (XCBuildConfiguration entries named Debug
and Release for MeetingBarTests) set MACOSX_DEPLOYMENT_TARGET = 12.0 which is
inconsistent with the main app's MACOSX_DEPLOYMENT_TARGET = 15.6; update the
MACOSX_DEPLOYMENT_TARGET values under the MeetingBarTests buildSettings (both
Debug and Release configuration blocks where INFOPLIST_FILE =
MeetingBarTests/Info.plist or TEST_HOST is set) to 15.6 so the test target
matches the main app.

359-359: Hardcoded development team identifier added.

DEVELOPMENT_TEAM = KGH289N6T8 has been added to multiple configurations. For an open-source project, contributors typically need to change this to their own team ID. This is common and expected, but worth noting that contributors will need to modify this setting (or use CODE_SIGN_STYLE = Manual) to build locally.

Also applies to: 430-430, 529-529, 551-551

🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.

In `@MeetingBar.xcodeproj/project.pbxproj` at line 359, Remove the hardcoded
DEVELOPMENT_TEAM entries and replace them with a non-user-specific
configuration: either set CODE_SIGN_STYLE = Manual for the affected build
configurations or change DEVELOPMENT_TEAM = KGH289N6T8 to a placeholder
reference (e.g., DEVELOPMENT_TEAM = $(DEVELOPMENT_TEAM)) so contributors can
supply their own team ID via Xcode build settings or environment; update every
occurrence of the DEVELOPMENT_TEAM build setting in the project.pbxproj (and
ensure CODE_SIGN_STYLE is set to Manual where appropriate) to avoid forcing a
specific Apple team ID on contributors.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.

Nitpick comments:
In `@MeetingBar.xcodeproj/project.pbxproj`:
- Line 378: The project-level MACOSX_DEPLOYMENT_TARGET is set to 12.0 in project
configurations (Debug/Release) while the MeetingBar target uses 15.6; update the
project-level MACOSX_DEPLOYMENT_TARGET entries so they match the MeetingBar
target (set both Debug and Release project configuration keys
MACOSX_DEPLOYMENT_TARGET to 15.6) to keep project and target deployment targets
consistent and avoid confusion.
- Around line 536-558: The MeetingBarTests build configurations
(XCBuildConfiguration entries named Debug and Release for MeetingBarTests) set
MACOSX_DEPLOYMENT_TARGET = 12.0 which is inconsistent with the main app's
MACOSX_DEPLOYMENT_TARGET = 15.6; update the MACOSX_DEPLOYMENT_TARGET values
under the MeetingBarTests buildSettings (both Debug and Release configuration
blocks where INFOPLIST_FILE = MeetingBarTests/Info.plist or TEST_HOST is set) to
15.6 so the test target matches the main app.
- Line 359: Remove the hardcoded DEVELOPMENT_TEAM entries and replace them with
a non-user-specific configuration: either set CODE_SIGN_STYLE = Manual for the
affected build configurations or change DEVELOPMENT_TEAM = KGH289N6T8 to a
placeholder reference (e.g., DEVELOPMENT_TEAM = $(DEVELOPMENT_TEAM)) so
contributors can supply their own team ID via Xcode build settings or
environment; update every occurrence of the DEVELOPMENT_TEAM build setting in
the project.pbxproj (and ensure CODE_SIGN_STYLE is set to Manual where
appropriate) to avoid forcing a specific Apple team ID on contributors.

ℹ️ Review info
⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: 0aa6e4e7-b27f-4dd2-ac9e-6563954b0a92

📥 Commits

Reviewing files that changed from the base of the PR and between 48373d7 and c74676f.

📒 Files selected for processing (6)
  • CHANGELOG.md
  • MeetingBar.xcodeproj/project.pbxproj
  • MeetingBar.xcodeproj/xcshareddata/xcschemes/MeetingBar.xcscheme
  • MeetingBar/Info.plist
  • MeetingBar/MeetingBar.entitlements
  • MeetingBar/UI/Views/Changelog/Changelog.swift
💤 Files with no reviewable changes (1)
  • MeetingBar/MeetingBar.entitlements

@sammcj
Copy link
Copy Markdown
Author

sammcj commented Mar 5, 2026

@coderabbitai comments addressed, tests passing. FYI @leits

@coderabbitai
Copy link
Copy Markdown

coderabbitai Bot commented Mar 5, 2026

Tip

For best results, initiate chat on the files or code changes.

@sammcj: Thanks for the update! Great to hear the comments have been addressed and tests are passing. 🎉


If you found this review helpful, would you consider giving us a shout-out on X?

Thank you for using CodeRabbit!

@codecov
Copy link
Copy Markdown

codecov Bot commented Mar 6, 2026

Codecov Report

❌ Patch coverage is 0% with 6 lines in your changes missing coverage. Please review.
✅ Project coverage is 36.38%. Comparing base (84e0a9f) to head (52cb23a).
⚠️ Report is 15 commits behind head on master.

Files with missing lines Patch % Lines
MeetingBar/UI/Views/Changelog/Changelog.swift 0.00% 6 Missing ⚠️
Additional details and impacted files
@@             Coverage Diff             @@
##           master     #899       +/-   ##
===========================================
+ Coverage   26.30%   36.38%   +10.08%     
===========================================
  Files          36       48       +12     
  Lines        5645     5106      -539     
  Branches     2210     1735      -475     
===========================================
+ Hits         1485     1858      +373     
+ Misses       4103     3191      -912     
  Partials       57       57               

☔ View full report in Codecov by Sentry.
📢 Have feedback on the report? Share it here.

@sammcj
Copy link
Copy Markdown
Author

sammcj commented Mar 17, 2026

@leits FYI

@sammcj sammcj changed the title fix: Apple calendar permissions - update: Xcode 26.3 & macOS 15.6 Update project to Swift 6, Xcode 26.x & >= macOS 15.x Apr 14, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:L This PR changes 100-499 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bug: Meetingbar no longer has calendar permissions, and does not request it

1 participant