Repository navigation
Releases: egemertbalcik/Ledge
Release list
Ledge 1.2.5
Scroll to set Keep Awake and the timer. Today's calendar shows only what is still to come.
- Scroll the Espresso length. The days, hours and minutes on the Espresso stop each scroll on their own with a two-finger stroke or the mouse wheel. Swiping sideways still moves between cards. (#2)
- Scroll the timer's rule. With the rule open, a sideways stroke on it moves it the way a drag does. The mouse wheel turns it one minute at a time.
- Today, what's left. The calendar lists only today's events that haven't ended. An event in progress stays until it ends. Past days still show everything. (#1)
- Camera mirror. The mirror beside Join is the right way round from the first press. It also gives a slow camera more time to start.
Thanks to @alpozaydin for both ideas.
Ledge is a free, open-source notch app for MacBook (macOS 26 or later). Download Ledge.dmg, install with brew install --cask egemertbalcik/tap/ledge or let the app update itself. More at ledgeapp.dev.
Ledge 1.2.4
Ledge stays quick while a browser plays video, and updates now arrive on their own.
- Video in the browser. Watching a video on X or other sites no longer makes Ledge lag, and the volume keys show Ledge's readout instead of the system pop-up.
- Updates check themselves. Ledge now looks for new versions in the background, as it was meant to. If you are on 1.2.3 or earlier, choose Check for Updates… once to get here.
- Live streams. A live stream in Chrome, Edge, Brave or Arc no longer stops now playing for the rest of the session. The card shows it as live.
- Play works every time. Pressing Play on a paused card no longer sometimes does nothing.
- Your card stays open. Pressing a volume or brightness key while the pointer rests on a card shows the readout, then brings the same card back.
- Settings rests when closed. Closing Settings stops its background checks, and it reopens on the page you left.
Ledge 1.2.3
Pasted text comes into Notes clean, and Keep Awake says its piece once.
- Pasting is clean. Text from a web page, Word or Slack comes into a note without its highlight, colours, fonts or links. Bold and italic come along as the note's own, so the B button lights up and they are still there after a restart.
- Old notes heal. A note that already picked up a highlight or a colour from a paste loses it the next time you open it.
- Paste as plain text. ⌥⇧⌘V pastes only the words, without bold or italic.
- The caret stays where you click. The first key you press after opening a note no longer sends the caret to the end.
- Keep Awake speaks once. The notch shows it when it starts, then gives the space back to your music. Its card still shows it is on.
Ledge 1.2.2
Pick the calendars you see, scrub your music again, and a notch that moves instead of jumping.
- Scrubbing works again. Dragging the bar in Spotify or Music did nothing in 1.2.1. It now lands where you let go, on the song you were looking at.
- Choose your calendars. The Calendar card's page in Settings lists every calendar by account. Switch off the ones you don't want in the notch; new calendars show until you switch them off.
- No surprise Automation dialog. Ledge asks for access to Music and Spotify only when you press Automation in Settings, Permissions. If you already allowed it, nothing changes.
- Someone else's AirPods stay out of it. Another pair of the same model nearby no longer sets off your low-battery alert again and again, and putting your earbuds in their case doesn't announce a low battery.
- Notes keep their titles. A renamed note keeps its new title on the card after a restart, and ⌘Z only undoes in the note you're writing.
- Focus and the timer tell the truth. The Focus card goes away when Focus ends. A pomodoro left running with the lid shut waits for you instead of running on all night.
- Weather names your town. Not the street or the café you're sitting in. With no place name it says Current Location, not the city you typed.
- Smoother all round. Cards open in one movement, album art cross-fades between songs, the Keep Awake switch slides between stops, and Settings is laid out like System Settings.
Ledge 1.2.1
Keep Awake that actually keeps the Mac awake, and media controls that hold on to the song.
- Coffee keeps the screen on too. It now holds what
caffeinate -dmiholds: the Mac, the screen and the disk. Before, the screen went dark on its own and the Mac looked asleep. - No more stopping after an hour. A session with no end time ran out after sixty minutes. It now lasts until you switch it off.
- The Keep Awake card stays put. When a session ends it shows what happened, then goes back to the switch instead of disappearing.
- Keep Awake says it once and steps aside. Starting it shows the cup briefly, even during Focus, and the notch goes back to rest. With music playing, a small cup sits beside it.
- Told when macOS holds back. If macOS keeps the Mac awake but refuses the screen, the card says so and Ledge keeps asking.
- Pausing from AirPods keeps the card. The song stays in the notch, scrubbing stays on the track you meant, and the waveform no longer jumps when you press Play.
Ledge 1.2.0
Settings rebuilt, a mirror in the calendar card, and permissions that show you where to look.
- Settings, rearranged. Six panes, a search field, and a page per card — holding the permission it waits for and the button that grants it.
- A mirror in the calendar card. Check your camera before a meeting. Nothing is recorded.
- Permissions that say where to look. Ledge draws where the switch is, and the notch brings the window back when you return.
- Keep Awake is a rail. Three stops: the bead is what you chose, the fill is what is true.
- Levels and Notes, redrawn. A row for every output and screen; Notes opens on the five most recent.
- A shorter welcome. Four steps under the notch, two of them done rather than read.
Plus a good deal of repair work underneath.
Requires macOS 26. Download Ledge.dmg below, or let the app update itself.
Ledge 1.1.0
Keep Awake: hold the Mac awake for a set time, with the session written down before anything is held, so a crash or a relaunch cannot strand it. Ends on its own deadline, on a battery floor, on heat, and on quit.
Notes open in a window of their own, drawn with a plain container transform instead of the old birth animation. Browse and create from a palette, keyboard shortcuts for the three buttons, bold and italic that survive a round trip, duplicates numbered (1) and (2), and export to Apple Notes that keeps the formatting. Clicking the window no longer takes focus from what you were in, and an empty note is never saved.
Media card: a slow reading can no longer put the previous track back, artwork changing no longer reads as a new song, seeking holds the position you picked until the player says it got there instead of dropping it after 600ms, and a press the player refused changes nothing on screen.
Ledge 1.0.10
Web media is one switch again
1.0.9 let you list websites and decide, site by site, whether a browser playing media got a card. That list could never have worked, and this release withdraws it.
macOS does not tell an app which page a browser is playing. The now-playing information a browser publishes carries the track, the artwork and the controls, but no page address — and neither Safari nor Chrome will say which tab the sound is coming from. The one URL that does sometimes appear points at the content delivery host the video is streaming from, not at the site you were looking at. There was no way for anything you typed into that list to be matched against anything.
In its place are the two switches the feature began as:
- Show web media cards — off by default.
- Show web media in the compact view — off by default, and available only once cards are on.
Settings now says plainly that Ledge cannot tell which website is playing, so the choice covers all of them. If you are coming from 1.0.8, the preference you had is carried over exactly. Music, Spotify and other native players are unaffected; they were never part of this.
The per-site work is kept on a branch. If a browser extension ever makes the attribution real, it can come back as something that actually works.
Ledge 1.0.9
Web media is now allowed one website at a time
Ledge used to show media from whatever a browser was playing. A browser hands its now-playing slot between tabs, so that was often a video you had not chosen — an autoplaying clip in a background tab looks exactly like a song.
Now you allow the sites you want, in Settings → Now Playing. Each one gets a card, or a card and a place in the compact view. Anything you have not listed stays hidden, including on a first run.
Safari cannot do this yet, and its media will stay hidden. macOS does not tell Ledge which website Safari's media came from. Rather than guess from the file it is streaming — which belongs to a content network, not the site you are on — Ledge hides it. If you watch things in Safari, this release takes that card away and the list will not bring it back. I would rather lose the card than show you a rule that quietly does nothing.
Sound
- Turning the volume all the way down is now actually silent. Zero used to leave the speakers at their quietest step, which is low but audible.
- Zero shows an empty bar. The red muted badge belongs to the mute key, and only to it.
- Muting at zero and pressing mute again no longer lets that faint sound back.
- Volume and mute now reach every channel on devices with no master control, instead of the first two.
- The bar shows what the hardware did, not what was asked of it.
Devices
- A device that was already connected when Ledge started is no longer announced as if you had just plugged it in.
- An alert with neither Notch nor Notification ticked is off, rather than firing into nothing and staying quiet afterwards.
- Battery charts break where a device went away, instead of drawing a straight line through the hours it was in its case.
- This Mac no longer looks stale while it sits on the charger saying nothing.
Quitting
Ledge now finishes writing before it exits, so an alert you have already seen cannot come back after a relaunch.
Ledge 1.0.8
Mostly invisible work: the app now holds on to far less while it runs. Plus one thing you can see.
The timer card lets go
Look at the timer card, move to another one, and leave the notch — it used to stay open for a couple of seconds over whatever card came next. It closes straight away now.
The cause was a grace period meant to keep the card while you were still adjusting the length. It could not tell the difference between a pointer resting on the card and a pointer that had left, so the only time you ever noticed it was the time it was wrong. It is gone; the card is held while you are actually dragging, and released the moment you stop.
One trade, deliberately: if you drag the ruler and release with the pointer already off the notch, the card now closes immediately rather than waiting a moment for you to reach Start.
Battery
AirPods no longer pin the Bluetooth radio on. Ledge listens in short bursts to keep the battery figures and lid state fresh. Any advertisement from a nearby device used to extend that burst — and AirPods talk many times a second, so the burst never ended. Whenever AirPods were near, which is most of the time, the most expensive kind of scanning ran continuously. It is now held open only while something is actually changing, with a hard ceiling.
One hardware query at a time. Waking your Mac reconnects every paired device at once, and each reconnection used to start its own copy of a slow system tool to work out the same answer. They now share one.
Media commands are queued rather than piled up. Pressing next repeatedly at a player that has stopped responding used to start one background process per press.
Reliability
Every background helper Ledge starts now has a deadline it cannot outlive. One that ignores a polite request to stop is ended firmly; previously it could linger indefinitely, and cancelling a request it no longer needed did not reach it at all.
The parts that watch your volume, output device and microphone were rebuilt so their bookkeeping happens off the main thread — the one that draws — rather than in front of it.
Update through Ledge, or download below.