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:
purpl
2026-06-27 12:26:43 +08:00
parent 0be91bc45b
commit a179e5c4cc
2 changed files with 95 additions and 0 deletions

92
AGENTS.md Normal file
View 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.