This file contains project-specific context for AI assistants working on this codebase.
This machine uses Homebrew-installed OpenJDK 17:
# Java location
JAVA_HOME=/opt/homebrew/opt/openjdk@17
PATH="$JAVA_HOME/bin:$PATH"
# Version
OpenJDK 17.0.18
# Installation path
/opt/homebrew/opt/openjdk@17 -> /opt/homebrew/Cellar/openjdk@17/17.0.18For Gradle builds, set environment:
export JAVA_HOME=/opt/homebrew/opt/openjdk@17
export PATH="$JAVA_HOME/bin:$PATH"Verify Java:
$JAVA_HOME/bin/java -version
# Should output: openjdk version "17.0.18"Debug APK:
export JAVA_HOME=/opt/homebrew/opt/openjdk@17
./gradlew clean assembleDebug
# Output: app/build/outputs/apk/debug/botdrop-app_*_debug.apkRun tests:
export JAVA_HOME=/opt/homebrew/opt/openjdk@17
./gradlew :app:testDebugUnitTestClean build:
export JAVA_HOME=/opt/homebrew/opt/openjdk@17
./gradlew clean- Android App:
app/- Main BotDrop Android application - Termux Core:
termux-shared/,terminal-*- Forked from Termux - Version API:
worker/- Cloudflare Worker for version checking - Documentation:
docs/- Design docs, plans, troubleshooting guides - Bootstrap: Downloaded from
zhixianio/botdrop-packagesduring build
# Build debug APK
JAVA_HOME=/opt/homebrew/opt/openjdk@17 ./gradlew assembleDebug
# Build release APK (requires signing keys)
JAVA_HOME=/opt/homebrew/opt/openjdk@17 ./gradlew assembleRelease
# Install on connected device
JAVA_HOME=/opt/homebrew/opt/openjdk@17 ./gradlew installDebug
# View logs from device
adb logcat | grep -E "BotDrop|Termux"Current strategy: Use /releases/latest/download/ from botdrop-packages
- Latest release should always point to a stable, tested bootstrap
- To rollback: Change latest release in GitHub, no code changes needed
- See
docs/troubleshooting/2026-02-09-slim-bootstrap-ssl-issue.mdfor details
Solution: Set JAVA_HOME before running Gradle:
export JAVA_HOME=/opt/homebrew/opt/openjdk@17
export PATH="$JAVA_HOME/bin:$PATH"Or add to your shell profile (~/.zshrc or ~/.bashrc):
export JAVA_HOME=/opt/homebrew/opt/openjdk@17
export PATH="$JAVA_HOME/bin:$PATH"See: docs/troubleshooting/2026-02-09-slim-bootstrap-ssl-issue.md
TL;DR: Slim bootstraps may break Node.js fetch. Always test HTTPS requests after bootstrap changes.
See: docs/troubleshooting/2026-02-09-telegram-fetch-ipv6-issue.md
TL;DR: OpenClaw defaults autoSelectFamily=false for Node.js 22+, causing IPv6 connection failures. Fix by adding to ~/.openclaw/openclaw.json:
"channels": {
"telegram": {
"network": { "autoSelectFamily": true },
...
}
}CONTRIBUTING.md- Contribution guidelinesREADME.md- Project overviewdocs/design.md- Architecture design (Chinese)docs/troubleshooting/- Troubleshooting guides
Last updated: 2026-02-09