Restore disable_configstore, EuiccDisabler and thermal CDEV guards, branding and rebuild/sync helpers; document device roles, laptop migration, and Gitea. Co-authored-by: Cursor <cursoragent@cursor.com>
4.9 KiB
Design: native call-recording unlock + FLAG_SECURE override (008/009)
Date: 2026-09-16
Status: Landed via Magisk 009 ship pack (2026-10). Spec:
specs/008-call-rec-flag-secure/
LAB only: 11231JEC207477.
Scope note: “No Magisk/LSPosed/Zygisk” applies to these two native toggles (they are ROM Settings/framework). It does not mean the ROM ships without Magisk — Magisk preroot is a separate
009requirement.
Problem
- Lineage Dialer can refuse call recording based on country / carrier rules even when the user wants to record.
- Apps set
FLAG_SECUREso screenshots / screen capture fail; we want an optional global override (project-specific; not AXP Pro catalog).
Goals (MVP)
Two Developer Options switches (same UX pattern as 005
allow_signature_fake):
| Toggle (plain language) | Secure setting | Default | Effect when ON |
|---|---|---|---|
| Disable call recording restrictions | extendrom_call_recording (GOLDEN / EXTENDROM) |
0 |
Country/region limits ignored; Dialer may record |
| Allow screenshots of secure windows | disable_secure_windows (AOSP; DO pref allow_flag_secure_override) |
0 |
Global: ignore FLAG_SECURE for screenshots / screen capture (debuggable builds) |
- Global only — product requirement; no per-app lists (not planned).
- OFF = stock Android / LOS behaviour.
- No root modules required at runtime.
Non-goals
- Full AXP call-recording policy UI (auto-record rules, etc.).
- Per-app FLAG_SECURE lists (out of scope permanently for this project).
- Banking / KernelSU (
007incomplete). - Shipping Magisk zips.
Approaches considered
Call recording
| Approach | Pros | Cons |
|---|---|---|
| A. EXTENDROM / AXP GOLDEN native F_CALLREC (chosen) | Same Secure key as GOLDEN (extendrom_call_recording=1 observed); DO + Dialer gate; attributable |
Re-validate paths on LOS 23.2 / A16 |
B. Magisk Dialer RRO (call_record_states.xml) |
Tiny | Not native; no GOLDEN parity; rejected |
| C. Blind-copy A11 overlays only | Fast | May no-op without Dialer Java gate |
Choice: A. Primary sources:
/srv/rom/references/extendrom/er.sh (F_CALLREC),
overlays/call-rec, config/call-rec/…/CallRecPreferenceController.java.
Secure string: Settings.Secure.ER_ALLOW_ANY_CALL_REC = "extendrom_call_recording".
Also enable Dialer call_recording_enabled / audio source as needed for
sunfish (EXTENDROM sets call_recording_enabled=true,
call_recording_audio_source=4), after verifying LOS 23.2 Dialer still uses
those resources.
FLAG_SECURE
| Approach | Pros | Cons |
|---|---|---|
A. DO → AOSP DISABLE_SECURE_WINDOWS (chosen) |
Already in WMS on A16; tiny surface | Debuggable-only gate in stock WMS |
B. Magisk services.jar patcher |
Works on user |
Not native ROM |
| C. Duplicate frameworks hooks under another Secure key | — | Redundant with AOSP |
Choice: A. Wire Settings DO to disable_secure_windows.
Design
Settings / UI
- Category under Developer Options (new or shared “Privacy overrides” / EXTENDROM-style categories).
- Two
SwitchPreferences + short legal/risk summaries (call recording: user responsible for local law — EXTENDROM wording as reference). - Controllers mirror
005/ EXTENDROMDeveloperOptionsPreferenceController: writeSettings.Secure0/1; reset to 0 when Developer Options master is disabled.
Call recording path
- Inventory LOS 23.2 Dialer: where country/carrier recording is blocked
(
isCountryAllowedor successor). - When
extendrom_call_recording=1, treat as allowed (GOLDEN). - Ensure recording feature is compiled/enabled for Dialer on sunfish
(
config.xml/ product overlay as required). - LAB: enable toggle → place/receive call → record → file exists; disable → region block behaviour restored (or stock deny if in restricted region).
FLAG_SECURE path
- Confirmed A16:
WindowManagerService+WindowState.isSecureLocked()already honourSettings.Secure.DISABLE_SECURE_WINDOWS. - DO switch writes that key (UI title: Allow screenshots of secure windows).
- LAB userdebug: OFF blocked / ON capturable; document DRM exceptions.
Packaging
- Patches under
vendor/sunfish-a16/patches/008-…(idempotent apply script like005-sigspoof), attributed to EXTENDROM/er.shF_CALLREC (call-rec) and native frameworks work (FLAG_SECURE). - No Magisk in the bacon zip; no Magisk zips in the meta-repo.
Validation
- LAB serial only; document settings get/put and screenshots/logs under
/srv/rom/artifacts/008-…. - Does not reopen
007banking gates.
Relationship to roadmap numbers
| Roadmap # | Theme | This feature |
|---|---|---|
| 008 | Call recording | Included |
| 009 | FLAG_SECURE | Included (global only) |
Single Spec Kit directory: specs/008-call-rec-flag-secure/.