{"id":50805098,"url":"https://github.com/danielvm-git/big-clipboard-manager","last_synced_at":"2026-06-13T00:05:13.497Z","repository":{"id":364308158,"uuid":"1267349124","full_name":"danielvm-git/big-clipboard-manager","owner":"danielvm-git","description":"write for me","archived":false,"fork":false,"pushed_at":"2026-06-12T13:12:33.000Z","size":195,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-06-12T15:10:10.384Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/danielvm-git.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":"AGENTS.md","dco":null,"cla":null}},"created_at":"2026-06-12T13:08:28.000Z","updated_at":"2026-06-12T13:12:47.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/danielvm-git/big-clipboard-manager","commit_stats":null,"previous_names":["danielvm-git/big-clipboard-manager"],"tags_count":null,"template":false,"template_full_name":null,"purl":"pkg:github/danielvm-git/big-clipboard-manager","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielvm-git%2Fbig-clipboard-manager","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielvm-git%2Fbig-clipboard-manager/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielvm-git%2Fbig-clipboard-manager/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielvm-git%2Fbig-clipboard-manager/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/danielvm-git","download_url":"https://codeload.github.com/danielvm-git/big-clipboard-manager/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/danielvm-git%2Fbig-clipboard-manager/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34266942,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-12T02:00:06.859Z","response_time":109,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-13T00:05:12.733Z","updated_at":"2026-06-13T00:05:13.478Z","avatar_url":"https://github.com/danielvm-git.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# BigClipboard\n\n[![Platform](https://img.shields.io/badge/Platform-macOS%2014.0%2B-blue.svg)](https://developer.apple.com/macos/)\n[![Language](https://img.shields.io/badge/Language-Swift%206.0-orange.svg)](https://developer.apple.com/swift/)\n[![License](https://img.shields.io/badge/License-MIT-yellow.svg)](#)\n[![Build](https://img.shields.io/badge/Build-Passing-green.svg)](#)\n\n\u003e A lightweight, local-first macOS menu bar utility that aggregates clipboard history and offers instant, toggleable plain-text stripping to streamline modern text editing and copying workflows.\n\n---\n\n## Overview\n\nBigClipboard is a native macOS application built with Swift 6.0 and SwiftUI that runs silently in the menu bar. It monitors the system pasteboard for copies, manages an in-memory history, persists history to a local JSON file, and provides a toggle to automatically strip text formatting (RTF, HTML, custom fonts) from newly copied items transparently.\n\n## Motivation\n\nRich-text clipboard contents often carry unwanted fonts, colors, and hyperlinks that disrupt document formats upon pasting. Manually converting text to plain text is tedious. BigClipboard solves this by intercepting clipboard events to transparently strip styling (under 5ms) while preserving a robust, searchable history of your clips.\n\n## Screenshots\n\n*(Placeholder: Include a mockup of the status bar dropdown menu and the premium SwiftUI settings pane)*\n![BigClipboard App Dropdown Menu](https://github.com/danielvm-git/big-clipboard-manager/raw/main/Assets/dropdown_preview.png)\n\n## Tech Stack \u0026 Architecture\n\n- **Language:** Swift 6.0\n- **UI Framework:** SwiftUI (MenuBarExtra + standard Settings scene)\n- **Deployment Target:** macOS 14.0+\n- **Concurrency:** Swift Concurrency (actors, `@MainActor`)\n- **Storage:** JSON serialization via `Codable` locally stored in `Application Support/com.danielvm.bigclipboard/history.json`, and `UserDefaults` for user settings.\n\n## Features\n\n- **Clipboard History Tracking:** High-performance background polling of `NSPasteboard.general` with duplicate prevention and history pruning.\n- **Plain Text Auto-Strip Mode:** When enabled, automatically strips formatting (RTF, HTML, etc.) from copied text on the fly.\n- **Ignored Applications Filter:** Exclude specific applications (e.g., password managers, IDEs) from being tracked.\n- **Clips Management:** Dedicated UI to search, preview, and delete saved clips with confirmations.\n- **Native \u0026 Lightweight:** 100% native Cocoa frameworks with zero third-party dependencies and minimal memory footprint.\n\n## Code Example\n\nHere is how BigClipboard reads the pasteboard, checks the originating app, and performs the auto-strip operation cleanly:\n\n```swift\n// Blacklist check using the originating bundle identifier\nif let bundleId = activeBundleId, ignoredAppBundleIds.contains(bundleId) {\n    JSONLogger.shared.info(\"ClipboardMonitor: Ignored copy from \\(bundleId)\")\n    return\n}\n\n// Check if there are rich formatting representations on the pasteboard\nlet richTypes: [NSPasteboard.PasteboardType] = [.rtf, .rtfd, .html, .multipleTextSelection]\nlet hasRichFormat = pasteboard.types?.contains { richTypes.contains($0) } ?? false\n\nif isAutoStripEnabled \u0026\u0026 hasRichFormat {\n    // Write only plain text string back to system clipboard\n    pasteboard.clearContents()\n    pasteboard.declareTypes([.string], owner: nil)\n    pasteboard.setString(text, forType: .string)\n    // Synchronize changeCount to avoid self-trigger loop on the next poll\n    lastChangeCount = pasteboard.changeCount\n}\n```\n\n## Prerequisites\n\n- **Xcode 15.0+** (Swift 6.0 compatible)\n- **macOS 14.0+**\n- **xcodegen** (Project generation tool)\n\n## Installation \u0026 Build\n\nTo set up the development environment and build the application locally:\n\n```bash\n# 1. Clone the repository\ngit clone https://github.com/danielvm-git/big-clipboard-manager.git\ncd big-clipboard-manager\n\n# 2. Run the environment setup (runs xcodegen to generate Xcode project)\n./scripts/setup.sh\n\n# 3. Build the application\nxcodebuild -project BigClipboard.xcodeproj -scheme BigClipboard build\n\n# 4. Launch the application\nopen build/Debug/BigClipboard.app\n```\n\n## Running Tests\n\nWe write headless unit tests using the modern Swift Testing framework. Run the tests using:\n\n```bash\nxcodebuild test -project BigClipboard.xcodeproj -scheme BigClipboard -only-testing BigClipboardTests\n```\n\n## Code Style\n\nThis project strictly adheres to the code guidelines detailed in [CONVENTIONS.md](file:///Users/danielvm/Developer/big-clipboard-manager/CONVENTIONS.md):\n- Keep files under 300 lines.\n- Keep functions under 20 lines.\n- Native Cocoa frameworks only (no external Swift Packages).\n- Thread-safe `@MainActor` clipboard interactions.\n\n## Observability\n\nMonitor application logs and run-time state:\n\n| Diagnostic | Command |\n|---|---|\n| **View logs** | `tail -f ~/Library/Application\\ Support/com.danielvm.bigclipboard/app.log` |\n| **Health check** | `pgrep BigClipboard \u0026\u0026 echo \"App is running\" || echo \"App is not running\"` |\n\n## Contributing\n\n1. Fork the repository.\n2. Create your feature branch (`git checkout -b feature/my-new-feature`).\n3. Commit your changes using Conventional Commits (`git commit -m 'feat: add new feature'`).\n4. Push to the branch (`git push origin feature/my-new-feature`).\n5. Open a Pull Request.\n\n## License\n\nThis project is licensed under the MIT License.\n\n## Credits\n\nBuilt with [bigpowers](https://github.com/danielvm-git/bigpowers).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanielvm-git%2Fbig-clipboard-manager","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdanielvm-git%2Fbig-clipboard-manager","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdanielvm-git%2Fbig-clipboard-manager/lists"}