[PR #1827] Fix UI display issues and improve macOS Tahoe/Sequoia support #1289

Open
opened 2026-05-05 07:10:13 -06:00 by gitea-mirror · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/MonitorControl/MonitorControl/pull/1827
Author: @arsarsars1
Created: 12/27/2025
Status: 🔄 Open

Base: mainHead: feat/tahoe-compatibility


📝 Commits (10+)

  • cbe2fa7 Fix UI display issues and improve macOS Tahoe support
  • 40f9b02 Bump build version
  • 3a583e6 Merge upstream/main into feat/tahoe-compatibility
  • 665188f Merge upstream/main
  • 8bbef39 chore: ignore Xcode and SwiftPM local build directories
  • 6cf4eba chore: ignore Xcode and SwiftPM local build directories
  • c6a8fe9 chore: bump version to 7175 and enhance CustomHUD and SliderHandler UI
  • 8a2e7f1 Tahoe PR: HUD cleanup, force volume keys, slider/CustomHUD fixes
  • f403b30 fix(menu): restore display block border and match menu material
  • 248c256 Merge upstream/main into feat/tahoe-compatibility and resolve SliderHandler.swift conflicts

📊 Changes

16 files changed (+607 additions, -62 deletions)

View changed files

📝 .gitignore (+13 -1)
📝 MonitorControl.xcodeproj/project.pbxproj (+4 -0)
📝 MonitorControl/Enums/PrefKey.swift (+2 -0)
📝 MonitorControl/Info.plist (+1 -1)
📝 MonitorControl/Support/AppDelegate.swift (+1 -1)
MonitorControl/Support/CustomHUD.swift (+253 -0)
📝 MonitorControl/Support/DisplayManager.swift (+3 -0)
📝 MonitorControl/Support/MediaKeyTapManager.swift (+3 -3)
📝 MonitorControl/Support/MenuHandler.swift (+42 -8)
📝 MonitorControl/Support/OSDUtils.swift (+47 -0)
📝 MonitorControl/Support/SliderHandler.swift (+87 -40)
📝 MonitorControl/UI/Base.lproj/Main.storyboard (+7 -6)
📝 MonitorControl/UI/en.lproj/Main.strings (+3 -0)
📝 MonitorControl/View Controllers/Onboarding/OnboardingViewController.swift (+1 -1)
📝 MonitorControl/View Controllers/Preferences/KeyboardPrefsViewController.swift (+139 -0)
📝 MonitorControlHelper/Info.plist (+1 -1)

📄 Description

Overview

This PR addresses UI display issues and improves macOS Tahoe (15.x) / Sequoia compatibility, with follow-up fixes for OSD behavior, keyboard volume capture, and HUD lifecycle.

Changes Made

UI Fixes

  1. Menu Bar Slider

    • Redesigned layout: icon above slider (column style), left-aligned with the slider
    • Increased view height for spacing; fixed icon/slider overlap
    • Menu SF Symbols use palette configuration on macOS 12+ to avoid white “matting” around filled glyphs (e.g. brightness sun icon)
  2. Preferences — Displays Tab

    • Fixed truncated display friendly name field (taller field, better alignment with larger fonts)
  3. Preferences — About Tab

    • Fixed truncated application name label
  4. Preferences — Keyboard Tab

    • Accessibility troubleshooting UI (Help, Reset Accessibility via tccutil where applicable)
    • Volume control: new option Standard keys (force capture) — always captures volume/mute media keys even when the default output device supports native macOS volume (same intent as community PR #1846; included here to ship with Tahoe work)
    • Volume control popup widened slightly to fit the new menu title

macOS Tahoe / Sequoia / 26 Support

  1. Custom HUD for broken native OSD

    • On macOS 26+, OSDUtils uses a custom HUD (CustomHUD.swift) instead of private OSDManager where native OSD no longer shows reliable percentage/updates (per project README note on Tahoe)
    • Fade-out uses RunLoop common mode so the timer still fires during nested run-loop activity
    • Removed unused SwiftUI import from CustomHUD.swift
  2. HUD lifecycle

    • DisplayManager.clearDisplays() calls CustomHUDManager.cleanupDisplay per display so HUD windows/timers are not left behind after display reconnect or reconfigure
  3. Slider

    • Fixed percentage label updates (removed tautological percentageBox guard)

Files Touched (high level)

  • MonitorControl/Support/CustomHUD.swift — custom OSD UI
  • MonitorControl/Support/OSDUtils.swift — route to custom HUD on macOS 26+
  • MonitorControl/Support/SliderHandler.swift — menu slider layout & symbol rendering; percentage label fix
  • MonitorControl/Support/DisplayManager.swift — HUD cleanup when clearing displays
  • MonitorControl/Support/MediaKeyTapManager.swiftKeyboardVolume.mediaForce handling
  • MonitorControl/Enums/PrefKey.swiftmediaForce case
  • MonitorControl/Support/AppDelegate.swift, OnboardingViewController.swift — accessibility prompts include force-capture volume mode
  • MonitorControl/UI/Base.lproj/Main.storyboard, MonitorControl/UI/en.lproj/Main.strings — new volume menu item + layout
  • MonitorControl.xcodeproj/project.pbxproj, Info.plist files — project / version as needed

Testing

  • Tested on macOS Tahoe 15.x (UI, sliders, prefs, accessibility flow)
  • Verify custom HUD on macOS 26+ when adjusting brightness/volume/contrast
  • Verify Standard keys (force capture) keeps volume keys on MonitorControl when system would otherwise own them
  • Unplug/replug or reconfigure displays and confirm no stray HUD windows
  • Overlaps / supersedes need for #1846 (force standard volume keys) if maintainers accept this combined PR
  • Addresses UI truncation and Tahoe/Sequoia compatibility issues called out in discussions and README

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/MonitorControl/MonitorControl/pull/1827 **Author:** [@arsarsars1](https://github.com/arsarsars1) **Created:** 12/27/2025 **Status:** 🔄 Open **Base:** `main` ← **Head:** `feat/tahoe-compatibility` --- ### 📝 Commits (10+) - [`cbe2fa7`](https://github.com/MonitorControl/MonitorControl/commit/cbe2fa7e85047c7ae593af0d267fe7255b76570c) Fix UI display issues and improve macOS Tahoe support - [`40f9b02`](https://github.com/MonitorControl/MonitorControl/commit/40f9b022aa8d1168e238125265bd570e38361405) Bump build version - [`3a583e6`](https://github.com/MonitorControl/MonitorControl/commit/3a583e6bd9834feef1a8042b126471c8e2a3a818) Merge upstream/main into feat/tahoe-compatibility - [`665188f`](https://github.com/MonitorControl/MonitorControl/commit/665188f412f3f17d505acbdeda31c3cc2ddbc0bc) Merge upstream/main - [`8bbef39`](https://github.com/MonitorControl/MonitorControl/commit/8bbef398e10c3a7608b9e1491067f025316dcaeb) chore: ignore Xcode and SwiftPM local build directories - [`6cf4eba`](https://github.com/MonitorControl/MonitorControl/commit/6cf4eba1fc534f59d44639219bbdf92cddacae66) chore: ignore Xcode and SwiftPM local build directories - [`c6a8fe9`](https://github.com/MonitorControl/MonitorControl/commit/c6a8fe97b66fdec152479b624b124e218a3d4961) chore: bump version to 7175 and enhance CustomHUD and SliderHandler UI - [`8a2e7f1`](https://github.com/MonitorControl/MonitorControl/commit/8a2e7f1e62953dd9dfd0e5660398afacd11b9512) Tahoe PR: HUD cleanup, force volume keys, slider/CustomHUD fixes - [`f403b30`](https://github.com/MonitorControl/MonitorControl/commit/f403b309022056a9fe3a6a4097e09bdddf540e53) fix(menu): restore display block border and match menu material - [`248c256`](https://github.com/MonitorControl/MonitorControl/commit/248c256141c86f6fa5ebd3c6cc0957475ae1d804) Merge upstream/main into feat/tahoe-compatibility and resolve SliderHandler.swift conflicts ### 📊 Changes **16 files changed** (+607 additions, -62 deletions) <details> <summary>View changed files</summary> 📝 `.gitignore` (+13 -1) 📝 `MonitorControl.xcodeproj/project.pbxproj` (+4 -0) 📝 `MonitorControl/Enums/PrefKey.swift` (+2 -0) 📝 `MonitorControl/Info.plist` (+1 -1) 📝 `MonitorControl/Support/AppDelegate.swift` (+1 -1) ➕ `MonitorControl/Support/CustomHUD.swift` (+253 -0) 📝 `MonitorControl/Support/DisplayManager.swift` (+3 -0) 📝 `MonitorControl/Support/MediaKeyTapManager.swift` (+3 -3) 📝 `MonitorControl/Support/MenuHandler.swift` (+42 -8) 📝 `MonitorControl/Support/OSDUtils.swift` (+47 -0) 📝 `MonitorControl/Support/SliderHandler.swift` (+87 -40) 📝 `MonitorControl/UI/Base.lproj/Main.storyboard` (+7 -6) 📝 `MonitorControl/UI/en.lproj/Main.strings` (+3 -0) 📝 `MonitorControl/View Controllers/Onboarding/OnboardingViewController.swift` (+1 -1) 📝 `MonitorControl/View Controllers/Preferences/KeyboardPrefsViewController.swift` (+139 -0) 📝 `MonitorControlHelper/Info.plist` (+1 -1) </details> ### 📄 Description ## Overview This PR addresses UI display issues and improves macOS Tahoe (15.x) / Sequoia compatibility, with follow-up fixes for OSD behavior, keyboard volume capture, and HUD lifecycle. ## Changes Made ### UI Fixes 1. **Menu Bar Slider** - Redesigned layout: icon above slider (column style), left-aligned with the slider - Increased view height for spacing; fixed icon/slider overlap - Menu SF Symbols use palette configuration on macOS 12+ to avoid white “matting” around filled glyphs (e.g. brightness sun icon) 2. **Preferences — Displays Tab** - Fixed truncated display friendly name field (taller field, better alignment with larger fonts) 3. **Preferences — About Tab** - Fixed truncated application name label 4. **Preferences — Keyboard Tab** - Accessibility troubleshooting UI (Help, Reset Accessibility via `tccutil` where applicable) - **Volume control:** new option **Standard keys (force capture)** — always captures volume/mute media keys even when the default output device supports native macOS volume (same intent as community PR #1846; included here to ship with Tahoe work) - Volume control popup widened slightly to fit the new menu title ### macOS Tahoe / Sequoia / 26 Support 1. **Custom HUD for broken native OSD** - On **macOS 26+**, `OSDUtils` uses a custom HUD (`CustomHUD.swift`) instead of private `OSDManager` where native OSD no longer shows reliable percentage/updates (per project README note on Tahoe) - Fade-out uses `RunLoop` **common** mode so the timer still fires during nested run-loop activity - Removed unused SwiftUI import from `CustomHUD.swift` 2. **HUD lifecycle** - `DisplayManager.clearDisplays()` calls `CustomHUDManager.cleanupDisplay` per display so HUD windows/timers are not left behind after display reconnect or reconfigure 3. **Slider** - Fixed percentage label updates (removed tautological `percentageBox` guard) ## Files Touched (high level) - `MonitorControl/Support/CustomHUD.swift` — custom OSD UI - `MonitorControl/Support/OSDUtils.swift` — route to custom HUD on macOS 26+ - `MonitorControl/Support/SliderHandler.swift` — menu slider layout & symbol rendering; percentage label fix - `MonitorControl/Support/DisplayManager.swift` — HUD cleanup when clearing displays - `MonitorControl/Support/MediaKeyTapManager.swift` — `KeyboardVolume.mediaForce` handling - `MonitorControl/Enums/PrefKey.swift` — `mediaForce` case - `MonitorControl/Support/AppDelegate.swift`, `OnboardingViewController.swift` — accessibility prompts include force-capture volume mode - `MonitorControl/UI/Base.lproj/Main.storyboard`, `MonitorControl/UI/en.lproj/Main.strings` — new volume menu item + layout - `MonitorControl.xcodeproj/project.pbxproj`, `Info.plist` files — project / version as needed ## Testing - Tested on macOS Tahoe 15.x (UI, sliders, prefs, accessibility flow) - Verify custom HUD on **macOS 26+** when adjusting brightness/volume/contrast - Verify **Standard keys (force capture)** keeps volume keys on MonitorControl when system would otherwise own them - Unplug/replug or reconfigure displays and confirm no stray HUD windows ## Related - Overlaps / supersedes need for **#1846** (force standard volume keys) if maintainers accept this combined PR - Addresses UI truncation and Tahoe/Sequoia compatibility issues called out in discussions and README --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
gitea-mirror added the
pull-request
label 2026-05-05 07:10:13 -06:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: github-starred/MonitorControl#1289
No description provided.