{"id":31375956,"url":"https://github.com/setrf/tempurai","last_synced_at":"2026-04-19T06:36:07.049Z","repository":{"id":315827183,"uuid":"1060956875","full_name":"setrf/tempurai","owner":"setrf","description":"TempurAI — Frictionless capture from anywhere to your LLMs. macOS menu bar capture surface to drag, paste, and organize context into collections, then Copy All to ChatGPT/Claude/etc.","archived":false,"fork":false,"pushed_at":"2025-09-21T01:46:52.000Z","size":1122,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-09-21T02:29:44.331Z","etag":null,"topics":["clipboard","drag-and-drop","llm","macos","menu-bar","productivity","swiftui"],"latest_commit_sha":null,"homepage":"https://github.com/setrf/tempurai/releases/tag/v0.1.0","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/setrf.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","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":null,"dco":null,"cla":null}},"created_at":"2025-09-21T00:06:20.000Z","updated_at":"2025-09-21T01:46:55.000Z","dependencies_parsed_at":"2025-09-21T05:26:57.196Z","dependency_job_id":null,"html_url":"https://github.com/setrf/tempurai","commit_stats":null,"previous_names":["setrf/tempurai"],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/setrf/tempurai","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/setrf%2Ftempurai","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/setrf%2Ftempurai/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/setrf%2Ftempurai/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/setrf%2Ftempurai/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/setrf","download_url":"https://codeload.github.com/setrf/tempurai/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/setrf%2Ftempurai/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":277318707,"owners_count":25798184,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-09-28T02:00:08.834Z","response_time":79,"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":["clipboard","drag-and-drop","llm","macos","menu-bar","productivity","swiftui"],"created_at":"2025-09-28T02:52:28.802Z","updated_at":"2025-09-28T02:52:34.378Z","avatar_url":"https://github.com/setrf.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# TempurAI\n\nFrictionless capture from anywhere to your LLMs.\n\nTempurAI is a macOS menu bar tool that removes the back-and-forth friction when moving context (text, screenshots, files) from PDFs, decks, websites, and other apps into web-based LLMs like ChatGPT. Think of it as “the capture surface” that IDEs like Cursor give you natively—now available system-wide for everything else you work with.\n\n- Always-available menu bar popover\n- Drag \u0026 drop anything (text, images, files)\n- Organize into lightweight “Collections” before sending\n- Copy everything in one go and paste into ChatGPT/Claude/etc.\n- Zero cloud dependency; everything stored locally\n\n---\n\n## Why TempurAI?\n\nLLMs are incredible once you get your context in. The problem is getting it in. Moving between PDF viewers, browsers, slide decks, and tools creates tedious copy/paste cycles and fragments your thought process. TempurAI compresses that workflow into one focused flow:\n\n1) Capture context fast (drag/drop or paste)\n2) Curate it once (reorder, prune)\n3) Send it to your LLM of choice in a single paste\n\nYou stay in flow. Your model gets better prompts. Everyone wins.\n\n---\n\n## Features\n\n- Menu Bar Popover\n  - Click the 🍣 icon to open the capture surface instantly.\n  - Prominent Close button to dismiss quickly.\n\n- Drag \u0026 Drop Capture\n  - Drop text, images, or files directly into the popover.\n  - Text files load as text; image files load as images.\n  - Mixed content supported.\n\n- Paste Box\n  - Stage text with ⌘V, then press “Save text” (or ⌘↩) to commit to the active collection.\n\n- Collections\n  - Create and switch between collections to group related context.\n  - Simple selection sheet with “Use Existing” or “Create New”.\n\n- Quick Reorder\n  - Hover an item to reveal Up/Down buttons for precise ordering.\n  - Items at the top/bottom intelligently disable movement in those directions.\n\n- Copy All\n  - Consolidates the active collection into one paste ready for ChatGPT/Claude/etc.\n  - Images currently appear in the combined clipboard as placeholders like “[Image 1]” to preserve order and context.\n\n- Local and Private\n  - Your data stays on-device (UserDefaults with JSON encoding for assets).\n  - No network calls or accounts required.\n\n---\n\n## Install \u0026 Run\n\nRequirements:\n- macOS 13+ (Ventura or newer recommended)\n- Swift toolchain (Xcode 15+ recommended)\n\nBuild and run:\n- Using SwiftPM:\n  - `swift run`\n- Using Xcode:\n  - Open `Package.swift` in Xcode and run the `tempur` target.\n\nYou’ll see a 🍣 icon appear in the macOS menu bar. Click it to open the TempurAI popover.\n\n## Building for Release\n\nTo build a signed and notarized DMG for distribution:\n\n1. **Set up your Apple Developer credentials** (as environment variables):\n   ```bash\n   export NOTARIZATION_ACCOUNT=\"your-apple-id@example.com\"\n   export NOTARIZATION_PASSWORD=\"your-app-specific-password\"\n   export APPLE_TEAM_ID=\"your-team-id\"\n   export DEVELOPER_ID_APPLICATION=\"your-cert-hash\"\n   ```\n\n2. **Run the build script**:\n   ```bash\n   ./build-release.sh\n   ```\n\n3. **Find your DMG**:\n   The signed and notarized DMG will be created in the `dist/` directory.\n\n**Security Note**: Never commit your Apple Developer credentials to version control. The build script uses environment variables to keep your credentials secure and out of the repository.\n\n---\n\n## Usage\n\n- Open:\n  - Click the 🍣 menu bar icon to toggle the popover.\n\n- Choose a Collection:\n  - First run will ask you to create or pick a collection.\n  - Switch collections later via the “Collections” header menu.\n\n- Capture:\n  - Drag \u0026 drop text, images, or files into the “Collect to this board” card.\n  - Or paste text into the editor and press “Save text” (or ⌘↩).\n\n- Curate:\n  - Hover saved items and use ↑/↓ to reorder.\n  - Delete items via the trash button.\n  - “Clear” removes all items in the active collection.\n\n- Send:\n  - Use “Copy All” to place everything (in order) onto your clipboard.\n  - Paste into ChatGPT/Claude or any LLM UI.\n\n- Close:\n  - Click the Close button in the header to dismiss the popover.\n\nTips:\n- Consider one collection per task (e.g., “Quarterly Review”, “Vendor Research”, “Paper Summary”).\n- Reorder strategically—front-load the most important context to guide the model.\n\n---\n\n## Keyboard \u0026 Interactions\n\n- Paste staged text: ⌘V (into the text box)\n- Save staged text: ⌘↩\n- Hover actions on items: Trash, Move Up, Move Down\n- Close the popover: Close button in header\n\n---\n\n## Roadmap\n\n- One-click send to ChatGPT/Claude (open model UI, auto-focus, paste)\n- Global hotkey to toggle the popover\n- Browser Share Extension (Safari/Chrome) and Services integration\n- OCR for PDFs/screenshots to extract text\n- Rich “Copy All” with Markdown, image captions, and source attribution\n- Multi-select operations (batch delete, batch move)\n- Encrypted sync across devices\n- Smarter deduplication and snippet tagging\n\nHave a feature request? Please open an issue.\n\n---\n\n## Architecture Overview\n\nHigh level:\n- Status Bar + Popover: Always-available capture surface\n- SwiftUI views render the UI and handle user interactions\n- ObservableObject store manages state and persistence\n\nKey components:\n- AppDelegate + StatusBarController\n  - Creates the `NSStatusItem` (🍣) and shows an `NSPopover` with the SwiftUI content.\n  - Handles Close requests via a NotificationCenter event.\n\n- CollectorView (SwiftUI)\n  - Main UI: header, capture card, saved items card, onboarding.\n  - Presents collection management sheet.\n\n- CollectionStore (ObservableObject)\n  - Manages `collections`, `activeCollectionID`, and `items`.\n  - Persists via `UserDefaults` (keys: `tempur.collections`, `tempur.activeCollectionID`).\n  - Encodes images as PNG, stored alongside text content.\n\n- Models\n  - `ScrapCollection`: id, name, createdAt, items.\n  - `CollectedItem`: id, timestamp, content.\n  - `CollectedContent`: `.text(String)` | `.image(NSImage)`\n\n- Notable Views\n  - `DropZoneView`: animated drop target for files/images/text.\n  - `PasteBoxView`: staged text capture with save action.\n  - `CollectedItemsList`, `CollectedItemRow`: list and item UI, reordering controls.\n  - `CollectionSelectionView`: sheet to switch/create collections.\n\n---\n\n## Privacy\n\n- Local-first by design. No network calls.\n- Data persists on-device in UserDefaults as JSON blobs (images stored as PNG).\n- You can delete items or clear a collection at any time.\n\n---\n\n## Troubleshooting\n\n- I don’t see the 🍣 icon:\n  - Ensure the app built successfully and is running.\n  - macOS may group menu extras—adjust your menu bar items or restart the app.\n\n- Drag \u0026 drop isn’t doing anything:\n  - Confirm you’re dropping onto the highlighted drop zone.\n  - Try a simple text file or image first to sanity-check.\n\n- Reordering isn’t reflected:\n  - You must hover the item to reveal the up/down controls; items at the top/bottom can’t move past boundaries.\n  - Use “Copy All” after reordering; the order is preserved in the clipboard.\n\n- Copy All doesn’t include image pixels:\n  - Current “Copy All” consolidates text and uses `[Image N]` placeholders for images to preserve context and order. Full rich content export is on the roadmap.\n\n---\n\n## Contributing\n\n- Clone the repo, run with `swift run`.\n- Submit issues with clear reproduction steps and environment details.\n- PRs welcome—please keep changes focused and include rationale.\n\n---\n\n## License\n\nMIT License\n\nCopyright (c) 2025 setrf\n\nThis project is licensed under the MIT License. See LICENSE for details.\n## Screenshots (Optional)\n\n- Collections sheet with selection and create-new\n- Capture card with drop zone and paste box\n- Saved items with hover controls (reorder, delete)\n\nAdd screenshots to showcase real workflows (PDF + web article + deck → “Copy All” → paste into ChatGPT).\n\n---\n\n## Credits\n\nInspired by the ergonomics of IDE-integrated LLMs (e.g., Cursor) and designed to bring that “frictionless context handoff” to the rest of your desktop workflow.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsetrf%2Ftempurai","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsetrf%2Ftempurai","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsetrf%2Ftempurai/lists"}