Skip to content

Tracking issue: a "v2" wave of features (~20 PRs, all built and tested) #80

Description

@alvst

Over the past few weeks I've built out a batch of features on top of main, each as its own small, focused branch per CONTRIBUTING.md's guidance, and updated based on the PRs you've reviewed and closed. All of them are built, warning-free, and manually tested. I'd like to open them as a sequence of PRs and wanted to lay out the whole set here first so the scope and dependencies between them are clear before the individual PRs start landing.

Subsequent to these features landing, I have another feature, Paste Stacks, that I'd like to propose for v2.1.

Features

Bar & interaction

  • ⌘C copies the selected card, and promotes it to the front of history
  • ⌘←/⌘→ switches between bar sections (History/Pinboards)
  • A real, fully-editable search field, replacing the current read-only search indicator
  • Icons on the bar's overflow (⋯) menu items
  • A live-resize handle on the bar, with a Settings toggle to show/hide it
  • Fixes the bulk-delete button collapsing to icon-only in narrow layouts (pre-existing bug)
  • Dragging a clip out of the bar to another app now sends real file URLs for multi-file clips instead of path text, and the bar only drops once the drag genuinely leaves it - so you can still drag a clip onto a Pinboard tab to pin it without the bar closing out from under you. This builds on top of Support dragging clips out of Pesty #73, which already covers the single-file case.

Deletion & Retention

  • A 5-minute Undo window for deleted clips, with a "delete permanently" override (Settings toggle, and hold Option to bypass Undo for one deletion)
  • Retention presets as a discrete slider (1 Day, 1 Week, 2 Weeks, 3 Weeks, 1 Month, 2 Months, 3 Months, 6 Months, 1 Year, Forever) instead of a raw day-count field, including a real "Forever" option with no automatic pruning by age
  • A new "Play sound on copy" toggle, distinct from the existing "play sound on paste" - defaults on, plays a different system sound so copy and paste stay audibly distinct
  • Pasting can now promote the clip to the top of history too, matching how Copy already behaves - a Behavior toggle, on by default
  • ⌘⌫ while a search query is being edited now clears the query instead of destroying the selected clip
  • A missing Accessibility permission no longer makes direct paste fail silently - an alert (once per launch) explains the clip was still copied, that ⌘V pastes it manually, and links to the Accessibility pane

Previews

  • Quick Look preview via Space bar, with selection synced to whatever Quick Look is currently showing, and dismissing Quick Look when the bar itself is dismissed
  • An inline in-bar preview as an alternative to Quick Look, plus an "Open in App" action, stacked on top of the above
  • Rich previews for link clips - favicon, title, and thumbnail, both on the card itself and in the larger preview window
  • Quick Look now tracks its own native Space/Esc dismissal correctly (previously bypassed cleanup, leaving stale state behind), survives a screen change without getting stranded, supports ⌘C to copy the previewed clip, and re-centers itself when its content resizes

Pinboards

  • Drag-to-reorder Pinboard tabs, with a live insertion caret while dragging
  • Inline Pinboard renaming instead of a modal alert
  • Drag a clip directly onto a Pinboard tab to pin it
  • Pinboard recoloring via a context-menu color-swatch submenu
  • Drag-to-reorder clips within a Pinboard, with the same insertion-caret treatment and an animated drop
  • Escape now cancels an in-progress Pinboard card drag, pinned cards drop their copied-at timestamp (no longer meaningful once a clip is pinned indefinitely), and stale hover/insertion-caret highlighting clears reliably once a drag ends or is cancelled

Settings

  • A full redesign of the Settings window: sidebar navigation (General/Privacy/Shortcuts/Sync/About) instead of the current fixed 3-tab layout, reorganizing every toggle above into logical, card-based groups. Keeps the existing MAS/non-MAS sync split (CloudKit vs. iCloud Drive).
  • The Keep History section now shows the store's actual on-disk size alongside clip count, computed off the main thread so a large image library can't hitch the Settings window
  • Clip color themes (Default, Vibrant, and Accent Shades keyed to a picked base color) and a selected-clip position preference (center vs. right edge, Paste-style)

Miscellaneous improvements & bug/behavioral fixes

  • "Paste with Clean Formatting" and "Paste as Markdown," alongside the existing "Paste as Plain Text" - enabled whenever a clip has rich content, backed by a new HTML→Markdown/clean-RTF converter and HTML-flavor capture in the clipboard monitor (browser copies often carry HTML with no RTF)

Suggested merge order

Most of these are fully independent and can land in any order. Three groups have internal dependencies:

  1. Quick Look stack - Quick Look preview, then the inline-preview alternative, then the Quick Look focus/dismissal fixes, in that order.
  2. Pinboard stack - tab reorder, then inline rename + drag-to-pin, then recoloring + within-Pinboard reorder, then the Escape-cancel/timestamp/hover-cleanup polish, in that order.
  3. Settings redesign - depends on live-resize, Undo, the retention slider, "play sound on copy", the on-disk-size display, color themes, and the Quick Look stack all being merged first, since it reorganizes toggles all of those add. Goes up last.

What's not here

Paste Stacks (queue clips, paste them sequentially) is a substantial feature on its own - collect-while-copying, a dedicated floating panel, named/saved decks, reordering, search, and settings integration. Worth its own tracking issue and its own PR sequence rather than folding it into this one; happy to open that separately once this batch is through review.

Activity

  1. alvst commented on Aug 20, 2026

    @alvst
    ContributorAuthor

    Tentative proposed v2 features and enhancements

    All items below are proposed for v2.

    Wave 1

    • 01-cmd-c-copy — Copy the selected clip with Command-C (alvie/pr-cmd-c-copy) — ready as-is
    • 02-section-switch — Switch bar sections with Command-Left and Command-Right (alvie/pr-section-switch) — ready as-is
    • 03-menu-icons — Add icons to the bar's overflow menu (alvie/pr-menu-icons) — ready as-is
    • 04-native-search — Replace the search indicator with a real editable field (alvie/pr-native-search) — ready as-is
    • 05-bulk-delete-label — Fix the bulk-delete button collapsing to icon-only (alvie/pr-bulk-delete-label) — ready as-is
    • 06-live-resize — Add a live-resize handle for the Paste Bar (alvie/pr-live-resize) — ready as-is
    • 07-undo — Add a 5-minute Undo window for deleted clips (alvie/pr-undo) — ready as-is
    • 08-retention-slider — Turn history retention into a discrete slider with named presets (alvie/pr-retention-slider) — ready as-is
    • 09-play-sound-on-copy — Add a "Play sound on copy" setting (alvie/pr-play-sound-on-copy) — ready as-is
    • 10-history-disk-size — Show history's on-disk size in Settings (alvie/pr-15-history-disk-size) — ready as-is
    • 11-paste-reliability — Fix search-mode Command-Delete, silent paste failures, and buried pasted clips (alvie/pr-16-paste-reliability) — ready as-is
    • 12-paste-as-formats — Add Clean Formatting and Markdown paste options (alvie/pr-17-paste-as-formats) — ready as-is
    • 13-color-themes — Add clip color themes and a selected-clip position preference (alvie/pr-18-color-themes) — ready as-is
    • 14-clip-card-metadata — Show real dimensions and paths in the clip card footer (alvie/pr-25-clip-card-metadata) — ready as-is
    • 15-paste-style-cards — Add paste-style clip cards (alvie/pr-26-paste-style-cards) — ready as-is
    • 16-drag-clips-out — Upgrade drag-out to a native drag session with real multi-file payloads (alvie/pr-drag-clips-out) — ready as-is

    Wave 2

    • 25-link-preview — Show rich previews for link clips (alvie/pr-link-preview) — ready as-is

    Wave 3

    • 17-quicklook — Preview clips with Quick Look (alvie/pr-quicklook) — ready as-is
    • 18-quicklook-focus — Make Quick Look focus handoff, Command-C, and panel sizing track reality (alvie/pr-19-quicklook-focus) — ready as-is
    • 19-inline-preview — Add an inline in-bar preview as an alternative to Quick Look (alvie/pr-inline-preview) — ready as-is

    Wave 4

    • 20-space-preview-with-search — Keep Space previewing once the search field takes focus (alvie/pr-27-space-preview-with-search) — ready as-is

    Wave 5

    • 21-pinboard-reorder — Reorder Pinboards by dragging their tabs (alvie/pr-pinboard-reorder) — ready as-is
    • 22-pinboard-rename — Rename Pinboards inline, and drag clips onto a tab to pin them (alvie/pr-pinboard-rename) — ready as-is
    • 23-pinboard-recolor — Add Pinboard recoloring and reordering clips within a Pinboard (alvie/pr-pinboard-recolor) — ready as-is
    • 24-pinboard-drag-polish — Cancel Pinboard card drags on Escape, and drop pinned-card timestamps (alvie/pr-20-pinboard-drag-polish) — ready as-is

    Wave 6

    • 26-settings-sidebar — Rewrite Settings as a sidebar-nav window (alvie/pr-settings-sidebar) — not finalized/open-ready yet
      • Draft status: flagged stale
      • Needs rebasing after its dependency PRs land

    Summary

    • 25 items are currently ready as-is
    • 1 item is still pending finalization: 26-settings-sidebar

    V2.1

    • Paste Stacks
  2. alvst commented on Aug 23, 2026

    @alvst
    ContributorAuthor

    Wave 1 is open

    All 16 PRs link back to this tracker, include their prepared review evidence, are marked for v2, and have passing CI.

  3. momenbasel commented on Oct 8, 2026

    @momenbasel
    Owner

    Wave 1 is resolved; here is where each item ended up.

    Merged as-is: #83, #84, #86.

    Landed through #104 with your commits kept under your name and a follow-up fix after each one: #79, #82, #85, #87, #89, #90, #91, #93, #94, #95. Each PR's closing comment has the specifics of its fix.

    Rewritten on main after your PR, with the idea and the parts kept credited in the commit body: #88 (2763443, an in-memory undo stack instead of a ledger persisted to store.json and sync) and #96 (4b1d814, previews decoded off the main actor behind a bounded cache).

    Closed, not taken: #92 (the Command-Delete change; the other two parts shipped as an off-by-default promote-on-paste toggle and a toast notice in ecbbd47) and #97 (the drag-out session; the comment there lists what a re-cut should keep).

    All of it ships in 1.3.0. Paste Stacks is not scheduled; open a separate issue with the design when it is ready and it gets its own review. Closing the tracker since nothing on it is open any more. Thanks @alvst.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions