Input Source Pro.xcodeprojis the Xcode project; open it to build and run.Input Source Pro/holds the app source code.Controllers/,Models/,Persistence/,System/,UI/,Utilities/,Window/group the core logic and UI.Resources/containsInfo.plist,Signing.entitlements, localized strings (*.lproj), and assets inResources/Assets.xcassets.Preview Content/includes SwiftUI preview assets.
imgs/is used for README media.
- Open
Input Source Pro.xcodeprojin Xcode and use:Cmd+Bto build,Cmd+Rto run,Cmd+Uto run tests.
- CLI builds use the shared scheme name:
xcodebuild -scheme "Input Source Pro" -configuration Debug buildxcodebuild -scheme "Input Source Pro" -configuration Debug test
- Swift-only codebase; follow Swift API Design Guidelines and existing conventions.
- Indentation is 4 spaces; keep declarations and SwiftUI views formatted like nearby files.
- Naming:
- Types use
UpperCamelCase(e.g.,IndicatorWindowController). - Files follow type names, and extensions use
Type+Feature.swift(e.g.,IndicatorWindowController+Activation.swift).
- Types use
- No repo-wide formatter or linter config is present; do not introduce reformatting-only diffs.
- The Xcode scheme includes a
Teststarget; add new tests there as*Tests.swiftusing XCTest. - If you add tests, ensure they run via
Cmd+Uorxcodebuild testbefore opening a PR.
- Commit messages follow conventional commits with optional scopes, e.g.,
feat(UI): add indicator toggleorfix: handle nil input source. - Branch names are descriptive and prefixed (e.g.,
feature/add-xyz-support,fix/indicator-crash). - PRs should include: purpose, linked issues (e.g.,
Closes #123), summary of changes, and testing notes. Add screenshots or screen recordings for UI changes.
- Before creating or updating release notes or publishing a release, send a draft changelog message in chat for the user to review. Wait for approval of the wording before saving it to release-note files, updating the website changelog, or publishing. Approval already given in the conversation counts; incorporate requested revisions and show the revised draft when approval is still pending.
- Draft from changes since the preceding published stable release. Describe user-facing changes, verify contributor GitHub usernames, and credit each change with relevant pull request links, following the 2.12.0 release style.
- After approval, save the changelog as
docs/release-notes/<version>.md(for example,2.13.0.md, without avprefix) and include it in the commit to be tagged. The release script uses it for GitHub and Sparkle notes. Seedocs/releases.mdfor the release workflow. - For a stable release, create the version tag locally and push
mainand that tag together withgit push --atomic origin main refs/tags/<version>. Do not pushmainfirst: the beta check must see the stable tag to skip the duplicate build.