-
Notifications
You must be signed in to change notification settings - Fork 14
how to contribute development workflow
The branch → code → build → test → PR cycle for DroidProxy.
git clone https://github.com/anand-92/droidproxy.git
cd droidproxy/src
swift buildThe Swift package lives in /Users/nikhilanand/droidproxy/src, so run every swift build, swift test, and swift package command from there. swift build produces a debug binary at src/.build/debug/CLIProxyMenuBar, which is enough to confirm the code compiles but does not produce a runnable app (see below).
DroidProxy is an LSUIElement (menu-bar / agent) app, so swift run does not work — there is no Dock icon or main window for SwiftPM to attach to. You must build a real .app bundle and open it.
The preferred dev loop is /Users/nikhilanand/droidproxy/dev-relaunch.sh, run from the repo root:
./dev-relaunch.shIt performs, in order:
- Kills any running menu-bar process and backend:
pkill -x CLIProxyMenuBarandpkill -x cli-proxy-api(then a-9follow-up after a 1s grace period). This guarantees the old menu-bar process and bundledcli-proxy-apiare stopped before the new app starts. - Calls
/Users/nikhilanand/droidproxy/create-app-bundle.sh, which runsswift build -c releaseand assembles the signedDroidProxy.appat the repo root. - Runs
open DroidProxy.appto launch the fresh build.
Use this instead of running create-app-bundle.sh + open by hand. Do not use dev-relaunch.sh for releases — releases go through CI (.github/workflows/release.yml). See Deployment.
If you only need to confirm compilation (not run the UI), cd src && swift build is faster.
cd src && swift testThe XCTest suite lives in /Users/nikhilanand/droidproxy/src/Tests/CLIProxyMenuBarTests/. See Testing for coverage and what to add when you touch the proxy's JSON editing.
Before editing, read Patterns and conventions. Key rules: use NSLog (not print/os_log); never re-serialize request JSON in ThinkingProxy (string-insertion edits only, to preserve Anthropic's prompt cache); keep source-of-truth edits under src/.
Branch off main, push, and open a PR against main.
-
Compile check —
pr-build.ymlrunsswift build -c release --arch arm64on amacos-26runner for PRs that touchsrc/**,create-app-bundle.sh, or the workflow itself. It is compile-only: no signing, notarization, or release. The same invocationcreate-app-bundle.shuses, so a green check means the release build compiles too. In-progress runs are cancelled when you push new commits to the branch. -
Automated review —
droid-review.ymlruns Droid Auto Review on every non-draft PR and comments findings.droid.ymlruns when a comment, review, issue, or PR body mentions@droid. (junie-review.yml/junie-tag.ymlprovide a second automated reviewer.)
Merging changes under src/** (or create-app-bundle.sh, entitlements.plist, sparkle-entitlements.plist) into main triggers release.yml, which builds, signs, notarizes, Sparkle-signs, updates the appcast, tags, and publishes a GitHub release on a macos-26 runner. The full pipeline is documented in Deployment. Documentation-only or workflow-only changes do not trigger a release.