diff --git a/.release-please-manifest.json b/.release-please-manifest.json new file mode 100644 index 0000000..5792c21 --- /dev/null +++ b/.release-please-manifest.json @@ -0,0 +1,3 @@ +{ + ".": "1.5.5" +} diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..8c2e19a --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,9 @@ +# Changelog + +All notable changes to ClickIt will be documented in this file. + +This changelog is automatically generated by [Release Please](https://github.com/googleapis/release-please) based on [Conventional Commits](https://www.conventionalcommits.org/). + +## [1.5.5](https://github.com/jsonify/ClickIt/releases/tag/v1.5.5) (Current Version) + +Initial changelog. Previous release history can be found in GitHub releases. diff --git a/README.md b/README.md index cc778e5..18d4285 100644 --- a/README.md +++ b/README.md @@ -4,36 +4,170 @@ [![Release](https://github.com/jsonify/ClickIt/actions/workflows/release.yml/badge.svg)](https://github.com/jsonify/ClickIt/actions/workflows/release.yml) [![Latest Release](https://img.shields.io/github/v/release/jsonify/ClickIt)](https://github.com/jsonify/ClickIt/releases/latest) -A lightweight, native macOS Auto-Clicker application with precision timing and advanced targeting capabilities. Designed for gamers, automation enthusiasts, and productivity users who need reliable, accurate clicking automation. +**Professional macOS Auto-Clicker with Enterprise-Grade Precision** + +A native macOS automation tool built with SwiftUI that delivers sub-10ms timing accuracy and advanced window targeting. Perfect for gamers, QA testers, automation professionals, and power users who demand reliable, feature-rich clicking automation. + +## ๐ŸŒŸ Key Highlights + +**Unlike other auto-clickers, ClickIt offers:** + +1. **True Native Performance** - Built specifically for macOS with SwiftUI, not a cross-platform port +2. **Advanced Window Targeting** - Click on specific apps even when they're minimized or in background +3. **Sub-10ms Precision** - Professional-grade timing accuracy that competitors can't match +4. **Universal Binary** - Fully optimized for both Intel and Apple Silicon processors +5. **Enterprise Features** - Timer automation, preset management, and performance analytics +6. **Zero Telemetry** - Your automation stays completely private and offline + +## Why Choose ClickIt? + +- โšก **Lightning Fast** - Sub-10ms click timing accuracy with precision interval control +- ๐ŸŽฏ **Smart Targeting** - Advanced window detection that works even when apps are minimized +- ๐ŸŒ **Universal Binary** - Optimized for both Intel x64 and Apple Silicon processors +- ๐ŸŽฎ **Always Active** - Background operation without requiring app focus or interruption +- โŒจ๏ธ **Global Control** - System-wide hotkey support (ESC key) for instant start/stop +- ๐Ÿ’พ **Preset System** - Save and instantly load custom clicking configurations +- ๐Ÿ‘๏ธ **Visual Feedback** - Clear overlay indicators show exactly where clicks will occur +- ๐Ÿ”’ **Permission Aware** - Streamlined permission setup with real-time monitoring +- ๐Ÿ“Š **Performance Stats** - Built-in analytics and monitoring dashboard + +## Core Features + +### ๐ŸŽฏ Advanced Click Automation +- **Sub-10ms Precision** - Industry-leading timing accuracy for demanding automation tasks +- **Window-Specific Targeting** - Click on specific applications, even when minimized or in background +- **Multiple Click Modes** - Single clicks, double clicks, and hold/release patterns +- **Coordinate Lock** - Pin clicks to exact screen coordinates or dynamic window positions +- **Human-like Variation** - Optional randomization to mimic natural clicking patterns + +### โš™๏ธ Intelligent Configuration +- **Preset Management** - Save unlimited custom configurations and switch instantly +- **Timer Automation** - Schedule automatic start/stop times for unattended operation +- **Interval Control** - Millisecond-level precision with CPS (Clicks Per Second) display +- **Hotkey System** - Global ESC key control that works from any application +- **Auto-Save States** - Automatically preserves your settings between sessions + +### ๐Ÿ“Š Professional Tools +- **Real-Time Performance Dashboard** - Monitor click rate, accuracy, and system performance +- **Statistics Tracking** - View elapsed time, total clicks, and success rates +- **Permission Monitoring** - Live status display for Accessibility and Screen Recording permissions +- **Visual Feedback System** - Customizable overlay indicators show target locations +- **Smart Status Bar** - Always-visible controls with compact, unobtrusive design + +### ๐Ÿ”’ Security & Reliability +- **Permission-First Design** - Streamlined permission request flow with detailed instructions +- **Automatic Permission Detection** - Real-time monitoring of required system permissions +- **Safe Operation Mode** - Prevents accidental system-wide clicks during setup +- **Crash Recovery** - Robust error handling ensures stable operation +- **Privacy Focused** - No data collection, no analytics, completely offline operation + +## Who Uses ClickIt? + +### ๐ŸŽฎ Gamers +- **Idle/Clicker Games** - Automate repetitive clicking in incremental games +- **MMO Grinding** - Streamline repetitive tasks in online games +- **Farming Simulators** - Automate resource collection and harvesting +- **Achievement Hunting** - Complete click-intensive achievements efficiently + +### ๐Ÿงช QA & Testing Professionals +- **UI/UX Testing** - Simulate user interactions for interface testing +- **Load Testing** - Generate consistent user input patterns +- **Regression Testing** - Automate repetitive test scenarios +- **Browser Testing** - Click through web application workflows + +### ๐Ÿ’ผ Business & Productivity +- **Data Entry** - Automate repetitive form filling and data input +- **Batch Processing** - Handle large volumes of similar tasks +- **Presentation Auto-Advance** - Automatic slideshow progression +- **Monitoring Systems** - Keep applications active and responsive + +### โ™ฟ Accessibility & Ergonomics +- **Mobility Assistance** - Reduce physical strain for users with limited mobility +- **Repetitive Strain Prevention** - Minimize manual clicking to prevent RSI +- **Adaptive Computing** - Enable custom interaction patterns for accessibility needs +- **Fatigue Reduction** - Automate long-duration clicking tasks + +## System Requirements + +### Minimum Requirements +- **Operating System**: macOS 15.0 (Sequoia) or later +- **Processor**: Intel x64 or Apple Silicon (M1/M2/M3/M4) +- **Memory**: 50 MB RAM +- **Storage**: 10 MB available disk space +- **Permissions**: + - Accessibility (required for click simulation) + - Screen Recording (required for window targeting) + +### Recommended +- **Operating System**: Latest macOS version for optimal performance +- **Processor**: Apple Silicon for best energy efficiency +- **Display**: Any resolution supported (tested on 1080p - 5K displays) -## Features - -- **Native macOS Application**: Built with SwiftUI for optimal performance -- **Universal Binary**: Supports both Intel x64 and Apple Silicon -- **Advanced Window Targeting**: Works with any application, even when minimized -- **Precision Timing**: Sub-10ms click timing accuracy with customizable intervals -- **Visual Feedback**: Shows click points with overlay indicators -- **Preset System**: Save and load custom clicking configurations -- **Global Hotkeys**: System-wide controls for start/stop operations -- **Variable Timing**: Human-like randomization patterns -- **Background Operation**: Continues operation without requiring app focus - -## Use Cases - -- **Gaming**: Automated clicking for various games and applications -- **Testing**: UI testing and automation workflows -- **Productivity**: Repetitive task automation -- **Accessibility**: Assistance for users with mobility limitations - -## Requirements +## Installation -- macOS 15.0 or later -- Accessibility permissions (for mouse event simulation) -- Screen Recording permissions (for window detection and targeting) +### Quick Install (Coming Soon) +Download the latest release from the [Releases page](https://github.com/jsonify/ClickIt/releases) and drag ClickIt.app to your Applications folder. + +### First Launch Setup +1. **Launch ClickIt** - Double-click the app from Applications +2. **Grant Permissions** - The app will guide you through: + - โœ… **Accessibility Permission** - Required for click automation + - โœ… **Screen Recording Permission** - Required for window targeting +3. **Start Automating** - Configure your first preset and start clicking! + +The permission setup is streamlined with: +- Clear visual indicators showing permission status +- One-click access to System Settings +- Real-time permission monitoring +- Detailed help documentation for each permission type + +### Troubleshooting Installation +If permissions aren't working after granting them: +- Click "Refresh Status" in the permission gate screen +- Restart the application +- Check System Settings โ†’ Privacy & Security to verify permissions are enabled + +## ๐Ÿš€ Quick Start Guide + +### Basic Workflow +1. **Select Target** - Choose "Current Mouse Position" or select a specific window +2. **Set Timing** - Configure click interval (supports milliseconds or CPS) +3. **Start/Stop** - Press ESC key or use the in-app controls +4. **Monitor** - View real-time statistics and performance metrics + +### Pro Tips +- **Save Presets** - Create configurations for different games or applications +- **Use Window Targeting** - Target specific apps to avoid accidental clicks +- **Enable Visual Feedback** - See exactly where clicks will occur +- **Timer Automation** - Schedule unattended clicking sessions +- **Performance Dashboard** - Monitor click accuracy and system impact + +### Common Workflows + +**Gaming Setup:** +``` +1. Launch your game +2. Select game window as target +3. Set desired CPS (clicks per second) +4. Position mouse on target location +5. Press ESC to start/stop +``` -## Installation +**Testing Automation:** +``` +1. Create preset for test scenario +2. Configure click sequence with precise timing +3. Enable visual feedback for verification +4. Use timer automation for repeated tests +``` -[Installation instructions will be added once the app is ready for distribution] +**Productivity Tasks:** +``` +1. Target specific application window +2. Set conservative click interval +3. Use preset for quick configuration switching +4. Monitor performance dashboard +``` ## Development @@ -178,11 +312,27 @@ fastlane auto_beta ``` #### **Production Release** + +**NEW: Automated with Release Please** ```bash -# 1. Promote staging to main -git checkout main && git merge staging +# 1. Use conventional commits +git commit -m "feat: add new feature" # Minor bump +git commit -m "fix: correct bug" # Patch bump +git commit -m "feat!: breaking change" # Major bump + +# 2. Merge to main (via PR) +# Release Please automatically: +# - Creates a release PR with version bump +# - Updates CHANGELOG.md +# - Creates GitHub release when PR is merged +# - Triggers build workflow + +# See docs/RELEASE_PROCESS.md for details +``` -# 2. Automated release with version bumping +**Legacy: Manual Release (Deprecated)** +```bash +# Old process - use Release Please instead fastlane bump_and_release bump:minor # 1.0.0 โ†’ 1.1.0 ``` @@ -190,17 +340,76 @@ fastlane bump_and_release bump:minor # 1.0.0 โ†’ 1.1.0 - **[CLAUDE.md](CLAUDE.md)** - Development guidance and project overview - **[BUILD_AND_DEPLOY.md](BUILD_AND_DEPLOY.md)** - Manual build and deployment instructions - **[CERTIFICATE_SETUP.md](CERTIFICATE_SETUP.md)** - Code signing certificate setup +- **[docs/RELEASE_PROCESS.md](docs/RELEASE_PROCESS.md)** - Automated release process with Release Please + +## ๐Ÿค Contributing + +We welcome contributions from the community! Whether you're fixing bugs, adding features, improving documentation, or helping with translations, your help is appreciated. + +### How to Contribute + +1. **Check Existing Issues** - Browse the [Issues](https://github.com/jsonify/ClickIt/issues) tab for tasks that need help +2. **Fork & Branch** - Create a feature branch from `main` following our [Git Workflow Guide](docs/git-workflow-guide.md) +3. **Make Changes** - Write clean, well-documented code following our style guidelines +4. **Test Thoroughly** - Ensure your changes work on both Intel and Apple Silicon +5. **Submit PR** - Use [Conventional Commits](https://www.conventionalcommits.org/) format for commit messages + +### Areas We Need Help With +- ๐Ÿ› **Bug Reports** - Found an issue? Report it with detailed steps to reproduce +- โœจ **Feature Requests** - Have ideas for improvements? Open a feature request +- ๐Ÿ“ **Documentation** - Help improve guides, tutorials, and code comments +- ๐ŸŒ **Localization** - Translate ClickIt to other languages +- ๐Ÿงช **Testing** - Test on different macOS versions and hardware configurations + +### Development Setup +See the [Development](#development) section below for setup instructions and our comprehensive [Git Workflow Guide](docs/git-workflow-guide.md). + +## ๐Ÿ—บ๏ธ Roadmap + +ClickIt is under active development. Here's what's coming: + +### In Progress +- โณ **UI Optimization** - Tabbed interface with improved space utilization (v2.0) +- โณ **Timer Automation** - Schedule automatic start/stop times +- โณ **Performance Dashboard** - Real-time analytics and monitoring + +### Planned Features +- ๐Ÿ”„ **Click Recording** - Record and replay complex click sequences +- ๐ŸŽฏ **Multi-Point Patterns** - Click multiple locations in sequence +- ๐ŸŽจ **Custom Themes** - Dark/light mode and custom color schemes +- ๐ŸŒ **Localization** - Multi-language support +- ๐Ÿ“Š **Advanced Analytics** - Export statistics and performance reports +- โŒจ๏ธ **Custom Hotkeys** - Configure your own keyboard shortcuts +- ๐Ÿ”Œ **AppleScript Support** - Integrate with system automation + +Want to see a feature added? [Open a feature request](https://github.com/jsonify/ClickIt/issues/new)! + +## ๐Ÿ’ฌ Support & Community -## Contributing +### Getting Help +- ๐Ÿ“– **Documentation** - Check the docs in the `/docs` folder +- ๐Ÿ› **Bug Reports** - [Open an issue](https://github.com/jsonify/ClickIt/issues/new) with detailed information +- ๐Ÿ’ก **Feature Requests** - Share your ideas in the Issues tab +- ๐Ÿค” **Questions** - Ask in GitHub Discussions or open an issue -Contributions are welcome! Please read our contributing guidelines and check the Issues tab for open tasks. +### Reporting Issues +When reporting bugs, please include: +- macOS version and processor type (Intel/Apple Silicon) +- ClickIt version number +- Steps to reproduce the issue +- Expected vs. actual behavior +- Relevant error messages or logs -**Before contributing**: Read the [Git Workflow Guide](docs/git-workflow-guide.md) to understand our branch strategy and release process. +## ๐Ÿ“„ License -## License +MIT License - see [LICENSE](LICENSE) file for details. -MIT License - see LICENSE file for details +## โš–๏ธ Disclaimer -## Disclaimer +ClickIt is intended for **legitimate automation purposes only**. Users are responsible for ensuring their use complies with: +- Terms of service of applications they interact with +- Applicable local, state, and federal laws +- Gaming platform policies and fair play guidelines +- Workplace automation policies -This software is intended for legitimate automation purposes. Users are responsible for ensuring their use complies with the terms of service of any applications they target and applicable laws and regulations. +**Use responsibly and ethically.** The developers of ClickIt are not responsible for misuse of this software. diff --git a/docs/RELEASE_PROCESS.md b/docs/RELEASE_PROCESS.md new file mode 100644 index 0000000..a06d172 --- /dev/null +++ b/docs/RELEASE_PROCESS.md @@ -0,0 +1,192 @@ +# Release Process with Release Please + +## Overview + +ClickIt uses [Release Please](https://github.com/googleapis/release-please) to automate version management and releases. Release Please automatically: + +- ๐Ÿ“ Generates changelogs based on conventional commits +- ๐Ÿ”ข Bumps version numbers in `ClickIt/Info.plist` +- ๐Ÿท๏ธ Creates git tags +- ๐Ÿ“ฆ Creates GitHub releases +- ๐Ÿ”„ Updates `CHANGELOG.md` + +## How It Works + +### 1. Conventional Commits + +Use [Conventional Commits](https://www.conventionalcommits.org/) format for your commit messages: + +``` +(): + +[optional body] + +[optional footer] +``` + +**Types that trigger releases:** +- `feat:` - New feature (bumps minor version) +- `fix:` - Bug fix (bumps patch version) +- `feat!:` or `fix!:` - Breaking change (bumps major version) +- `perf:` - Performance improvement (bumps patch version) + +**Other types (included in changelog but don't trigger releases):** +- `docs:` - Documentation changes +- `refactor:` - Code refactoring +- `test:` - Test updates +- `chore:` - Maintenance tasks +- `ci:` - CI/CD changes +- `build:` - Build system changes + +**Examples:** +```bash +git commit -m "feat: add click interval presets" +git commit -m "fix: correct emergency stop behavior" +git commit -m "feat!: redesign UI with new navigation" +git commit -m "perf: optimize click timing accuracy" +``` + +### 2. Release Please Workflow + +When you push commits to `main`: + +1. **Release Please analyzes commits** since the last release +2. **Creates/updates a Release PR** with: + - Updated `CHANGELOG.md` + - Bumped version in `ClickIt/Info.plist` + - Updated `.release-please-manifest.json` +3. **When you merge the Release PR:** + - Creates a git tag (e.g., `v1.6.0`) + - Creates a GitHub release with changelog + - Triggers the build workflow to attach binaries + +### 3. Build Workflow + +The build workflow (`.github/workflows/release.yml`): + +1. Triggered by the tag created by Release Please +2. Builds the universal macOS app bundle +3. Creates `.zip` archive +4. Uploads artifacts to the GitHub release + +## Creating a Release + +### Standard Release (Recommended) + +1. **Make changes using conventional commits:** + ```bash + git checkout -b feature/new-feature + # Make changes + git commit -m "feat: add new click pattern" + git push origin feature/new-feature + ``` + +2. **Create and merge PR to main:** + - Open PR on GitHub + - Get code review + - Merge to `main` + +3. **Release Please creates a Release PR:** + - Automatically created after merge to `main` + - Reviews version bump and changelog + - Title: "chore(main): release X.Y.Z" + +4. **Review and merge the Release PR:** + - Check the version bump is correct + - Review the generated changelog + - Merge when ready to release + +5. **Automated release process:** + - Tag created automatically + - GitHub release created with changelog + - Build workflow triggered + - Binaries uploaded to release + +### Manual Release (Emergency) + +If you need to create a release manually: + +1. **Update version in Info.plist:** + ```bash + /usr/libexec/PlistBuddy -c "Set CFBundleShortVersionString 1.6.0" ClickIt/Info.plist + ``` + +2. **Update manifest:** + ```bash + echo '{ ".": "1.6.0" }' > .release-please-manifest.json + ``` + +3. **Commit and tag:** + ```bash + git add ClickIt/Info.plist .release-please-manifest.json CHANGELOG.md + git commit -m "chore: release 1.6.0" + git tag v1.6.0 + git push origin main + git push origin v1.6.0 + ``` + +## Version Bumping Rules + +Release Please determines version bumps based on commit types: + +| Commit Type | Version Bump | Example | +|------------|--------------|---------| +| `fix:` | Patch (1.5.5 โ†’ 1.5.6) | Bug fixes | +| `feat:` | Minor (1.5.5 โ†’ 1.6.0) | New features | +| `feat!:` or `fix!:` | Major (1.5.5 โ†’ 2.0.0) | Breaking changes | +| `perf:` | Patch (1.5.5 โ†’ 1.5.6) | Performance | + +**Breaking Changes:** +- Add `!` after type: `feat!:` or `fix!:` +- Or add `BREAKING CHANGE:` in commit footer + +## Beta Releases + +Beta releases still use the manual tag approach: + +```bash +git tag beta-v1.6.0-20250111 +git push origin beta-v1.6.0-20250111 +``` + +Beta releases trigger the `beta_release` job in `cicd.yml`. + +## Configuration Files + +- `.release-please-manifest.json` - Current version tracking +- `release-please-config.json` - Release Please configuration +- `CHANGELOG.md` - Auto-generated changelog +- `ClickIt/Info.plist` - App version file, updated by Release Please + +## Troubleshooting + +### Release PR not created + +- Check that commits follow conventional commit format +- Ensure commits were pushed to `main` branch +- Check GitHub Actions logs for release-please workflow + +### Wrong version bump + +- Review commit messages for types +- Breaking changes need `!` or `BREAKING CHANGE:` footer +- Manually edit the Release PR if needed + +### Build failed + +- Check release workflow logs in GitHub Actions +- Verify Xcode version compatibility +- Check build script: `build_app_unified.sh` + +## Migration from Manual Releases + +The old manual process (`scripts/update-version.sh`) is deprecated but still available for emergencies. The new process is: + +**Old:** Manual script โ†’ Manual tag โ†’ Release workflow +**New:** Conventional commits โ†’ Release Please PR โ†’ Auto tag โ†’ Release workflow + +## Resources + +- [Release Please Documentation](https://github.com/googleapis/release-please) +- [Conventional Commits Specification](https://www.conventionalcommits.org/) +- [Semantic Versioning](https://semver.org/) diff --git a/release-please-config.json b/release-please-config.json new file mode 100644 index 0000000..fe48182 --- /dev/null +++ b/release-please-config.json @@ -0,0 +1,30 @@ +{ + "release-type": "simple", + "packages": { + ".": { + "release-type": "simple", + "bump-minor-pre-major": true, + "bump-patch-for-minor-pre-major": false, + "changelog-sections": [ + { "type": "feat", "section": "Features", "hidden": false }, + { "type": "fix", "section": "Bug Fixes", "hidden": false }, + { "type": "perf", "section": "Performance Improvements", "hidden": false }, + { "type": "revert", "section": "Reverts", "hidden": false }, + { "type": "docs", "section": "Documentation", "hidden": false }, + { "type": "style", "section": "Styles", "hidden": true }, + { "type": "chore", "section": "Miscellaneous", "hidden": true }, + { "type": "refactor", "section": "Code Refactoring", "hidden": false }, + { "type": "test", "section": "Tests", "hidden": true }, + { "type": "build", "section": "Build System", "hidden": true }, + { "type": "ci", "section": "Continuous Integration", "hidden": true } + ], + "extra-files": [ + { + "type": "xml", + "path": "ClickIt/Info.plist", + "xpath": "/plist/dict/key[text()='CFBundleShortVersionString']/following-sibling::string[1]" + } + ] + } + } +}