{"id":44572619,"url":"https://github.com/jamesmontemagno/tiny-clips-mac","last_synced_at":"2026-03-10T08:06:19.149Z","repository":{"id":338311778,"uuid":"1157453851","full_name":"jamesmontemagno/tiny-clips-mac","owner":"jamesmontemagno","description":"A lightweight macOS menu bar app for capturing screenshots (PNG), video (MP4), and animated GIFs of a selected screen region.","archived":false,"fork":false,"pushed_at":"2026-02-18T22:07:12.000Z","size":3895,"stargazers_count":35,"open_issues_count":4,"forks_count":5,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-02-19T06:07:03.471Z","etag":null,"topics":["macos","swift","tiny-tools"],"latest_commit_sha":null,"homepage":"https://tinyclips.app","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/jamesmontemagno.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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":"2026-02-13T20:51:27.000Z","updated_at":"2026-02-19T01:32:25.000Z","dependencies_parsed_at":"2026-02-19T02:01:35.210Z","dependency_job_id":null,"html_url":"https://github.com/jamesmontemagno/tiny-clips-mac","commit_stats":null,"previous_names":["jamesmontemagno/tiny-clips-mac"],"tags_count":14,"template":false,"template_full_name":null,"purl":"pkg:github/jamesmontemagno/tiny-clips-mac","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamesmontemagno%2Ftiny-clips-mac","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamesmontemagno%2Ftiny-clips-mac/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamesmontemagno%2Ftiny-clips-mac/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamesmontemagno%2Ftiny-clips-mac/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jamesmontemagno","download_url":"https://codeload.github.com/jamesmontemagno/tiny-clips-mac/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jamesmontemagno%2Ftiny-clips-mac/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29639808,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-19T22:32:43.237Z","status":"online","status_checked_at":"2026-02-20T02:00:07.535Z","response_time":59,"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":["macos","swift","tiny-tools"],"created_at":"2026-02-14T03:30:20.516Z","updated_at":"2026-03-10T08:06:19.140Z","avatar_url":"https://github.com/jamesmontemagno.png","language":"Swift","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Tiny Clips for macOS\n\n[![Build](https://github.com/jamesmontemagno/tiny-clips-mac/actions/workflows/build.yml/badge.svg)](https://github.com/jamesmontemagno/tiny-clips-mac/actions/workflows/build.yml)\n[![Release](https://github.com/jamesmontemagno/tiny-clips-mac/actions/workflows/release.yml/badge.svg)](https://github.com/jamesmontemagno/tiny-clips-mac/actions/workflows/release.yml)\n[![GitHub release](https://img.shields.io/github/v/release/jamesmontemagno/tiny-clips-mac?style=flat-square)](https://github.com/jamesmontemagno/tiny-clips-mac/releases/latest)\n![macOS](https://img.shields.io/badge/macOS-15.0+-blue?style=flat-square\u0026logo=apple)\n![Swift](https://img.shields.io/badge/Swift-5.9-orange?style=flat-square\u0026logo=swift)\n[![License: MIT](https://img.shields.io/github/license/jamesmontemagno/tiny-clips-mac?style=flat-square)](LICENSE)\n\nA lightweight macOS menu bar app for capturing screenshots (PNG), video (MP4), and animated GIFs of a selected screen region.\n\n\n![tiny-clips-promo (1)](https://github.com/user-attachments/assets/0afc2c8a-a83b-4703-9873-b4fb0c315c06)\n\n\n## Features\n\n- **Screenshot** — Select a region and capture a PNG screenshot\n- **Video Recording** — Record a screen region to MP4 with H.264 encoding\n- **GIF Recording** — Record a screen region as an animated GIF\n- **Video Trimmer** — Built-in trim editor to cut the start/end before saving\n- **Menu Bar App** — Lives in the menu bar with no Dock icon\n- **Region Selection** — Drag to select any portion of any screen\n- **Auto-Updates** — Built-in Sparkle integration for seamless updates\n- **Configurable** — Save location, clipboard, Finder reveal, GIF quality, trimmer toggle\n\n## Requirements\n\n- macOS 15.0 (Sequoia) or later\n- Xcode 16.0 or later\n\n## Installation\n\n### Download\n\nDownload the latest release from the [Releases](https://github.com/jamesmontemagno/tiny-clips-mac/releases) page.\n\n### Build from Source\n\n1. Clone the repository:\n   ```bash\n   git clone https://github.com/jamesmontemagno/tiny-clips-mac.git\n   cd tiny-clips-mac\n   ```\n\n2. Open in Xcode:\n   ```bash\n   open TinyClips.xcodeproj\n   ```\n\n3. Add Sparkle package dependency (see [Sparkle Setup](#sparkle-setup))\n\n4. Build and run (⌘R)\n\n## Usage\n\n1. Click the camera icon in the menu bar\n2. Choose **Screenshot**, **Record Video**, or **Record GIF**\n3. For video/GIF, choose **Region**, **Screen**, or **Window** in the recording picker (and optional countdown)\n4. For region recordings, confirm audio/mic options in the floating **Record** panel\n5. Click the floating **Stop** button when done (or use ⌘.)\n\n### Keyboard Shortcuts (in menu)\n\n| Action | Shortcut |\n|--------|----------|\n| Screenshot | ⌃⌥⌘5 |\n| Record Video | ⌃⌥⌘6 |\n| Record GIF | ⌃⌥⌘7 |\n| Picker: Region | R |\n| Picker: Screen | S |\n| Picker: Window | W |\n| Picker: Cancel | Esc |\n| Stop Recording | ⌘. |\n| Settings | ⌘, |\n\n### Settings\n\n| Option | Description |\n|--------|-------------|\n| Save Directory | Where captures are saved (default: Desktop) |\n| Copy to Clipboard | Auto-copy captures to clipboard |\n| Show in Finder | Reveal saved file in Finder |\n| GIF Frame Rate | 5–30 fps (default: 10) |\n| GIF Max Width | 320–1920 px (default: 640) |\n| Video Frame Rate | 24, 30, or 60 fps |\n| Open Trimmer | Show trim editor after video recording |\n\n## Permissions\n\nTinyClips requires **Screen Recording** permission. On first launch, macOS will prompt you to grant access. After granting, restart the app.\n\n## Sparkle Setup\n\nSparkle must be added manually via Xcode:\n\n1. Open `TinyClips.xcodeproj` in Xcode\n2. Go to **File → Add Package Dependencies...**\n3. Enter URL: `https://github.com/sparkle-project/Sparkle`\n4. Select version rule: **Up to Next Major Version** from `2.8.1`\n5. Add the `Sparkle` framework to the `TinyClips` target\n\nSee [docs/sparkle-setup.md](docs/sparkle-setup.md) for full setup including key generation.\n\n## App Store Variant\n\nTo ship both a direct (Sparkle, non-sandbox) build and a Mac App Store (sandboxed, no Sparkle) build from one codebase, see [docs/app-store-variant-setup.md](docs/app-store-variant-setup.md).\n\n### Xcode Cloud\n\nThis project uses a hybrid CI/CD setup:\n\n- GitHub Actions for direct distribution build/release (`TinyClips`)\n- Xcode Cloud for Mac App Store build/distribution (`TinyClipsMAS`)\n\nFor App Store variant details and Xcode Cloud notes, see [docs/app-store-variant-setup.md](docs/app-store-variant-setup.md).\n\n## Architecture\n\n```\nScreenCaptureKit (SCStream / SCScreenshotManager)\n       │\n       ├── ScreenshotCapture → CGImageDestination → PNG\n       ├── VideoRecorder → AVAssetWriter → MP4\n       └── GifWriter → CGImageDestination → GIF\n```\n\n### Key Components\n\n| File | Purpose |\n|------|---------|\n| `TinyClipsApp.swift` | App entry, MenuBarExtra, CaptureManager |\n| `RegionSelector.swift` | Fullscreen NSWindow overlay for region selection |\n| `ScreenshotCapture.swift` | SCScreenshotManager → PNG |\n| `VideoRecorder.swift` | SCStream → AVAssetWriter → MP4 |\n| `GifWriter.swift` | SCStream → CGImageDestination → GIF |\n| `VideoTrimmerWindow.swift` | Post-recording trim editor for videos |\n| `CaptureSettings.swift` | Shared types + @AppStorage settings model |\n| `SaveService.swift` | File saving, clipboard, Finder, notifications |\n| `PermissionManager.swift` | Screen recording permission handling |\n| `SparkleController.swift` | Sparkle auto-update integration |\n\n## License\n\nMIT License. See [LICENSE](LICENSE) for details.\n\n## Contributing\n\nContributions are welcome! Please feel free to submit a [Pull Request](https://github.com/jamesmontemagno/tiny-clips-mac/pulls).\n\nFound a bug or have a feature request? [Open an issue](https://github.com/jamesmontemagno/tiny-clips-mac/issues/new).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjamesmontemagno%2Ftiny-clips-mac","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjamesmontemagno%2Ftiny-clips-mac","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjamesmontemagno%2Ftiny-clips-mac/lists"}