Skip to content

Commit 1b82ae8

Browse files
docs: finalized v0.8.1 with Android 16 Support, License, and Privacy Docs
1 parent d750f4f commit 1b82ae8

11 files changed

Lines changed: 302 additions & 25 deletions

File tree

CHANGELOG.md

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,32 @@ Format:
1414

1515
---
1616

17+
---
18+
19+
## v0.8.1 — 2026-03-28
20+
21+
### 2026-03-28 20:04 — ⚖️ Legal and Transparency Documentation
22+
- What: Added `LICENSE` (MIT), `PRIVACY.md`, and `CONTRIBUTING.md` to the root directory.
23+
- Why: Establish trust by explicitly stating our "zero-data" privacy policy and defining open-source contribution guidelines.
24+
- Files: `LICENSE`, `PRIVACY.md`, `CONTRIBUTING.md`
25+
- Breaking: no ✅
26+
27+
## v0.7.2 — 2026-03-28
28+
29+
### 2026-03-28 19:24 — 🟢 Automated Distribution Support (Apple Silicon)
30+
- What: Updated `release.yml` with `pkg-config` and `contents: write` permissions; verified successful GitHub Actions build and binary artifact generation.
31+
- Why: Enable "one-liner" installation where GitHub automatically compiles and hosts the DroidTether binary for users.
32+
- Files: `.github/workflows/release.yml`
33+
- Breaking: no ✅
34+
35+
## v0.7.1 — 2026-03-28
36+
37+
### 2026-03-28 19:12 — 📦 One-Line Installer and CLI Improvements
38+
- What: Created `install.sh` and `uninstall.sh` for `curl | bash` setup; added `--config` flag to `main.go`; standardized `launchd` path to `/usr/local/bin` and `/etc/droidtether`.
39+
- Why: Transition from a "developer-only" build tool to a consumer-ready utility with frictionless setup/teardown.
40+
- Files: `install.sh`, `uninstall.sh`, `cmd/droidtether/main.go`, `launchd/com.princePal.droidtether.plist`, `README.md`
41+
- Breaking: yes (standardized system paths) 🚀
42+
1743
## v0.7.0 — 2026-03-28
1844

1945
### 2026-03-28 18:35 — 🌐 DNS Routing and MTU Stability Fixes

CONTRIBUTING.md

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
# 🤝 Contributing to DroidTether
2+
3+
We're so glad you're interested in helping DroidTether! This project is built by the community, for the community. Here's a quick guide into how you can contribute:
4+
5+
### 1. Report a Bug 🐛
6+
If you find a bug, please [open an issue](https://github.com/HelloPrincePal/DroidTether/issues) with as much information as possible:
7+
* Your macOS version and device model.
8+
* Your Android device model and OS version.
9+
* Relevant logs from `/var/log/droidtether.log`.
10+
11+
### 2. Suggest a Feature ✨
12+
Have an idea for v1.0? Please open a feature request issue! We're particularly interested in testing with more Android device manufacturers.
13+
14+
### 3. Submit a Pull Request 🛠️
15+
To contribute code:
16+
1. **Fork** the repository and create your own branch.
17+
2. **Add tests** for any new features or bug fixes.
18+
3. **Ensure all tests pass** by running `make test`.
19+
4. **Format your code** with `make fmt`.
20+
5. **Submit a Pull Request** with a clear description of your changes.
21+
22+
### 4. Code Standards 📏
23+
* Follow the standard Go structure.
24+
* Keep functions small and well-documented.
25+
* Avoid adding external dependencies unless absolutely necessary.
26+
27+
---
28+
29+
### Verifying Tests Locally:
30+
To run clinical unit tests:
31+
```bash
32+
make test
33+
```
34+
35+
To run a race condition check:
36+
```bash
37+
make test-race
38+
```
39+
40+
---
41+
42+
Thank you for making DroidTether better for everyone! 🚀

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2026 PrincePal
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

PRIVACY.md

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# 🛡️ Privacy Policy
2+
3+
**DroidTether is built with privacy and security as core principles.**
4+
5+
This project is a userspace network daemon that handles local network traffic between an Android device and a macOS host.
6+
7+
### 1. No Data Collection
8+
DroidTether **does not collect, transmit, or share** any of your personal data, browser history, or network traffic with any third-party servers. All data processing happens entirely on your local machine.
9+
10+
### 2. Local Logging
11+
DroidTether logs its activity to a local file at `/var/log/droidtether.log` to help with debugging and troubleshooting. These logs remain only on your computer and are never uploaded or shared.
12+
13+
### 3. Network Traffic Transparency
14+
DroidTether operates as a Layer 3 (IP) relay. It does not inspect the contents of your packets (e.g., your passwords or credit card numbers) and respects any end-to-end encryption (HTTPS, TLS, VPN) that your applications already use.
15+
16+
### 4. Telemetry
17+
DroidTether has **no telemetry, no analytics, and no "call-home" features**. It will never connect to the internet unless you (the user) are using it to route your network traffic through your phone's connection.
18+
19+
---
20+
21+
### Questions?
22+
If you have any questions about this Privacy Policy or how DroidTether handles your data, please open an issue in the [GitHub repository](https://github.com/HelloPrincePal/DroidTether).

README.md

Lines changed: 27 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -16,33 +16,48 @@ DroidTether is a lightweight userspace daemon that brings high-performance USB t
1616

1717
---
1818

19-
## 🛠️ Verified Test Environment
20-
This project has been rigorously tested and confirmed working on:
2119
- **Phone**: Samsung Galaxy A55 📱
22-
- **Host**: MacBook AI M4 (Apple Silicon) 💻
23-
- **OS**: macOS Tahoe 26.3.2(a) ⛰️
24-
- **Connectivity**: Full bidirectional traffic + DNS resolution 🌐
20+
- **Host**: MacBook Air M4 (Apple Silicon) 💻
21+
- **OS**: macOS Sequoia 26.3.2(a) ⛰️
22+
- **Android Support**: Android 16 (One UI 8.0) Verified ✅
23+
- **Connectivity**: Full bidirectional traffic + Global DNS resolution 🌐
2524

2625
---
2726

28-
## 🏗️ Installation (Developer Build)
27+
## 🚀 Quick Install (Apple Silicon only)
2928

30-
Since this project is in active development, please build from source:
29+
Open your terminal and paste this one-liner to install DroidTether and start the background service:
30+
31+
```bash
32+
curl -sL https://raw.githubusercontent.com/HelloPrincePal/DroidTether/main/install.sh | bash
33+
```
34+
35+
### 🗑️ Uninstall
36+
To completely remove DroidTether, its configuration, and the background service:
37+
38+
```bash
39+
curl -sL https://raw.githubusercontent.com/HelloPrincePal/DroidTether/main/uninstall.sh | bash
40+
```
41+
42+
---
43+
44+
## 🏗️ Developer Build (Source)
45+
46+
If you prefer to build from source:
3147

3248
### 1. Prerequisites
3349
Ensure you have the following installed:
3450
- [Go](https://go.dev/dl/) (1.21+)
35-
- `libusb` (Install via `brew install libusb` if needed)
36-
- `pkg-config`
51+
- `libusb` and `pkg-config` (Install via `brew install libusb pkg-config`)
3752

3853
### 2. Build from Source
3954
```bash
40-
git clone https://github.com/princePal/droidtether
41-
cd droidtether
55+
git clone https://github.com/HelloPrincePal/DroidTether
56+
cd DroidTether
4257
make build
4358
```
4459

45-
### 3. Run the Daemon
60+
### 3. Run Manually
4661
```bash
4762
sudo ./build/droidtether
4863
```

VERSIONS.md

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,10 +10,22 @@ v1.0.0 = MVP complete and working on M1/M2/M3.
1010

1111
---
1212

13-
## v0.7.0 — 2026-03-28
14-
- Milestone: DNS Automation & Graceful Shutdown
15-
- What works: Automatic DNS configuration via `scutil` (macOS) with forced SupplementalMatchDomains. The system now uses the phone's DNS gateway immediately for all lookups. Added a `WaitGroup`-based shutdown to the `Daemon` to ensure all routes and tunnel interfaces are cleanly removed when stopping. `TUN.MTU` is automatically reduced to `1400` to support standard Android USB RNDIS fragmentation limits natively. Internet web traffic and DNS fully working.
16-
- Next: Move toward v1.0.0 after community testing.
13+
## v0.8.1 — 2026-03-28
14+
- Milestone: Legal & Transparency (The "Professional" Release)
15+
- What works: Added `LICENSE` (MIT), `PRIVACY.md`, and `CONTRIBUTING.md`. Verified full compatibility with **Android 16 (One UI 8.0)**. The project is now legally documented and ready for public contributions.
16+
- Next: Finalize Homebrew Formula logic for `brew install` support.
17+
18+
## v0.8.0 — 2026-03-28
19+
- Milestone: One-Line Binary Distribution (Apple Silicon)
20+
- What works: Automated GitHub Release pipeline for `darwin/arm64`. `install.sh` and `uninstall.sh` scripts enable one-liner setup via `curl`. Standardized system paths used for the background daemon (`/usr/local/bin` and `/etc/droidtether`). The project is now effectively "Plug & Play" for any M-series Mac user without requiring a local Go compiler.
21+
22+
## v0.7.2 — 2026-03-28
23+
- Milestone: Release Automation Permissions Fix
24+
- What works: Explicit `contents: write` permissions and `pkg-config` dependency added to GitHub Actions to allow successful CGO compilation and automated asset uploading.
25+
26+
## v0.7.1 — 2026-03-28
27+
- Milestone: "One-Touch" Installation Scripts
28+
- What works: Created `install.sh` at repository root. Added `--config` flag to `droidtether` binary. Standardized CLI to support global system configurations.
1729

1830
## v0.6.0 — 2026-03-28
1931
- Milestone: Full network connectivity — DHCP + ARP + Ping working

cmd/droidtether/main.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@ var version = "dev"
1414

1515
func main() {
1616
showVersion := flag.Bool("version", false, "print version and exit")
17+
configPath := flag.String("config", "", "path to config file")
1718
flag.Parse()
1819

1920
if *showVersion {
@@ -24,13 +25,12 @@ func main() {
2425
fmt.Printf("droidtether v%s starting...\n", version)
2526

2627
// Load configuration
27-
// Load from system paths first, fallback to local source tree config
28-
cfg, err := config.Load("")
28+
cfg, err := config.Load(*configPath)
2929
if err != nil {
30-
fmt.Fprintf(os.Stderr, "droidtether: system config not found, trying local config/default.toml...\n")
30+
fmt.Fprintf(os.Stderr, "droidtether: config not found or unreadable, trying local default.toml...\n")
3131
cfg, err = config.Load("config/default.toml")
3232
if err != nil {
33-
fmt.Fprintf(os.Stderr, "droidtether: failed to load config: %v\n", err)
33+
fmt.Fprintf(os.Stderr, "droidtether: failed to load any configuration: %v\n", err)
3434
os.Exit(1)
3535
}
3636
}

docs/FILE_STRUCTURE.md

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,12 +4,16 @@ Complete annotated repository layout. Every file listed here should exist before
44
Files marked `[LLM]` are optimized for inclusion in AI context windows.
55

66
```
7-
droidtether/
7+
DroidTether/
88
99
├── README.md # Public-facing project README
1010
├── LICENSE # MIT
11-
├── Makefile # Dev commands: make build, make dev, make test, make release
12-
├── go.mod # Go module (github.com/princePal/droidtether)
11+
├── PRIVACY.md # Privacy policy
12+
├── CONTRIBUTING.md # How to contribute
13+
├── install.sh # One-line installer
14+
├── uninstall.sh # One-line uninstaller
15+
├── Makefile # Build/Test commands
16+
├── go.mod # Go dependencies
1317
1418
├── docs/
1519
│ ├── PRD.md # [LLM] Full product requirements (this project's source of truth)

install.sh

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
#!/usr/bin/env bash
2+
# DroidTether — One-line installer for Apple Silicon macOS
3+
# Usage: curl -sL https://raw.githubusercontent.com/HelloPrincePal/DroidTether/main/install.sh | bash
4+
5+
set -euo pipefail
6+
7+
# 1. Platform Check
8+
ARCH="$(uname -m)"
9+
OS="$(uname -s)"
10+
11+
if [[ "$OS" != "Darwin" || "$ARCH" != "arm64" ]]; then
12+
echo "error: DroidTether currently only supports Apple Silicon macOS (arm64)." >&2
13+
exit 1
14+
fi
15+
16+
echo "🚀 Installing DroidTether for Apple Silicon..."
17+
18+
# 2. Dependency Check (libusb)
19+
if ! command -v brew >/dev/null 2>&1; then
20+
echo "error: Homebrew not found. Please install Homebrew first: https://brew.sh" >&2
21+
exit 1
22+
fi
23+
24+
if ! brew list libusb >/dev/null 2>&1; then
25+
echo "→ Installing dependency: libusb"
26+
brew install libusb
27+
fi
28+
29+
# 3. Fetch Latest Release from GitHub API
30+
REPO="HelloPrincePal/DroidTether"
31+
LATEST_RELEASE=$(curl -s "https://api.github.com/repos/$REPO/releases/latest" | grep '"tag_name":' | sed -E 's/.*"([^"]+)".*/\1/')
32+
33+
if [[ -z "$LATEST_RELEASE" ]]; then
34+
echo "error: could not find latest release for $REPO" >&2
35+
exit 1
36+
fi
37+
38+
echo "→ Downloading DroidTether $LATEST_RELEASE"
39+
URL="https://github.com/HelloPrincePal/DroidTether/releases/download/$LATEST_RELEASE/droidtether-darwin-arm64.tar.gz"
40+
TMP_DIR=$(mktemp -d)
41+
curl -sL "$URL" -o "$TMP_DIR/droidtether.tar.gz"
42+
43+
# 4. Extract and Install Binary
44+
tar -xzf "$TMP_DIR/droidtether.tar.gz" -C "$TMP_DIR"
45+
46+
if [[ ! -f "$TMP_DIR/droidtether" ]]; then
47+
echo "error: Could not find droidtether binary in $LATEST_RELEASE archive." >&2
48+
ls -R "$TMP_DIR"
49+
exit 1
50+
fi
51+
52+
echo "→ Installing binary to /usr/local/bin (requires password)"
53+
sudo mkdir -p /usr/local/bin
54+
sudo mv "$TMP_DIR/droidtether" /usr/local/bin/droidtether
55+
sudo chmod +x /usr/local/bin/droidtether
56+
57+
# 5. Config Setup
58+
CONFIG_DIR="/etc/droidtether"
59+
if [[ ! -d "$CONFIG_DIR" ]]; then
60+
echo "→ Creating config directory at $CONFIG_DIR"
61+
sudo mkdir -p "$CONFIG_DIR"
62+
fi
63+
64+
# Download default config if not exists
65+
if [[ ! -f "$CONFIG_DIR/droidtether.toml" ]]; then
66+
echo "→ Installing default configuration"
67+
CONFIG_URL="https://raw.githubusercontent.com/HelloPrincePal/DroidTether/main/config/default.toml"
68+
sudo curl -sL "$CONFIG_URL" -o "$CONFIG_DIR/droidtether.toml"
69+
fi
70+
71+
# 6. Launchd Service Setup
72+
PLIST_NAME="com.princePal.droidtether.plist"
73+
PLIST_DEST="/Library/LaunchDaemons/$PLIST_NAME"
74+
PLIST_URL="https://raw.githubusercontent.com/HelloPrincePal/DroidTether/main/launchd/$PLIST_NAME"
75+
76+
echo "→ Installing background service (launchd)"
77+
sudo curl -sL "$PLIST_URL" -o "$PLIST_DEST"
78+
sudo chown root:wheel "$PLIST_DEST"
79+
sudo chmod 644 "$PLIST_DEST"
80+
81+
# 7. Start the Service
82+
echo "→ Starting DroidTether service"
83+
sudo launchctl bootout system "$PLIST_DEST" 2>/dev/null || true
84+
sudo launchctl bootstrap system "$PLIST_DEST"
85+
86+
# Cleanup
87+
rm -rf "$TMP_DIR"
88+
89+
echo ""
90+
echo "✨ DroidTether successfully installed!"
91+
echo "📡 Plug in your Android phone and enable USB Tethering to begin."
92+
echo "📜 Logs: tail -f /var/log/droidtether.log"
93+
echo "❌ To uninstall: curl -sL https://raw.githubusercontent.com/HelloPrincePal/DroidTether/main/uninstall.sh | bash"

launchd/com.princePal.droidtether.plist

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@
88
<key>ProgramArguments</key>
99
<array>
1010
<!-- Default paths: Apple Silicon Homebrew. For Intel, replace /opt/homebrew with /usr/local -->
11-
<string>/opt/homebrew/bin/droidtether</string>
11+
<string>/usr/local/bin/droidtether</string>
1212
<string>--config</string>
13-
<string>/opt/homebrew/etc/droidtether/droidtether.toml</string>
13+
<string>/etc/droidtether/droidtether.toml</string>
1414
</array>
1515
<key>RunAtLoad</key>
1616
<true/>

0 commit comments

Comments
 (0)