Capture Everything. Lose Nothing.
The Visual Memory Layer for macOS.
DropVault 2.0 is a major upgrade across architecture, UI/UX, features, and polish.
| Feature | Description |
|---|---|
| Menu Bar Extra | Quick-access menu bar icon with recent items, monitoring toggle, and drop zone control |
| Sorting | 6 sort modes — newest, oldest, title A–Z / Z–A, largest first, by category |
| Grid & List Views | Toggle between the visual card grid and a compact list with alternating rows |
| Clipboard Monitoring Toggle | Pause/resume clipboard monitoring from toolbar, menu bar, or settings |
| Open in Browser | One-click open for link items directly in your default browser |
| Reveal in Finder | Show file items in their Finder location |
| Tag Removal | Tags now have a remove button — add and remove freely |
| Copy Confirmation Toast | Animated toast notification when content is copied to clipboard |
| Export & Import | Export your full vault to JSON, import with automatic deduplication |
| Shelf Management | Rename shelves, change icons (13 options), delete — all via context menu |
| Storage Info | Settings shows total storage size on disk |
| Shortcut | Action |
|---|---|
Cmd+Shift+D |
Toggle floating drop zone |
Cmd+Shift+M |
Toggle clipboard monitoring |
Cmd+Shift+N |
New shelf |
Cmd+E |
Export data |
Cmd+Shift+Delete |
Clear non-pinned history |
- Fixed crash-risk force unwrap in drop handler
- Settings respect max history limit — was previously hard-coded to 5,000
- Eliminated duplicated code — shared design tokens for colors, date formatting, hex parsing
- Cached DateFormatters — static instances instead of per-call allocation
- Reduced JSON output size — removed prettyPrinted formatting for storage efficiency
- Selection highlight — selected cards show an accent-colored border
- Smoother hover animations — refined easing and subtler scale effects
- Context-aware empty states — different icons, titles, and subtitles per filter
- Search result count — badge in search bar showing filtered count
- Search focus indicator — accent border when search is active
- Toolbar — sort menu, view mode toggle, monitoring status
- Sidebar footer — live monitoring status and total item count
- Detail view shows shelf assignment, open-in-browser, reveal-in-Finder
- Expanded settings — 4 tabs (General, Storage, Shortcuts, About)
- Version bumped to 2.0.0
DropVault is a next-generation macOS clipboard and drag-and-drop command center built entirely in Swift + SwiftUI — without Xcode.
It transforms the primitive system clipboard into a persistent, visual, organized workflow system.
DropVault is not just a clipboard manager. It is a visual memory layer for the desktop that:
- Remembers everything you copy
- Accepts anything you drag into it
- Organizes content automatically
- Turns temporary fragments into reusable assets
Think of it as a mix between:
| Concept | What it does |
|---|---|
| Premium Clipboard Manager | Persistent visual history of everything you copy |
| Lightweight Local Asset Vault | Store and retrieve text, code, images, files, colors |
| Drag-and-Drop Inbox | Floating drop zone that catches anything you drag |
| Visual Staging Area | Cards, previews, shelves for active work |
"The clipboard macOS should have had if it were redesigned from scratch for 2026."
Three-column layout: sidebar filters, card grid with hover actions, and inspector panel.
Hovering a card reveals quick actions (copy, pin, favorite, delete). Selected cards show a blue border.
Always-on-top panel — drag files, images, text, or URLs from any app to capture instantly.
Four-tab settings: General, Storage, Shortcuts, and About.
| Feature | Description |
|---|---|
| Automatic Capture | Monitors NSPasteboard every 0.5s — every copy is captured |
| Smart Deduplication | FNV-1a content hashing prevents duplicate entries |
| Source Awareness | Records which app you copied from (Safari, VS Code, Terminal...) |
| Persistent History | Survives app restart — stored in ~/Library/Application Support/DropVault/ |
| Configurable Limit | 500 to 10,000 items with automatic oldest-item pruning |
| Rich Previews | Images rendered inline, code in monospace, links with domain badges, colors with swatches |
| Pause/Resume | Toggle monitoring from toolbar, menu bar, or settings |
| Feature | Description |
|---|---|
| Quick Access | Clipboard icon in the macOS menu bar |
| Recent Items | Last 10 items — click to copy instantly |
| Monitoring Toggle | Pause/resume clipboard monitoring |
| Drop Zone Toggle | Show/hide floating drop zone |
| App Access | Open main window or quit DropVault |
| Feature | Description |
|---|---|
| Always-On-Top Panel | NSPanel floating above all windows, movable anywhere |
| Drag Anything | Files, images, text, URLs from any app — all accepted |
| Visual Feedback | Expands and glows when a drag enters, shows success checkmark |
| Instant Capture | Dropped items appear immediately in history |
| Toggle | Cmd+Shift+D to show/hide |
Content is automatically categorized using deterministic, rule-based classification — no AI, no cloud:
| Category | Detection Rules |
|---|---|
| Code | Language keywords (func, def, class, const...), syntax patterns (braces, semicolons, indentation), markdown code fences |
| Links | http://, https://, www. URL patterns |
| Colors | Hex (#FF5733), rgb(), rgba(), hsl(), hsla() |
| Images | Image data on clipboard, image file extensions (PNG, JPG, GIF, WebP, HEIC...) |
| Files | File URL references from Finder or other apps |
| Notes | Plain text that doesn't match other categories |
Every clipboard item is displayed as a premium glass card:
- Translucent material background (
.ultraThinMaterial) - Hover lift animation with smooth easing
- Category-colored icon badge (green=code, blue=links, purple=images...)
- Source app label (Safari, VS Code, Terminal...)
- Relative timestamps ("just now", "5m ago", "2h ago")
- Pin / Favorite indicators
- Selection highlight with accent-colored border
- Quick actions on hover: Copy, Pin, Favorite, Open in Browser, Delete
- Context menu: Full actions + Move to Shelf + Reveal in Finder
| View | Best for |
|---|---|
| Grid | Visual browsing — card layout with previews, hover effects, and images |
| List | Power users — compact rows with alternating backgrounds, source app, and timestamps |
Toggle between views with the segmented control in the toolbar.
| Feature | Description |
|---|---|
| Sidebar Filters | All, Recent, Pinned, Favorites + every category |
| Full-Text Search | Instant search across title, content, source app, tags, URLs — with result count |
| Sorting | 6 modes: newest, oldest, title A–Z / Z–A, largest first, by category |
| Shelves | Create named collections with custom icons (13 options) |
| Shelf Management | Rename, change icon, or delete shelves via context menu |
| Tags | Add and remove custom tags on any item |
| Pin & Favorite | Keep important items always accessible |
| Rename | Double-click title in inspector to rename |
When you select an item, the right panel shows:
- Full-size preview (code with monospace, images scaled, colors as swatches)
- Metadata: Created date, updated date, source app, file size, category, shelf
- Tags: View, add, and remove tags with flow layout
- Actions: Copy to Clipboard, Pin/Unpin, Favorite, Open in Browser, Reveal in Finder, Move to Shelf, Delete
| Feature | Description |
|---|---|
| Export | Save your entire vault (items + shelves) as a portable JSON file |
| Import | Load items from a JSON export — duplicates are automatically skipped |
| Backup | Use export as a manual backup strategy |
| Shortcut | Action |
|---|---|
Cmd+Shift+D |
Toggle floating drop zone |
Cmd+Shift+M |
Toggle clipboard monitoring |
Cmd+Shift+N |
New shelf |
Cmd+E |
Export data |
Cmd+C |
Copy selected item |
Cmd+Shift+Delete |
Clear all non-pinned history |
dropvault/
├── Package.swift # SPM manifest — macOS 14+
├── Sources/DropVault/
│ ├── DropVaultApp.swift # @main entry, scenes, MenuBarExtra, commands
│ ├── Models/
│ │ ├── VaultItem.swift # Core data model (Codable, Hashable)
│ │ ├── VaultCategory.swift # 9 categories with icons & colors
│ │ └── Shelf.swift # Named collections
│ ├── Services/
│ │ ├── ClipboardObserver.swift # NSPasteboard polling engine
│ │ ├── ClassificationEngine.swift # Rule-based content classifier
│ │ └── PersistenceManager.swift # JSON persistence + export/import
│ ├── ViewModels/
│ │ └── VaultStore.swift # Central ObservableObject store
│ ├── Utilities/
│ │ └── DesignTokens.swift # Shared colors, formatting, sort/view enums
│ └── Views/
│ ├── ContentView.swift # 3-column NavigationSplitView + toolbar
│ ├── SidebarView.swift # Category/shelf navigation + management
│ ├── HistoryView.swift # Grid + list views with sorting
│ ├── ItemCardView.swift # Glass card with selection + hover
│ ├── ItemDetailView.swift # Inspector panel + FlowLayout
│ ├── SearchBarView.swift # Live search with result count
│ ├── SettingsView.swift # 4-tab settings (General, Storage, Shortcuts, About)
│ ├── DropZoneView.swift # Drop target SwiftUI view
│ └── FloatingDropZoneWindow.swift # NSPanel controller
├── Resources/
│ ├── AppIcon.svg # Vector logo source
│ ├── AppIcon.icns # macOS icon (all sizes)
│ ├── Info.plist # App bundle metadata
│ └── DropVault.entitlements # Code signing entitlements
└── scripts/
├── build-sign-notarize.sh # Full pipeline: build → sign → DMG → notarize
└── make-icns.sh # SVG → iconset → icns converter
| Layer | Technology |
|---|---|
| Language | Swift 5.9 |
| UI Framework | SwiftUI |
| AppKit Interop | NSPanel (floating drop zone), NSPasteboard (clipboard), NSWorkspace (source app, open URL, reveal in Finder) |
| Build System | Swift Package Manager (no Xcode required) |
| Persistence | JSON files in ~/Library/Application Support/DropVault/ |
| Image Storage | PNG files in app support assets/ directory |
| Hashing | FNV-1a 64-bit (fast, deterministic deduplication) |
| Signing | codesign with Developer ID + hardened runtime |
| Notarization | xcrun notarytool (Apple notary service) |
| Distribution | DMG with stapled notarization ticket |
┌──────────────┐
│ NSPasteboard │ ← User copies something
└──────┬───────┘
│ poll every 0.5s
┌──────▼───────┐
│ Clipboard │
│ Observer │ → detects changeCount delta
└──────┬───────┘
│ extract text / image / file URL
┌──────▼───────┐
│ Classification│
│ Engine │ → code? link? color? image? note?
└──────┬───────┘
│ create VaultItem
┌──────▼───────┐
│ VaultStore │ → dedup → insert → persist
└──────┬───────┘
│ @Published update
┌─────────────────┼─────────────────┐
▼ ▼ ▼
MenuBarExtra SidebarView HistoryView
(quick access) (filters) (grid/list + toolbar)
│
ItemDetailView
(inspector)
struct VaultItem: Identifiable, Codable, Hashable {
let id: UUID
var createdAt: Date
var updatedAt: Date
var category: VaultCategory // .code, .images, .links, .files, .notes, .colors...
var sourceApp: String? // "Safari", "VS Code", "Terminal"...
var title: String
var previewText: String? // First 300 chars for display
var rawText: String? // Full original text
var fileURL: URL? // For file/folder references
var imageAssetPath: String? // Filename in assets directory
var linkURL: URL? // Parsed URL for link items
var isPinned: Bool
var isFavorite: Bool
var tags: [String]
var shelfID: UUID? // Optional shelf assignment
var contentHash: String // FNV-1a hash for dedup
var sizeBytes: Int?
}- Download the latest DMG from Releases
- Open the DMG
- Drag DropVault.app into Applications
- Launch DropVault
- The floating drop zone appears at the right edge of your screen
The app is signed and notarized by Apple — no Gatekeeper warnings.
Requirements: macOS 14+, Swift 5.9+ (included with Xcode Command Line Tools)
# Clone
git clone https://github.com/Worth-Doing/dropvault.git
cd dropvault
# Build (debug)
swift build
# Build (release) and create .app bundle
swift build -c release
bash build.sh
# Run
open DropVault.appIf you have an Apple Developer ID certificate:
# Edit signing credentials in scripts/build-sign-notarize.sh, then:
bash scripts/build-sign-notarize.shThis produces a signed, notarized DMG ready for distribution.
- Copy anything — text, code, URLs, images — DropVault captures it automatically
- Browse history — visual card grid or compact list, sorted your way
- Search — type to instantly filter across all content, see result count
- Re-copy — click any card's copy button, use the inspector, or click in the menu bar
- Pin important items — they persist even when history is cleared
- Click the clipboard icon in the macOS menu bar
- See your 10 most recent items — click any to copy it instantly
- Toggle Clipboard Monitoring on/off
- Toggle the Drop Zone on/off
- Open the full DropVault window or quit the app
- Press
Cmd+Shift+Dor use the menu to toggle the floating drop zone - Drag files, images, text, or links from any app onto the drop zone
- Content is captured, classified, and added to your vault instantly
- The drop zone glows and animates to confirm receipt
- Sidebar filters: Click any category to filter (Code, Images, Links, Files, Notes, Colors)
- Sort items: Use the toolbar sort menu (newest, oldest, title, size, category)
- Switch views: Toggle between Grid and List in the toolbar
- Create shelves: Click "New Shelf" — choose a name and icon
- Manage shelves: Right-click a shelf to rename, change icon, or delete
- Tag items: Open the inspector, type a tag name, press Enter
- Remove tags: Click the × button on any tag
- Pin items: Right-click → Pin, or hover and click the pin button
- Open links: Click "Open in Browser" on link items
- Reveal files: Click "Reveal in Finder" on file items
- Export data:
Cmd+Eor Settings → Storage → Export Data - Import data: Settings → Storage → Import Data (duplicates auto-skipped)
DropVault is built with a local-first philosophy:
| Principle | Implementation |
|---|---|
| No cloud | All data stored locally in ~/Library/Application Support/DropVault/ |
| No analytics | Zero telemetry, zero tracking, zero network calls |
| No AI | Classification is purely rule-based, runs locally |
| Transparent storage | JSON files you can inspect, backup, or delete |
| User control | Clear history, delete items, configure limits, export/import, pause monitoring |
| Tab | Settings |
|---|---|
| General | Show drop zone on launch, auto-start clipboard monitoring, monitoring status |
| Storage | Max history items (500–10,000), current item count, storage size, export/import, clear history |
| Shortcuts | Reference list of all keyboard shortcuts |
| About | App version and info |
~/Library/Application Support/DropVault/
├── items.json # Clipboard history (metadata + text content)
├── shelves.json # Shelf definitions
└── assets/ # Image files (PNG)
├── <uuid>.png
└── ...
- App structure with SPM (no Xcode)
- Core data models (VaultItem, VaultCategory, Shelf)
- Clipboard observation engine (NSPasteboard polling)
- Content normalization (text, URLs, images, files)
- JSON persistence in Application Support
- FNV-1a deduplication
- Three-column NavigationSplitView layout
- LazyVGrid card view with adaptive columns
- Glass material card design with hover animations
- Full-text search with instant filtering
- Inspector panel with preview, metadata, tags, actions
- NSPanel floating drop zone
- Rule-based classification engine
- Tags and shelves
- Pin & Favorite system
- Context menu actions and keyboard shortcuts
- Menu bar extra with recent items and quick actions
- Sorting (6 modes)
- Grid and list view toggle
- Clipboard monitoring toggle (pause/resume)
- Open links in browser
- Reveal files in Finder
- Tag removal
- Copy confirmation toast
- Export/import to JSON
- Shelf management (rename, change icon, delete)
- Selection highlight on cards
- Context-aware empty states
- Toolbar with sort, view mode, monitoring status
- Shared design tokens (colors, formatters)
- Expanded settings (4 tabs)
- Bug fixes (force unwrap, history limit, hash consistency)
- Search result count and focus indicator
- Smart duplicate collapsing with usage counts
- Batch actions (multi-select tag, move, delete)
- Quick collections (Today's Links, Coding Session...)
- Mini overlay near cursor
- Clipboard privacy mode (exclude sensitive apps)
- Temporary self-expiring items
- macOS Shortcuts integration
- Syntax highlighting for code previews
- Rich text (RTFD) support
- iCloud sync (optional)
// Polls NSPasteboard.general.changeCount every 0.5 seconds
// Extracts content in priority order:
// 1. File URLs (NSURL with fileURLsOnly option)
// 2. Image data (TIFF or PNG representation)
// 3. String content (plain text, URLs, code)
// Records frontmost application as source via NSWorkspace// Deterministic, fast hash for deduplication
var hash: UInt64 = 14695981039346656037 // FNV offset basis
for byte in data {
hash ^= UInt64(byte)
hash &*= 1099511628211 // FNV prime
}Input text
├── matches #hex / rgb() / hsl() → Colors
├── matches http:// / www. → Links
├── ≥2 code keywords OR ≥2 syntax patterns OR ``` → Code
└── else → Notes
File input
├── image extension (png, jpg, gif, webp, heic...) → Images
└── else → Files
// NSPanel with:
// styleMask: [.borderless, .nonactivatingPanel, .fullSizeContentView]
// level: .floating
// collectionBehavior: [.canJoinAllSpaces, .transient]
// isMovableByWindowBackground: true
// backgroundColor: .clear| Requirement | Minimum |
|---|---|
| macOS | 14.0 (Sonoma) |
| Swift | 5.9 |
| Xcode CLI Tools | Required for swift build |
| Xcode.app | Not required |
| Architecture | Apple Silicon + Intel (universal via SPM) |
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
This project is licensed under the MIT License — see the LICENSE file for details.
DropVault — Drag, Store, Reuse. Instantly.
Built with Swift + SwiftUI. No Xcode. No cloud. No compromise.





