github didriksg/Crisp v1.3.0
Crisp v1.3.0

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

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.