Skip to content

Upgrade to Xcode 27 and deprecate macOS 15 - #1478

Merged
cyanzhong merged 19 commits into
mainfrom
xcode27
Sep 23, 2026
Merged

cyanzhong merged 19 commits into
mainfrom
xcode27

Conversation

@cyanzhong

@cyanzhong cyanzhong commented Jun 12, 2026 •

Copy link
Copy Markdown
Contributor

No description provided.

@cyanzhong cyanzhong changed the title MACOSX_DEPLOYMENT_TARGET = 26.0 Upgrade to Xcode 27 Jun 12, 2026
@cyanzhong
cyanzhong marked this pull request as draft June 12, 2026 03:13
@cyanzhong cyanzhong changed the title Upgrade to Xcode 27 [WIP] Upgrade to Xcode 27 Jun 12, 2026
@cyanzhong
cyanzhong force-pushed the xcode27 branch 6 times, most recently from 748ff67 to 39f958a Compare June 24, 2026 12:37
@cyanzhong
cyanzhong force-pushed the xcode27 branch 2 times, most recently from 20e9dfc to 48d3142 Compare June 29, 2026 14:17
@cyanzhong
cyanzhong force-pushed the xcode27 branch 3 times, most recently from d1bb84a to 73ad07c Compare July 12, 2026 03:29
@cyanzhong
cyanzhong force-pushed the xcode27 branch 3 times, most recently from 2798b4d to 6c9785d Compare July 19, 2026 13:36
@cyanzhong
cyanzhong force-pushed the xcode27 branch 8 times, most recently from 40e5049 to 4bb6453 Compare July 28, 2026 02:06
cyanzhong and others added 12 commits September 23, 2026 11:12
^ Conflicts:
^	MarkEditMac/Sources/Editor/Controllers/EditorViewController+UI.swift

^ Conflicts:
^	MarkEditMac/Modules/Sources/SharedUI/RoundedButtonGroup.swift

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
^ Conflicts:
^	MarkEditMac/Sources/Extension/ExtensionsViewController.swift
Keep OS 27 runtime availability checks for the OS 26 deployment targets and document the branch's Xcode requirement.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Use typed menu image visibility and toolbar group role APIs while retaining macOS 27 runtime guards. Add menu image visibility regression coverage.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Xcode 27 enables anyAppleOS availability without experimental opt-ins. Keep runtime checks for the OS 26 deployment targets.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Swift 6 package targets enforce complete concurrency checking by default, so the experimental StrictConcurrency settings are no longer needed.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@cyanzhong cyanzhong changed the title [WIP] Upgrade to Xcode 27 Upgrade to Xcode 27 and deprecate macOS 15 Sep 23, 2026
@cyanzhong
cyanzhong marked this pull request as ready for review September 23, 2026 05:43
@cyanzhong
cyanzhong requested a lite review from Copilot September 23, 2026 05:47

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

Copilot review overview

🟡 Changes recommended

Critical CI runner and iOS deployment-target issues remain unresolved.

Get a fresh assessment by requesting another Copilot review.

Review effort: Lite
Findings: 4 High severity

Open (4)
What changed in this PR

This PR upgrades MarkEdit to Xcode/Swift 27 and macOS 26, adopts modern Apple APIs, and removes legacy compatibility paths. CI and iOS deployment-target blockers remain unresolved.

Changes:

  • Raises Swift tools and platform deployment targets.
  • Removes obsolete availability, styling, and compatibility fallbacks.
  • Updates Foundation Models, Translation, Writing Tools, tests, and CI.
File Summary
UpdateInstaller/​UpdaterCore/​Package.swift Updates Swift tools and macOS target.
README.md Updates platform support and legacy release documentation.
MarkEditTools/​Package.swift Raises the iOS minimum to 26, affecting iOS 18–25 clients.
MarkEditMac/​Sources/​Updater/​AppUpdater.swift Enables updater menu icons unconditionally.
MarkEditMac/​Sources/​Settings/​EditorSettingsView.swift Removes legacy font-style configuration.
MarkEditMac/​Sources/​Panels/​Replace/​EditorReplaceButtons.swift Uses modern button-group initialization.
MarkEditMac/​Sources/​Panels/​Find/​EditorFindPanel.swift Removes legacy find-panel styling.
MarkEditMac/​Sources/​Main/​AppWritingTools.swift Removes obsolete availability annotations.
MarkEditMac/​Sources/​Main/​AppRuntimeConfig.swift Defaults open-panel options to disabled.
MarkEditMac/​Sources/​Main/​AppResources.swift Updates symbol availability handling.
MarkEditMac/​Sources/​Main/​AppPreferences.swift Always refreshes window colors.
MarkEditMac/​Sources/​Main/​Application/​Application.swift Removes Writing Tools availability gating.
MarkEditMac/​Sources/​Main/​Application/​AppDelegate+Menu.swift Removes obsolete availability annotation.
MarkEditMac/​Sources/​Main/​AppDesign.swift Makes modern design behavior unconditional.
MarkEditMac/​Sources/​Extension/​ExtensionsWindowController.swift Uses the native tabs role.
MarkEditMac/​Sources/​Extension/​ExtensionsViewController+RowSizing.swift Removes conditional row margins.
MarkEditMac/​Sources/​Extension/​ExtensionsViewController.swift Applies modern spacing and backgrounds.
MarkEditMac/​Sources/​Extension/​ExtensionsRowView.swift Removes legacy badge and background fallbacks.
MarkEditMac/​Sources/​Editor/​Views/​EditorWebView.swift Always adds context-menu icons.
MarkEditMac/​Sources/​Editor/​Views/​EditorStatusView.swift Standardizes the glass status button.
MarkEditMac/​Sources/​Editor/​Models/​EditorToolbarItems.swift Simplifies toolbar icon creation.
MarkEditMac/​Sources/​Editor/​Models/​EditorDocument.swift Updates file-version picker initialization.
MarkEditMac/​Sources/​Editor/​EditorWindow.swift Makes custom titlebar behavior unconditional.
MarkEditMac/​Sources/​Editor/​Controllers/​EditorViewController+UI.swift Always installs modern titlebar UI.
MarkEditMac/​Sources/​Editor/​Controllers/​EditorViewController+Toolbar.swift Removes legacy toolbar icon sizing.
MarkEditMac/​Sources/​Editor/​Controllers/​EditorViewController+Statistics.swift Updates statistics controller initialization.
MarkEditMac/​Sources/​Editor/​Controllers/​EditorViewController.swift Removes obsolete Writing Tools and style plumbing.
MarkEditMac/​Modules/​Tests/​RuntimeTests.swift Adds menu-image visibility coverage.
MarkEditMac/​Modules/​Sources/​TextCompletion/​TextCompletionContext.swift Removes modern-style configuration.
MarkEditMac/​Modules/​Sources/​TextCompletion/​Internal/​TextCompletionView.swift Standardizes completion-view dimensions.
MarkEditMac/​Modules/​Sources/​TextCompletion/​Internal/​TextCompletionPanel.swift Removes legacy panel styling.
MarkEditMac/​Modules/​Sources/​Statistics/​Views/​StatisticsView.swift Standardizes statistics-view sizing.
MarkEditMac/​Modules/​Sources/​Statistics/​StatisticsController.swift Removes modern-style configuration.
MarkEditMac/​Modules/​Sources/​SharedUI/​RoundedNavigateButtons.swift Updates button-group initialization.
MarkEditMac/​Modules/​Sources/​SharedUI/​RoundedButtonGroup.swift Makes modern button rendering unconditional.
MarkEditMac/​Modules/​Sources/​SharedUI/​LabeledSearchField.swift Removes legacy search-field styling.
MarkEditMac/​Modules/​Sources/​SharedUI/​Buttons/​NonBezelButton.swift Standardizes modern button rendering.
MarkEditMac/​Modules/​Sources/​SharedUI/​Buttons/​AquaFocusRingButton.swift Removes obsolete focus-ring subclass.
MarkEditMac/​Modules/​Sources/​SettingsUI/​Extensions/​View+Extension.swift Applies modern SwiftUI sizing behavior.
MarkEditMac/​Modules/​Sources/​FontPicker/​FontPickerConfiguration.swift Removes modern-style configuration.
MarkEditMac/​Modules/​Sources/​FontPicker/​FontPicker.swift Standardizes popup positioning.
MarkEditMac/​Modules/​Sources/​FileVersion/​FileVersionPicker.swift Removes modern-style configuration.
MarkEditMac/​Modules/​Sources/​AppKitExtensions/​UI/​NSMenuItem+Extension.swift Uses the current image-visibility API.
MarkEditMac/​Modules/​Sources/​AppKitExtensions/​UI/​NSColor+Extension.swift Removes obsolete colors.
MarkEditMac/​Modules/​Sources/​AppKitExtensions/​Foundation/​NSPasteboard+Extension.swift Removes the pre-modern pasteboard fallback.
MarkEditMac/​Modules/​Package.swift Updates tools, deployment target, and concurrency settings.
MarkEditKit/​Sources/​Bridge/​Native/​Modules/​EditorModuleTranslation.swift Removes the old OS guard.
MarkEditKit/​Sources/​Bridge/​Native/​Modules/​EditorModuleFoundationModels.swift Adopts current Foundation Models APIs.
MarkEditKit/​Package.swift Raises the iOS minimum to 26, affecting iOS 18–25 clients.
MarkEditCore/​Package.swift Raises the iOS minimum to 26, affecting iOS 18–25 clients.
MarkEdit.xcodeproj/​project.pbxproj Raises all macOS deployment targets to 26.
.github/​workflows/​build-and-test.yml Configures Xcode 27, but uses an unsupported xcode-27 runner label.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread .github/workflows/build-and-test.yml
Comment thread MarkEditCore/Package.swift
Comment thread MarkEditKit/Package.swift
Comment thread MarkEditTools/Package.swift
cyanzhong and others added 6 commits September 23, 2026 14:00
Wait for navigation to finish, surface navigation failures, and retain the web view through evaluation instead of relying on an unloaded initial page.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Avoid implicitly unwrapped optionals to satisfy the app target's strict SwiftLint checks.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Log JavaScript evaluation stages and full NSError details, and retain failed module test result bundles.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Request unaccelerated rendering for deterministic pixel readback on the macOS 27 CI runner, preserving the exact RGBA assertion.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Keep CPU-backed canvas readback and the exact RGBA assertion; restore the original workflow and single-script test.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@cyanzhong
cyanzhong merged commit 9ff21da into main Sep 23, 2026
1 check passed
@cyanzhong
cyanzhong deleted the xcode27 branch September 23, 2026 06:57
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