mirror of
https://github.com/Ark0N/Codeman.git
synced 2026-11-14 02:29:33 +01:00
The 1.50.0 blink switched LEBacklightMode on and off. Every style was a lit logo with short dark blips that differed only in how many there were, and Working (Heartbeat) looked busier than Waiting for you (Wink), so urgency read backwards. Each change was also a write to a setting corebrightnessd keeps in root's preferences, and new users had to pick a style in three submenus before anything happened. Now one rule: the more the logo moves, the more it needs you. - View > Blink Apple Logo is one switch, off until turned on. It shows Breathe while agents work, Calm for a yellow tab and Alarm for a red one. Each state can take another style under View > Apple Logo Blink Styles. Picking a style turns the switch on, and turning it on with every state off brings back those three. - Breathe is new: a slow fade out and back in, every 6.3 s. - The logo moves on the LED's own hardware fades (LEPWMFactorFadeDuration, then DisplayLogicalState Blank or Unblank), as LogoLight measured them on the real logo (MIT, reimplemented in Rust, not copied). A blink writes no setting and leaves nothing behind a restart. LEBacklightMode is only read, so a logo the user switched off stays off. - The direction of a fade is tracked, because the daemon ignores a write in the direction it already heads and the state can't be read back. When the direction is unknown, the logo is turned round with a 1e9 s fade first. - After every Blank the keyboards alone are told Unblank, and only while the built-in display is awake (CGDisplayIsAsleep). They are told Blank when it sleeps and Unblank when it wakes. When it sleeps, the fade duration also goes back to automatic, as LogoLight does. - A rise from exactly dark waits for a display frame, up to 0.5 s. Short dark beats (up to 0.35 s) turn round before their fall ends, so they never reach 0. Long ones time their light from when the rise starts. - Every end puts the logo back: lit, with the automatic fade duration. A new marker file (logo-fade) covers a killed child. 1.50.0's marker (logo-blink) still switches back on a logo that version left off. - While LogoLight runs, Codeman leaves the logo to it (process-name check), and the app says so when the switch is turned on. - Settings from 1.50.0 keep their styles, with the switch on if any was chosen. All three off was that version's default, so it reads as untouched. The tests run the blink against a fake corebrightnessd that moves in 17.5 ms frames on the measured spring curve. It starts each fade 19 ms after the write, ignores a write in the direction it already heads, and holds a rise from exactly dark back by a configurable delay. They pin these cases: - dips never reach 0 - long dark beats keep their light - no keyboard is told to light while the display sleeps - every end leaves the automatic duration and a lit logo - a logo switched off or driven by LogoLight is left alone - old settings are migrated An ignored probe (what_this_mac_answers) reads a Mac's displays, processes, keyboards and logo without writing anything. Not measured on the real logo, since there was no MacBook to test on: - how the 0.12 to 0.36 s fades of the hard styles look - whether a rise from a dip (about 7%) really skips the frame wait - the keyboard during Alarm - the keyboards through a real display sleep Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>