Skip to content

fix: macOS 26/27 Touch Bar detection + v2.0 roadmap (TOU-81…TOU-85)#35

Merged
ProduktEntdecker merged 5 commits into
mainfrom
claude/macos-compat-v2-priorities-xlsjvk
Jun 16, 2026
Merged

fix: macOS 26/27 Touch Bar detection + v2.0 roadmap (TOU-81…TOU-85)#35
ProduktEntdecker merged 5 commits into
mainfrom
claude/macos-compat-v2-priorities-xlsjvk

Conversation

@ProduktEntdecker

@ProduktEntdecker ProduktEntdecker commented Jun 11, 2026

Copy link
Copy Markdown
Owner

Summary

macOS 26 Tahoe / macOS 27 Golden Gate compatibility work. Contains the v2.0 roadmap document plus the P0 fixes from it. Linear issues: TOU-81…TOU-91 (this PR implements TOU-81–TOU-85).

Changes

  • Roadmap: plans/v2.0-macos-compatibility-roadmap.md — analysis of macOS 27 Golden Gate (Apple Silicon only) and the macOS 26 Tahoe Touch Bar breakage, with prioritized P0/P1/P2 plan.
  • TOU-81: Add Mac14,7 (13" M2 2022 — the last Touch Bar Mac, runs macOS 27) to model detection.
  • TOU-82: Remove MacBookPro18,x (2021 redesign has no Touch Bar); also exclude base 13" models MacBookPro13,1/14,1 (function keys) that the previous prefix matching wrongly accepted.
  • TOU-83: New TouchBarError.touchBarDisabledByOS — when the model has a Touch Bar but no Touch Bar processes exist (Tahoe bug on M1/M2), fail with guidance instead of falsely reporting success.
  • TOU-84: Model list centralized in MacBookModel.touchBarModelIdentifiers (exact match, single source of truth); both TouchBarManager detection paths now use it.
  • TOU-85: LSMinimumSystemVersion 11.0 → 13.0 (matches the Package.swift build target); README requirements updated to macOS 13 / models 2016–2022.
  • Tests updated: Mac14,7 positive cases, MacBookPro18,x / 13,1 / 14,1 negative cases, suffix/whitespace edge cases.

Open items (separate issues)

  • Guided-recovery UI polish for the Tahoe state and OS-aware messaging (TOU-83/TOU-87).
  • Manual verification on macOS 26/27 beta hardware (TOU-85) — cannot be done in CI.

https://claude.ai/code/session_01YLxFPysnSjEYj2bX6fmEps

Summary by CodeRabbit

  • Neue Funktionen
    • Verbesserte Diagnose- und Statusbehandlung für Touch Bar bei macOS Tahoe und späteren Versionen.
    • Zusätzliche Hilfeaktionen: „Über“, Support-Link sowie „Problem melden“ mit vorbefüllten Angaben.
    • Version im Footer zeigt nun auch die Build-Nummer an.
  • Fehlerbehebungen
    • Präzisere Touch-Bar-Erkennung anhand exakter Gerätemodelle inkl. M2-Varianten (z. B. Mac14,7) und Edge-Cases.
  • Dokumentation
    • macOS-Voraussetzungen auf 13.0+ aktualisiert; Touch-Bar-Zeitraum auf 2016–2022 erweitert.
    • Neue Kompatibilitäts-Roadmap für Touch-Bar-Geräte.
  • Tests
    • Angepasste/erweiterte Touch-Bar-Modell- und Fehlermeldungs-Tests.

…dmap

- macOS 27 Golden Gate (WWDC 2026) drops Intel entirely; only
  MacBookPro17,1 and Mac14,7 Touch Bar Macs will run it
- Documents P0 detection bugs: Mac14,7 missing from model lists,
  MacBookPro18,x wrongly included (2021 redesign removed Touch Bar)
- Documents macOS 26 Tahoe Touch Bar breakage on M1/M2 and required
  handling (admin pkill, 'processes not running' failure state)
- Prioritized P0/P1/P2 plan for a 1.5.1 hotfix and v2.0

https://claude.ai/code/session_01YLxFPysnSjEYj2bX6fmEps
@coderabbitai

coderabbitai Bot commented Jun 11, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 9d8e051a-725a-4f79-9a13-1937f3120371

📥 Commits

Reviewing files that changed from the base of the PR and between 4d52f22 and 9be6790.

📒 Files selected for processing (5)
  • App/Sources/ContentView.swift
  • App/Sources/Utilities/MacBookModel.swift
  • App/Sources/main.swift
  • App/Tests/TouchBarManagerTests.swift
  • README.md

📝 Walkthrough

Walkthrough

Dieses PR konsolidiert die Touch-Bar-Geräte-Erkennung auf eine zentrale, exakte Set-basierte Logik statt hardcodierter Modelllisten, hebt macOS 13.0 zur Minimalversion, fügt einen neuen Fehlerfall für macOS-26-Tahoe hinzu und ergänzt App-Menü, About-Panel und Fehlerberichterstattung mit Hardware-Informationen.

Changes

Touch-Bar-Kompatibilität und macOS 13+ Support

Layer / File(s) Summary
Zentrale Modell-Erkennungslogik
App/Sources/Utilities/MacBookModel.swift
MacBookModel führt zentrale touchBarModelIdentifiers-Konstante ein. hasTouchBar() nutzt exakte Set-Prüfung mit Whitespace-Trimmen und Suffix-Pattern-Matching statt bisheriger Substring-Logik.
OS-Fehlerbehandlung und Manager-Integration
App/Sources/TouchBarManager.swift
TouchBarError erhält neuen Case touchBarDisabledByOS. Initial- und Verfügbarkeitsprüfung nutzen zentrale MacBookModel.hasTouchBar(). restartTouchBar() bricht mit frühem Exit ab, wenn Modell Touch Bar anzeigt aber keine Prozesse laufen.
Test-Abdeckung für Modelle und Edge-Cases
App/Tests/MacBookModelTests.swift, App/Tests/SharingManagerTests.swift, App/Tests/TouchBarManagerTests.swift
Tests für M2 (Mac14,7) und 2021er Redesign-Modelle hinzugefügt, falsche M1-Pro/Max-Annahmen entfernt. Suffix- und Whitespace-Handling validiert. Fehler-Enum und SharingManagerTests auf neue Modelle angepasst.
Plattform-Anforderungen und Dokumentation
App/Resources/Info.plist, README.md, plans/v2.0-macos-compatibility-roadmap.md
LSMinimumSystemVersion auf 13.0 erhöht. README dokumentiert macOS 13.0+ und 2016–2022 MacBook-Pro-Support. Neue Roadmap mappt macOS-26-Tahoe-Problem und Maßnahmen-Prioritäten.
App-UI und Menü-Integration mit Fehlerberichterstattung
App/Sources/main.swift, App/Sources/ContentView.swift
AppDelegate implementiert programmatisches Main-Menu (App/Edit/Window/Help), About-Panel mit Version/Build, Support-Link und Fehlerberichterstattung mit Hardware-ID. ContentView zeigt Version+Build im Footer.

🎯 3 (Moderate) | ⏱️ ~28 minutes

🚥 Pre-merge checks | ✅ 4 | ❌ 1

❌ Failed checks (1 warning)

Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 41.67% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (4 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed Der Titel fasst genau die Hauptchanges zusammen: macOS 26/27 Touch-Bar-Erkennung und die v2.0-Roadmap mit den Ticket-Referenzen.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.

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

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude/macos-compat-v2-priorities-xlsjvk

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

…ure mode

TOU-81: Add Mac14,7 (13" M2 2022, the last Touch Bar Mac) to detection
TOU-82: Remove MacBookPro18,x — the 2021 redesign has no Touch Bar; also
        exclude base 13" models (13,1/14,1) which have function keys
TOU-83: New touchBarDisabledByOS error — when the model has a Touch Bar
        but no Touch Bar processes exist (macOS 26 Tahoe bug on M1/M2),
        fail with guidance instead of falsely reporting success
TOU-84: Centralize the model list in MacBookModel as single source of
        truth (exact-match identifiers); TouchBarManager consumes it
TOU-85: Align LSMinimumSystemVersion (11.0 -> 13.0) with the Package.swift
        build target; update README requirements and model range

https://claude.ai/code/session_01YLxFPysnSjEYj2bX6fmEps
@ProduktEntdecker ProduktEntdecker changed the title docs: v2.0 roadmap — macOS 26/27 compatibility analysis and priorities fix: macOS 26/27 Touch Bar detection + v2.0 roadmap (TOU-81…TOU-85) Jun 11, 2026
@ProduktEntdecker ProduktEntdecker marked this pull request as ready for review June 11, 2026 20:37

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 3

🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.

Inline comments:
In `@App/Sources/TouchBarManager.swift`:
- Around line 58-66: Die Testliste, die in testErrorEnumDescription() verwendet
wird (die statische errors: [TouchBarError] Array), enthält nicht den neuen Case
TouchBarError.touchBarDisabledByOS, weshalb dessen errorDescription nicht
geprüft wird; aktualisiere dieses Array indem du
TouchBarError.touchBarDisabledByOS hinzufügst, so dass
testErrorEnumDescription() alle TouchBarError-Cases einschließlich
touchBarDisabledByOS abdeckt und dessen errorDescription validiert.

In `@App/Sources/Utilities/MacBookModel.swift`:
- Line 35: The current check in MacBookModel.swift uses
identifier.contains("Mac14,7") which can yield false positives; update the
conditional that returns "MacBook Pro 13\" M2" to use a stricter match (e.g.,
exact equality or hasPrefix after trimming) similar to the hasTouchBar() logic —
locate the identifier check in the method that maps identifiers to names and
replace the contains(...) condition with either identifier == "Mac14,7" ||
identifier.hasPrefix("Mac14,7-") or identifier.trimmingCharacters(in:
.whitespacesAndNewlines).hasPrefix("Mac14,7") so only intended identifiers
match.

In `@README.md`:
- Line 31: Update the ambiguous admin-privileges sentence in the README Security
section: replace the current line "No administrator privileges required (macOS
26 Tahoe may prompt for admin once)" with a clarified statement that either (a)
restricts "No administrator privileges required" to macOS 13–25, e.g. "No
administrator privileges required on macOS 13–25", or (b) removes the absolute
claim and adds a separate note "macOS 26+ (Tahoe) may require admin actions
(e.g. sudo pkill TouchBarServer)." Ensure the change is made in the Security
section wording so readers see the platform-specific exception clearly.
🪄 Autofix (Beta)

Fix all unresolved CodeRabbit comments on this PR:

  • Push a commit to this branch (recommended)
  • Create a new PR with the fixes

ℹ️ Review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 2078fc8f-51cb-4f24-830d-9c42badc7427

📥 Commits

Reviewing files that changed from the base of the PR and between 8500efc and 4d52f22.

📒 Files selected for processing (7)
  • App/Resources/Info.plist
  • App/Sources/TouchBarManager.swift
  • App/Sources/Utilities/MacBookModel.swift
  • App/Tests/MacBookModelTests.swift
  • App/Tests/SharingManagerTests.swift
  • README.md
  • plans/v2.0-macos-compatibility-roadmap.md

Comment thread App/Sources/TouchBarManager.swift
Comment thread App/Sources/Utilities/MacBookModel.swift Outdated
Comment thread README.md Outdated
claude added 3 commits June 11, 2026 20:53
- MacBookModel.series: strict Mac14,7 match instead of contains() to
  avoid false positives on other Mac14,x identifiers
- README: scope the no-admin claim to macOS 13-25 in requirements and
  security sections (macOS 26+ may need one-time admin authorization)
- TouchBarManagerTests: cover touchBarDisabledByOS in
  testErrorEnumDescription

https://claude.ai/code/session_01YLxFPysnSjEYj2bX6fmEps
…legible

- main.swift: install NSApp.mainMenu (App/Edit/Window/Help) — adds
  'About TouchBarFix' (shows version + build + copyright), Cmd+Q, and
  an Edit menu so copy/paste works on the share screen
- ContentView: replace the 8pt (illegible) version footer with a
  readable 'Version x.y.z (build)' string

Addresses TOU-95 (version not visible / missing Mac-standard menus).
Opens a pre-filled mailto to support with app version/build, macOS
version, and hardware model. Privacy-by-design: nothing is collected or
sent automatically; the user reviews and sends the message.

Part of TOU-97 (data-sparse feedback path).
@ProduktEntdecker ProduktEntdecker merged commit 590f356 into main Jun 16, 2026
2 checks passed
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