AMOLED-black · Snapdragon 855 tuned · upstream-synced · auto-built on free GitHub Actions
Iceraven OP7 is the Iceraven Browser (Fenix + GeckoView + Android Components) engineered for the OnePlus 7 — not a new browser, not a rewrite, not a WebView shell.
Everything Gecko does stays Gecko. The OP7 layer is thin, measurable, documented, and automatically maintained:
| Layer | What it does |
|---|---|
| Pinned upstream | exact Iceraven commit (upstream/commit.txt), never a moving branch |
| Upstream patch layer | Iceraven's own build-time patches, exactly like upstream CI |
| OP7 patch set | tiny, documented patches/op7/ (001–006) — arm64-only, capability log, seamless launch, AMOLED pure-black + OnePlus red accent |
| GitHub Actions | free runners: check upstream → sync → patch → build → validate → release |
| Fails closed | upstream conflict or failed gate = no build, no publish, issue-style report |
| Revision | Content | Status |
|---|---|---|
| r1–r2 | arm64-only distribution, installable APK (testOnly bug fixed) | ✅ shipped |
| r3 | DeviceCapabilities fingerprint (ABI, RAM, GLES/Vulkan, codecs) |
✅ shipped |
| r4 | Seamless launch — splash matches home surface | ✅ shipped |
| r5 | AMOLED true-black dark theme — #000000 surfaces, power-friendly |
✅ shipped |
| r6 | Settings visible on AMOLED — preference rows as cards on black | ✅ shipped |
| r7 | Pure-black everywhere + OnePlus red — all gray fills removed, hairline structure, #EB0029 accent |
✅ this revision |
| r8+ | One measured optimization per revision, gated on before/after benchmarks | 🔄 planned |
Verification-only (no code change, measured on device): hardware video decode (H.264/HEVC/VP9), content-process cap, background drain, real-page smoothness 60 Hz / ~5 % jank.
- Gecko / GeckoView / Android Components architecture
- Sandboxing, site isolation, HTTPS, certificate validation
- Privacy defaults, extensions, web compatibility
- No
-march=native, no hard-coded CPU instructions, no security trade-offs
Model GM1901 GPU Adreno 640
SoC Snapdragon 855 Vulkan supported
ABI arm64-v8a OpenGL ES 3.2
Android 10 (OxygenOS) Hardware video H.264 / HEVC / VP9
RAM 8 GB Display AMOLED (hence r5)
docs/op7-project-audit.md Phase 0 audit (start here)
docs/architecture.md layer ownership map
docs/baseline.md golden-rule baseline record
docs/performance/ methodology + startup/smoothness/media/battery
docs/roadmap.md live plan + error matrix
docs/reproducible-build.md traceability + release identity
docs/field-notes/ lessons log + session digests (auto-synced to the playbook)
patches/op7/ OP7 patch set (001–006)
automation/op7/ check / sync / patch / metadata scripts
upstream/commit.txt pinned upstream commit
.github/workflows/ CI | Upstream Check | OP7 Build | Maintenance
| Workflow | Trigger | What it does |
|---|---|---|
CI |
push / PR | actionlint + shellcheck + pin/revision format |
Upstream Check |
schedule / manual / dispatch | detects upstream moves, opens sync issue, dispatches the full build with auto_release=true |
OP7 Build |
workflow_dispatch |
mirror → patch → build → validate → (auto release when gates pass) |
Maintenance |
schedule / manual | monthly cleanup + self-check |
Validation build (~13–25 min, no R8; cold builds without cache take longer):
gh workflow run op7-build.yml -f abi=arm64-v8a -f release=false -f fast=true
Release build (~40 min, gated, requires release secrets):
gh workflow run op7-build.yml -f abi=arm64-v8a -f release=true -f release_tag=op7-<version>-r<rev>
Automatic release: when Upstream Check detects a new upstream commit, the sync
build runs with auto_release=true. A GitHub Release (op7-<version>-r<rev>,
tag auto-generated from version.txt + op7-revision.txt) is published ONLY
after every quality gate passes and the release secrets exist. Any patch
conflict or failed gate stops the pipeline — nothing is published. Manual
release=true still works for same-upstream revision bumps (e.g. r7 on an
unchanged upstream).
Every lesson from this project is recorded in docs/field-notes/ and
auto-synced into the OP7 Special-Build Playbook
— a searchable, reusable knowledge base for this and future special builds.
Agents connect to it via the op7-special-build Codex skill:
- New machine/agent (one command):
git clone --depth 1 https://github.com/rajbhx/op7-special-build-playbook && bash op7-special-build-playbook/scripts/install_skill.sh - Already installed — refresh at session start:
bash /root/.shared-skills/op7-special-build/scripts/update_skill.sh - No skill support — search the playbook clone directly:
python3 scripts/lookup.py <problem words>
The skill self-updates from the playbook repo (cheap git ls-remote check,
sparse fetch + atomic swap with backup, offline-safe), and the playbook
auto-syncs this repo's field notes every 6h — the loop stays current with
zero manual copying.
- Validation:
DEBUG_SIGNING_KEY,DEBUG_ALIAS,DEBUG_KEY_STORE_PASSWORD,DEBUG_KEY_PASSWORD - Release (protected
releaseenvironment):OP7_RELEASE_KEYSTORE_BASE64,OP7_RELEASE_KEYSTORE_PASSWORD,OP7_RELEASE_KEY_ALIAS,OP7_RELEASE_KEY_PASSWORD
Keys are never committed. PR-triggered jobs never see release secrets.
The phone ships with the right hardware for this browser: 8 GB RAM for content processes, Adreno 640 for WebRender, and hardware codecs GeckoView already uses — so the engineering here is tuning and measurement, not replacement. r5 makes the AMOLED panel earn its black.