Contributing
April 3, 2026 ยท View on GitHub
By participating in this project, you agree to abide by our Code of Conduct.
Setup
You'll need macOS 14.0+, Xcode 16+, SwiftLint, and SwiftFormat.
git clone https://github.com/LocNguyenHuu/Rockxy.git
cd Rockxy
git checkout develop
Build:
xcodebuild -project Rockxy.xcodeproj -scheme Rockxy -configuration Debug build
Run tests:
xcodebuild -project Rockxy.xcodeproj -scheme Rockxy test
Code Style
.swiftlint.yml and .swiftformat are the source of truth. The short version:
- 4-space indentation, 120-char line length target
- Explicit access control (
private,internal,public) - No force unwraps or force casts. Use
guard let,if let,as? String(localized:)for user-facing strings. SwiftUI view literals auto-localize- OSLog only, no
print()
Run both before committing:
swiftlint lint --strict
swiftformat .
Commits
Conventional Commits, single line, no body.
feat: add WebSocket frame inspector
fix: prevent crash on large response body
docs: update HTTPS interception guide
Branch Naming
Branch off develop:
feat/add-grpc-supportfix/proxy-connection-leakdocs/update-quickstart
Pull Requests
All pull requests must target the develop branch. One change per PR. Make sure tests pass and lint is clean. Link related issues.
Before opening, check:
- Tests added or updated
-
CHANGELOG.mdupdated under[Unreleased](skip for unreleased-only fixes) - Docs updated in
docs/if the change affects user-facing behavior - User-facing strings localized
- No SwiftLint/SwiftFormat violations
- If the change touches helper packaging, release scripts, or platform compatibility claims, Intel + Apple Silicon validation was updated or re-run
Project Layout
Rockxy/ # App source (Core/, Views/, Models/, ViewModels/, etc.)
Core/ # Proxy engine, certificates, rules, log engine, analytics, storage
Views/ # SwiftUI views
Models/ # Data structures
RockxyTests/ # Tests
docs/ # Mintlify docs site
Reporting Bugs
Open a GitHub issue with your macOS version, Rockxy version, and reproduction steps.
Contributor License Agreement
All contributors must sign the Contributor License Agreement before their pull request can be merged. When you open your first PR, the CLA Assistant bot will post a comment with instructions. Reply with the required phrase to sign. This is a one-time process โ once signed, all your future PRs are automatically approved.
Pull requests from contributors who have not signed the CLA will be blocked from merging.
License
Contributions are licensed under GNU Affero General Public License v3.0.