Skip to content

Lock Screen settings; the notch answers at its edge; pauses go under the notch; lock-screen screenshots reach the Shelf - #10

Merged
ctimothe merged 4 commits into
dynamic-island-parityfrom
feat/lock-screen-settings
Sep 21, 2026
Merged

ctimothe merged 4 commits into
dynamic-island-parityfrom
feat/lock-screen-settings

Conversation

@ctimothe

Copy link
Copy Markdown
Owner

What the owner asked for (2026-09-21)

  1. Screenshots and recordings reach the Shelf whether the Mac is locked or not.
  2. A Lock Screen section in Settings for the card, with its transparency in the steps macOS uses, and its size.
  3. The notch should respond when the pointer is at the very top edge, under the physical notch.
  4. A paused song, or a film playing, should put the island straight under the notch.

Causes and fixes

Shelf. The login window names lock-screen screenshots "LWScreenShot …", whatever the capture name or language. The pickup offers a still image only when it carries a capture prefix, so two lock-screen captures sat in ~/Screen Recordings offered nowhere. "LWScreenShot" is now a prefix. Unlocked screenshots on this Mac go to the clipboard, per target-screenshot = clipboard, and reach the Shelf through the vault as before.

Lock Screen section.

  • Show on Lock Screen moves here from Music.
  • Glass: Transparent, Tinted or Solid, from most see-through to fully opaque.
    • Tinted is today's cover-lit card and keeps the stored value "glass".
    • Transparent lets the wallpaper through the cover's light. No window above the login shield can blur a backdrop.
    • Transparent's text gets more shadow, and Increase Contrast keeps it opaque.
  • Card Size: Standard 460 × 300, or Compact 420 × 244 with three lyric lines.

Notch edge. A pointer at the top of the display sits exactly on the screen's maxY, which CGRect.contains treats as outside. Two rects didn't reach past it:

  • The hover rect, so the nudge never showed at the edge.
  • The view's own activeRect, so the window took the click and hitTest threw it away.

Both rects now reach past the edge.

Pause. The pause linger drops from 5 s to 0.4 s, just long enough to ride out the pause a skip passes through. A new song arriving paused rests too.

Verification

  • ./scripts/check: all 11 steps pass locally.
  • New tests cover the top edge, the fold, lock-screen captures, and all six glass/size renders at their window size.

🤖 Generated with Claude Code

…t under it

The owner, 2026-09-21: with the pointer pushed to the top of the display,
right under the physical notch, a hover did not nudge the island and a
click did not open it; only a few points lower did either work.

A pointer thrown at the top of the display parks on exactly the screen's
maxY, and CGRect.contains treats maxY as outside. The watcher's other
rects already grew past the top edge for this reason; the hover lift's
rect did not, and nor did the view's own activeRect, which is in window
coordinates where the top edge is the same exclusive maxY. So the window
took the click and hitTest threw it away. Both now reach past the top:
NotchGeometry.collapsedIslandHoverRect and NotchRootView.reachingTopEdge.

A paused song kept its pill over the notch for five seconds. The owner
asked for a pause, or a film playing, to put the island straight under
the notch without interrupting anything. The linger is now 0.4s, only
long enough to ride out the pause a skip passes through so the pill
does not flicker on every skip, and a new song arriving paused rests
like any other paused song.

Tests: testThePointerParkedOnTheTopEdgeIsOnTheIsland,
testAPauseFoldsAlmostAtOnce, testANewSongArrivingPausedRestsToo.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
A screenshot taken on the lock screen is written by the login window, and
the login window names it "LWScreenShot …" whatever the capture name or
language. The pickup offers a still only when it carries a capture
prefix, so two lock-screen captures sat in the save folder and were
offered nowhere (the owner's folder, 2026-09-21). "LWScreenShot" is now
one of the prefixes; the two already there arrive the next time the
Shelf opens.

Tests: testALockScreenScreenshotIsACapture.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
The owner asked on 2026-09-21 for the lock card to have settings of its
own, its transparency above all, in the steps macOS itself uses for its
glass.

- A Lock Screen section holds Show on Lock Screen, moved from Music, and
  two choices under it.
- Glass: Transparent, Tinted or Solid, the three steps the system offers
  for its own glass, from the most see-through to the opaque panel
  Reduce Transparency draws. Tinted is the cover-lit card as it is, and
  keeps the stored value "glass", so nobody's choice changes. Transparent
  lets the wallpaper through the cover's light, the most glass a card
  above the login shield can be, since no window there is given a
  backdrop to blur; its type carries more shadow, and Increase Contrast
  keeps it opaque.
- Card Size: Standard, 460 by 300, or Compact, 420 by 244, with a smaller
  cover and three lines of words rather than five. The size is read when
  the lock window is made; a change mid-lock applies at the next lock,
  since that window is never resized while it stands.

"Card Style" leaves the string tables; the Russian "Solid" now agrees
with "Стекло".

Tests: testEveryGlassAndSizeRendersAtItsSize renders all six at the size
their window is cut to.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
@ctimothe
ctimothe merged commit 830ec4a into dynamic-island-parity Sep 21, 2026
1 check passed
@ctimothe
ctimothe deleted the feat/lock-screen-settings branch September 21, 2026 14:42
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants