Compare commits

...

2 Commits

Author SHA1 Message Date
62c9b8e59d updated readme 2026-05-21 16:52:51 -04:00
a4591655b7 release: bump to 1.0.1, enable R8 minification, ignore .claude dir
versionCode 1->2, versionName 0.1.0->1.0.1
isMinifyEnabled=true with proguard-android-optimize.txt
add proguard-rules.pro (keep Room, OkHttp, kotlinx.serialization)
gitignore: add .claude/ to suppress worktree noise

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-05-21 16:38:27 -04:00
4 changed files with 43 additions and 50 deletions

3
.gitignore vendored
View File

@@ -27,3 +27,6 @@ android/captures/
.DS_Store
Thumbs.db
/archive
# claude code
.claude/

View File

@@ -1,7 +1,5 @@
# synq, a tiny android-to-org capture system.
synq consists of:
- an Android app for capturing notes items
- a docker-based agent that pulls notes and saves them to a local .org file
synq consists of an Android app for capturing notes items and a docker agent that pulls notes and saves them to a local .org file.
1. Open Synq app
2. Type note, mark as TODO (opt), add tags (opt), save.
@@ -38,60 +36,32 @@ home server
## Build & Deploy
1. First, build and deploy `synq-server`, the docker container that listens for new notes and writes to the local file.
2. Then, build and install the `synq` app.
3. Finally, retrieve the token (`token.txt` in the docker container's data directory, or from the container logs `docker logs synq-server`)
First, clone the repo.
Build and deploy `synq-server`, the docker container that listens for new notes and writes to the local file.
Then, build and install the `synq` app.
Finally, retrieve the token (`token.txt` in the docker container's data directory, or from the container logs `docker logs synq-server`)
### 1. synq-server (docker)
```bash
# build
docker build -t synq-server ./server
# run (replace paths and token as needed)
- Build from `docker build -t synq-server ./server`
- Run (replace paths and token as needed):
```docker
docker run -d --name synq --restart=unless-stopped \
-p 8765:8765 \
-v /mnt/user/synq/data:/data \
synq-server
```
The server generates a random token on first start and logs it prominently. copy it into the android app settings. To use a fixed token instead, pass `-e PHONE_CAPTURE_TOKEN=yourtoken`.
To rebuild after a `git pull`:
```bash
git pull
docker build -t synq-server ./server
docker stop synq && docker rm synq
# re-run the docker run command above
```
The server generates a random token on first start and logs it prominently. Copy it into the android app settings. To use a fixed token instead, pass `-e PHONE_CAPTURE_TOKEN=yourtoken`.
### 2. synq (android)
Download apk from Releases, on the right
Or, build from source:
Open `android/` in Android Studio and hit **Sync**. then either:
- **run on device/emulator directly** from Android Studio (▶), or
- **build a release APK** from the terminal:
```bash
cd android
./gradlew assembleRelease
# output: app/build/outputs/apk/release/app-release-unsigned.apk
```
sideload to a connected device:
```bash
adb install app/build/outputs/apk/release/app-release-unsigned.apk
```
### releasing on gitea
tag the commit and push the tag:
```bash
git tag v1.0.0
git push gitea v1.0.0
```
then go to **Releases → New Release** in the Gitea UI, pick the tag, and drag the APK into the assets box. anyone on the LAN can download it from there.
- **build a release APK**
Then sideload to a connected device:
- terminal: `adb install app/build/outputs/apk/release/app-release-unsigned.apk`

View File

@@ -14,13 +14,17 @@ android {
applicationId = "me.hgsky.synq"
minSdk = 31
targetSdk = 36
versionCode = 1
versionName = "0.1.0"
versionCode = 2
versionName = "1.0.1"
}
buildTypes {
release {
isMinifyEnabled = false
isMinifyEnabled = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}

16
android/app/proguard-rules.pro vendored Normal file
View File

@@ -0,0 +1,16 @@
# Keep Room entities and DAOs
-keep class me.hgsky.synq.data.db.** { *; }
# Keep Retrofit/OkHttp
-dontwarn okhttp3.**
-keep class okhttp3.** { *; }
# Keep kotlinx.serialization
-keepattributes *Annotation*, InnerClasses
-dontnote kotlinx.serialization.AnnotationsKt
-keepclassmembers class kotlinx.serialization.json.** { *** Companion; }
-keepclasseswithmembers class **$$serializer { *; }
-keepclassmembers @kotlinx.serialization.Serializable class ** {
*** Companion;
*** serializer(...);
}