github didriksg/Crisp v1.3.2
Crisp v1.3.2

latest releases: v1.6.0, v1.5.0, v1.4.1...
one month ago

Fixed in 1.3.2

  • The "Use brightness keys on external displays" setting no longer gets stuck showing as on while it still displays the "needs Accessibility access" hint with no display menu. It now tracks the real access state and refreshes the instant you return from System Settings, so it can't sit in that in-between state.
  • Fixed a brief system-wide input freeze that could happen when you revoked Crisp's Accessibility access while it was running. Crisp now steps its brightness-key listener out of the way the moment access is removed, so revoking (and re-granting) no longer stalls the pointer for a few seconds.

1.3.2 and 1.3.1 are small bug-fix releases on top of 1.3.0. If you're coming from 1.2.0 or earlier, everything below is new to you too.

Everything in 1.3.0

Highlights

The big themes this cycle: sharper and smoother display scaling, brightness control, signing and notarization, and a broad round of fixes and polish throughout.

  • Sharper external displays, no password. Crisp now surfaces and applies the clean HiDPI ("Retina") scaled resolutions macOS hides on 2K+ externals, with no override file, admin prompt, or screen blank on panels that already carry them (the password-gated override stays as a fallback for panels that lack HiDPI).
  • Smooth scaling. An opt-in, per-display toggle installs a dense HiDPI ladder so the Resolution slider fine-tunes size in small steps, well beyond the default scaled sizes: the flexible scaling people install BetterDisplay for, built in.
  • Brightness keys drive your external monitors. The Mac's brightness keys can now dim any DDC external: follow the pointer, all displays, or a chosen subset. Opt-in, requests Accessibility only when you enable it, no restart.
  • Signed and notarized. Crisp is now signed with a Developer ID and notarized by Apple, so it opens with a normal double-click: no Gatekeeper warning, no right-click-to-open.

Added

  • Auto Brightness rework: the built-in slider tracks system brightness live and externals follow it. A "Keep display offsets" mode preserves your per-monitor differences; with it off, a manual change holds 30s before syncing resumes.
  • Brightness Keys: drive external displays from the Mac's brightness keys (pointer, all, or a subset). Opt-in, no launch prompt; grant Accessibility to enable, no restart. (#8)
  • Color profile picker lists only display-safe profiles, per display.
  • Smooth scaling (opt-in per external display): a dense HiDPI ladder for fine-grained scaling; off by default. (#9)
  • Keep Awake (in Tools): holds a power assertion so the display and system don't idle-sleep. Session-only.
  • Toggle macOS "Automatically adjust brightness" (ambient light) from Crisp, on displays with a light sensor.

Fixed

  • Freshly connected monitors now show their real model name and real brightness level instead of a stale value or a generic "Display 4".
  • Multiple externals no longer cross-talk: the Apple Silicon DDC-to-display matching was rewritten to pair each channel with the correct display. (#14, #13)
  • Built-in brightness keys no longer go dead for ~30s after leaving clamshell mode. (#12)
  • Color profile name updates immediately on switch. (#11)
  • Brightness sliders handle monitors that report stale or garbage DDC data. (#13)
  • "Invert Colors" now works (applied as a lookup table). (#17)
  • Image Adjustment: the Gain and Contrast sliders now take effect above 0.
  • HiDPI modes that share a size with a low-refresh timing now run at full refresh instead of dropping to 50Hz.
  • After sleep/wake, displays no longer land on a wrong (stretched, 60Hz) resolution.
  • Scaling to native now lands on the crisp 1:1 mode, not a soft same-size HiDPI variant.
  • The panel no longer twitches on open: Dark Mode / Night Shift / True Tone, brightness, and Launch at Login read correctly on the first frame.
  • Resolution and refresh-rate switches are serialized so they can't fire conflicting configs at once.
  • Changing resolution keeps the current refresh rate, even on NTSC (59.94Hz) timings.
  • Mirrored displays get their saved resolution restored after sleep/wake.

Changed

  • Resolution list mirrors System Settings: native-style labels, off-spec modes hidden, grouped under HiDPI / Non-HiDPI, and presented as a slider (full list behind "Show all resolutions").
  • Refresh-rate rows keep two decimals on NTSC timings so they don't collapse; the built-in's top rate reads "ProMotion".
  • Brightness sliders glide to clicked values on every display type, with DDC writes paced to ~20/sec to prevent flicker. (#13)
  • Combined brightness restyled to match the per-display rows, and shown only when more than one slider exists.
  • Menu icons follow the native state rule: colored only while active, gray otherwise (like Wi-Fi and Battery).
  • Update checks now run automatically; the "Check for Updates at Launch" toggle was removed (still throttled to once an hour).
  • HiDPI scaled resolutions appear on capable 2K+ externals with no admin prompt or screen blank; the override plist is now only a fallback.
  • Chinese localization polished to Apple's established terminology, with previously unlocalized strings now translated. I don't speak Chinese myself, so corrections are very welcome as a PR. (我本人不懂中文,若译文仍有不自然之处,欢迎提交 PR 指正。)
  • Secondary text in the popover now meets WCAG AA contrast in light mode; VoiceOver announces preset color names and Auto Brightness sync state.
  • Smaller polish: smoother section reveals, tighter spacing, removed the notch-height row, Afdian row localized for Chinese.

Dev / build

  • dev.sh signs with a stable identity so the Accessibility grant survives rebuilds; added a Makefile. (#13)
  • Release DMGs are signed with a Developer ID and notarized via release.sh (ad-hoc fallback when no cert is configured).

Supporting Crisp

Starting with 1.3.0, Crisp is signed with a Developer ID and notarized by Apple. No more of the security warning from 1.2.0 and earlier, the one that sent you into System Settings to open it anyway: Crisp now opens with a normal double-click.

The easiest way to support Crisp costs nothing: if it made your displays better, star the repo on GitHub or tell a friend. Word of mouth is how most people find it.

The signing runs on an Apple Developer membership ($99/year). Crisp is free and will stay completely free, but if you'd like to chip in toward keeping it signed and notarized, I've set up GitHub Sponsors, Ko-fi, and Afdian (爱发电), also in the app under Settings, "Support Crisp". Completely optional, but you'll have my heartfelt thanks.

Contributors

Don't miss a new Crisp release

NewReleases is sending notifications on new releases.