Skip to content
This repository was archived by the owner on Jul 15, 2026. It is now read-only.

Contributing

github-actions[bot] edited this page Jun 2, 2026 · 3 revisions

⚠️ Rebranded: Contributions should go to github.com/douinc/deck. This repository is publicly archived.

Contributing

Thank you for your interest in contributing to ClickerRemote!

Getting Started

  1. Fork the repository
  2. Clone your fork:
    git clone https://github.com/YOUR_USERNAME/deck.git
    cd deck
  3. Set up the development environment (see Getting-Started)

Development Workflow

Create a Branch

git checkout -b feature/your-feature-name
# or
git checkout -b fix/bug-description

Make Changes

  1. Edit Swift source files directly
  2. If changing build settings, edit project.yml
  3. After editing project.yml, run xcodegen generate
  4. Never edit Clicker.xcodeproj directly — it's generated

Test Your Changes

# Build both apps
just build-mac
just build-sim

# Run and test manually
just run-mac

Commit Guidelines

Use conventional commit messages:

feat: add timer vibration pattern options
fix: resolve connection timeout on iOS 18
docs: update architecture diagram
refactor: extract connection logic to protocol

Prefixes:

  • feat: — New feature
  • fix: — Bug fix
  • docs: — Documentation
  • refactor: — Code refactoring
  • test: — Tests
  • chore: — Maintenance

Submit a Pull Request

  1. Push your branch:
    git push origin feature/your-feature-name
  2. Open a PR on GitHub
  3. Fill out the PR template
  4. Wait for review

Code Style

Swift Style

  • Use SwiftUI and modern Swift concurrency (async/await)
  • Prefer @MainActor for UI-related classes
  • Use @Published for observable state
  • Follow Apple's Swift API Design Guidelines

Naming Conventions

Type Convention Example
Classes PascalCase ConnectionManager
Protocols PascalCase CommandSender
Functions camelCase sendCommand()
Variables camelCase isConnected
Constants camelCase serviceType

File Organization

// MARK: - Properties
// MARK: - Initialization
// MARK: - Public Methods
// MARK: - Private Methods
// MARK: - Protocol Conformance

Project Structure Guidelines

Adding New Features

  1. Shared codeShared/
  2. Mac-only codeMacApp/
  3. iOS-only codeiPhoneApp/

Modifying Build Configuration

Edit project.yml, not Xcode project settings:

targets:
  ClickerMac:
    settings:
      base:
        YOUR_SETTING: value

Then regenerate:

xcodegen generate

Areas for Contribution

Good First Issues

  • Documentation improvements
  • UI polish and animations
  • Accessibility improvements
  • Localization

Feature Ideas

  • Additional key mappings (custom keys)
  • Slide counter display
  • Multiple Mac connections
  • Widget for quick launch

Known Issues

Check GitHub Issues for open bugs.

Questions?

License

By contributing, you agree that your contributions will be licensed under the MIT License.

📖 ClickerRemote Wiki

Home

Getting Started

Development

Roadmap

Help


Links

Clone this wiki locally