-
Notifications
You must be signed in to change notification settings - Fork 14
how to contribute
This is the contributor guide for DroidProxy. There is no CONTRIBUTING.md in the repo, so these pages are the canonical reference for building, testing, debugging, and shipping changes.
DroidProxy is a native macOS menu bar app written in Swift 5.9 (SwiftUI + AppKit), targeting arm64 macOS 13+. The executable target is CLIProxyMenuBar and the bundle id is com.droidproxy.app. It runs two local servers:
-
ThinkingProxyon127.0.0.1:8317— the user-facing TCP proxy. See Thinking proxy. - A bundled
CLIProxyAPIbackend on127.0.0.1:8318, managed as a child process. See Server manager.
The compiled app code lives under src/. Treat these as authoritative:
-
/Users/nikhilanand/droidproxy/src/Sources/**— all Swift source plus bundled resources (src/Sources/Resources/). -
/Users/nikhilanand/droidproxy/src/Info.plist— bundle metadata. -
/Users/nikhilanand/droidproxy/create-app-bundle.sh— assembles and signsDroidProxy.app.
There is no longer a mirrored top-level resources/ tree; older notes referencing one are stale.
Run all swift commands from /Users/nikhilanand/droidproxy/src (that is where Package.swift lives), not the repo root.
# Debug build
cd src && swift build
# Run tests
cd src && swift test
# Release .app bundle (run from repo root)
./create-app-bundle.sh
# Preferred dev loop: kill, rebuild, relaunch the signed .app
./dev-relaunch.shThe app is LSUIElement, so swift run does not launch it — you must build the .app bundle and open it. ./dev-relaunch.sh does this for you. See Development workflow.
- Branch off
main, make changes undersrc/, and open a pull request againstmain. - Opening a PR that touches
src/**,create-app-bundle.sh, or.github/workflows/pr-build.ymltriggerspr-build.yml— a compile-only check that runsswift build -c release --arch arm64on amacos-26runner. A green check there means the release build will also compile (no signing or notarization runs on PRs). - Automated Droid review workflows comment on the PR:
droid-review.ymlruns on every non-draft PR, anddroid.ymlresponds to@droidmentions in comments, reviews, issues, and PR bodies. - Merging
src/**changes intomaintriggers the release pipeline. See Deployment.
- Development workflow — the branch → code → build → test → PR cycle.
- Testing — the XCTest suite and what to cover.
- Debugging — logs, common failures, and the management dashboard.
- Patterns and conventions — codebase conventions to follow before editing.
- Tooling — the build system, CI workflows, and signing/notarization tools.