Skip to content

Make the floating shelf an optional presentation style - #14

Closed
brzvsk wants to merge 1 commit into
tarikbc:mainfrom
brzvsk:feat/optional-floating-shelf
Closed

brzvsk wants to merge 1 commit into
tarikbc:mainfrom
brzvsk:feat/optional-floating-shelf

Conversation

@brzvsk

@brzvsk brzvsk commented Sep 15, 2026

Copy link
Copy Markdown
Contributor

What this changes

Adds an Edge Attached / Floating shelf setting, defaulting to the existing attached style. Floating adds 12-point side/bottom gaps, four rounded corners and a short slide transition. It keeps the nonactivating panel behavior and preserves Paste Stack and the existing close-completion safeguards.

The floating animation moves content inside a clipped, stationary window rather than moving the window below the display. This incorporates the fork's multi-monitor fix with one path that cannot spill onto a display below. Reduce Motion skips the floating slide. The shared glass helper retains Reduce Transparency and pre-macOS-26 fallback behavior.

Independent PR; no dependency on the appearance-choice PR.

How you tested it

  • All 189 CopyCore tests passed, including attached/floating frames, standard/compact heights and offset display coordinates.

  • Xcode Debug build passed; git diff --check passed.

  • Reviewed close cancellation, deferred completions and bounded animation geometry. Physical multi-monitor animation and paste-in-another-app checks remain manual; the isolated demo build has no Accessibility grant.

  • Every commit is signed off.

  • Engine changes include tests.

  • All three SPM pins are preserved.

Signed-off-by: Nikolai Berezovskii <nikolai@brzv.sk>
@tarikbc

tarikbc commented Sep 18, 2026

Copy link
Copy Markdown
Owner

Merged as cc1f552.

This one needed the most work, so flagging what I changed. It was written against the old shelfProDark flag, which #13 replaced with ShelfTheme, so I dropped the proDark parameters and threaded floatingShelf alongside the theme instead. ShelfPanelController.init now takes both.

I also removed the 'Always Use Dark Shelf' toggle this PR carried, because the Appearance picker from #13 supersedes it and shelfProDark no longer exists as a property. And I wrote a doc comment for floatingShelf to match the rest of that file.

The ShelfClippingView was a good catch. Keeping the window still and sliding only the clipped content is the right fix for a display sitting below the main one. I have not tested that case on hardware yet.

Closing because the rebase changed the SHAs. Thanks!

@tarikbc tarikbc closed this Sep 18, 2026
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