# Contributing

Thanks for contributing to CommandNotch.

## Before You Start

- Use macOS 14+.
- Install Xcode 16+.
- Install `xcodegen` with Homebrew.

## Local Setup

```bash
cd CommandNotch
xcodegen generate --spec project.yml
open CommandNotch.xcodeproj
```

## Useful Commands

Generate the project:

```bash
cd CommandNotch
xcodegen generate --spec project.yml
```

Build:

```bash
cd CommandNotch
DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer \
  xcodebuild build -project CommandNotch.xcodeproj -scheme CommandNotch -destination 'platform=macOS'
```

Run tests:

```bash
cd CommandNotch
DEVELOPER_DIR=/Applications/Xcode.app/Contents/Developer \
  xcodebuild test -project CommandNotch.xcodeproj -scheme CommandNotch -destination 'platform=macOS'
```

## What Helps Most

- Bug fixes with a clear reproduction path.
- UI polish that keeps the app feeling intentional instead of generic.
- Accessibility improvements.
- Tests around workspace, screen, settings, and hotkey behavior.
- Docs and onboarding improvements.

## Code Guidelines

- Keep changes targeted.
- Preserve the existing SwiftUI + AppKit split.
- Prefer typed settings and explicit state ownership over hidden side effects.
- Add or update tests when you change behavior.
- Regenerate the Xcode project with XcodeGen if you add or remove files.

## Pull Requests

- Keep PRs small enough to review comfortably.
- Explain the user-facing impact.
- Note any follow-up work or tradeoffs.
- Include screenshots for visible UI changes when possible.
- Mention the exact build/test command you used.

## Issues

When filing a bug, include:

- macOS version
- what you expected
- what actually happened
- reproduction steps
- screenshots or recordings if they help

## Media Updates

README screenshots live in `.github/assets/`.

If you update the UI significantly, refresh:

- `.github/assets/CommandNotch-Open.png`
- `.github/assets/CommandNotch-Settings.png`

## License

By contributing, you agree that your contributions will be released under the MIT License in this repository.
