Live checklist of incomplete work. Historical surfaces are archived under
docs/roadmap/archive/. Research backing the items below: RESEARCH.md.
If a live copy of this file exists on another machine, merge these additions into it — existing items take precedence over duplicates.
All remaining items are in Roadmap_Blocked.md — gated on device access,
visual verification, privileged-mode testing, or external dependencies.
All remaining blocked items are in Roadmap_Blocked.md.
- P3 — Migrate remaining non-dedicated UI helper raw threads
Why: a few UI/helper paths still create raw threads instead of using project executors, leaving uncaught-exception and lifecycle behavior inconsistent with recent threading hygiene.
Evidence:
app/src/main/java/io/github/muntashirakon/AppManager/settings/crypto/OpenPgpKeySelectionDialogFragment.java:54;libcore/ui/src/main/java/io/github/muntashirakon/dialog/SearchableMultiChoiceDialogBuilder.java:270. Touches:settings/crypto/OpenPgpKeySelectionDialogFragment.java;libcore/ui/src/main/java/io/github/muntashirakon/dialog/SearchableMultiChoiceDialogBuilder.java; related unit/Robolectric tests. Acceptance: non-dedicated UI helper work usesThreadUtilsor an owned executor with clear main-thread handoff and cancellation/lifecycle behavior; no rawnew Thread()remains in those UI helper paths. Complexity: S
-
P2 — Re-enable pre-2026-05-25 ignored Robolectric fixture tests Why: five host-side tests are still skipped behind stale
@Ignoremarkers, masking ZIP/VFS/TAR/OAB/settings-search regressions and referencing a roadmap item that no longer exists. Evidence:app/src/test/java/androidx/documentfile/provider/ZipDocumentFileTest.java:32;app/src/test/java/io/github/muntashirakon/io/fs/ZipFileSystemTest.java:32;app/src/test/java/io/github/muntashirakon/AppManager/utils/TarUtilsTest.java:37;app/src/test/java/io/github/muntashirakon/AppManager/backup/convert/OABConverterTest.java:31;app/src/test/java/io/github/muntashirakon/AppManager/settings/SettingsSearchIndexTest.java:21; JUnit@Ignoredocumentation; Robolectric local-test documentation. Touches:app/src/test/java/androidx/documentfile/provider/ZipDocumentFileTest.java;app/src/test/java/io/github/muntashirakon/io/fs/ZipFileSystemTest.java;app/src/test/java/io/github/muntashirakon/AppManager/utils/TarUtilsTest.java;app/src/test/java/io/github/muntashirakon/AppManager/backup/convert/OABConverterTest.java;app/src/test/java/io/github/muntashirakon/AppManager/settings/SettingsSearchIndexTest.java; related fixture resources underapp/src/test/resources. Acceptance: no class-level@Ignore("env-fixture missing pre-2026-05-25; tracked in ROADMAP.md Test Suite Hygiene")remains; each test either runs deterministically with local fixtures or is split into supported focused tests;rtk .\gradlew.bat :app:testFlossDebugUnitTestexercises the restored coverage. Complexity: M -
P2 — Extend production stack-trace logging cleanup to app and libcore paths Why: after app-layer and server-focused logging cleanup, shared file/proc/UI utility paths still print directly to stderr instead of structured or intentionally suppressed diagnostics. Evidence:
app/src/main/java/io/github/muntashirakon/AppManager/logs/Log.java:51;app/src/main/java/io/github/muntashirakon/io/PathImpl.java:621;app/src/main/java/io/github/muntashirakon/io/PathImpl.java:1494;app/src/main/java/io/github/muntashirakon/proc/ProcFs.java:123;app/src/main/java/io/github/muntashirakon/proc/ProcFs.java:170;app/src/main/java/io/github/muntashirakon/proc/ProcFs.java:189;app/src/main/java/io/github/muntashirakon/proc/ProcFs.java:242;app/src/main/java/io/github/muntashirakon/proc/ProcMappedFiles.java:49;libcore/io/src/main/java/io/github/muntashirakon/io/Path.java:575;libcore/io/src/main/java/io/github/muntashirakon/io/Path.java:599;libcore/ui/src/main/java/io/github/muntashirakon/view/AutoCompleteTextViewCompat.java:30;libcore/ui/src/main/java/io/github/muntashirakon/view/AutoCompleteTextViewCompat.java:45. Touches:app/src/main/java/io/github/muntashirakon/AppManager/logs/Log.java;app/src/main/java/io/github/muntashirakon/io/PathImpl.java;app/src/main/java/io/github/muntashirakon/proc/ProcFs.java;app/src/main/java/io/github/muntashirakon/proc/ProcMappedFiles.java;libcore/io/src/main/java/io/github/muntashirakon/io/Path.java;libcore/ui/src/main/java/io/github/muntashirakon/view/AutoCompleteTextViewCompat.java; source-contract tests. Acceptance: no productionprintStackTrace()remains outside the already-activeserver/andlibserver/diagnostic item; optional reflection/proc/file failures are logged through an app/libcore logger or intentionally ignored with tests; a source-contract test pins the allowed production exception list. Complexity: S
-
P2 — Rebaseline packaged offline manual source truth Why: the packaged manual source still says upstream App Manager v4.0.1 and routes reports/translations to upstream destinations, while generated HTML contains a partial AppManagerNG fork notice, so
:docs:buildDocscan regress fork identity and support guidance. Evidence:docs/raw/en/intro/main.tex:4;docs/raw/en/intro/main.tex:12;docs/raw/en/intro/main.tex:40;docs/raw/en/intro/main.tex:52;docs/raw/en/intro/main.tex:79;docs/raw/en/strings.xml:21;docs/raw/en/strings.xml:23;docs/raw/en/index.html:156;docs/raw/en/index.html:185;CHANGELOG.md:348. Touches:docs/raw/en/intro/main.tex; generateddocs/raw/en/strings.xml; generateddocs/raw/en/index.html; docs build/source-contract tests. Acceptance: packaged English manual source, generated XML, and generated HTML agree on AppManagerNG identity, current support policy, fork-owned issue destinations, distribution links, and translation status;rtk .\gradlew.bat :docs:buildDocspreserves those strings; a grep/source-contract test fails on upstream-only support/version links outside historical changelog or explicit upstream-credit sections. Complexity: M -
P2 — Restore archive-link truth for tracked documentation Why: README/ROADMAP/docs index pages link to archive directories and files that are absent from tracked Git content, so published GitHub docs can point readers at missing history while local archive markdown remains untracked. Evidence:
README.md:96;ROADMAP.md:5;docs/roadmap/README.md:14;docs/roadmap/README.md:16;git ls-files docs/archive docs/roadmap/archive docs/patch-references docs/raw/changelog_old.md; GitHub ignore-file documentation. Touches:README.md;ROADMAP.md;docs/roadmap/README.md;.gitignore; docs link/source-contract checks. Acceptance: every tracked link todocs/archive/,docs/roadmap/archive/, ordocs/patch-references/either resolves ingit ls-filesor is removed/reworded to local-only; a clean docs build/research pass no longer leaves archive markdown directories as unexpected untracked files; a docs-link/source-contract check covers archive links. Complexity: S -
P3 — Ignore local JVM crash and replay artifacts under app Why: failed Gradle/test JVM runs leave
hs_err_pid*.logandreplay_pid*.logfiles underapp/, polluting the worktree and increasing accidental staging risk. Evidence:app/hs_err_pid10832.log;app/replay_pid10832.log;.gitignore; GitHub ignore-file documentation. Touches:.gitignore. Acceptance:.gitignoreexcludesapp/hs_err_pid*.logandapp/replay_pid*.log; existing local logs remain untracked and ignored afterrtk git status --short --ignored; no crash/replay logs are staged. Complexity: S
- P2 - Add bounded progress and partial-failure reporting to component-rule reset
Why: upstream reports "Remove All Rules" freezing; NG's component-rule reset loops every rule through privileged PackageManager/IFW paths and collapses failures into a boolean, leaving users without progress or a recovery ledger.
Evidence: upstream MuntashirAkon/AppManager#1986;
app/src/main/java/io/github/muntashirakon/AppManager/rules/compontents/ComponentsBlocker.java:401;app/src/main/java/io/github/muntashirakon/AppManager/rules/compontents/ComponentsBlocker.java:417;app/src/main/java/io/github/muntashirakon/AppManager/rules/compontents/ComponentsBlocker.java:476. Touches:app/src/main/java/io/github/muntashirakon/AppManager/rules/compontents/ComponentsBlocker.java; component-rule settings UI; operation history; component-rule tests. Acceptance: bulk reset exposes determinate package/component progress, keeps UI cancellable/responsive, records per-component successes/failures with retry data, and tests prove partial failures preserve unapplied rules instead of silently reporting a generic false. Complexity: M