{"id":47302211,"url":"https://github.com/sane-apps/SaneClick","last_synced_at":"2026-03-31T09:00:46.535Z","repository":{"id":334549793,"uuid":"1141090149","full_name":"sane-apps/SaneClick","owner":"sane-apps","description":"Finder context menu automation for macOS. Run scripts on selected files with a right-click.","archived":false,"fork":false,"pushed_at":"2026-03-29T21:15:18.000Z","size":15567,"stargazers_count":6,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2026-03-29T22:27:20.598Z","etag":null,"topics":["automation","context-menu","finder-extension","macos","macos-app","open-source","right-click","scripting","swift","swiftui"],"latest_commit_sha":null,"homepage":"https://saneclick.com","language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/sane-apps.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":"SECURITY.md","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},"funding":{"github":"MrSaneApps"}},"created_at":"2026-01-24T08:17:56.000Z","updated_at":"2026-03-29T21:15:20.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/sane-apps/SaneClick","commit_stats":null,"previous_names":["sane-apps/sanescript","sane-apps/saneclick"],"tags_count":6,"template":false,"template_full_name":null,"purl":"pkg:github/sane-apps/SaneClick","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sane-apps%2FSaneClick","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sane-apps%2FSaneClick/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sane-apps%2FSaneClick/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sane-apps%2FSaneClick/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sane-apps","download_url":"https://codeload.github.com/sane-apps/SaneClick/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sane-apps%2FSaneClick/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31228492,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-03-31T08:35:14.124Z","status":"ssl_error","status_checked_at":"2026-03-31T08:34:00.887Z","response_time":111,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"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":["automation","context-menu","finder-extension","macos","macos-app","open-source","right-click","scripting","swift","swiftui"],"created_at":"2026-03-17T05:00:23.917Z","updated_at":"2026-03-31T09:00:46.523Z","avatar_url":"https://github.com/sane-apps.png","language":"Swift","funding_links":["https://github.com/sponsors/MrSaneApps"],"categories":["Finder"],"sub_categories":["Text"],"readme":"# SaneClick\n\n\u003e 50+ ready-to-use actions for your Finder right-click menu\n\n[![GitHub stars](https://img.shields.io/github/stars/sane-apps/SaneClick?style=flat-square)](https://github.com/sane-apps/SaneClick/stargazers)\n[![License: PolyForm Shield](https://img.shields.io/badge/License-PolyForm%20Shield-blue.svg)](LICENSE)\n[![Release](https://img.shields.io/github/v/release/sane-apps/SaneClick)](https://github.com/sane-apps/SaneClick/releases)\n[![macOS 14+](https://img.shields.io/badge/macOS-14%2B-brightgreen)](https://www.apple.com/macos)\n[![Listed on awesome-macos](https://img.shields.io/badge/Listed%20on-open--source--mac--os--apps%20(40k%E2%98%85)-black)](https://github.com/serhii-londar/open-source-mac-os-apps)\n\n\u003e **⭐ Star this repo if it's useful!** · **[💰 Buy for $6.99](https://saneclick.com)** · Keeps development alive\n\n![SaneClick Main Window](docs/screenshots/main-window.png)\n\n**🔒 No spying · 💵 No subscription · 🛠️ Actively maintained**\n\n---\n\n## The Problem\n\nEvery time you right-click in Finder, you're stuck with Apple's limited context menu. Want to convert an image? Open in Terminal? Run a quick script? You have to leave Finder, open another app, navigate back to your file, and do it manually.\n\n### Why Can't You Fix It Yourself?\n\nmacOS has Services and Folder Actions, but they require Automator knowledge or AppleScript expertise. Most people give up before they start.\n\n### Why Alternatives Fail You\n\nThe \"easy\" solutions cost $10-15, require subscriptions, or haven't been updated since 2019. Some are abandonware. Others are overkill.\n\n---\n\n## The Sane Solution\n\nSaneClick gives you **50+ ready-to-use actions** — no scripting required. Browse by category, toggle on what you need, done.\n\n- **Curated Library**: 50+ pre-built actions organized by category\n- **One-Click Install**: Toggle actions on/off instantly\n- **Smart Filtering**: Actions appear only for matching file types\n- **Custom Scripts**: Power users can write Bash, AppleScript, or Automator workflows\n- **Categories**: Essentials, Files \u0026 Folders, Images \u0026 Media, Coding, Advanced\n\n**100% local. We never see your data.**\n\n\u003e *I wanted to make it $5, but processing fees and taxes were... insane. — Mr. Sane*\n\n---\n\n## Features\n\n| Feature | Description |\n|---------|-------------|\n| **50+ Pre-built Actions** | Copy paths, convert images, open in Terminal, and more |\n| **5 Categories** | Essentials, Files \u0026 Folders, Images \u0026 Media, Coding, Advanced |\n| **Smart Filtering** | Actions appear only for matching file types |\n| **Selection Count Filtering** | Show actions only for single files or multi-select (min/max) |\n| **Extension Match Modes** | \"Any file matches\" vs \"All files must match\" |\n| **One-Click Install** | Toggle actions on/off instantly |\n| **Custom Scripts** | Write Bash, AppleScript, or Automator workflows |\n| **Test Before Save** | Run scripts on real files with output preview before committing |\n| **Import/Export** | Share scripts as JSON (skip duplicates, update existing, or replace all) |\n| **Menu Bar Quick Access** | Status bar icon for quick settings, Finder restart, and updates |\n| **Extension Status Monitor** | Color-coded status (green/orange/red) with one-click Finder restart |\n| **App Visibility** | Show/hide menu bar icon and Dock icon independently |\n\n---\n\n## Requirements\n\n- macOS 14.0+\n- Apple Silicon (arm64) only\n- Xcode 16.0+ (for building from source)\n- XcodeGen (project generation; SaneMaster runs it for you)\n\n---\n\n## Installation\n\n### Download\n\n[Buy SaneClick](https://saneclick.com) — Signed, notarized, ready to use. Supports sustainable development.\n\n### Build from Source\n\n**Building from source?** Consider [buying the app](https://saneclick.com) to support continued development.\n\n```bash\n# Clone the repository\ngit clone https://github.com/sane-apps/SaneClick.git\ncd SaneClick\n\n# Build + test (preferred)\n./scripts/SaneMaster.rb verify\n\n# Launch\n./scripts/SaneMaster.rb launch\n```\nSaneMaster runs XcodeGen when needed; only run `xcodegen generate` manually if you add files and want to refresh immediately.\n\n### First Launch\n\nOn first launch, SaneClick offers curated starter packs by category. Pick the ones that match your workflow and install scripts with one click. Add more anytime from the library.\n\n### Enable the Extension\n\n1. Open SaneClick\n2. Go to **System Settings \u003e Privacy \u0026 Security \u003e Extensions \u003e Finder**\n3. Enable **SaneClick**\n\n### Troubleshooting\n\nCheck extension status in **Settings \u003e General**:\n- **Green** = Active and working\n- **Orange** = Enabled but Finder needs restart (use the \"Restart Finder\" button)\n- **Red** = Disabled — enable in System Settings\n\n---\n\n## Usage\n\n1. **Add Scripts**: Click the + button and choose \"New Script\"\n2. **Configure**: Set name, type (Bash/AppleScript/Automator), content, icon, and file filters\n3. **Test**: Use the Test button to select real files and preview output/errors before saving\n4. **Organize**: Create custom categories and assign scripts to groups\n5. **Use**: Right-click files in Finder to see your scripts\n6. **Notifications**: Toggle action completion confirmations in Settings\n\n### Script Variables\n\n| Type | Variables |\n|------|-----------|\n| **Bash** | `$1`, `$2`, etc. for file paths, or `$@` for all |\n| **AppleScript** | `item 1 of argv` to access paths |\n| **Automator** | File paths via standard input |\n\n---\n\n## Architecture\n\nSee [ARCHITECTURE.md](ARCHITECTURE.md) for the full system overview and state machines.\n\n```\nSaneClick/\n├── SaneClick/              # Host app (settings UI)\n│   ├── Models/              # Script, Category models\n│   ├── Services/            # ScriptExecutor, ScriptStore\n│   ├── Views/               # SwiftUI views\n│   └── Theme/               # Brand colors\n├── SaneClickExtension/     # Finder Sync Extension\n│   └── FinderSync.swift     # Context menu provider\n├── Tests/                   # Unit tests\n└── docs/                    # Website\n```\n\n---\n\n## Documentation\n\n| Document | Purpose |\n|----------|---------|\n| [README.md](README.md) | Product overview and doc map |\n| [ARCHITECTURE.md](ARCHITECTURE.md) | System design and state machines |\n| [DEVELOPMENT.md](DEVELOPMENT.md) | Build, test, and workflow SOP |\n| [PRIVACY.md](PRIVACY.md) | Privacy practices and limited network behavior |\n| [SECURITY.md](SECURITY.md) | Security policy and vulnerability reporting |\n| [`docs/`](docs/) | Public website and guide pages |\n\n---\n\n## Our Promise\n\n\u003e *\"For God has not given us a spirit of fear, but of power and of love and of a sound mind.\"*\n\u003e — 2 Timothy 1:7\n\n| Pillar | Meaning |\n|--------|---------|\n| **⚡ Power** | Your files stay on your device. No cloud account, no personal-content upload. |\n| **❤️ Love** | Built to serve you. No dark patterns or manipulation. |\n| **🧠 Sound Mind** | Calm, focused design. Does one thing well. |\n\n---\n\n## Contributing\n\nBefore opening a PR:\n1. **[⭐ Star the repo](https://github.com/sane-apps/SaneClick)** (if you haven't already)\n2. Read [CONTRIBUTING.md](CONTRIBUTING.md)\n3. Open an issue first to discuss major changes\n\n---\n\n## Support\n\n**[⭐ Star the repo](https://github.com/sane-apps/SaneClick)** if SaneClick helps you. Stars help others discover quality software.\n\n**Cloning without starring?** For real bro? Gimme that star!\n\n- 🐛 [Report a Bug](https://github.com/sane-apps/SaneClick/issues/new?template=bug_report.md)\n- 💡 [Request a Feature](https://github.com/sane-apps/SaneClick/issues/new?template=feature_request.md)\n\n---\n\n## License\n\n[PolyForm Shield 1.0.0](https://polyformproject.org/licenses/shield/1.0.0) — free for any use except building a competing product. See [LICENSE](LICENSE) for details.\n\n---\n\nPart of the [Sane Apps](https://saneapps.com) family.\n\n## Third-Party Notices\n\nThird-party open-source attributions are documented in [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md).\n\n\u003c!-- SANEAPPS_AI_CONTRIB_START --\u003e\n### Become a Contributor (Even if You Don't Code)\n\nAre you tired of waiting on the dev to get around to fixing your problem?  \nDo you have a great idea that could help everyone in the community, but think you can't do anything about it because you're not a coder?\n\nGood news: you actually can.\n\nCopy and paste this into Claude or Codex, then describe your bug or idea:\n\n```text\nI want to contribute to this repo, but I'm not a coder.\n\nRepository:\nhttps://github.com/sane-apps/SaneClick\n\nBug or idea:\n[Describe your bug or idea here in plain English]\n\nPlease do this for me:\n1) Understand and reproduce the issue (or understand the feature request).\n2) Make the smallest safe fix.\n3) Open a pull request to https://github.com/sane-apps/SaneClick\n4) Give me the pull request link.\n5) Open a GitHub issue in https://github.com/sane-apps/SaneClick/issues/new?template=bug_report.md that includes:\n   - the pull request link\n   - a short summary of what changed and why\n6) Also give me the exact issue link.\n\nImportant:\n- Keep it focused on this one issue/idea.\n- Do not make unrelated changes.\n```\n\nIf needed, you can also just email the pull request link to hi@saneapps.com.\n\nI review and test every pull request before merge.\n\nIf your PR is merged, I will publicly give you credit, and you'll have the satisfaction of knowing you helped ship a fix for everyone.\n\u003c!-- SANEAPPS_AI_CONTRIB_END --\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsane-apps%2FSaneClick","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsane-apps%2FSaneClick","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsane-apps%2FSaneClick/lists"}