Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions .github/workflows/asm_build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ on:
- "main"
- "indexing"
- "release/**"
- "lite/**"
paths-ignore:
- '**.md'
- '**.json'
Expand Down
80 changes: 80 additions & 0 deletions LITE_BASELINE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
# LITE Baseline — Agent-1

Tanggal: 2026-09-06 (UTC)
Repo: /data/data/com.termux/files/home/acs-lite
Peran: READ-ONLY + setup branch. TIDAK edit build.gradle / termux / lite logic (milik agent lain).

## 1. Branch & Commit
- Base: `dev` (origin/dev, shallow depth 1)
- Branch aktif: `lite/ram2gb-lite` (baru dibuat dari dev via `git checkout -b lite/ram2gb-lite`)
- Commit HEAD: `e93e7468e6482ea51ef8e1adad6b7c6de86ae7cd`
- Subject: `e93e746 ci: use GitHub Secrets for signing credentials`
- `git log --oneline -5`: hanya 1 commit visible (shallow depth 1) → `e93e746`
- `git status` saat verifikasi awal (di dev): clean. Setelah checkout branch, muncul perubahan milik agent lain (DIBIARKAN, tidak disentuh):
- `M core/app/build.gradle.kts` (24 insertions)
- `?? LITE_BUILD.md`
- `?? gradle.properties.lite`
- `?? ideconfigurations/.../LiteMode.kt`

## 2. Ukuran Repo
- `du -sh .` → `243M`
- Top-15 (`du -sh */ | sort -rh | head`):
1. 66M `termux/`
2. 61M `composite-builds/`
3. 16M `core/`
4. 6.7M `external/`
5. 3.3M `xml/`
6. 3.2M `utilities/`
7. 1.8M `java/`
8. 1.7M `editor/`
9. 1.2M `tooling/`
10. 352K `event/`
11. 321K `logging/`
12. 232K `images/`
13. 182K `annotation/`
14. 71K `gradle/`
15. 56K `ideconfigurations/` (52K saat cek pertama, fluktuasi karena file untracked agent lain)

## 3. Modul (settings.gradle.kts)
- File: `settings.gradle.kts` (`rootProject.name = "AndroidCodeStudio"`)
- Hitungan mentah: `grep -o '":[^"]*"' | wc -l` → `60`
- Koreksi: -1 template `":${module}"` (dependencySubstitution loop), -2 commented (`:server:server`, `:server:shared`) → **57 modul aktif**
- Daftar 57: `:annotation:annotations`, `:annotation:processors`, `:annotation:processors-ksp`, `:external:acsprovider`, `:external:atc`, `:core:projectdata`, `:external:logwire`, `:core:actions`, `:core:app`, `:ideconfigurations`, `:core:common`, `:core:indexing-api`, `:core:indexing-core`, `:core:lsp-api`, `:core:lsp-models`, `:core:projects`, `:core:resources`, `:editor:api`, `:editor:impl`, `:editor:lexers`, `:editor:treesitter`, `:event:eventbus`, `:event:eventbus-android`, `:event:eventbus-events`, `:java:javac-services`, `:java:lsp-setup`, `:java:lsp`, `:logging:idestats`, `:logging:logger`, `:logging:logsender`, `:termux:application`, `:termux:emulator`, `:termux:shared`, `:termux:view`, `:tooling:api`, `:tooling:builder-model-impl`, `:tooling:events`, `:tooling:impl`, `:tooling:model`, `:tooling:plugin`, `:tooling:plugin-config`, `:utilities:build-info`, `:utilities:flashbar`, `:utilities:framework-stubs`, `:utilities:lookup`, `:utilities:preferences`, `:utilities:shared`, `:utilities:templates-api`, `:utilities:templates-impl`, `:utilities:treeview`, `:utilities:uidesigner`, `:utilities:xml-inflater`, `:xml:aaptcompiler`, `:xml:dom`, `:xml:lsp`, `:xml:resources-api`, `:xml:utils`
- Composite builds tambahan: `composite-builds/build-logic`, `composite-builds/build-deps`, `composite-builds/build-deps-common`

## 4. Submodule
- `.gitmodules`:
```
[submodule "composite-builds/external/logback-android"]
path = composite-builds/external/logback-android
url = https://github.com/evil-hero/logback-android
```
- `git submodule status` (dan `--recursive`) → **output kosong, exit 0** (tidak ada entri terdaftar)
- `git ls-files --stage | grep -c "^160000"` → `0` (tidak ada gitlink)
- `ls composite-builds/external/logback-android/` → **TERISI** (logback-classic, logback-core, dsb. + .github, README, dsb.) — file terlacak sebagai regular files (100644), bukan submodule.
- Kesimpulan: **TIDAK kosong, TIDAK perlu init. JANGAN `git submodule update --init` penuh (hemat disk).** Entri `.gitmodules` stale / sudah di-flatten ke shallow clone.

## 5. Verifikasi File Kunci
- `ls core/app/src/main` → `AndroidManifest.xml`, `assets`, `java`, `res` (ADA)
- `cat version.properties` → `# rev version control` + `version.name.rev=1.0`
- `cat ideconfigurations/build.gradle.kts` → ADA (`com.android.library` + `kotlin-android`, namespace `${BuildConfig.packageName}.ideconfigurations`, deps: `projects.core.resources`, `projects.core.common`, material, appcompat, preference, core-ktx, kotlin)
- `git branch -a` (awal): `* dev`, `remotes/origin/dev` saja. Kini + `lite/ram2gb-lite`.

## 6. RAM / Disk Device
- Spek tugas: Mem 3.6G, avail 8.8G
- Aktual `free -h` (2026-09-06):
```
Mem: 3.5Gi total, 3.0Gi used, ~217Mi free, ~625Mi buff/cache, ~583Mi available
Swap: 6.0Gi total, 2.5Gi used, 3.5Gi free
```
→ RAM ketat, wajib build hemat (sesuai misi lite/ram2gb).
- Aktual `df -h .`:
```
/dev/block/dm-61 47G Size, 39G Used, 8.5G Avail (82%)
```
→ konsisten dengan estimasi avail 8.8G (sedikit turun ke 8.5G). Jangan init submodule penuh.

## 7. Catatan untuk Koordinator
- Branch `lite/ram2gb-lite` sudah siap, base = dev @ e93e746.
- Working tree kotor oleh agent lain — Agent-1 tidak menyentuh.
- File ini (`LITE_BASELINE.md`) satu-satunya file baru dari Agent-1.
139 changes: 139 additions & 0 deletions LITE_BUILD.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,139 @@
# LITE BUILD — Akselerasi Build HP RAM 2GB (Agent-4)

> Batasan: JANGAN edit `termux/*` atau flavor logic inti (milik Agent-2/3).
> JANGAN sentuh AI deps (`generativeai`). Hanya tambah config build.
> Dibaca: `gradle.properties`, `build.gradle.kts` (root), `core/app/build.gradle.kts`, `gradle/libs.versions.toml` (AGP 8.13.0, Kotlin 2.1.0).

## 1. File dibuat/diubah

1. **BARU: `gradle.properties.lite`** — tuning RAM kecil. Asli TIDAK dioverwrite.
2. **EDIT (komentar saja): `core/app/build.gradle.kts`** — tambah `// LITE-BUILD-SNIPPET` non-aktif agar tidak conflict Agent-3. Update: saat penulisan, flavor `lite`/`full` dimensi `tier` milik Agent-3 sudah muncul di working tree (uncommitted) — snippet diselaraskan ke `getByName("lite")` + `dimension = "tier"`, tetap dikomen.
3. **BARU (file ini): `LITE_BUILD.md`** — instruksi + laporan.

## 2. Cara pakai

```bash
# backup dulu (sekali saja)
cp gradle.properties gradle.properties.bak

# aktifkan mode lite
cp gradle.properties.lite gradle.properties

# build lite debug, batasi worker (RAM 2GB)
./gradlew :core:app:assembleLiteDebug --max-workers=2 --offline
# atau jika flavor lite belum ada (Agent-3 belum selesai), pakai debug biasa:
./gradlew :core:app:assembleDebug --max-workers=2 --offline

# varian lain (setelah flavor lite ada):
./gradlew :core:app:assembleLiteRelease --max-workers=2
./gradlew :core:app:assembleArm64V8aLiteDebug --max-workers=2

# verifikasi ringan tanpa full build:
./gradlew help --offline --max-workers=2
./gradlew :core:app:tasks --offline --dry-run --max-workers=2

# kembalikan ke normal:
cp gradle.properties.bak gradle.properties
```

> `assembleLiteDebug` butuh `productFlavors { create("lite") }` Agent-3 — saat ini sudah ada di working tree (dimensi `tier`, uncommitted). Jika checkout bersih tanpa itu, pakai `assembleDebug`.

## 3. Sebelum vs sesudah

| Item | Sebelum (`gradle.properties` asli) | Sesudah (`gradle.properties.lite`) | Efek |
|---|---|---|---|
| `org.gradle.jvmargs` Xmx | `-Xmx4096M` + `kotlin.daemon.jvm.options -Xmx4096M` | `-Xmx1024M` + `-Xmx1024M` | Heap -75%, muat di 2GB, cegah OOM-kill |
| `org.gradle.workers.max` | tidak diset (nCPU) | `2` | CPU/RAM stabil |
| `org.gradle.parallel` | `true` | `true` (tetap) | — |
| `org.gradle.caching` | `true` | `true` (tetap) | — |
| `org.gradle.configuration-cache` | dikomen (`#`) | `true` | Build ulang config lebih cepat |
| `android.nonTransitiveRClass` | `false` + TODO Migrate | `true` | Kompilasi R lebih ringan |
| `kotlin.incremental` / `kotlin.parallel.tasks.in.project` | tidak ada | `true` | Incremental lebih cepat |
| `android.useAndroidX` | `true` | `true` (tetap) | — |
| `lint abortOnError` (`core/app`) | `false` | `false` (tetap, lihat snippet) | Lite tidak berhenti karena lint |
| ABI / shrink (snippet) | `release { isShrinkResources=false }`, tanpa `abiFilters` | `lite-debug: minify=false, shrink=false`; `lite-release: minify+shrink=true`; `abiFilters arm64-v8a` | Debug cepat, release kecil |

## 4. Snippet yang ditambah

### 4a. `gradle.properties.lite` (penuh)

```properties
org.gradle.jvmargs=-Xmx1024M \
-Dkotlin.daemon.jvm.options="-Xmx1024M" \
-XX:+HeapDumpOnOutOfMemoryError \
--add-opens java.base/java.lang=ALL-UNNAMED \
--add-opens java.base/java.util=ALL-UNNAMED \
--add-opens java.base/java.io=ALL-UNNAMED
org.gradle.parallel=true
org.gradle.caching=true
org.gradle.daemon=true
org.gradle.configuration-cache=true
org.gradle.workers.max=2
kotlin.incremental=true
kotlin.parallel.tasks.in.project=true
android.useAndroidX=true
android.enableJetifier=false
android.jetifier.ignorelist=common-30.2.2.jar
android.nonTransitiveRClass=true
systemProp.https.protocols=TLSv1,TLSv1.1,TLSv1.2
android.r8.version=8.6.17
org.gradle.configureondemand=false
```

### 4b. `core/app/build.gradle.kts` — komentar non-aktif (tidak hapus blok Agent-3)

```kotlin
// LITE-BUILD-SNIPPET (Agent-4, non-aktif agar tidak conflict Agent-2/3) —
// Agent-3 sudah membuat productFlavors lite/full dimensi "tier" (lihat atas).
// Jangan hapus blok Agent-3. Contoh aktif susulan untuk varian lite (hemat RAM/ukuran, arm64 saja):
// productFlavors {
// getByName("lite") {
// dimension = "tier" // sama dengan milik Agent-3
// ndk { abiFilters += "arm64-v8a" }
// // resourceConfigurations += listOf("in", "en") // opsional: pangkas bahasa
// }
// }
// buildTypes {
// getByName("debug") {
// // default lite-debug: tanpa minify agar cepat di RAM 2GB
// isMinifyEnabled = false
// isShrinkResources = false
// }
// getByName("release") {
// // jika build lite-release: minify+shrink aktif untuk APK kecil
// // isMinifyEnabled = true
// // isShrinkResources = true
// }
// }
// lint { abortOnError = false } // tetap false untuk lite
```

Lokasi: di dalam blok `android { }`, setelah blok `lint { }`, sebelum `packaging { }`. Blok `buildTypes { debug/release }` dan `lint { abortOnError=false }` asli dibiarkan utuh.

## 5. Estimasi hemat (tanpa full build, teoritis)

- Heap Gradle+Kotlin: 8GB (4+4) → 2GB (1+1) = **hemat ~6GB virtual, -75%**, OOM di 2GB jauh berkurang.
- Worker dibatasi 2: cegah thrashing, build lebih lambat ~10-20% di HP 8-core tapi **tidak mati di tengah jalan**.
- `configuration-cache=true`: **hemat 20-40%** waktu pada build incremental/no-op setelah cache hangat.
- `nonTransitiveRClass=true`: modul dependen kompilasi ulang lebih sedikit, **hemat 5-15%** waktu + RAM kompilasi.
- `abiFilters arm64-v8a` saja (saat flavor lite aktif): paket native **~40-50% lebih kecil** vs 2 ABI, packaging/linking lebih cepat.
- `minify=false, shrink=false` untuk `lite-debug`: dex/R8 skip → debug **paling cepat**; aktifkan hanya di `lite-release` untuk APK kecil.
- Total: tidak bisa diukur pasti tanpa device, tapi target **build debug jalan di 2GB** yang sebelumnya OOM pada Xmx4096M.

## 6. Hasil verifikasi ringan

```bash
./gradlew help --offline --max-workers=2
# ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
# java -version: command not found, JAVA_HOME kosong, ANDROID_HOME/SDK tidak ada.
```

- Status: **GAGAL (expected)** — lingkungan Termux ini tanpa Java dan tanpa Android SDK, jadi Gradle tidak bisa jalan.
- Full build sengaja TIDAK dijalankan sesuai instruksi.
- Sintaks: file `.lite` = properties biasa (aman), edit `build.gradle.kts` hanya komentar `//` (tidak merusak kompilasi).
- Langkah lanjut di mesin builder (ada JDK 17 + SDK): jalankan `help --offline` lalu `assembleDebug --max-workers=2` untuk ukur waktu riil.

## 7. Catatan koordinasi

- Agent-2/3: snippet di atas sengaja dikomen. Saat `productFlavors` sudah ada, pindahkan `abiFilters` ke flavor `lite` dan sesuaikan `dimension`.
- Tidak menyentuh `termux/*`, AI deps (`generativeai:0.9.0`), `signingConfigs`, `applicationVariants` rename logic.
66 changes: 66 additions & 0 deletions LITE_FEATURES.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,66 @@
# LITE Flavor — Varian Ringan RAM 2GB (Agent-3)

Target: APK lebih kecil + hemat RAM, **AI (generativeai) tetap dipertahankan**.
`settings.gradle.kts` TIDAK diubah — semua modul tetap ada untuk varian `full`.

## Flavor

- Dimensi `tier`: `lite` (`applicationIdSuffix .lite`, `versionNameSuffix -lite`)
dan `full`. Definisi di `core/app/build.gradle.kts:75-90`.
- Fallback suffix APK `universal` untuk varian flavor tanpa filter ABI
(`core/app/build.gradle.kts:183-193`) agar konfigurasi varian tidak throw.
- Flag runtime: `LiteMode` (`ideconfigurations/.../utils/LiteMode.kt`),
`isLowRam(context)` via `ActivityManager.isLowRamDevice` / `memoryClass <= 128`.

## Dipangkas (lite) vs Dipertahankan

> Stage-1 SAFE (saat ini, agar `lite` tetap kompilasi untuk Kotlin/Java):
> 9 kandidat di bawah masih `implementation` + tag `LITE-Stage1`.
> Stage-2 (setelah call-site di-guard `LiteMode.isLowRam()`): flip ke `fullImplementation`.

| Dependensi | Status lite Stage-1 | Lokasi |
|---|---|---|
| `utilities:uidesigner` | STAGE-1 `implementation`, NEXT `fullImplementation` | `core/app/build.gradle.kts:346` |
| `utilities:xmlInflater` | STAGE-1 `implementation`, NEXT `fullImplementation` | `core/app/build.gradle.kts:347` |
| `logging:idestats` | STAGE-1 `implementation`, NEXT `fullImplementation` | `core/app/build.gradle.kts:331` |
| `logging:logsender` | STAGE-1 `implementation`, NEXT `fullImplementation` | `core/app/build.gradle.kts:332` |
| BlurView | STAGE-1 `implementation`, NEXT `fullImplementation` | `core/app/build.gradle.kts:237` |
| seasonal.effects | STAGE-1 `implementation`, NEXT `fullImplementation` | `core/app/build.gradle.kts:244` |
| charts | STAGE-1 `implementation`, NEXT `fullImplementation` | `core/app/build.gradle.kts:259` |
| SilentInstaller | STAGE-1 `implementation`, NEXT `fullImplementation` | `core/app/build.gradle.kts:275` |
| appintro (composite) | STAGE-1 `implementation`, NEXT `fullImplementation` | `core/app/build.gradle.kts:307` |
| generativeai (AI) | DIPERTAHANKAN (`implementation`) | `core/app/build.gradle.kts:~268` |
| editor (`libs.common.editor`, `editor:impl`) | DIPERTAHANKAN | tidak diubah |
| java LSP (`java:javac-services`, `lsp-setup`, `lsp`) | DIPERTAHANKAN | tidak diubah |
| xml LSP inti (`xml:lsp`, `aaptcompiler`, `utils`) | DIPERTAHANKAN | tidak diubah |
| JGit | DIPERTAHANKAN | tidak diubah |
| preferences, treeview | DIPERTAHANKAN | tidak diubah |
| termux/*, gradle.properties | TIDAK DISENTUH (milik Agent-2/4) | — |

Setiap baris kandidat ditandai `// LITE-Stage1`: sebelum
`assembleLite`, call-site (Activity/preview/worker) yang memakai modul
full-only wajib di-guard dengan `LiteMode.isLowRam()`, baru flip ke `fullImplementation`.

## File dibuat/diubah

1. BARU: `ideconfigurations/src/main/java/com/tom/rv2ide/ideconfigurations/utils/LiteMode.kt`
— `object LiteMode { ENABLED, isLowRam(context), memoryClassMb(context) }`.
Dipilih `ideconfigurations` (Android library, ada `Context`);
`utilities/shared` JVM murni sehingga tidak cocok.
2. UBAH: `core/app/build.gradle.kts` — flavor `lite`/`full` (72-90),
fallback `universal` (183-193), 9 dep berat → `fullImplementation`
(236-347).
3. APPEND: `core/app/proguard-rules.pro` (156-161) — keep `LiteMode` +
`generativeai`.

## Kandidat exclude modul (catatan saja, TIDAK dieksekusi)

Jika suatu saat modularisasi per-flavor diizinkan: `:utilities:uidesigner`,
`:utilities:xml-inflater`, `:logging:idestats`, `:logging:logsender`.
Butuh guard kode + source-set per flavor — wewenang lanjutan, bukan sekarang.

## Verifikasi ringan

- `git diff --stat`: 2 file diubah (`core/app/build.gradle.kts`,
`core/app/proguard-rules.pro`) + 1 file baru (`LiteMode.kt`).
- Assemble penuh TIDAK dijalankan (milik Agent-5).
Loading