Add AGENTS.md and update .gitignore
- Add AGENTS.md with project overview for AI agents - Update .gitignore to exclude CodeWhale and DeepSeek tooling
This commit is contained in:
92
AGENTS.md
Normal file
92
AGENTS.md
Normal file
@@ -0,0 +1,92 @@
|
||||
# AGENTS.md — CB-C6s-STU-GSI-Fixes
|
||||
|
||||
## Overview
|
||||
|
||||
TWRP flashable zip for the **CB-C6s-STU** tablet (Spreadtrum/Unisoc) running a
|
||||
GSI. It appends `build.prop` properties, installs a touchscreen IDC config,
|
||||
and installs a camera sensor config. All install logic lives in a shell-script
|
||||
`update-binary` — no compiled code, no build system.
|
||||
|
||||
## Build / Package
|
||||
|
||||
```bash
|
||||
# Create the flashable zip (excluded from git via .gitignore)
|
||||
cd /home/purpl/Repos/CB-C6s-STU-GSI-Fixes
|
||||
zip -r ../CB-C6s-STU-GSI-Fixes.zip META-INF/ system/ vendor/
|
||||
```
|
||||
|
||||
No build dependencies, no lint, no test suite.
|
||||
|
||||
## Architecture
|
||||
|
||||
```
|
||||
zip root
|
||||
├── META-INF/com/google/android/
|
||||
│ ├── update-binary ← Entry point: POSIX sh script, executed by TWRP
|
||||
│ └── updater-script ← Dummy placeholder (TWRP ignores it)
|
||||
├── system/
|
||||
│ ├── build.prop ← Properties APPENDED (>>) to /system/build.prop
|
||||
│ └── usr/idc/
|
||||
│ └── goodix_ts.idc ← Copied to /system/usr/idc/goodix_ts.idc (644)
|
||||
└── vendor/etc/
|
||||
└── sensor_config.xml ← Copied to /vendor/etc/ or /system/vendor/etc/ (644)
|
||||
```
|
||||
|
||||
### Install flow (update-binary)
|
||||
|
||||
1. Locate zip root: `dirname $0` → up 3 levels (`../../..`)
|
||||
2. Mount `/system` and `/vendor`
|
||||
3. **Append** `system/build.prop` → `/system/build.prop` (backup first to `.bak`)
|
||||
4. Copy `goodix_ts.idc` → `/system/usr/idc/`
|
||||
5. Copy `sensor_config.xml` → `/vendor/etc/` (fallback to `/system/vendor/etc/` for SAR)
|
||||
6. Report success via `ui_print()` to `/proc/self/fd/$OUTFD`
|
||||
|
||||
### Critical constraint: build.prop is APPENDED, never replaced
|
||||
|
||||
`update-binary` line ~72: `cat "$BUILDPROP_SRC" >> /system/build.prop`
|
||||
|
||||
The `>>` is intentional. Using `>` or `package_extract_dir` would clobber the
|
||||
device's existing properties. Re-flashing duplicates entries — warn the user or
|
||||
add idempotency if this becomes a problem.
|
||||
|
||||
## Key Files
|
||||
|
||||
| File | Role |
|
||||
|------|------|
|
||||
| `META-INF/…/update-binary` | Entire install logic (shell script) |
|
||||
| `META-INF/…/updater-script` | Placeholder; not executed |
|
||||
| `system/build.prop` | 5 properties appended to device's build.prop |
|
||||
| `system/usr/idc/goodix_ts.idc` | Touchscreen input device config (orientation + type) |
|
||||
| `vendor/etc/sensor_config.xml` | Camera module mapping: hi846, gc8034 (rear/front, 4 combos) |
|
||||
| `README.md` | User-facing documentation |
|
||||
| `.gitignore` | Excludes `*.zip` |
|
||||
|
||||
## Coding Conventions
|
||||
|
||||
- **Shell**: POSIX sh, no bashisms. Shebang `#!/sbin/sh` (TWRP environment).
|
||||
- **Error handling**: `abort()` helper exits with message. `2>/dev/null` on
|
||||
non-critical operations (mount, mkdir, cp backup).
|
||||
- **Naming**: `UPPER_CASE` for globals/file paths, `snake_case` for helpers.
|
||||
- **Partition logic**: `/vendor` mount is best-effort; falls back to
|
||||
`/system/vendor/etc/` when `/vendor/etc/` doesn't exist (SAR compatibility).
|
||||
|
||||
## Git Workflow
|
||||
|
||||
- Branch: `main` (root commit only)
|
||||
- Commit style: concise summary line, then bullet list of changes
|
||||
- `.gitignore`: excludes `*.zip` (the build artifact) and tooling directories
|
||||
|
||||
## Tips for AI Agents
|
||||
|
||||
- **This is not a software project** — there is no build system, no package
|
||||
manager, no test runner. Changes are edits to shell script or config files.
|
||||
- **To add a new fix**: add the payload file under `system/` or `vendor/`,
|
||||
add a step to `update-binary` with `ui_print` and `cp` (or append logic),
|
||||
update `README.md` "What it fixes" table.
|
||||
- **To add a new build.prop property**: append a line to `system/build.prop`.
|
||||
If it needs to be idempotent, add a grep guard in `update-binary`.
|
||||
- **Testing**: flash the zip in TWRP on the device. There is no emulation.
|
||||
- **The `updater-script` is a dummy** — do not add Edify commands there; put
|
||||
all logic in `update-binary`.
|
||||
- **Zip path**: the build artifact is written to the repo's parent directory,
|
||||
not inside the workspace. `*.zip` in `.gitignore` covers both locations.
|
||||
Reference in New Issue
Block a user