Conversation
Signed-off-by: Sam Potts <sam@potts.es>
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.
Summary
Brightness changes made with macOS keys or System Settings did not reach Display Groups. Native brightness control was also restricted to built-in panels, skipping Pro Display XDR and Studio Display.
Probe native control before falling back to DDC/software, and observe grouped native displays with a 50 ms polling interval, including while the menu is closed. Feed external changes through the existing group policy. Serialize native writes and baseline their readback to suppress feedback loops and stale reads. Remove leftover software dimming when native control becomes available.
Closes #41
Type of change
Checklist
make testpasses locally (swift testgreen) and SwiftLint is clean.git commit -s, DCO).Validation: All 656 unit tests passed, and the four brightness-monitor tests passed again before submission. Both
OpenDisplayandOpenDisplay-PublicAPIOnlybuilt successfully with Xcode. SwiftLint reports the same 372 violations as upstreammain(360 warnings, 12 errors), so the combined lint checklist item remains unchecked.git diff --checkpasses.Hardware evidence: Native DisplayServices brightness reads succeeded on both connected Apple external displays. The reported setup and reproduction are in #41. This does not claim automated end-to-end keyboard/System Settings validation. Observation is limited to native brightness; DDC-only monitor-button changes are outside this fix.
Safety & recovery
The new loop starts when active brightness-group members are present, stops when none remain, and is cancelled on app termination. Reads run off the main actor; sleeping displays, failed reads, and stale observations are skipped. Native writes are serialized per display and read back before resetting the observer baseline. Existing group precedence and offset learning remain in place. The loop does not change display topology or recovery behavior, and is excluded from the public-API-only build.