Skip to content

Latest commit

 

History

History
81 lines (54 loc) · 2.47 KB

File metadata and controls

81 lines (54 loc) · 2.47 KB

Contributing to Screenshot Factory

Thank you for your interest in contributing. This document explains how to submit changes and what rules apply.

How to contribute

  1. Fork this repository
  2. Create a branch from develop — follow the naming convention below
  3. Make your changes — keep commits focused and atomic
  4. Open a Pull Request against develop

Direct pushes to main and develop are not allowed. All changes go through PRs.

Branch naming

type/short-description

Types: feature/, fix/, chore/, docs/, refactor/, ci/

Examples: feature/landscape-support, fix/ipad-frame-alignment, docs/template-guide

Commit messages

[branch-name] type: "short description"

Example:

[feature/landscape-support] feat: "add landscape orientation for iPad frames"

Pull request requirements

Every PR must pass these automated checks before merge:

  • Secrets scan — gitleaks scans the diff for leaked credentials, API keys, and tokens
  • AI co-author checkCo-Authored-By trailers from AI tools (Claude, Copilot, ChatGPT, etc.) are not allowed. If you used AI assistance, that's fine, but remove the trailer from your commits

What we look for in review

  • Does it solve a real problem or add clear value?
  • Does it follow the existing code style (Swift, SwiftUI)?
  • Does it work on macOS 13+ with Swift 5.9+?
  • Are new features configuration-driven (via screenshots.json)?
  • Is the change backward-compatible with existing configs?

Code style

  • Swift conventions: no force-unwraps in library code, use guard for early exits
  • Keep dependencies at zero — Screenshot Factory uses only Apple SDK (AppKit, SwiftUI)
  • CLI arguments via Swift Argument Parser

What makes a good contribution

  • Bug fixes with clear reproduction steps
  • New device specs (when Apple releases new hardware)
  • New templates (add to Templates/)
  • Documentation improvements
  • Performance improvements to the rendering pipeline

What we will likely decline

  • Adding third-party dependencies
  • Changes that break existing screenshots.json configs without a migration path
  • Platform support beyond macOS (this is a macOS CLI tool)

Testing

Build and run locally before submitting:

swift build
swift run screenshot-factory --config Templates/dark-teal-accent.json --input <your-raw-dir> --output <output-dir>

License

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