Skip to content

feat(clipboard): add compact view with optional preview - #526

Draft
xcv58 wants to merge 1 commit into
mactools-app:mainfrom
xcv58:codex/clipboard-compact-view
Draft

xcv58 wants to merge 1 commit into
mactools-app:mainfrom
xcv58:codex/clipboard-compact-view

Conversation

@xcv58

@xcv58 xcv58 commented Nov 6, 2026

Copy link
Copy Markdown
Collaborator

Problem and result

Clipboard History always showed the full detail pane, even when the list was enough to find and paste an item. Users can now hide that pane and resize the window into a compact list. Preview remains visible by default, and the chosen visibility is remembered.

Related to the compact-view request in #522. The filter changes from merged #524 are inherited from main; hover and screenshot-tool requests remain separate.

Changes

  • Add a stable top-right preview button and searchable Show Preview / Hide Preview actions in Command-K, including empty history.
  • Let the list fill the window when preview is hidden. Hiding preserves the frame, search, filters, and selected item; users can then resize to a 480 × 360 pt minimum. Showing preview restores the 860 × 540 pt minimum and fits the window to its screen when needed.
  • Keep existing item actions available through Actions and context menus, with their existing context validation. Cancel pending detail loads and skip selection-triggered image OCR while hidden; list thumbnails remain available.
  • Persist the visibility preference through the existing portable settings/backup contract, including failed-write rollback. Add localized control labels/state in all 12 locales. No new permissions or PluginKit API changes.

Verification

Validated with Xcode beta on the exact reviewed source contents:

Check Result
Focused native XCTest: filters, panel keyboard, settings, host shortcut updates 55 tests; 0 failures
CI-equivalent local build/script/compatibility gates (make ci) Build-for-testing passed; 250 script checks passed; PluginKit v7 binary compatibility passed
Full native XCTest execution of the resulting test bundle 3,255 tests; 6 opt-in desktop skips; 0 failures
New preference regression Defaults, persistence/reload, backup restore, and failed-write rollback passed
Native synthetic UI fixture Actual toolbar press, preserved frame/query/filter/selection, compact sizing, Actions restoration, and Command-K search/submit with empty history passed
Independent review Three fresh reviewers covering the complete change, window/preview lifecycle, and preferences/compatibility; no actionable findings
Final preparation Source hashes still match the reviewed/tested version; changelog and whitespace checks passed

The full tests preceded the final main update, which changed only Nightly publication metadata; app/test/build sources are unchanged. Independent reviewers additionally exercised isolated AppKit sizing and preference-failure fixtures, localization, and minimum-host checks. The native UI fixture was rerun for the evidence below. Hosted PR CI is separate from these local results.

Limits: physical multi-display/Space transitions and VoiceOver speech were not exercised. UI evidence uses synthetic entries, in-memory/unavailable history stores, and a private named pasteboard; personal clipboard history was not accessed.

UI evidence

Entry point: Clipboard History → preview button at the top right, or Command-K → Show Preview / Hide Preview. Compact screenshots show the window manually resized to 480 pt wide after hiding preview.

Appearance Before: preview always visible (main) After: optional compact view
Light Before, light Compact view, light
Dark Before, dark Compact view, dark

Native toolbar walkthrough: the fixture presses the real accessibility action, capturing visible → hidden → visible at a fixed 960 × 640 pt window size. The animation is assembled from those native captures; search, filter, and selection remain fixed. It does not depict manual resizing or global shortcut delivery.

Native preview toggle walkthrough

Expanded toolbar and searchable Actions

Expanded view with preview toggle

Hide Preview in Actions with empty history

Checklist

  • Core behavior and relevant risks are verified using existing tests, focused additions, or manual checks; results or limitations are recorded.
  • UI evidence is attached where applicable; shared components, themes, localization, and accessibility are respected.
  • User-facing documentation and changelog fragments are updated when required.
  • Plugin metadata, runtime contracts, action policies, and minimum-host compatibility agree.
  • Licensing and third-party notices are complete; no credentials, local configuration, or unrelated generated files are included.

This branch has not been deployed

No deployments
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.

1 participant