# Contributing to Curtain Thanks for taking the time to help. Curtain is a small, focused macOS menu-bar app, and contributions that keep it that way are welcome. ## Building Curtain is a single Swift Package Manager package. You need a recent Xcode toolchain on macOS 13 or later. ```bash swift build -c release ``` To build the app bundle, generate the icon, and set up the login item and the optional disconnect helper, run the release script: ```bash Scripts/release.sh ``` The settings window has a "Test (10s)" button for a quick visual check. For a real test, connect to the machine over Screen Sharing and confirm that remote control works, desk input is dead, a desk keypress raises the password box, the password ends the session, and idle or disconnect locks the Mac and sleeps the displays. ## Code style - One responsibility per file. Match the existing module layout in `Sources/`. - Keep the critical invariants intact. The detection path, the physical-vs-remote input split, and the cover window sharing types are load-bearing. Read the wiki before changing them. - Comment the why, not the what. ## Pull requests - Branch from `main` and keep each PR scoped to one change. - Describe what you changed and why, and how you tested it. - Make sure the project builds clean before you open the PR. - Be patient and civil in review. Small, well-explained PRs get merged faster. ## No AI attribution Do not add AI co-author tags, "generated by" notes, or any reference to AI tooling in commits, code, comments, or docs. Commit history and source are attributed to human contributors only. ## License Curtain is MIT licensed. By contributing, you agree that your contributions are licensed under the same terms.