# 6.9.9 ## Improvements - **macOS 26.3+**: When in **Sync Mode** with **Sync Nits** enabled, entering the XDR brightness range on the source display now sets all target displays to max brightness instead of trying to map the fluctuating XDR nits values # 6.9.8 ## Improvements - Update Sparkle framework - Disable nits syncing when Sync Mode is enabled in XDR - Implement slow ramp up when enabling XDR to avoid washed out colors - Unify XDR and SDR sliders and OSD and approximate the nits value so that it appears in the XDR range as well - Add *"Force keep System Adaptive Brightness disabled"* to the right click menu of each display ## Known issues - *Check for updates* dialog is unclickable for the first few seconds after the first click on it *(still investigating)* # 6.9.7 ## Fixes - Remove **Unlock preset** functionality on macOS 26.3 and later since it no longer works - Fix hang detection not getting the right callstack # 6.9.6 ## Features - New app hang detection and mitigation logic ## Fixes - Fallback to tone-mapping XDR logic since macOS 26.3 blocked the native XDR algorithm - Disable `Enhance Contrast` features since macOS 26.3 blocked them from working ## Improvements - Allow passing inputs to the CLI as seen in the UI - Example: `lunar set input "HDMI 1 (LG specific)"` - Disable error reporting by default # 6.9.5 ## Fixes - Work around macOS issue where the license code text field is not visible until clicked ## Improvements - Allow pausing/unpausing adaptive brightness via a new `adaptivePaused` property using the CLI or Shortcuts # 6.9.4 ## Fixes - Fix crash on launch when checking previously disconnected displays - Add support for MacBook Pro M5 # 6.9.3 ## Fixes - Fix activation when license code seats have been used up # 6.9.2 ## Features - New [Layout Setting](https://app.lunar.fyi/layout): **Force System OSD** - When enabled, the native macOS OSD will be shown instead of Lunar's custom OSD on displays supporting the *Apple Native* protocol (built-in displays and some external monitors) - In macOS 26, this won't apply to external monitors that don't support the Apple Native protocol, as the native OSD doesn't work anymore there - Allow enabling/disabling DDC, Network, Apple Native, and Gamma control per display from the CLI Example on enabling DDC and disabling Apple Native in one go: ```bash lunar displays ultrafine appleNativeEnabled off; lunar displays builtin ddcEnabled on ``` # 6.9.10 ## Fixes - Hide raw values on non-DDC monitors - Restore sub-zero dimming when the app restarts on crash or hang ## Improvements - Add support for M5 MacBooks and MacBook Neo # 6.9.1 ## Fixes - Make OSD text more visible on white backgrounds - Fix wrong brightness value in OSD on fine adjustments # 6.9.0 ## Features - Native macOS 26 OSD support - Allow Enhanced Contrast to work even when Overlay dimming is used ## Fixes - Fix contrast slider moving erronously - Fix issue with Paddle window not being clickable # 6.8.9 ## Fixes - Fix Clock Mode not applying the correct contrast value in the Merged Brightness and Contrast mode - Show advanced settings by default in the Display Settings window - Keep Enhanced Contrast applied correctly in Sub-zero Dimming after nits change events come in - Allow lux readings to go up to 10000 lux instead of 2000 lux # 6.8.8 ## Fixes - Don't show Full Range as available on Studio Displays - Keep shell config symlink if it already exists when installing the CLI # 6.8.7 ## Improvements - Compatibility with MacBook Air M4 2024 # 6.8.6 ## Fixes - Fix possible hang when trying to send a brightness command to HDR monitors - Fix possible crash when updating to macOS Sequoia - Document `nits` as possible event in the `lunar listen` command # 6.8.5 ## Improvements - Return early if manual location is being used for coordinates - Flush stdout when using `lunar listen` CLI command ## Fixes - Fix auto-learning in Location mode before sunrise and after sunset # 6.8.4 ## Improvements - Add support for MacBook Pro M4 2024 ## Known issues Lunar's Shortcuts actions don't seem to appear on macOS 15.1 for some people. There was no change in Lunar's Shortcuts code that caused this, it's a problem that appeared with a macOS update. I'm still looking for ways to debug this. # 6.8.3 ## Fixes - Fix overlay dimming not appearing on virtual displays like **DisplayLink** # 6.8.2 # Fixes - Fix crashes related to DDC resets - Improve stability in multi threaded code - Fix **"Set screen as Main"** Shortcut when used with *"screen with cursor"* - Make sure **System Adaptive Brightness** gets re-enabled correctly when getting below 800 nits manually - Move hang detection to 40s instead of 60s to avoid constant app hang restarts - Hide Sub-zero Dimming OSD instantly when going above 0% to avoid duplicate OSD # Improvements - Run re-adaptation routines both on wake and on monitor connect/disconnect # 6.8.1 ## Improvements - Allow disabling the `nits` reading in the brightness OSD for the MacBook screen ![disable nits osd setting](https://files.lunar.fyi/disable-nits-osd-builtin-setting.png) ## Fixes - Fix overlay staying on the wrong screen after changing main display or the resolution - Fix `Not` conditions in Shortcuts not working correctly - Fix **XDR Contrast** being applied on **Unmanaged** displays erroneously *(resulting in darkening of monitors when XDR was enabled)* - Remove unnecessary brightness refresh when some background apps are launched/quit ## Features - New **Get ambient light in lux** Shortcut action - Make `lunar displays` CLI faster in specific scenarios - Add `-q/--quiet` to `lunar displays` to quickly check if specific displays are connected or not # 6.8.0 ## Features - Re-organize advanced settings - Isolate **App Info** UI into its own little window and hide it by default on first launch ![app info separated](https://files.lunar.fyi/app-info-separated.png) ## Improvements - Ask about **Full Range XDR** at onboarding and default to it for new users - Make HDR redraw dot less visible when using XDR Brightness - Allow disabling "bad display" detection through the `ignoreDisplaysWithMissingMetadata` setting: ```sh defaults write fyi.lunar.Lunar ignoreDisplaysWithMissingMetadata false ``` Only to be used in cases where: - BlackOut wrongly reconnects the screen 5-10 seconds after disconnecting it - screen remains black after disabling BlackOut ## Fixes - Adapt software dimming dynamically if **Invert Colors** is used often while Lunar is running *(previously it needed an app restart when changing the Invert Colors setting)* - Fix **Full Range XDR** for `macOS Sequoia beta 3` - Fix re-applying the wrong stored brightness after wake # 6.7.9 ## Improvements - Disable volume keys handler on sleep and re-enable on wake to prevent CoreAudio from hanging and cause system lag - Speed up CLI startup time ## Fixes - Fix a long-standing issue where **LED Cinema** and **Thunderbolt** displays would overflow the brightness value, causing the display to go dark at specific brightness levels (`39` and `78`) - Fix Location Mode not being selectable when using manual coordinates # 6.7.8 ## Fixes - Move max DDC brightness back to `255` for Cinema and Thunderbolt displays - Fix brightness being sent to the monitor continuously in Sensor Mode, even if the value hasn't changed - Ensure the Sensor Mode *Lux update interval* is correctly used with wireless sensors # 6.7.7 ## Fixes - Fix nits OSD appearing erroneously when HDR state is being changed # 6.7.6 ## Fixes - Fix flickering in smooth transitions when holding the brightness keys - Fix nits value not updating all the time # 6.7.5 ## Features - **Smoother Sync Mode** brightness adaptation ## Fixes - Fix printing `SentryCrashExceptionApplication` by mistake in the CLI output - Fix nits OSD not appearing where it should after resolution change - Ensure **Full Range** remains enabled even when the system reports an incomplete status ## Improvements - Add hidden setting `syncModeBrightnessKeyPressedExpireSeconds` Showing OSD on target monitors in Sync Mode requires only taking into account the changes that happen within a waiting period after the brightness key press. That period was previously 0.5 seconds, which was now increased to 1 second and made configurable via the `syncModeBrightnessKeyPressedExpireSeconds` hidden setting. Some systems take longer to propagate the brightness change events and this setting should help with that. - Optimise code path leading from the Sync source brightness change to the Sync target brightness adaptation - More intuitive nits range calculation in Sync Mode # 6.7.4 ## Fixes - Fix color adjustments not being applied anymore on some screens - Don't show nits values by default in the OSD since it can cause it to not appear on some screens - Revert the max DDC brightness for LED Cinema and Thunderbolt displays back to 100 instead of 255 - Make DCP matching on `IODisplayLocation` optional to avoid DDC not working with some displays - Fix **Full Range** toggle disappearing sometimes after a display connection - Fix volume hotkeys not working anymore if CoreAudio times out ## Improvements - Move the CoreAudio device fetching back to main thread where if it stalls, it will restart the app automatically - Allow hiding the nits value from the brightness OSD ![show nits osd setting](https://files.lunar.fyi/show-nits-osd-setting.png) # 6.7.3 ## Hotfix - Ensure UI is not instantiated until the user opens it - Fixes too much energy usage on some systems # 6.7.2 ## Features - Allow setting main monitor using the CLI. Example: `lunar displays LG main true` - Show when brightness is locked by the reference preset in the UI ![brightness locked by preset](https://files.lunar.fyi/brightness-locked-by-preset.png) ## Improvements - More accurate nits readings for Apple displays - Precise nits-based Sync Mode even when HDR content is visible - Improved detection of virtual displays - Improved DDC-to-monitor matching by using the hardware port where possible - More responsive Full Range switching in cases where the system generates a lot of logs - Allow skipping missing displays when using the "Set Monitor as Main" shortcut ## Fixes - Prepare for upcoming macOS 15 - Don't use Gamma APIs unless absolutely necessary to avoid unwanted HDR clipping - Fix app presets taking too long to apply - Fix possible crash when fetching reference presets on external monitors - Fix system lag when CoreAudio devices take too long to respond # 6.7.13 ## Features - Allow HDR monitors to use the superior **Apple Native** brightness control instead of **DDC** on macOS Sequoia ## Fixes - Ignore displays named **"Unknown Display"** which may appear when the monitor's connection is not ready for DDC ## Improvements - Ensure Software Dimming does dim the screen instead of whiten it when Invert Colors is enabled in Accessibility settings - *This will force a white Overlay instead of Gamma dimming since gamma tables can't be inverted in a precise enough way* - Make sure menu does not end up behind the menu bar when that is set to autohide # 6.7.12 ## Improvements - Improve **Auto Blackout** by ignoring displays with empty or incomplete name - Print CLI location and restart shell after installation ## Fixes - Fix **Software Dimming** not being applied instantly when using the `lunar displays` CLI # 6.7.11 ## Fixes - Fix **Sync Mode** not using nits on MacBook Air and iMac (Apple Silicon only) # 6.7.10 ## Improvements - Shave off another 250 milliseconds from the CLI startup time ## Fixes - Fix menu appearing on the main display instead of the one where the icon was clicked, on fullscreen apps - Fix positioning of the new "Disable volume keys on display sleep" setting - Fix resolution being changed erroneously # 6.7.1 ## Hotfix - Fix crash on launch if Auto Mode was previously enabled # 6.7.0 ## Features - Ambient Light Sensor support for Intel Macs - Faster event based lux reading *(up to 100ms between reads)* ## Improvements - Improve launch time of the app - Faster CLI launches ## Fixes - Fix not showing Lunar Pro popover correctly when clicking on XDR or Full Range - Fix **Full Range XDR** not being re-enabled automatically after wake/connect/launch - Go back to Xcode 15.2: some Shortcuts stopped working when compiled with the latest Xcode 15.3 # 6.6.5 ## Hotfix - Remove leftover usage of a non-standard command-line tool that was prompting unnecessary installation of Xcode Command Line Tools # 6.6.4 ## Improvements - Add support for **MacBook Air M3** models ## Fixes - Fix **Power off screen (in software)** Shortcut - Fix BlackOut not being able to re-apply previous resolution - Fix missing resolutions from the list - Add hidden setting `allowAdjustmentsWhileLocked` for who may need it - Fix "Change Adaptive Mode" and "Rotate Screen" shortcuts not working on some systems # 6.6.3 ## Fixes - Fix disabling presets on Studio Display - Remove duplicate values from the `lunar` CLI help text # 6.6.2 ## Features - Force enable **Night Shift** and **True Tone** on external monitors that support them but don't work out of the box ![force enable night shift context menu](https://files.lunar.fyi/force-night-shift-context-menu.png) ## Improvements - Allow **Auto Blackout** to work in more edge cases like: - when coming back from standby, the monitor connects too slowly and for a few seconds it appears as there's no display available - when opening the lid of the MacBook while clamshell mode is disabled - Stop brightness and lux CLI listeners when the socket closes ## Fixes - Fix specific features like observing brightness on the **2023 M2 MacBook Air 15"** - Fix keyboard backlight being turned on when it shouldn't - Fix a bug that caused the builtin to come out of Blackout intermitently on Intel Macs - Disable **Full Range XDR** on Pro Display XDR screens since it is not working there - Fix **Full Range XDR** and **Gamma Dimming** not being available sometimes after coming back from blackout - Workaround a macOS bug that can cause *system slow downs* because `CoreLocation` is timing out - Make sure the DIY light sensor install script gets the correct enclosing dir - Make sure `lunar toggle-connection` returns immediately after disconnect - Fix built-in not reconnecting after disconnecting all monitors in specific cases - Fix **Auto Mode** not selecting **Sensor Mode** when the built-in is disconnected - Fix **Sync Mode** setting external displays to a very low brightness when activating XDR Brightness - Delay specific actions after wake/login to avoid system hangs. Actions that are delayed include: - watching for `screencapture` events when using overlay dimming - checking for zero gamma issues - adapting brightness if the *Delay after wake* setting is enabled ![delay after wake](https://files.lunar.fyi/delay-after-wake-setting.png) # 6.6.1 ## Improvements - Add `nits` output to the `lunar listen` CLI command ## Fixes - Fix MediaMate integration on Full Range XDR Brightness - Fix external sensor disconnecting every 5 seconds in specific cases - Fix **Whites** and **Blacks** not being re-applied after app restart # 6.6.0 ## Security - Fix a possible vulnerability in the restart logic *A rogue application could have exploited the restart logic to gain Accessibility Permissions.* --- ## Features ### Full Range XDR Brightness This is a new approach for unlocking the 1600nits of brightness in Apple's XDR displays, developed in collaboration with [@waydabber](https://github.com/waydabber) from [BetterDisplay](https://betterdisplay.pro/). ![full range activation](https://files.lunar.fyi/full-range-activation.gif) It has the following key differences from the previous XDR Brightness method: - It doesn't clip colors in HDR content - no more washed out colors - The system adaptive brightness keeps working and uses the full range - There's no lag when going from SDR to XDR brightness - Can be kept on all the time without any downsides - Can work in tandem with f.lux Downsides: - It only works on MacBook Pro XDR screens - The screen will flash one or two times when toggling Full Range *The system will still adapt the maximum nits of brightness based on the ambient light, so you might get a max of 800 nits in a dark room and 1600 nits in sunlight.* *Disabling the system adaptive brightness will turn off this behaviour.* ### Preset unlocking The **Change Screen Preset** Shortcut now allows you to unlock various functions that are locked by macOS when using reference presets: - Brightness Control - Adaptive Brightness - Night Shift - True Tone ![unlock preset shortcut](https://files.lunar.fyi/unlock-preset-shortcut.png) ## Improvements - Allow overlay dimming to work on Airplay screens when the MacBook is in Blackout - Automatically use the mirroring method for Blackout when the MacBook is connected to an wireless display ## Fixes - Disable Dark Mode after disabling Night Mode - Ensure Night Mode does disable after unchecking it - Fix app hanging when initializing Location Services in some cases - Fix Dark Mode being disabled erroneously - Make sure to re-enable keyboard backlight after disabling Blackout - Fix CLI not working after a few standby cycles - Fix rounded corners not being applied on app launch # 6.5.0 ## Features - **Night Mode**: minimize jarring flashes of white regions on dark backgrounds. This is a combination between: - *lower whitepoint*: lower the whitepoint of the screen to make white regions appear less bright - *warm colors*: filters blue light to further minimise eye strain on bright colors - *enhanced contrast*: keeps text readable even at such low brightness levels The following video shows the difference between simply having Dark Mode on with a low brightness, and having Night Mode on top of that. If you pay attention to the hand that is scrolling, you'll notice that the flashes of light from the white regions have less effect with Night Mode enabled. In the same way, your eyes will see less of a difference in perceived brightness between the dark background and the bright regions that may appear unexpectedly while scrolling on a web page. *The technique is quite similar to what f.lux does, but with the added benefit of enhancing contrast for readability.* **How to activate Night Mode:** - using the CLI: `lunar night-mode toggle` - using the *Night Mode* Shortcuts action - from the Right Click menubar icon menu ![activating night mode from the menubar](https://files.lunar.fyi/activating-night-mode-menubar.jpeg) ## Fixes - Important fix on DDC commands causing a crash when the queue is full - Allow `http` on non-local custom domains/IPs of light sensors - Fix not keeping Disconnect API disabled with DisplayLink running - Fix built-in screen having 100% brightness after waking up from sleep in some cases - Make sure external sensor `available` state is kept up to date - Fixes a problem where both internal and external sensor data would be used at the same time ## Improvements - Limit Gamma `whites` and `blacks` sliders to avoid full black/white screens - Allow disabling **Sub-zero dimming** by setting Min Brightness to 0 ![builtin min brightness zero disables sub-zero dimming](https://files.lunar.fyi/builtin-minbrightness-zero.png) # 6.4.5 ## Features - Adaptive sleep on smooth DDC transitions ## Fixes - Ensure Shortcuts keep working after automatic and manual app restarts - *Looks like using `exec` to restart the app invalidates the XPC connections that Shortcuts opens, who knew..* ## Improvements - Ensure location coordinates update often enough - Preserve privacy better by using *reduced location data* with a maximum of *city level accuracy* - *The coordinates never leave the computer, this is just to preserve privacy in case of a rogue program or app* # 6.4.4 ## Features - Advanced gamma Shortcut for creating any type of color profile ![advanced gamma shortcut](https://files.lunar.fyi/advanced-gamma-shortcut.png) Sample Shortcut here: [Gamma Preset](https://lunar.fyi/shortcuts#gamma-preset) # 6.4.3 ## Hotfix - **DDC** and **Sync Mode** responsiveness fix # 6.4.2 ## Hotfix - Fix a crash introduced in 6.4.1 related to presets # 6.4.1 ## Fixes - Fix custom preset not being applied correctly if saved with the same name as a previously deleted preset - Allow saving the preset by pressing `Enter` in the text field # 6.4.0 ## Features - Support for the new **M3 MacBook Pro** and **M3 iMac** - **Cleanup UI** - Use a warmer color palette - Make the menubar UI less wide - Add option to *Dim non-essential UI* elements - Add `lunar lux --listen` command for automations based on readings from the internal ambient light sensor ## Improvements - Disable Lunar adjustments when screen is locked - Add new identifiers for the M3 MacBook Pro and iMac - Make cursor cling to the middle of the slider knob instead of lagging behind - Enable `lunar listen` to react to display connection changes - Disable `autoRestartOnFailedDDC` and make it opt-in by default - New macOS updates have fixed most of the issues that created the need for it ## Fixes - Fix Auto XDR appearing erroneously in non-Pro builds - Fix locked volume OSD when locking brightness # 6.3.0 ## Features - Try to use lux sensors of Apple-vendored external monitors when available ## Improvements - Use window average for sensor lux when adapting Auto XDR - Smaller menubar icon - Allow hiding the nits limits from the slider ## Fixes - Work around Sonoma display connection bug when fetching display info while disconnected - Fix OSD chiclets disappearing sometimes on Sonoma - Fix app hang on saving display state while restarting from a crash - Don't cache `isLG` to avoid not showing LG specific inputs - Fix UI spacing in the Clean layout - Fix XDR Contrast going flashing to 0 while in Sub-zero Dimming # 6.2.7 ## Fixes - Fix some Shortcuts not working - Fix some typos # 6.2.6 ## Features * Option to **Force keep HDR enabled** for external monitors ![force keep hdr enabled checkbox](https://files.lunar.fyi/force-keep-hdr-enabled-checkbox.png) * Option to **Use static values instead of offsets** for **App Presets** ![Use static values instead of offsets](https://files.lunar.fyi/app-presets-static-values_1.png) ## Improvements * Detect possible clamshell sleep and preemptively pause adaptive brightness to avoid flickering * Add **Skip action if screen is missing** for Shortcuts ![skip action if screen is missing checkbox](https://files.lunar.fyi/skip-action-if-screen-is-missing.png) ## Fixes * Fix macOS Sonoma layout issues # 6.2.5 ## Features * Enhance contrast in Sub-zero Dimming ![subzero dimming contrast](https://files.lunar.fyi/subzero-contrast.png) * Keyboard backlight setting for BlackOut ![keyboard backlight setting](https://files.lunar.fyi/keyboard-backlight-setting.png) ## Improvements * Only adjust keyboard backlight in Sub-zero Dimming when keyboard backlight was previously on ## Fixes * Add missing LG specific inputs in Shortcuts # 6.2.4 ## Features * Dim keyboard backlight to minimum when **Sub-zero dimming** is used * Automatically detect a light sensor running as the [official HomeAssistant Addon](https://github.com/alin23/lunarsensor/tree/main/homeassistant_addon) * Add support for the following boards: * Feather ESP32 S2 * Feather ESP32 S2 Reverse TFT * NodeMCU ESP32 S2 * Adafruit HUZZAH32 Feather ESP32 ## Improvements * Make the reset button do a full reset by default *(instead of resetting just the non-display specific settings)* * Replace watchdog with `restartOnCrash` signal handler # 6.2.3 ## Features * Turn off keyboard backlight when blacking out the MacBook screen ## Improvements * Return the current state after toggling boolean values in Shortcuts ## Fixes * Fix JSON number formatting in `lunar listen` CLI command * Make watchdog more resilient so that Lunar restarts after crashes # 6.2.2 ### Features * Add alternate menubar icon for people with **trypophobia** ![alternate menubar icon](https://files.lunar.fyi/alternate-menubar-icon.png) ### Improvements * Don't automatically activate XDR when **holding** the brightness up key * It still activates when pressing the key after 100% brightness ### Fixes * Fix Main Screen ID fetching # 6.2.1 ### Fixes * Fix auto-learning logic for contrast * Ensure brightness and contrast values don't overshoot the min/max values # 6.2.0 ### Improvements * Don't beep when doing fine volume adjustments ### Features * Add `--source-address` to `lunar ddc` command for monitors that allow some DDC commands only on the service port (e.g. [most newer LG models](https://github.com/rockowitz/ddcutil/issues/100#issuecomment-1634924423)) * Add **LG specific inputs** for those models where input switching only blinks the monitor but doesn't actually switch the input ![LG specific inputs](https://files.lunar.fyi/lg-specific-input-hotkeys.png) The new inputs can also be accessed from [macOS Shortcuts](https://lunar.fyi/shortcuts#switch-inputs) or from the CLI using commands like: ```sh lunar displays lg input lgHdmi1 # Newly added inputs: # lgHdmi1 lgHdmi2 lgHdmi3 lgHdmi4 # lgUsbC1 lgUsbC2 lgUsbC3 lgUsbC4 # lgDisplayPort1 lgDisplayPort2 lgDisplayPort3 lgDisplayPort4 ``` Some LG models respond to the `3` and `4` inputs while others use the `1` and `2` inputs. For example **32UD99** uses `USB-C 3` and `DisplayPort 3` while **32QN650** uses `USB-C 1` and `DisplayPort 1`. ### Fixes * Fix VCP code for LG specific inputs * Fix zero coordinates in UI even when location is available * Fix sensor flasher not assigning the correct IDs to the sensors * Show when **Location Mode** doesn't have permissions to request actual coordinates ![location mode missing permissions](https://files.lunar.fyi/location-mode-missing-permissions.png) # 6.11.2 ## Fixes - A failed licence activation now names the likely cause (a blocked hosts file, a firewall, or no connection) instead of a generic error # 6.11.1 ## Fixes - Clicks reach the display settings again on macOS 27 - The menu bar icon closes the Lunar menu again on macOS 27, and clicks inside the menu no longer close it - The Lunar window no longer opens by itself when Siri or another system agent activates Lunar - Activating a licence that has reached its activation limit frees the oldest activation in more cases, instead of failing with a generic error # 6.11.0 ## Fixes - The Lunar window no longer opens by itself when a Shortcut runs a Lunar action or activates Lunar - macOS 27 crash fix ## Breaking changes - Lunar now requires macOS 12 or newer **Note:** this will most likely be the last v6 release. **Lunar v7** is a rewrite of the whole brightness control engine and UI that will be released in September-October, dropping support for Intel and macOS versions older than 14.0 to get rid of legacy workarounds and hacks that accumulated over the past 7 years. **Lunar v7 will be a free upgrade and will not require any additional payment for people who already bought Lunar Pro.** # 6.10.4 ## Fixes - Fix brightness OSD not appearing sometimes # 6.10.3 ## Fixes - Sync Mode: switch from the *All Displays* placeholder to the real source as soon as it becomes available after wake (e.g. when the source display recovers from blackout/darken) # 6.10.2 ## Fixes - Fix Auto Mode selecting Sensor instead of Sync in specific cases ## Improvements - Reduce energy impact when UI is not visible # 6.10.1 ## Fixes - Fix performance regression on app launch time # 6.10.0 ## Fixes - Re-compile with macOS 26.4 SDK to make Shortcuts appear again - Fix Sync Mode being re-enabled after waking from long standby when using Manual Mode with built-in display blackout # 6.1.5 ### Features - **Cleaning Mode**: disable screens, keys and clicks to help cleaning the keyboard and screens ![cleaning mode UI](https://files.lunar.fyi/cleaning-mode-accessible.png) ### Improvements - Default max brightness to `500` for Dell Alienware monitors - Keep HDR enabled after standby for external monitors when using XDR brightness - Allow customizing I2C sensor pins - Add support for more hardware light sensors: - [BH1750](https://esphome.io/components/sensor/bh1750.html) - [LTR390](https://esphome.io/components/sensor/ltr390.html) - [MAX44009](https://esphome.io/components/sensor/max44009.html) - [TCS34725](https://esphome.io/components/sensor/tcs34725.html) - [TSL2561](https://esphome.io/components/sensor/tsl2561.html) - [TSL2591](https://esphome.io/components/sensor/tsl2591.html) ### Fixes - Fix **Auto XDR** blinking when battery is lower than 20% # 6.1.4 ### Improvements - Add `disableExternalSensorWhenNoExternalMonitor` hidden setting - Disable the new **Disconnect API** when DisplayLink is running ### Fixes - Fix the **Force Sleep when lid is closed** functionality # 6.1.3 ## Fixes * Fix **volume OSD** not appearing in **Sub-zero Dimming** * Fix Sub-zero Dimming not working with the dark overlay in some cases * Fix Lunar not responding for some users ## Features - [MediaMate](https://wouter01.github.io/MediaMate/) integration: - `lunar listen` CLI command for getting realtime brightness/contrast/volume changes - `hideOSD` setting forces Lunar to not show any OSD whatsoever # 6.1.2 ## Fixes * Fix `Overlay Dimming` not working anymore # 6.1.1 ## PWM flicker minimization By combining hardware and software dimming at specific thresholds, Lunar can help people sensitive to PWM flickering. *The below video shows how you can use the [Halide](https://halide.cam/) iOS app to find the lowest brightness where flickering starts to appear.* --- #### How to use it For 2021 Apple Silicon MacBooks, adjust the **Min Brightness** to `38` in [Display Settings](https://app.lunar.fyi/display/builtin) to get advantage of this. Lunar will then use [Sub-zero Dimming](https://lunar.fyi/#subzero) below that value, which keeps the LED voltage steady while blocking light using the LCD. ![min brightness set to 38](https://files.lunar.fyi/macbook-min-brightness-38.png) For external monitors and other screens, play with the **Min Brightness** setting until you find the threshold under which PWM flicker becomes noticeable. Then set the minimum brightness to the lowest value that doesn't cause flicker. --- ## Improvements * Added `sidecar` option to `lunar toggle-connection` CLI command ## Fixes * Fix `Sub-zero Dimming` being overridden by the system adaptive brightness * Fix contrast jumping from max to min when going to/from Sub-zero Dimming * Fix flashes and sudden transitions when going in and out of `Sub-zero Dimming` # 6.1.0 ## Clock Mode improvements * Added **Sub-zero dimming** range *(can be disabled from the [Controls menu](https://app.lunar.fyi/display/controls))* ![sub-zero dimming in clock mode](https://files.lunar.fyi/clock-mode-subzero.png) ### Algorithm Variations ![fully automated clock mode selector](https://files.lunar.fyi/fully-automated-clock-mode-selector.png) #### Fully Automated This makes Clock Mode override any manual adjustments done by the user. It also makes it re-apply the brightness of the previous schedule after standby/wake or after a screen reconnection. #### User Controlled This makes Clock Mode respect manual adjustments done by the user. Brightness will always transition to the next schedule starting from the user adjusted brightness. Also if the system wakes within 30 minutes of a passed schedule, the brightness of that previous schedule is re-applied ### Features * Add **Send volume to all monitors** setting * Helpful for setups with multiple similar monitors, where the audio device can't be matched to the correct monitor ![send volume to all monitors setting](https://files.lunar.fyi/send-volume-to-all-monitors.png) ## Improvements * Remove **Menu** button and allow `Control`+`Click` on the menubar icon to see the menu * `Right Click` or `Two Finger Trackpad Click` also works * Renamed *Options* button to *Settings* * Renamed *Preferences* button to *Display Settings* * Fix an annoying macOS bug that keeps resetting the brightness of Apple displays to `50%` after wake * Remove the `jitterAfterWake` setting since it's no longer needed * When disconnecting a screen, re-apply previous scaling on remaining screens one by one instead of all at once # 6.0.3 ## Features * `Watchdog`: restart Lunar when it hangs * **Trigger Sleep when the lid is closed** feature * for those people that want the Mac to sleep when closing the lid while connected to a monitor and charging ![trigger sleep lid closed option](https://files.lunar.fyi/trigger-sleep-lid-closed-option.png) * **Sleep the Mac** Apple Shortcut ![sleep the mac shortcut](https://files.lunar.fyi/sleep-the-mac-shortcut.png) ## Improvements * Allow for steeper curves in Sync/Sensor/Location modes ## Fixes * Sync Mode should not flicker anymore # 6.0.2 ## Features * `Watchdog`: restart Lunar when it crashes * some crashes happen because of causes outside Lunar's control * this will ensure Lunar keeps running until the user quits it explicitly * when crashing too often, the Watchdog will be disabled automatically * **[Fix Monitor Arrangement](https://lunar.fyi/shortcuts#fix-monitor-arrangement)** Shortcut to aid in repairing horizontal arrangements that get swapped around by the system ## Improvements * Better performance and lower CPU usage when the menu is not visible * Show **"Possibly disconnected"** displays: * these are displays that have **Auto Disconnect** enabled but can't be detected as having the cable connected or not * they are always shown until connected to make sure there's always a way to disable Auto Disconnect # 6.0.1 ## Features * Show useful info about the adaptive mode in the menu header ![adaptive mode useful info](https://files.lunar.fyi/adaptive-mode-useful-info.png) ## Improvements * Improved **Reconnect** and **Toggle Connection** Shortcuts by returning the `UUID` of the connected screen * This can be observed in use on the new [Lunar Shortcuts webpage](https://lunar.fyi/shortcuts) ## Fixes * Fixed some crashes and hangs # 6.0.0 *This is a free major version update. Existing Lunar Pro users can keep using their existing license without any action on their part.* ## Sync Mode: new algorithm ### Nits syncing *(Apple Silicon only)* Lunar can now read the real brightness value in **nits** from Apple displays and sync it more accurately to other monitors. Most external monitors don't provide a way to read their min and max nits limits, so they start with a default range of 30-350 nits. Those limits can be adjusted from the Lunar interface: ![image](https://files.lunar.fyi/max-nits-text-field.png) ### Sync without a source Sync Mode can now be used on all setups, even on those where there's no Apple display to sync from. An **All Displays** slider will show up which will control the brightness and contrast of all screens in sync. Brightness keys will also control this special slider by default. Any manual adjustment done to other monitors will be learnt and used by the **All Displays** slider. ### Optimizations The adaptive algorithm is now faster and more efficient, with an almost instantly responsive auto-learning curve. This is thanks to using better researched math formulas and new data structures tailored to brightness syncing. The native brightness OSD will now show up on all monitors instead of only on the source display. Polling is not used anymore, relying completely on a brightness change event based system, for less battery and CPU usage. ## Sensor Mode: more sensors ### Integrated sensors *(Apple Silicon only)* Lunar can now read ambient light lux values from sensors of Apple displays like: - Studio Display - Pro Display XDR - LG UltraFine for Mac - Thunderbolt Display - LED Cinema ### Wireless sensors DIY ambient light sensors will now **connect faster** to Lunar, and keep a more **stable connection** between standby/wake states. The sensor can also be configured more flexibly using the `defaults` command on the Mac where Lunar is running. This is especially helpful for when the [lunarsensor server](https://github.com/alin23/lunarsensor). There are three settings that affect where Lunar looks for the sensor: - `sensorHostname` set by default to `lunarsensor.local` - `sensorPort` set by default to `80` - `sensorPathPrefix` set by default to `/` For example, if you would like to have Lunar listen for sensor events at `homeassistant.local:8123/lunar/events` you would run the following commands: ```sh defaults write fyi.lunar.Lunar sensorHostname homeassistant.local defaults write fyi.lunar.Lunar sensorPort 8123 defaults write fyi.lunar.Lunar sensorPathPrefix /lunar ``` ### Lux-to-nits curve Sensor Mode now starts with a better researched and tested curve that converts the ambient light to real nits for each display. On Apple Silicon, the estimated nits limits from Sync Mode will also be taken into account to compute an accurate brightness value for each display. ## BlackOut On Apple Silicon devices running macOS Ventura, BlackOut now uses a new API that can **disconnect the screen completely**. The power button will show the action that it will do based on the modifier keys that are pressed: ### Auto Disconnect When a screen is disconnected, it will appear at the bottom of the Lunar menu, with an option to enable the **Auto Disconnect** feature. This will ensure the display stays disconnected between standby/wake and lid open/close cycles. For the **MacBook built-in screen**, this also enables the previous **Auto BlackOut** feature which disconnects the MacBook screen when a monitor is connected, and turns it back on when all monitors are disconnected. ![image](https://files.lunar.fyi/blackout-auto-disconnect.png) ## Sidecar If you ever wanted to use a keyboard shortcut for connecting a Sidecar device, Lunar now supports that. There's a new action in Apple Shortcuts that can connect a specific Sidecar iPad, and the `Connection` actions have been updated to support *the most recently used Sidecar*: ![image](https://files.lunar.fyi/sidecar-shortcuts.png) BlackOut can also natively disconnect/reconnect Sidecar devices on Apple Silicon. ## DDC Support for brightness/volume control using DDC has been stabilised for the integrated HDMI port of the M1 and M2 chips. The previous logic was also improved to avoid possible flickering and speed up DDC port matching. ## Other improvements ### Settings Some settings have been regrouped, and some are now hidden if they aren't relevant to the hardware in use. It's also possible now to use the **Reset button** from the [Options menu](https://app.lunar.fyi/options) to: - **Reset All Settings** by `Option`-clicking - **Reset display-specific Settings** by `Command`-clicking ### Logging Lunar is now using the native unified logging architecture on macOS. Logs can now be viewed in Console.app or in the terminal with the following command: ```sh log stream --level debug --source --style compact --predicate 'subsystem == "fyi.lunar.Lunar" AND category == "default"' ``` There is no log file on disk anymore, logs can be collected on demand when they're needed to avoid excessive disk writes. # 5.9.5 ## Features #### Support for **M2 Pro/Max** Both Thunderbolt/DP and HDMI connections on M2 Pro/Max should support DDC in this version. ### Disconnect screens You'll notice two new actions in macOS Shortcuts: **Disconnect screen** and **Reconnect screen**. ![disconnect screen shortcuts](https://files.lunar.fyi/disconnect-screen-shortcuts.png) This new method can really disconnect and power off the screen just like closing the MacBook lid or disconnecting a cable would do, freeing up the GPU resources. You retain the ability to use the MacBook keyboard/trackpad/webcam as usual, and disconnected external monitors *usually* keep the ability to charge the laptop. These are the effort of reverse engineering the MacBook's clamshell mode which you can read about [in this article](https://alinpanaitiu.com/blog/turn-off-macbook-display-clamshell/) I'm planning to integrate them into BlackOut eventually but there's a lot more testing I have to do first. ## Improvements * Make the arrangements/layouts in Shortcuts work when the main display is not the built-in display * Add **"Set screen as main"** Shortcut * Add a way to disable sensor checking on the network * ![disable sensor checker](https://files.lunar.fyi/disable-light-sensor-checker.png) # 5.9.4 ## Improvements * Add `adaptiveSubzero` display property that allows disabling using Sub-zero Dimming range automatically in adaptive algorithms * Add UI checkbox for the `adaptiveSubzero` setting ![adaptive subzero setting](https://files.lunar.fyi/adaptive-subzero-setting.png) ## Fixes * Volume slider was not showing for network controlled monitors * Lock the panel manager when using resolution/preset Shortcuts # 5.9.3 Sorry for the fast paced updates. Here's a reminder of how you can switch to checking for updates less often: ![weekly updates](https://files.lunar.fyi/weekly-updates.png) ## Fixes * Fix wireless sensor detection * Fix manual adjustments not being reset * Fix Sync Mode polling interval 0 not working on Apple external displays * Fix Apple displays brightness value not getting updated inside Lunar * Fix Network Control not working * Fix "Find Screen" Shortcut comparators * Fix "Set Resolution" Shortcut * Fix dragging Sub-zero Brightness slider not triggering the auto learning algorithm in adaptive modes # 5.9.2 ## Improvements * Use new *"Launch at Login"* API on macOS Ventura and later ## Fixes * Skip `nil` EDID UUID in DCP service *(fixes "Non-responsive DDC" on some setups)* * Disable logging to file in non-verbose mode * This should avoid some crashes and decrease load on disk * Fix crash caused by using CFRunLoop unnecessarily * Fix BlackOut not disabling mirroring when turning back on the display * Fix DDC services not being assigned correctly to slower monitors * Fix crash in network control code # 5.9.1 ## Hotfix * Fix non-responsive DDC for some specific monitor models ## Features ### Adaptive Sub-zero Dimming Full support for using Sub-zero dimming automatically inside adaptive modes like Sync/Sensor/Location. The **Auto-learning** algorithm can now learn Sub-zero brightness values and apply them in the future based on the current ambient light or sun position. ### Native OSD for Sub-zero dimming, XDR Brightness and Contrast adjustments ![new subzero XDR OSD](https://files.lunar.fyi/new-sub-xdr-osd.png) ### macOS **Shortcuts** * Control brightness, volume etc. of a screen * Change Lunar adaptive modes and apply global presets * Plus actions that can be done exclusively in Shortcuts: * Swap monitors * Mirror any combination of screens * Arrange screens in various layouts * Change resolution and frame rate with a hotkey * Change presets with a hotkey (easily access reference presets like *Design & Print* or *Photography*) ![movie time shortcut example](https://img.panaitiu.com/_/1620/plain/https://files.lunar.fyi/shortcuts-movie-time.png) ### New DDC algorithm * Adds compatibility for the **built-in HDMI** port of the newer Apple Silicon Mac devices * *Remember to enable DDC from the [Controls menu](https://app.lunar.fyi/display/controls) of the HDMI display if it was previously disabled* * Improves writing speed with an algorithm that adapts to each monitor's I²C max speed * Improves DDC Read reliability ## Improvements * Allow changing the ambient light sensor hostname from the command line * `defaults write fyi.lunar.Lunar sensorHostname mysensor.local` * Make BlackOut without mirroring a bit faster * Better detection for MCDP29XX chips * Better detection for projectors and virtual displays * Deactivate license on oldest device automatically when activation fails ## Fixes * Fix custom hotkeys not allowing *hold to change continuously* * Fix possible crash when `MPDisplayMgr` can't lock access to displays #### Full list of macOS Shortcuts ![shortcuts list](https://img.panaitiu.com/_/576/plain/https://files.lunar.fyi/shortcuts-list.png) # 5.9.0 ## Features ### Adaptive Sub-zero Dimming Full support for using Sub-zero dimming automatically inside adaptive modes like Sync/Sensor/Location. The **Auto-learning** algorithm can now learn Sub-zero brightness values and apply them in the future based on the current ambient light or sun position. ### Native OSD for Sub-zero dimming, XDR Brightness and Contrast adjustments ![new subzero XDR OSD](https://files.lunar.fyi/new-sub-xdr-osd.png) ### macOS **Shortcuts** * Control brightness, volume etc. of a screen * Change Lunar adaptive modes and apply global presets * Plus actions that can be done exclusively in Shortcuts: * Swap monitors * Mirror any combination of screens * Arrange screens in various layouts * Change resolution and frame rate with a hotkey * Change presets with a hotkey (easily access reference presets like *Design & Print* or *Photography*) ![movie time shortcut example](https://img.panaitiu.com/_/1620/plain/https://files.lunar.fyi/shortcuts-movie-time.png) ### New DDC algorithm * Adds compatibility for the **built-in HDMI** port of the newer Apple Silicon Mac devices * *Remember to enable DDC from the [Controls menu](https://app.lunar.fyi/display/controls) of the HDMI display if it was previously disabled* * Improves writing speed with an algorithm that adapts to each monitor's I²C max speed * Improves DDC Read reliability ## Improvements * Allow changing the ambient light sensor hostname from the command line * `defaults write fyi.lunar.Lunar sensorHostname mysensor.local` * Make BlackOut without mirroring a bit faster * Better detection for MCDP29XX chips * Better detection for projectors and virtual displays * Deactivate license on oldest device automatically when activation fails ## Fixes * Fix custom hotkeys not allowing *hold to change continuously* * Fix possible crash when `MPDisplayMgr` can't lock access to displays #### Full list of macOS Shortcuts ![shortcuts list](https://img.panaitiu.com/_/576/plain/https://files.lunar.fyi/shortcuts-list.png) # 5.8.0 ## Fixes * Fix some memory leaks in the DDC AVService matching logic * Fix volume not respecting the DDC configured range in some cases ## Improvements * Resume **Adaptive Paused** after toggling from Manual to any other adaptive mode * Print lux from external light sensor if available when using the `lunar lux` CLI command * Add exception for VX2453 being detected as projector * Add **Auto Restart** workaround for when DDC fails on rare setups * The option is enabled by default and can be configured from [Advanced settings](https://app.lunar.fyi/advanced) * [![auto restart ddc fail](https://files.lunar.fyi/auto-restart-ddc-fail.png)](https://files.lunar.fyi/auto-restart-ddc-fail.png) * Disable logic for fuzzy matching audio output devices when volume hotkeys are disabled * Install CLI in the home dir to avoid permission errors * When brightness transition is set to **Slow**, use faster **Smooth** transitions for manual brightness key adjustments ## Features * Replace buggy fuzzy-matching logic with the Smith-Waterman algorithm written in Rust from Skim v2 * This should fix some crashes and make some monitor matching logic faster * Add ALS support for SparkFun Thing Plus # 5.7.9 ## Fixes * Improve text visibility in dark mode # 5.7.8 ## Fixes * Fix **Options** menu overflowing the screen * Fix **Options** menu forcing light mode UI # 5.7.7 ## Hotfix * Fix **Options** menu not allowing slider dragging * Decrease decay time when adjusting the Sync Mode curve to increase responsiveness # 5.7.6 ## Hotfix * Fix **Options** menu not being readable in **Dark Mode** # 5.7.5 ## Features * Allow keeping the Options menu open ## Improvements * Move to a floating window approach for the menu bar to avoid blocking clicks under it ## Fixes * Fix a crash caused by a recursive UI error # 5.7.4 ## Features * Beep feedback when pressing volume keys (follows system setting) * Hold `Shift` while pressing volume keys to invert behaviour ## Improvements * Detect when user doesn't want XDR to be auto disabled in low battery situations * Allow XDR/Subzero/BlackOut OSD to overlap the Dock * This avoids overlapping the native brightness OSD * Delay XDR and Sub-zero until next key press if brightness is already at max/min * Disable Location Mode if permissions have been denied ## Fixes * `Option`+`Shift` now uses 1% step for Subzero and XDR * Update sensor firmware installer * Add support for MagTag and Funhouse boards * Stop checking for coordinates if location permissions have been denied # 5.7.3 ## Features * Support for the **M2 CPU** family and the new `T811xIO` controller ## Fixes * Allow streaming HTTP body in CLI implementation # 5.7.2 ## Hotfix * Fix XDR Brightness detection for older MacBooks # 5.7.1 ## Hotfix * Copy ESPHome configuration outside the app folder to avoid altering the bundle * This fixes cases where the app was deactivated and deleted after installing the firmware on the ambient light sensor # 5.7.0 ## Features * Add `lunar facelight` CLI command * Add a mute/unmute button when hovering the volume slider * Add option to toggle Dark Mode when using XDR Brightness for lowering power usage and LED heat * The Night Shift disabling feature in XDR can now re-enable Night Shift if within the user schedule * Add ALS support for Feather ESP32-S2 boards * Add configurable mute workarounds for monitors where mute doesn't work because of non-standard DDC implementations ![DDC mute workarounds](https://files.lunar.fyi/ddc-mute-workaround.png) ## Improvements * Minimise `INFO` logging * Add log file rotation * Add a way to stop sending the mute command and rely only on the volume value when muting audio * Don't take volume DDC range into account when sending the mute workaround value * React to screen sleep events faster to work around some buggy monitors that don't enter standby ## Fixes * Don't show the Notch Disabled button on non-MacBook screens # 5.6.8 ## Hotfix * Fix deadlock caused by the new `delayDDCAfterWake` setting * Use `HUD` window level for the rounded corners mask window * Forcefully disable the **Refresh values from monitor settings** option because it makes Lunar hang for too many users * This setting is only helpful when brightness is changed outside of Lunar and is not needed in 99% of the cases * Most of the monitors don't support DDC reading and Lunar can hang and lag because of waiting too long for a response from the monitor * People that actually need the setting can re-enable it from the [Advanced settings](https://app.lunar.fyi/advanced) tab inside the **Options** menu * Implement screen round corners using 4 corner mask windows instead of one large hidden window * This is done to work around a macOS bug preventing clicks on dialog buttons even though the window is set to allow clicks through it # 5.6.7 ## Features * **AutoXDR OSD**: Show an OSD when enabling XDR automatically based on ambient light * Allows aborting the automatic XDR enabling by pressing the `Esc` key * Can be disabled from the [HDR tab](https://app.lunar.fyi/hdr) of the **Options** menu ![auto xdr osd](https://files.lunar.fyi/auto-xdr-osd.png) * Add **"Main display"** and **"Non-main displays"** choices for brightness keys ![main display brightness keys](https://files.lunar.fyi/main-display-brightness-keys.png) * Add **Disable usage of Gamma API completely** setting for people that have trouble with macOS bugs related to the Gamma API * Add an **Unlock** button to quickly unlock brightness or contrast sliders ![unlock button slider](https://files.lunar.fyi/unlock-slider-button.png) * Add **Delay DDC requests after wake** setting for people that have trouble with monitor firmware bugs related to losing signal on simple DDC commands ![delay ddc setting](https://files.lunar.fyi/delay-ddc.png) ### Improvements * Make sure brightness doesn't remain locked in non-DDC controls * Show when brightness or contrast is locked * Make it clear that DDC reading is experimental and should not be used unless really needed ![experimental ddc reading](https://files.lunar.fyi/experimental-ddc-reading.png) * Separate the HDR and XDR settings into a new tab ![hdr settings tab](https://files.lunar.fyi/hdr-tab.png) * Detect manual changes in XDR state and honor them in the Auto XDR logic ## Fixes * UI fixes in preparation for macOS Ventura * Known issues: * Scrolling over the slider feels clunkier and less fluid in macOS 13, hoping this is an OS bug that will get addressed in next beta * Some animations feel slower # 5.6.6 ## Features * **Auto XDR** based on **ambient light** * XDR will automatically enable when the ambient light is really bright * It will also disable when the ambient light is low enough for visibility in normal brightness * The feature will only work on the **MacBook Pro 2021** when it is used alone *(without external monitors)* ![auto xdr ambient light setting](https://files.lunar.fyi/auto-xdr-ambient-light.png) * Add option to use non-Apple monitors as sources for Sync Mode ![non apple monitor as sync source setting](https://files.lunar.fyi/sync-source-non-apple.png) ### Improvements * Automatically set Curve Slope to middle point on target monitors identical to the source * Print single property on multiple displays when using the `displays` CLI command * Add **Hide Menubar Icon** setting on the [Configuration page](lunar://configuration) ## Fixes * Fix CLI hanging * Run some UI logging async to avoid blocking the main thread # 5.6.5 ## Improvements * Allow switching to the *old BlackOut mirroring system* for setups incompatible with the new API ![old blackout system checkbox](https://files.lunar.fyi/old-blackout-system.png) ## Fixes * Update Paddle to fix a crash happening when there was no network connection * Allow setting min brightness to 0 for external monitors * Fix CLI hanging * Stop disabling logging when using the CLI * Fix min brightness set to 1 instead of 0 on BlackOut # 5.6.4 ## Hotfix * Fix crash caused by EDID UUID fetching on invalid displays ## Improvements * Smoother **XDR Brightness**, **Sub-zero Dimming** and **Software Dimming** * Update Paddle SDK to v4.3.0 * Don't show licensing UI more than once to avoid locking the UI * Remove redundant Advanced Settings screen * Restrict HDR compatibility workaround only for setups with EDR-capable displays * Add a way to enforce DDC if the detection logic gives a false negative ![enforce DDC checkbox](https://files.lunar.fyi/enforce-ddc-checkbox.png) * Better sensible defaults for contrast in Apple displays * Add option to keep Night Shift on when using XDR by default ![disable night shift xdr](https://files.lunar.fyi/disable-night-shift-xdr.png) * Show XDR slider even on 100% * Hide XDR/Subzero text if XDR has just been disabled * Minimise chances of triggering the screen blanking bug by adding an artificial delay between Gamma API calls * Add detection for the screen blanking issue ![screen blanking dialog](https://files.lunar.fyi/screen-blanking-dialog.png) * Disable all Gamma reset calls when disabling the **HDR compatibility workaround** * Disable **Software Dimming** automatically if DDC/AppleNative works * Ensure CLI doesn't get stuck on a blocked socket * Show Screen Blanking dialog even if the zero gamma workaround worked * More reliable light sensor checker ## Fixes * Stop handling brightness keys and forward them to the system when the adjustment limit is reached * Restore Gamma slider values properly * Fix resetting the remaining adjustments limit # 5.6.3 ## Hotfix * Fix crash caused by slider hover handler * Fix more crashes caused by refresh/resolution string * Smoother XDR contrast ---- # Changes from v5.6.2 ## Licensing model **Some clarifications are needed after the last change:** * I don't have any plans on releasing a major version this year * If for some reason I have to do that, everyone who paid for the 1-year of free updates before the change will receive the update for free if it's within their update period ## Features #### XDR Contrast Enhancer slider Improve readability in direct sunlight when using `XDR Brightness`. The contrast slider allows adjusting the pixel value formula for the brightest/darkest areas, to get even more contrast out of the miniLED display. ![enhance contrast slider in Advanced settings](https://files.lunar.fyi/enhance-contrast-slider.png) #### New XDR Brightness algorithm Developed in collaboration with the creator of [BetterDummy](https://github.com/waydabber/BetterDummy), using a more native approach to provide: * Stable experience when toggling XDR * Compatibility with higher brightness non-Apple HDR monitors * Dynamic EDR pixel values to maximise the nits allowance based on the current brightness ![XDR option for HDR monitors](https://files.lunar.fyi/xdr-hdr-monitors.png) ## Improvements * Show that XDR needs Pro license instead of doing nothing * Choose alpha upgrades over beta ones when the alpha channel is used * Move DDC reads outside the main thread * Improve brightness reponsiveness check * Collect average DDC read/write time for features that depend on DDC timing (e.g. smooth transitions, refreshing values from monitor memory etc.) * Better support for scroll up/down to adjust sliders * Multi-user Fast Switching support * Retry display list reconciliation when the system provides invalid IDs * Disable Sync Mode if polling seconds is 0 and brightness observer fails to start * Observe log in/out events and stop calling screen wake listener if logged out * Pause HDR workaround while logged out * Pause Lunar if the user switches to another user * Make brightness text clickable in the menu bar * Ensure sub-zero dimming works if `Allow zero brightness` is off * Use less restrictive EDID patterns for finding DDC ports * Improve DDC compatibility on monitors with missing metadata * Increase slider reponsiveness ## Fixes * Fix overall keyboard latency * Pause some functions when switching users or going to standby * Light sensor detection * CLI server * Color and Gamma reader * Brightness observer * Fix app info not hiding on first launch * Fix crash on fetching the refresh rate string for the resolution dropdown # 5.6.2 ## Licensing model **Some clarifications are needed after the last change:** * I don't have any plans on releasing a major version this year * If for some reason I have to do that, everyone who paid for the 1-year of free updates before the change will receive the update for free if it's within their update period ## Features #### XDR Contrast Enhancer slider Improve readability in direct sunlight when using `XDR Brightness`. The contrast slider allows adjusting the pixel value formula for the brightest/darkest areas, to get even more contrast out of the miniLED display. ![enhance contrast slider in Advanced settings](https://files.lunar.fyi/enhance-contrast-slider.png) #### New XDR Brightness algorithm Developed in collaboration with the creator of [BetterDummy](https://github.com/waydabber/BetterDummy), using a more native approach to provide: * Stable experience when toggling XDR * Compatibility with higher brightness non-Apple HDR monitors * Dynamic EDR pixel values to maximise the nits allowance based on the current brightness ![XDR option for HDR monitors](https://files.lunar.fyi/xdr-hdr-monitors.png) ## Improvements * Show that XDR needs Pro license instead of doing nothing * Choose alpha upgrades over beta ones when the alpha channel is used * Move DDC reads outside the main thread * Improve brightness reponsiveness check * Collect average DDC read/write time for features that depend on DDC timing (e.g. smooth transitions, refreshing values from monitor memory etc.) * Better support for scroll up/down to adjust sliders * Multi-user Fast Switching support * Retry display list reconciliation when the system provides invalid IDs * Disable Sync Mode if polling seconds is 0 and brightness observer fails to start * Observe log in/out events and stop calling screen wake listener if logged out * Pause HDR workaround while logged out * Pause Lunar if the user switches to another user * Make brightness text clickable in the menu bar * Ensure sub-zero dimming works if `Allow zero brightness` is off * Use less restrictive EDID patterns for finding DDC ports * Improve DDC compatibility on monitors with missing metadata * Increase slider reponsiveness ## Fixes * Fix overall keyboard latency * Pause some functions when switching users or going to standby * Light sensor detection * CLI server * Color and Gamma reader * Brightness observer * Fix app info not hiding on first launch * Fix crash on fetching the refresh rate string for the resolution dropdown # 5.6.1 ## Hotfix * Fix crash caused by brightness/volume key listener * Fix XDR nits-to-gamma coefficient ---- # Changes from v5.6.0 ## Licensing model I'm removing the 1-year of updates restriction and will give everyone **unlimited free updates** for **Lunar 5**. Lunar will move to a major-version upgrade licensing model, where you will only have to pay for a new license if a new major version is launched *(e.g. Lunar 6)*. If that ever happens, you will also be able to use your previous license as a coupon to get a substantial discount if you previously bought Lunar. ---- ## Features ### XDR Brightness * Enhance contrast to make the dark-background/bright-text case more usable in the sun * Make XDR more seamless: **simply increasing the brightness over 100% with your keyboard** should now enable XDR smoothly and without many flickers * Keep XDR enabled when the screen comes back from standby * HDR content overblowing is now fixed as long as Gamma is not used * *Note: this is still a macOS bug that is awaiting a fix from Apple, all I've done is work around it* * Disable XDR on non-Apple monitors until the forced-monochrome bugs are fixed ### BlackOut subsystem rewrite * Now using the same private framework used by `System Preferences` * More stable mirroring * Tight integration with the newest version of [BetterDummy](https://github.com/waydabber/BetterDummy/releases/tag/v1.1.10-beta) ### Auto BlackOut OSD * Allow the system to settle screen configuration * Allows the user to press `esc` to cancel Auto BlackOut ![auto blackout OSD](https://files.lunar.fyi/auto-blackout-osd.png) ### App Info section * License status * Version and **Check for updates** button * Auto update settings * Menu density selector ![app info section](https://files.lunar.fyi/app-info-section.png) ### Advanced settings tab ![advanced settings popover tab](https://files.lunar.fyi/advanced-settings-tab-popover.png) ### Menu Density ![menu density](https://files.lunar.fyi/menu-density-demo.png) ## Improvements * Save last resolution before mirroring and re-apply it after mirroring ends * This works around a system bug where a non-native resolution is applied when mirroring is disabled * Lower CPU usage further by reducing UI structure update when menus are not visible * QuickActions menu becomes scrollable when it reaches the bottom of the screen * Assign remaining DDC ports sequentially for monitors that can't be matched by `EDID` ## Fixes * Lower CPU usage by fixing a recursive call on the resolutions dropdown * Lower memory usage and the number of threads spawned # 5.6.0 ## Licensing model I'm removing the 1-year of updates restriction and will give everyone **unlimited free updates** for **Lunar 5**. Lunar will move to a major-version upgrade licensing model, where you will only have to pay for a new license if a new major version is launched *(e.g. Lunar 6)*. If that ever happens, you will also be able to use your previous license as a coupon to get a substantial discount if you previously bought Lunar. ---- ## Features ### XDR Brightness * Enhance contrast to make the dark-background/bright-text case more usable in the sun * Make XDR more seamless: **simply increasing the brightness over 100% with your keyboard** should now enable XDR smoothly and without many flickers * Keep XDR enabled when the screen comes back from standby * HDR content overblowing is now fixed as long as Gamma is not used * *Note: this is still a macOS bug that is awaiting a fix from Apple, all I've done is work around it* * Disable XDR on non-Apple monitors until the forced-monochrome bugs are fixed ### BlackOut subsystem rewrite * Now using the same private framework used by `System Preferences` * More stable mirroring * Tight integration with the newest version of [BetterDummy](https://github.com/waydabber/BetterDummy/releases/tag/v1.1.10-beta) ### Auto BlackOut OSD * Allow the system to settle screen configuration * Allows the user to press `esc` to cancel Auto BlackOut ![auto blackout OSD](https://files.lunar.fyi/auto-blackout-osd.png) ### App Info section * License status * Version and **Check for updates** button * Auto update settings * Menu density selector ![app info section](https://files.lunar.fyi/app-info-section.png) ### Advanced settings tab ![advanced settings popover tab](https://files.lunar.fyi/advanced-settings-tab-popover.png) ### Menu Density ![menu density](https://files.lunar.fyi/menu-density-demo.png) ## Improvements * Save last resolution before mirroring and re-apply it after mirroring ends * This works around a system bug where a non-native resolution is applied when mirroring is disabled * Lower CPU usage further by reducing UI structure update when menus are not visible * QuickActions menu becomes scrollable when it reaches the bottom of the screen * Assign remaining DDC ports sequentially for monitors that can't be matched by `EDID` ## Fixes * Lower CPU usage by fixing a recursive call on the resolutions dropdown * Lower memory usage and the number of threads spawned # 5.5.5 ## Features * **Seamless XDR Brightness**: enable XDR by simply increasing the brightness further after reaching `100%` * Allow disabling automatic Sub-zero Dimming and XDR Brightness from the Options menu ## Improvements * Make sure Auto Blackout works after screen wake by waiting for the system to settle the screen reconfiguration * Restore XDR Brightness after screen wake * Allow volume/mute hotkeys to work on the cursor display * Move QuickActions options into a popover to lower height of the menu ## Fixes * Fix hiding the mute OSD # 5.5.4 ## Improvements * Don't apply app presets while XDR is enabled * Lower CPU usage when checking for screenshot action on monitors that use Overlay # 5.5.3 ## Features * **Disable Notch** * Use hidden screen resolutions of the MacBook Pro to remove the notch completely ![Notch button](https://files.lunar.fyi/notch-button.png)