2.3 KiB
2.3 KiB
Repository Guidelines
Project Structure & Module Organization
Casa/holds the Mac Catalyst app source, SwiftUI views, HomeKit server, and app settings.CasaTests/contains XCTest unit tests.CasaCLI/is a Swift Package for thecasaCLI (embedded into the app build).Casa.xcodeproj/is the primary Xcode project and scheme.scripts/contains developer utilities (linting, local restart).Casa/Assets.xcassets/stores icons and asset catalogs.
Build, Test, and Development Commands
./scripts/restart-mac.shbuilds and relaunches the app locally (terminal flow)../scripts/lint.shruns SwiftLint with.swiftlint.yml.cd CasaCLI && swift run casa devicesruns the CLI directly from the package.- Xcode: open
Casa.xcodeproj, set your Team, enable HomeKit capability, then Build/Run. - Tests: run Product > Test in Xcode (or
xcodebuild -scheme Casa -destination 'platform=macOS' test, adjust destination as needed).
Coding Style & Naming Conventions
- Swift style follows Xcode defaults (4-space indentation, Swift API naming).
- Keep method names descriptive and use
test...for XCTest methods. - SwiftLint is enabled with a 120 warning / 160 error line length; keep lines within limits.
Testing Guidelines
- Framework: XCTest in
CasaTests/. - Prefer small, fast unit tests that exercise request/response parsing and payload encoding.
- Name tests with the
testprefix (e.g.,testHTTPResponseEnvelope).
Commit & Pull Request Guidelines
- Commit messages use short, imperative summaries (e.g., "Add settings and logging").
- PRs should include: a clear summary, testing notes, and screenshots for UI changes.
- Link related issues or describe motivation when no issue exists.
Security & Configuration Notes
- HomeKit entitlement is required; run once from Xcode to trigger permissions.
- Sparkle update settings use
SPARKLE_FEED_URLandSPARKLE_PUBLIC_KEYfor builds. - The local API is loopback-only; keep any auth tokens out of source control.
- When running
./scripts/restart-mac.shlocally you may see a missing “Mac Development” certificate error because the sandboxed agent cannot access your keychain; give the CLI full filesystem access (or run outside the sandbox) so Xcode can read your certs and provisioning profiles.