diff --git a/docs/SMOKE_TEST.md b/docs/SMOKE_TEST.md index 0d875b2..d1861f0 100644 --- a/docs/SMOKE_TEST.md +++ b/docs/SMOKE_TEST.md @@ -60,6 +60,7 @@ Use this checklist before a release or after changes to panel, pasteboard, setti 27. Confirm card headers use readable relative ages such as `3 minutes ago` or `2 hours ago`, including when viewing a named collection. 28. Confirm the selected card shows a green corner Stack control, the action rail does not duplicate Stack, and clips added to Stack keep a visible corner indicator when selection moves away. 29. Confirm single-line text cards do not repeat the same text in both title and body, while multi-line text cards show the remaining lines below the first line. +30. Confirm the Pinned empty state points to the Pin action instead of a plain-key shortcut. ## Copy And Paste diff --git a/sources/clipbored/views/ClipboardPanelView.swift b/sources/clipbored/views/ClipboardPanelView.swift index b49d564..5432ffe 100644 --- a/sources/clipbored/views/ClipboardPanelView.swift +++ b/sources/clipbored/views/ClipboardPanelView.swift @@ -1146,7 +1146,7 @@ final class ClipboardPanelView: NSVisualEffectView, NSSearchFieldDelegate { case .audio: return ("No audio yet", "Copied sound clips appear here.") case .pinned: - return ("No pinned clips", "New copies appear under Most Recent. Select an item and press P to pin it.") + return ("No pinned clips", "Use the Pin action on a card to keep important clips here.") case .mostRecent, .mostUsed: return ("No clips in this view", "Switch filters or copy something new.") } diff --git a/tests/clipboredtests/ClipboardPanelViewTests.swift b/tests/clipboredtests/ClipboardPanelViewTests.swift index f7d7fe0..4063902 100644 --- a/tests/clipboredtests/ClipboardPanelViewTests.swift +++ b/tests/clipboredtests/ClipboardPanelViewTests.swift @@ -829,6 +829,18 @@ final class ClipboardPanelViewTests: XCTestCase { XCTAssertEqual(fixture.view.debugEmptyStateText?.detail, "Image clips are saved when the clipboard contains image data.") } + func testPinnedEmptyStatePointsToPinAction() { + let fixture = makePanelFixture() + fixture.store.upsert(makeTextItem("Only text exists", store: fixture.store)) + drainMainQueue() + + fixture.viewModel.sortMode = .pinned + drainMainQueue() + + XCTAssertEqual(fixture.view.debugEmptyStateText?.title, "No pinned clips") + XCTAssertEqual(fixture.view.debugEmptyStateText?.detail, "Use the Pin action on a card to keep important clips here.") + } + func testCardsExposeContextMenuActions() { let fixture = makePanelFixture() fixture.store.upsert(makeTextItem("Context menu text", store: fixture.store))