Skip to content

Latest commit

 

History

History
64 lines (41 loc) · 3.9 KB

CONTRIBUTING.md

File metadata and controls

64 lines (41 loc) · 3.9 KB

Contributing to MeetingBar

MeetingBar welcomes focused bug fixes, meeting-service integrations, reliability improvements, translations, and documentation updates.

GitHub Workflow

Use GitHub issues for public bugs and feature requests. Keep pull requests small enough to review in one pass, and describe:

  • What changed and why
  • User-visible behavior changes
  • Tests or validation commands you ran
  • Any dependency, entitlement, signing, URL scheme, script, workflow, or base-localization changes

Bug Reports

Good bug reports include:

  • MeetingBar version and macOS version
  • Calendar provider: macOS Calendar or Google Calendar
  • Meeting service when relevant: Zoom, Google Meet, Microsoft Teams, Webex, etc.
  • Steps to reproduce
  • Expected behavior and actual behavior
  • Whether manual refresh, relaunch, or reconnect changes the result
  • Sanitized event title, description, location, URL fields, screenshots, or logs when useful

Building Locally

MeetingBar is a macOS app built with Xcode, Swift 6, AppKit, SwiftUI, and Xcode-managed Swift Package dependencies.

For local signing, create XCConfig/DevTeamOverride.xcconfig with your Apple development team. This file is git-ignored, so you do not need to change the Xcode project:

DEVELOPMENT_TEAM = <your development team id>

The same git-ignored override can also provide real GOOGLE_CLIENT_NUMBER, GOOGLE_CLIENT_SECRET, and GOOGLE_AUTH_KEYCHAIN_NAME values for local Google Calendar sign-in. Do not commit credentials. The checked-in Project.xcconfig values are placeholders for builds without configured Google OAuth.

Xcode loads Project-Debug.xcconfig / Project-Release.xcconfig as the project's Base Configuration. Before compiling the app, the Validate xcconfig build phase fails if any Google OAuth build setting is missing, empty, or unresolved. Placeholder values are permitted for CI/build verification, but cannot authorize Google Calendar.

Run make test-config to check the validator's success/failure cases.

Common validation commands:

make build            # Debug build
make test             # SwiftPM logic tests + Xcode app-hosted tests with coverage
make test-logic       # Hostless SwiftPM logic tests only
make lint             # SwiftLint
make validate-strings # Verify English localization keys used by .loco()

Unsigned local Debug builds may print entitlement or signing warnings because code signing is disabled. That warning is expected for local verification; signed Release builds still need a real signing check.

Architecture And Dependencies

Read docs/ARCHITECTURE.md before changing app flow, calendar providers, meeting-link detection, notifications, status-bar rendering, settings, package dependencies, entitlements, or release-sensitive configuration.

Direct app dependencies are Xcode Swift Package references pinned by MeetingBar.xcodeproj/project.xcworkspace/xcshareddata/swiftpm/Package.resolved. Package.swift defines the hostless MeetingBarLogic package used for fast policy tests. Do not update only Package.resolved; change the Xcode package requirement intentionally and review the resolved diff. StoreKit is a system framework, not an external package dependency.

Describe user-visible changes in the PR so the maintainer can prepare GitHub Release notes when publishing. Do not update an in-repository changelog for each contribution. For changes significant enough to appear in the app's What's New screen, coordinate that separately with the maintainer. Refer to docs/TESTING.md for choosing the appropriate test layer. For new source strings, update MeetingBar/Resources /Localization /en.lproj/Localizable.strings and run make validate-strings; non-English translations are managed through Weblate.

License

By contributing, you agree that your contributions are licensed under the Apache License 2.0.