列表清理 · List Cleaner

简体中文 | English

精简 Android 分享、打开方式、浏览器和文本处理菜单,让常用应用优先显示;通过 Root 管理应用提供的磁贴、快捷方式创建入口和桌面小部件。

下载模块 · 源码与完整说明 · 问题反馈 · Telegram 频道

Telegram 频道

关注 @LISTCLEANER 获取版本更新、使用提示和相关消息。

加入 Telegram 频道 @LISTCLEANER

List Cleaner Telegram 频道二维码

使用要求

  • Android 12 及以上。
  • 规则过滤和排序需要支持 modern libxposed API 102 的框架。启用模块、配置推荐作用域,并按框架提示重启。
  • 组件管理另外需要在 KernelSU、Magisk 等管理器授予 Root 权限。启用 LSPosed 模块不等于授予 Root。

功能

  • 规则过滤:分享、多文件分享、打开方式、浏览器、文本处理分别配置,支持搜索和按应用展开组件。可选择隐藏选中、只显示选中或全部显示;当前分类没有选中规则时显示全部。
  • 批量操作锁与应用类型筛选:规则、排序和组件页共用锁定机制;应用或子项向右滑加锁、向左滑解锁,未锁定不显示图标,锁定后才显示。整体或部分锁定的项目会跳过全选/反选等批量操作,仍可手动修改;“全部 → 已锁定”会汇总各分类锁定项。同时可用紧凑下拉按全部、用户应用、系统应用过滤。应用类型与锁定都不参与排序,也不改变已选/半选/未选状态。
  • 优先排序:按分类保存应用顺序。勾选加入优先列表、取消后回到默认名称顺序;支持长按拖动和上移、下移。锁定不会改变已保存顺序。
  • 组件管理:标准磁贴继续按 TileService 发现;快捷方式创建入口合并 Android LauncherApps 配置 Activity 与旧 ACTION_CREATE_SHORTCUT;小部件优先读取 AppWidgetManager Provider 注册表并以 Manifest 扫描补充。组件发现采用标准 API 优先、兼容路径补充、异常 fail-open;APK 更新后若 system_server 仍运行旧 Hook,会通过运行时能力握手自动降级到安全扫描,确认新版协议后才启用完整 Widget 注册表发现。Root 负责真实禁用;同时保存持久禁用策略,通过 LSPosed/system_server 过滤发现结果,并在开机、解锁及应用更新后自动校正被恢复的组件状态。
  • 备份与诊断:导入、导出规则和排序 JSON 备份,查看模块状态并导出诊断日志;组件诊断包含持久策略、发现过滤和开机校正结果。

使用说明

规则页的应用勾选只针对当前分类和搜索条件下显示的组件,不会禁用整个应用。组件页则实际修改系统组件启用状态,两者作用不同。批量操作锁通过右滑加锁、左滑解锁;未锁定不显示锁图标,锁定后才显示状态图标。整体锁保护整个应用,部分锁只保护对应子项;被锁项目仅跳过全选/反选等批量操作,仍能手动修改。锁不参与排序,也不改变已选/半选/未选状态。分类锁仍独立保存,而“全部 → 已锁定”负责聚合展示这些分类锁。规则、排序和组件页都可用“应用:全部 / 用户应用 / 系统应用”紧凑下拉缩小当前显示与批量操作范围;该筛选不改变保存顺序或任何规则状态。

组件操作只针对本应用所在的 Android 用户。Root 真禁用是主机制;持久禁用策略同时用于 LSPosed 发现过滤和开机自动校正。系统启动后会进行延迟校正和稳定后复查,应用安装/更新后也会复查。应用安装、更新或卸载会自动让候选缓存失效;诊断会记录组件发现来源(PackageManager / AppWidgetManager / LauncherApps)和运行时组件发现协议,便于定位漏项或旧 Hook 兼容问题。禁用可能影响已添加的磁贴和小部件,重新启用不保证恢复原位置。卸载模块或清除数据不会撤销组件禁用状态,规则备份也不包含这些状态。

厂商定制选择器、应用自行重排或自建菜单可能不受支持。快捷方式管理不覆盖所有动态、固定快捷方式或应用私有项目;没有独立服务的系统内置磁贴不在管理范围内。

正式版与作者仓库使用相同 APK 和固定签名。Debug 版本可能签名不同,卸载前请先导出规则并检查组件启用状态。

反馈问题时,请提供系统版本、设备型号、框架版本和复现步骤;分享诊断前请检查其中的应用列表和日志内容。

Releases

1.6.18

Stable

9/25/2026, 12:10:30 AM

列表清理 / List Cleaner 1.6.18

版本码 / Version code: 43

中文

  • Root 磁贴、快捷方式和小组件的持久保护状态现在与主规则一起进入 Runtime Probe 原子配置;ComponentStateGuardModule 与 ComponentDiscoveryFilterModule 优先使用同一份 system_server 进程内权威快照,不再依赖 RemotePreferences 是否及时刷新。
  • Runtime Probe 的 BEGIN、CHUNK、COMMIT 全部先验证管理器 UID;非管理器调用不能中断正在进行的配置分块传输。
  • Probe v2 成功后停止在 PackageManager / Resolver 查询热路径轮询 RemotePreferences,减少查询时的配置读取和 SHA-256 计算。
  • Root 组件批量操作完成后只进行一次运行时同步,同时 digest 会包含 Root 保护集合,因此即使普通规则 revision 未变化也能正确更新 Hook。
  • App Link 自动发现现在会缓存“成功但为空”的扫描结果,并对失败增加短时间退避,避免每次刷新重复启动 root shell 和 dumpsys package。
  • 修正 ComponentReconcileJobService 的取消与替换 Job 生命周期,避免旧 Job 在被停止后错误结束新的 Job。
  • 收紧组件重协调广播接收器为非导出。
  • 修正 GitHub Actions:Release PR 校验现在真正有 pull_request 触发器;Debug PR 也会在 Gradle/wrapper 配置变化时编译。
  • 重构高风险大文件:候选分组与历史候选逻辑移出 MainViewModel,优先级编辑移入独立 PriorityEditorController,Xposed 运行时快照与组件策略也拆成独立模型。
  • 规则页和优先级页不再使用 openPreset!! / browserHost!!,改为基于当前分类捕获稳定作用域值,降低状态切换时的空指针风险。
  • 删除已无运行时用途的 TileConfig / TilePolicy 和 forced-default transient 配置外壳;旧备份/配置中的这些字段仍会作为未知字段安全忽略。
  • 本次修改涉及 Xposed 运行时合同,Hook compatibility 提升到 43。

English

  • Root tile, shortcut, and widget protection is now carried in the same atomic Runtime Probe configuration as resolver rules. ComponentStateGuardModule and ComponentDiscoveryFilterModule prefer the shared authoritative in-process system_server snapshot instead of depending on RemotePreferences cache freshness.
  • Runtime Probe now verifies the manager UID before BEGIN, CHUNK, and COMMIT operations, preventing non-manager callers from disrupting an in-flight chunk transfer.
  • After Probe v2 becomes authoritative, PackageManager/Resolver hot paths stop polling RemotePreferences, reducing configuration reads and SHA-256 work during resolver queries.
  • Root component batches perform one runtime synchronization after mutation, and the runtime digest includes the protected component set so hook state updates even when the normal rule revision is unchanged.
  • App Link discovery now caches successful empty scans and backs off briefly after failures, avoiding repeated root shell and dumpsys package work on every refresh.
  • Fixed ComponentReconcileJobService cancellation/replacement lifecycle so a stopped stale job cannot finish or remove its replacement.
  • Restricted the reconcile broadcast receiver from external export.
  • Fixed GitHub Actions so release validation actually runs for pull requests and debug PR builds also cover Gradle/wrapper changes.
  • Split high-risk large files: candidate grouping/history logic moved out of MainViewModel, priority editing moved into PriorityEditorController, and Xposed runtime snapshots/component policy now live in dedicated models.
  • Removed openPreset!! / browserHost!! assertions from the rules and priority Compose screens by capturing stable scope values for the current category.
  • Removed obsolete TileConfig / TilePolicy and forced-default transient compatibility shells; legacy JSON fields remain safely ignored as unknown fields.
  • This release changes Xposed runtime behavior, so hook compatibility is bumped to 43.

版本码:43

签名证书 SHA-256:674ebcf768b46b0277ca190149df4496ea9e41a3a0d3693239f9a7f4ad1039db

源码提交:1a944c9ee5e9851d04723d0b0d3c72c85232465c

完整变更 / Full changelog

范围 / Range: v1.6.17...v1.6.18

  • Fix LSPosed release asset downloads (7f05743)
  • Harden runtime synchronization and component policy (1a944c9)

原始发布 / Original release:https://github.com/yagay/ListCleaner/releases/tag/v1.6.18

使用要求 / Requirements:modern libxposed API 102;Android 12 及以上 / Android 12 or newer.

Assets

3

1.6.17

Stable

9/23/2026, 9:38:10 AM

列表清理 / List Cleaner 1.6.17

版本码 / Version code: 42

中文

  • 新增 Runtime Probe v2:运行中的规则更新不再依赖 RemotePreferences 是否及时刷新。管理端会在需要时把真实的 ModuleConfig 分块传入已运行的 system_server Hook;RemotePreferences 继续只负责持久化、冷启动恢复和官方 LSPosed 的快速同步路径。
  • system_server 会先验证 Binder 调用 UID 确实属于 com.yagay.ListCleaner,再重组配置、重新计算 SHA-256、校验 managerAppId 并完整解析配置。只有实际收到并应用的配置 digest 与期望值一致时才返回 Runtime ACK。
  • 删除 1.6.16 的 legacy mirror digest 回退,不再允许用管理端传入的 expected digest 给旧配置“标记成功”;运行时推送失败时继续保留最后一份有效规则。
  • Probe v2 使用分块传输,并加入 transfer ID、调用 UID 绑定、大小/分块数量限制、10 秒超时、完整性与 digest 校验,避免 Binder 大事务和半套配置被应用。
  • 一旦 Probe v2 成功应用配置,当前进程内的 Hook 快照成为运行时权威来源;即使 Vector / 部分 libxposed API 102 实现继续返回 stale RemotePreferences,也不会再把新规则回滚成旧规则。
  • Resolver 过滤和优先排序优先使用 system_server 在 ResolveInfo 副本中附带的 include/rank/digest 元数据,因此过滤、排序和自定义标题使用同一份运行时规则,避免 system_server 已更新而 Resolver 仍停留在旧配置。
  • 官方 LSPosed 仍保留原有低开销路径:如果 RemotePreferences 变更监听已经让 Hook 获得最新配置,首次 Runtime ACK 即成功,不需要额外传输。
  • 本次修改涉及 Xposed 运行时和 Runtime Probe 合同,Hook compatibility 提升到 42。升级后需要让 system_server / 相关 Hook 进程加载新的 Hook 代数。

English

  • Added Runtime Probe v2 so live rule updates no longer depend on when a framework refreshes RemotePreferences. When needed, the manager transfers the actual serialized ModuleConfig in chunks to the already-running system_server hook. RemotePreferences remains the persistence/cold-start store and the fast path when official LSPosed propagates changes normally.
  • system_server now verifies that the Binder caller UID belongs to com.yagay.ListCleaner, reassembles the payload, recomputes SHA-256, validates managerAppId, and fully decodes the configuration. Runtime ACK is returned only for the digest of the configuration that was actually received and applied.
  • Removed the 1.6.16 legacy-mirror digest fallback. An expected digest supplied by the manager can no longer make stale legacy data appear successfully applied; failed transfers keep the last known-good rules.
  • Probe v2 uses chunked transport with transfer IDs, caller-UID ownership, size/chunk limits, a 10-second timeout, completeness checks, and digest verification to avoid oversized Binder transactions and partial configuration application.
  • After a verified Probe v2 update, the in-process hook snapshot becomes authoritative for the running process. Stale RemotePreferences returned by Vector or another libxposed API 102 implementation cannot roll the live policy back.
  • Resolver filtering and priority ordering now prefer include/rank/digest metadata attached to copied ResolveInfo results by system_server, keeping filtering, ordering, and custom titles on the same live policy instead of maintaining an independently stale Resolver snapshot.
  • Official LSPosed keeps the low-overhead path: if its RemotePreferences listener has already delivered the latest configuration, the first Runtime ACK succeeds and no configuration transfer is needed.
  • This release changes Xposed runtime behavior and the Runtime Probe contract, so hook compatibility is bumped to 42. After updating, system_server and the relevant hooked processes must load the new hook generation.

版本码:42

签名证书 SHA-256:674ebcf768b46b0277ca190149df4496ea9e41a3a0d3693239f9a7f4ad1039db

源码提交:08f2bb6b7a0a925ef26aa2892099a37e754ce127

完整变更 / Full changelog

范围 / Range: v1.6.16...v1.6.17

  • Release 1.6.17 with Runtime Probe v2 (08f2bb6)

原始发布 / Original release:https://github.com/yagay/ListCleaner/releases/tag/v1.6.17

使用要求 / Requirements:modern libxposed API 102;Android 12 及以上 / Android 12 or newer.

Assets

3

1.6.16

Stable

9/23/2026, 7:13:52 AM

列表清理 / List Cleaner 1.6.16

版本码 / Version code: 41

中文

  • 修复 Vector / 部分 libxposed API 102 实现下 RemotePreferences 可能长期停留在旧快照,导致 system_server 读取不到最新 config_v1、规则数量变成 0、Runtime ACK 失败的问题。
  • Runtime Probe 现在携带管理端期望的配置 digest。官方 LSPosed 正常情况下继续使用原有缓存 RemotePreferences + 变更监听快速路径;只有 Hook 当前 digest 与管理端不一致时才执行一次 fresh RemotePreferences 读取。
  • 增加安全兼容回退:管理端写入 config_v1 时在同一事务中同步镜像既有 legacy 配置键;只有 system_server 确认 probe 调用 UID 确实属于 com.yagay.ListCleaner 后,才允许使用镜像配置恢复并回执,避免放宽原有身份校验。
  • fresh 配置仍不可见时不再用空 legacy 数据覆盖最后一份有效 Hook 快照,而是保留旧配置并拒绝 ACK,等待下一次同步,避免规则意外清零。
  • 诊断日志新增 expected/actual digest、cached/fresh 配置可见性、fresh 是否为同一实例、verified mirror 恢复以及 ACK 跳过原因,便于区分框架缓存问题与真实 Hook 失败。
  • 本次修改涉及 Xposed 运行时和 Runtime Probe 合同,因此 Hook compatibility 提升到 41。安装更新后需要让 system_server 加载新的 Hook 代数;旧 Hook 不会被误判为兼容。

English

  • Fixed a Vector / libxposed API 102 compatibility issue where RemotePreferences could remain on a stale snapshot, causing system_server to miss the latest config_v1, see zero rules, and fail the runtime ACK handshake.
  • Runtime Probe now carries the config digest expected by the manager. Official LSPosed keeps the existing cached RemotePreferences + change-listener fast path; a one-shot fresh RemotePreferences read is used only when the hook digest does not match the manager.
  • Added a safe compatibility fallback: the manager mirrors legacy config keys in the same transaction as config_v1. The system hook may recover from that mirror only after verifying that the probe caller UID actually belongs to com.yagay.ListCleaner, preserving the existing identity boundary.
  • If neither cached nor fresh atomic config is visible, the hook no longer overwrites the last known-good snapshot with empty legacy data. It keeps the existing rules and withholds ACK so the manager can retry.
  • Diagnostics now record expected/actual digests, cached/fresh config visibility, whether the fresh read returned the same instance, verified-mirror recovery, and ACK-skip reasons.
  • Because this release changes Xposed runtime behavior and the Runtime Probe contract, hook compatibility is bumped to 41. After updating, system_server must load the new hook generation; older hooks are no longer treated as compatible.

版本码:41

签名证书 SHA-256:674ebcf768b46b0277ca190149df4496ea9e41a3a0d3693239f9a7f4ad1039db

源码提交:231a7803eca1ce7bbcf8d7f176ca970c7e5760d0

完整变更 / Full changelog

范围 / Range: v1.6.15...v1.6.16

  • Discover deep links from package resolver tables (fb771dd)
  • Wire App Link declarations into catalog scan (18ba127)
  • Create deep-link candidates from resolver declarations (094dc0d)
  • Use detailed App Link discovery during refresh (89604bc)
  • Escape resolver dump shell variables (869927d)
  • Test resolver-table deep link discovery (b73230b)
  • Fix shell variable escaping in App Link discovery (5cfbd83)
  • Add expected config digest to runtime probe (5826987)
  • Tell system hook which config digest manager expects (6dc9e24)
  • Recover stale remote preferences without changing hooks (da70b4f)
  • Bump hook generation for remote preference recovery (b7224a1)
  • Mirror remote config for framework compatibility (bb5a0ad)
  • Add verified legacy mirror fallback for Vector (38e0782)
  • Document 1.6.16 Vector preference compatibility fix (231a780)

原始发布 / Original release:https://github.com/yagay/ListCleaner/releases/tag/v1.6.16

使用要求 / Requirements:modern libxposed API 102;Android 12 及以上 / Android 12 or newer.

Assets

3

1.6.15

Stable

9/20/2026, 10:08:48 AM

列表清理 / List Cleaner 1.6.15

版本码 / Version code: 40

中文

  • 新增“深度链接”独立分类,与“浏览器”真正分开:Chrome、Firefox、YBrowser 等通用网页处理器继续归“浏览器”,GitHub、YouTube 等特定域名 App Link 归“深度链接”。
  • 深度链接完整复用现有规则体系:应用筛选、查看筛选、搜索、锁定、多选、排序、全选、全不选、反选等均与其他分类统一。
  • 域名规则只属于“深度链接”,不再和普通浏览器规则混用;旧版按域名保存的 Browser 规则、自定义标题和子项锁会自动兼容迁移。
  • 新增 Android App Link 域名自动发现,不需要先手动添加域名;自动发现的域名只有在实际扫描到至少一个可用 Deep Link App 时才显示,避免空域名。
  • 保留手动添加/管理域名;已手动配置的域名即使当前没有候选 App 也继续显示,方便后续管理或删除。
  • 深度链接域名下拉新增实时搜索;弹出菜单默认以“域名”筛选按钮为中心展开,屏幕空间不足时再自动调整位置。
  • 优化域名弹出菜单密度:全部、管理域名、搜索框外部留白、空结果提示和域名列表统一紧凑;域名字体、搜索文字和搜索图标保持正常大小。
  • “选择”菜单新增“全不选”,与“全选 / 反选”一起遵守当前过滤范围和锁定规则;被锁定项目不会被批量取消。
  • 修复 APK 已更新但旧 Hook 仍在运行时,管理 App 启动阶段可能直接退出的问题:现在会正常进入应用并提示“需要重启手机”,不再在启动阶段自动热重载旧 Hook。
  • 优化 Hook 兼容代数:本版本 APK versionCode 为 40,但 Hook compatibility 继续保持 39;本次 UI/管理侧修复本身不会额外制造新的 Hook 重启要求。
  • Release 工作流调整为:版本号升级即视为正式发布,执行优化 Release 编译、固定签名校验、zipalign、SHA-256、GitHub Release 发布并触发 LSPosed 同步。

English

  • Added a first-class Deep Links category that is genuinely separate from Browser. Generic web handlers such as Chrome, Firefox, and YBrowser remain Browser targets, while host-specific App Links such as GitHub and YouTube are classified as Deep Links.
  • Deep Links now reuse the same rules UI and behavior as other categories: app filters, view filters, search, locks, multi-select, ordering, Select all, Select none, and Invert.
  • Per-domain rules now belong only to Deep Links instead of being mixed with generic browser rules. Legacy per-domain Browser rules, custom titles, and child locks are migrated compatibly.
  • Added automatic Android App Link domain discovery, so a host no longer has to be entered manually first. Auto-discovered hosts are shown only when at least one eligible Deep Link app is actually found, avoiding empty domains.
  • Manual domain management remains available. Previously configured hosts stay visible even if no current candidate app is found, so they can still be managed or removed.
  • Added live search to the Deep Link domain dropdown. The popup now prefers to open centered on the Domain filter button and only shifts when screen space requires it.
  • Compacted the entire domain popup: All, Manage domains, search-field outer spacing, empty-state spacing, and domain rows now use tighter vertical spacing while keeping normal domain text, search text, and icon sizes.
  • Added Select none next to Select all and Invert. Bulk deselection respects the current filter scope and lock protection, so locked entries are skipped.
  • Fixed a startup failure when the APK is newer but an older hook generation is still running. The manager now opens normally and shows a restart-required prompt instead of attempting an automatic hot reload before the UI appears.
  • The APK versionCode is now 40 while hook compatibility remains 39. These UI/manager-side changes do not create an additional hook restart requirement by themselves.
  • Release automation now treats a version bump as a formal release: optimized Release compilation, pinned-signature verification, zipalign, SHA-256 generation, GitHub Release publication, and LSPosed sync dispatch.

版本码:40

签名证书 SHA-256:674ebcf768b46b0277ca190149df4496ea9e41a3a0d3693239f9a7f4ad1039db

源码提交:92d99b8148920a0f417c0270a29c9132622fb6b8

完整变更 / Full changelog

范围 / Range: v1.6.12...v1.6.15

  • Separate hook compatibility from app updates (e983b11)
  • Add per-domain browser link rules (7a51a00)
  • Fix browser-domain App Link discovery (90d62f8)
  • Compact type, domain, and bulk filters (e0ac69c)
  • Rename bulk action menu to Select (1497d66)
  • Auto-discover App Link domains and fix type selector (0404473)
  • Separate browsers and deep links (f32a1f9)
  • Hide empty auto-discovered Deep Link domains (3138253)
  • Keep manager app open when hook restart is required (5d285a2)
  • Add domain search and compact rows (384e06a)
  • Restore domain font size (b7a184f)
  • Center Deep Link domain menu on its anchor (478dfc7)
  • Restore domain search text and icon size (432f20b)
  • Compact all Deep Link domain menu content (5f5ca16)
  • Release List Cleaner 1.6.15 (92d99b8)

原始发布 / Original release:https://github.com/yagay/ListCleaner/releases/tag/v1.6.15

使用要求 / Requirements:modern libxposed API 102;Android 12 及以上 / Android 12 or newer.

Assets

3

1.6.12

Stable

9/19/2026, 3:34:01 PM

列表清理 / List Cleaner 1.6.12

版本码 / Version code: 37

中文

  • 新增统一的系统应用 / 用户应用筛选:规则、排序和组件页都使用节省空间的“应用:全部 / 用户应用 / 系统应用”紧凑下拉,可与现有“查看”筛选组合使用。
  • 应用类型在扫描时一次性识别并随候选数据保存,列表过滤不会反复查询 PackageManager;预装系统应用即使后续更新,仍按系统应用处理。
  • 应用类型筛选只控制当前显示范围和全选/反选等批量操作目标,不参与现有排序,不改变已选/半选/未选状态,也不改变批量操作锁或 Root 组件状态。
  • 组件页可分别查看和批量管理用户应用、系统应用;原有核心系统组件保护规则保持不变,受保护项目仍只展示、不可修改。
  • 批量操作锁改为手势操作:应用或子项向右滑加锁、向左滑解锁;未锁定时不显示锁图标,锁定后才显示状态图标。整体锁保护整个应用,部分锁只保护对应子项;锁只跳过全选/反选等批量操作,仍可手动修改,不参与排序,也不改变已选/半选/未选或 Root 状态。“全部 → 已锁定”会汇总各分类中的锁定项目。
  • 修复“全部”页对分类型锁的保护:在 PDF、图片等打开方式分类型中锁定的应用或子项,现在也会在“全部 → 已锁定”中汇总显示,并在“全部”执行全选/反选时继续跳过,不能再从聚合页绕过分类锁。
  • 组件发现改为通用 Android 标准层优先:Widget 优先读取 AppWidgetManager Provider 注册表并以 Manifest 扫描补充;快捷方式创建入口合并 LauncherApps 配置 Activity 与旧 ACTION_CREATE_SHORTCUT;同一组件多来源自动去重。
  • 新增组件发现来源诊断,可记录 PACKAGE_MANAGER、APP_WIDGET_MANAGER、LAUNCHER_APPS 等来源;安装、更新或卸载应用后会自动使候选缓存失效。
  • 新增组件发现运行时能力握手与自动降级:若 APK 已更新但 system_server 仍运行旧 Hook,不强行调用新 Widget 注册表;未确认新协议时自动使用旧安全扫描。LauncherApps、AppWidgetManager 与 discovery Hook 遇到异常时均 fail-open,保留原始/旧扫描结果而不是让应用崩溃。
  • 优化扫描与批量操作性能:锁状态改为内存缓存;应用名、应用状态和已配置候选元数据减少重复 PackageManager 查询;批量组件操作完成后按分类一次重新发现并批量回读状态。
  • 修复 Telegram 发布时的版本说明竞态:现在按 Release 对应源码提交校验 RELEASE_NOTES,不再因为 main 已前进到更新说明而误判失败。
  • 保留 Root 真禁用、LSPosed 发现过滤以及开机/解锁/应用更新后的自动校正机制。

本版本包含 v1.6.11 之后的全部改动;正式 Release 继续使用固定签名证书、R8 优化、zipalign、SHA-256 与 APK 身份/版本校验。


English

  • Added unified user/system app filtering across Rules, Ordering, and Components with a space-saving “Apps: All / User apps / System apps” dropdown that can be combined with the existing View filter.
  • App type is classified once during scanning and carried with candidate data, avoiding repeated PackageManager lookups while filtering. Updated preinstalled system apps remain classified as system apps.
  • App-type filtering only controls the current view and the target set for Select All/Invert-style bulk actions. It never participates in ordering and does not change selected/partial/unselected state, bulk-operation locks, or Root component state.
  • Components can now be viewed and batch-managed separately for user and system apps. Existing protection for core system components is unchanged; protected entries remain display-only.
  • Bulk-operation locks now use gestures: swipe right on an app or child entry to lock and swipe left to unlock. Unlocked rows show no lock icon; a status icon appears only after locking. Full locks protect the whole app and partial locks protect selected children. Locks only skip Select All/Invert-style bulk actions, remain manually editable, never participate in ordering, and do not change selected/partial/unselected or Root state. Locked under All aggregates category locks.
  • Fixed aggregate protection for typed Open-with locks: entries locked under PDF, Image, and other Open-with presets now appear in Locked under All and remain excluded from Select All/Invert on the All view, so category locks cannot be bypassed from the aggregate page.
  • Component discovery now prefers generalized Android subsystem registries: widgets use AppWidgetManager providers with manifest fallback, while shortcut creation entries merge LauncherApps configuration activities with legacy ACTION_CREATE_SHORTCUT entries. Multiple discovery sources are deduplicated.
  • Diagnostics now record component discovery sources such as PACKAGE_MANAGER, APP_WIDGET_MANAGER, and LAUNCHER_APPS. Installing, updating, or removing apps invalidates candidate caches automatically.
  • Added a runtime component-discovery capability handshake and safe fallback. If the APK is newer while system_server still runs an older hook, List Cleaner avoids forcing the new widget-registry path and falls back to the older safe scan until the new protocol is confirmed. LauncherApps, AppWidgetManager, and discovery-hook failures are fail-open so the original/legacy result is preserved instead of crashing the app.
  • Reduced repeated work during scanning and bulk actions: lock state is cached in memory, app labels/state/configured-candidate metadata reuse package lookups, and post-batch component refresh performs one discovery pass per affected category.
  • Telegram publishing now validates release notes against the release commit instead of the moving main branch, avoiding false failures when newer documentation commits land before the channel post runs.
  • Real Root disable, LSPosed discovery filtering, and automatic reconciliation after boot/unlock/app updates remain in place.

This release includes all changes after v1.6.11. Production releases continue to use the pinned signing certificate, R8 optimization, zipalign, SHA-256, and APK identity/version verification.

版本码:37

签名证书 SHA-256:674ebcf768b46b0277ca190149df4496ea9e41a3a0d3693239f9a7f4ad1039db

源码提交:3aebf75172b3a2a246e3162ce0d886a50af046f3

完整变更 / Full changelog

范围 / Range: v1.6.11...v1.6.12

  • Decouple catalog scanning from Xposed runtime readiness (29006df)
  • Clarify catalog availability while runtime update is pending (813ab41)
  • 明确运行时待更新时本地列表仍可使用 (326958f)
  • Add directional bulk lock setters (35af488)
  • Expose directional bulk lock actions (3862659)
  • Aggregate rule locks in the All view (dc19f29)
  • Replace lock buttons with swipe gestures (299ed3a)
  • Expose per-rule inherited lock state (c18944b)
  • Use swipe locks and aggregate locks in Rules All view (eb38e98)
  • Aggregate component locks in the All view (433bc9f)
  • Use swipe gestures for priority locks (31f0f3e)
  • Use swipe locks and aggregate locks in Components All view (524b4e4)
  • Keep full-scope lock state while filtering Rules (64bce10)
  • Explain swipe locking and aggregated Locked view (2bd3617)
  • 说明滑动锁定与全部页汇总已锁定 (5431ea2)
  • Explain swipe locking in ordering help (d25c04a)
  • 说明排序页滑动锁定 (79e4ed5)
  • Explain swipe locking in component help (a335783)
  • 说明组件页滑动锁定和全部汇总 (8664ca9)
  • Fix component lock helper import (3f4c2a1)
  • Update lock gesture documentation (c4f0264)
  • Update English lock gesture documentation (acd3e02)
  • Update LSPosed Chinese lock gesture docs (ff53735)
  • Update LSPosed English lock gesture docs (9048de3)
  • Keep swipe lock gesture block explicit (484a65e)
  • Migrate legacy All-page locks during swipe (b54eaad)
  • Expose stored lock scopes for aggregate views (0071a1f)
  • Aggregate typed rule locks in All view (5e4988b)
  • Keep aggregate locks scoped to exact categories (36012c2)
  • Avoid cross-type lock overmatching (1b8b44c)
  • Use Android subsystem registries for component discovery (6e6be06)
  • Cache bulk lock state in memory (993fd44)
  • Invalidate candidate cache on package changes (e7578c2)
  • Observe package removals for catalog refresh (53bc56f)
  • Cache app labels during resolver discovery (c412a5b)
  • Report component discovery sources in diagnostics (a3e398e)
  • Batch package metadata for configured candidates (86ef1c7)
  • Avoid hardcoded self package in component protection (76eb675)
  • Batch post-mutation component refresh (6c0ec00)
  • Document registry-based component discovery (2357cd3)
  • Document registry-based component discovery in English (a8376f7)
  • Describe generalized component discovery (47849e7)
  • Describe generalized component discovery in English (001a81e)
  • Explain generalized component discovery (a6089e1)
  • 说明通用组件发现方式 (cbbe340)
  • Skip redundant reconcile job on package removal (369cb1f)
  • Fail open on widget discovery reflection errors (4064804)
  • Track component discovery runtime capability (143e50b)
  • Advertise safe component discovery protocol (9869755)
  • Gate widget registry behind runtime capability (1497ac1)
  • Report component discovery protocol (79c3fe5)
  • Fail open on LauncherApps discovery errors (af954af)
  • Expand component discovery and lock documentation (ad43c06)
  • Expand component discovery and lock documentation in English (8480456)
  • Document discovery fallback and lock semantics for LSPosed (c147541)
  • Document discovery fallback and lock semantics for LSPosed in English (8ead848)
  • Clarify bulk lock behavior in rule help (c4cb7c2)
  • 补充规则页锁定机制说明 (a55dd88)
  • Clarify swipe lock behavior in ordering help (25b4996)
  • 补充排序页锁定机制说明 (cd27d44)
  • Explain component discovery fallback in Root help (5b4808e)
  • 补充组件发现降级说明 (2c23053)
  • Expand component lock help (233b46d)
  • 补充组件页锁定说明 (5f4a95f)
  • Update LSPosed summary with swipe locks and safe discovery (56e5f3b)
  • Update LSPosed English summary with swipe locks and safe discovery (6a5bd1f)
  • Document unreleased discovery and swipe lock changes (c31b181)
  • Keep release notes scoped to published 1.6.11 (dc645a3)
  • Document discovery, fallback, and swipe locking changes (2daf285)
  • Update LSPosed summary for swipe locks and discovery fallback (18655a9)
  • Update English LSPosed summary for swipe locks and discovery fallback (9d389b4)
  • Respect typed Open locks from the All view (226f656)
  • Validate Telegram notes against the release commit (fc8dea1)
  • Bump version to 1.6.12 (4f7cdf3)
  • Prepare List Cleaner 1.6.12 release (3aebf75)

原始发布 / Original release:https://github.com/yagay/ListCleaner/releases/tag/v1.6.12

使用要求 / Requirements:modern libxposed API 102;Android 12 及以上 / Android 12 or newer.

Assets

3

1.6.11

Stable

9/19/2026, 1:28:45 PM

列表清理 / List Cleaner 1.6.11

版本码 / Version code: 36

中文

  • 新增统一的系统应用 / 用户应用筛选:规则、排序和组件页都使用节省空间的“应用:全部 / 用户应用 / 系统应用”紧凑下拉,可与现有“查看”筛选组合使用。
  • 应用类型在扫描时一次性识别并随候选数据保存,列表过滤不会反复查询 PackageManager;预装系统应用即使后续更新,仍按系统应用处理。
  • 应用类型筛选只控制当前显示范围和全选/反选等批量操作目标,不参与现有排序,不改变已选/半选/未选状态,也不改变批量操作锁或 Root 组件状态。
  • 组件页可分别查看和批量管理用户应用、系统应用;原有核心系统组件保护规则保持不变,受保护项目仍只展示、不可修改。
  • 批量操作锁改为手势操作:应用或子项向右滑加锁、向左滑解锁;未锁定时不显示锁图标,锁定后才显示状态图标。整体锁保护整个应用,部分锁只保护对应子项;锁只跳过全选/反选等批量操作,仍可手动修改,不参与排序,也不改变已选/半选/未选或 Root 状态。“全部 → 已锁定”会汇总各分类中的锁定项目。
  • 组件发现改为通用 Android 标准层优先:Widget 优先读取 AppWidgetManager Provider 注册表并以 Manifest 扫描补充;快捷方式创建入口合并 LauncherApps 配置 Activity 与旧 ACTION_CREATE_SHORTCUT;同一组件多来源自动去重。
  • 新增组件发现来源诊断,可记录 PACKAGE_MANAGER、APP_WIDGET_MANAGER、LAUNCHER_APPS 等来源;安装、更新或卸载应用后会自动使候选缓存失效。
  • 新增组件发现运行时能力握手与自动降级:若 APK 已更新但 system_server 仍运行旧 Hook,不强行调用新 Widget 注册表;未确认新协议时自动使用旧安全扫描。LauncherApps、AppWidgetManager 与 discovery Hook 遇到异常时均 fail-open,保留原始/旧扫描结果而不是让应用崩溃。
  • 优化扫描与批量操作性能:锁状态改为内存缓存;应用名、应用状态和已配置候选元数据减少重复 PackageManager 查询;批量组件操作完成后按分类一次重新发现并批量回读状态。
  • 保留 Root 真禁用、LSPosed 发现过滤以及开机/解锁/应用更新后的自动校正机制。

本版本包含 v1.6.10 之后的全部改动;正式 Release 继续使用固定签名证书、R8 优化、zipalign、SHA-256 与 APK 身份/版本校验。


English

  • Added unified user/system app filtering across Rules, Ordering, and Components with a space-saving “Apps: All / User apps / System apps” dropdown that can be combined with the existing View filter.
  • App type is classified once during scanning and carried with candidate data, avoiding repeated PackageManager lookups while filtering. Updated preinstalled system apps remain classified as system apps.
  • App-type filtering only controls the current view and the target set for Select All/Invert-style bulk actions. It never participates in ordering and does not change selected/partial/unselected state, bulk-operation locks, or Root component state.
  • Components can now be viewed and batch-managed separately for user and system apps. Existing protection for core system components is unchanged; protected entries remain display-only.
  • Bulk-operation locks now use gestures: swipe right on an app or child entry to lock and swipe left to unlock. Unlocked rows show no lock icon; a status icon appears only after locking. Full locks protect the whole app and partial locks protect selected children. Locks only skip Select All/Invert-style bulk actions, remain manually editable, never participate in ordering, and do not change selected/partial/unselected or Root state. Locked under All aggregates category locks.
  • Component discovery now prefers generalized Android subsystem registries: widgets use AppWidgetManager providers with manifest fallback, while shortcut creation entries merge LauncherApps configuration activities with legacy ACTION_CREATE_SHORTCUT entries. Multiple discovery sources are deduplicated.
  • Diagnostics now record component discovery sources such as PACKAGE_MANAGER, APP_WIDGET_MANAGER, and LAUNCHER_APPS. Installing, updating, or removing apps invalidates candidate caches automatically.
  • Added a runtime component-discovery capability handshake and safe fallback. If the APK is newer while system_server still runs an older hook, List Cleaner avoids forcing the new widget-registry path and falls back to the older safe scan until the new protocol is confirmed. LauncherApps, AppWidgetManager, and discovery-hook failures are fail-open so the original/legacy result is preserved instead of crashing the app.
  • Reduced repeated work during scanning and bulk actions: lock state is cached in memory, app labels/state/configured-candidate metadata reuse package lookups, and post-batch component refresh performs one discovery pass per affected category.
  • Real Root disable, LSPosed discovery filtering, and automatic reconciliation after boot/unlock/app updates remain in place.

This release includes all changes after v1.6.10. Production releases continue to use the pinned signing certificate, R8 optimization, zipalign, SHA-256, and APK identity/version verification.

版本码:36

签名证书 SHA-256:674ebcf768b46b0277ca190149df4496ea9e41a3a0d3693239f9a7f4ad1039db

源码提交:2daf2858c3550f959bbd0b8b656bc1b4c1b048f1

完整变更 / Full changelog

范围 / Range: v1.6.10...v1.6.11

  • Add shared user and system app classification (13c8629)
  • Store app type on resolver candidates (7d171da)
  • Classify resolver candidates as user or system apps (c7e33d8)
  • Classify Root components by owning app type (2ab739e)
  • Carry app type through rule groups (f6e482c)
  • Carry app type through priority groups (28266b0)
  • Add compact user and system app filter controls (680462a)
  • Filter rule apps by user or system type (dd3bbe7)
  • Filter priority apps by user or system type (f7684d0)
  • Add compact user and system filter to components (e0299b6)
  • Add app type filter labels (8930e3d)
  • Reuse shared app type classification (04e46ab)
  • Add user and system app filter strings (dbaaf93)
  • 添加系统和用户应用筛选文案 (8df8092)
  • Add compact app filter UI strings (85e755f)
  • 添加紧凑应用筛选文案 (c110b17)
  • Test user and system app filtering (ba28e55)
  • Document compact user and system app filtering (f473cc8)
  • Document compact user and system app filtering in English (e67e84b)
  • Document user and system app filters for LSPosed (2faa03b)
  • Document user and system app filters for LSPosed in English (28b5049)
  • Update LSPosed summary with app type filtering (73f33a9)
  • Update LSPosed English summary with app type filtering (f20b3f0)
  • Explain compact app type filtering in rule help (f3741a8)
  • 说明紧凑系统和用户应用筛选 (4c3318f)
  • Explain app type filtering in ordering help (160e1a6)
  • 说明排序页系统和用户应用筛选 (380ea37)
  • Explain app type filtering in component help (47f949d)
  • 说明组件页系统和用户应用筛选 (778a6ef)
  • Bump version to 1.6.11 (7b9b49a)
  • Prepare List Cleaner 1.6.11 release (d146060)
  • Decouple catalog scanning from Xposed runtime readiness (29006df)
  • Clarify catalog availability while runtime update is pending (813ab41)
  • 明确运行时待更新时本地列表仍可使用 (326958f)
  • Add directional bulk lock setters (35af488)
  • Expose directional bulk lock actions (3862659)
  • Aggregate rule locks in the All view (dc19f29)
  • Replace lock buttons with swipe gestures (299ed3a)
  • Expose per-rule inherited lock state (c18944b)
  • Use swipe locks and aggregate locks in Rules All view (eb38e98)
  • Aggregate component locks in the All view (433bc9f)
  • Use swipe gestures for priority locks (31f0f3e)
  • Use swipe locks and aggregate locks in Components All view (524b4e4)
  • Keep full-scope lock state while filtering Rules (64bce10)
  • Explain swipe locking and aggregated Locked view (2bd3617)
  • 说明滑动锁定与全部页汇总已锁定 (5431ea2)
  • Explain swipe locking in ordering help (d25c04a)
  • 说明排序页滑动锁定 (79e4ed5)
  • Explain swipe locking in component help (a335783)
  • 说明组件页滑动锁定和全部汇总 (8664ca9)
  • Fix component lock helper import (3f4c2a1)
  • Update lock gesture documentation (c4f0264)
  • Update English lock gesture documentation (acd3e02)
  • Update LSPosed Chinese lock gesture docs (ff53735)
  • Update LSPosed English lock gesture docs (9048de3)
  • Keep swipe lock gesture block explicit (484a65e)
  • Migrate legacy All-page locks during swipe (b54eaad)
  • Expose stored lock scopes for aggregate views (0071a1f)
  • Aggregate typed rule locks in All view (5e4988b)
  • Keep aggregate locks scoped to exact categories (36012c2)
  • Avoid cross-type lock overmatching (1b8b44c)
  • Use Android subsystem registries for component discovery (6e6be06)
  • Cache bulk lock state in memory (993fd44)
  • Invalidate candidate cache on package changes (e7578c2)
  • Observe package removals for catalog refresh (53bc56f)
  • Cache app labels during resolver discovery (c412a5b)
  • Report component discovery sources in diagnostics (a3e398e)
  • Batch package metadata for configured candidates (86ef1c7)
  • Avoid hardcoded self package in component protection (76eb675)
  • Batch post-mutation component refresh (6c0ec00)
  • Document registry-based component discovery (2357cd3)
  • Document registry-based component discovery in English (a8376f7)
  • Describe generalized component discovery (47849e7)
  • Describe generalized component discovery in English (001a81e)
  • Explain generalized component discovery (a6089e1)
  • 说明通用组件发现方式 (cbbe340)
  • Skip redundant reconcile job on package removal (369cb1f)
  • Fail open on widget discovery reflection errors (4064804)
  • Track component discovery runtime capability (143e50b)
  • Advertise safe component discovery protocol (9869755)
  • Gate widget registry behind runtime capability (1497ac1)
  • Report component discovery protocol (79c3fe5)
  • Fail open on LauncherApps discovery errors (af954af)
  • Expand component discovery and lock documentation (ad43c06)
  • Expand component discovery and lock documentation in English (8480456)
  • Document discovery fallback and lock semantics for LSPosed (c147541)
  • Document discovery fallback and lock semantics for LSPosed in English (8ead848)
  • Clarify bulk lock behavior in rule help (c4cb7c2)
  • 补充规则页锁定机制说明 (a55dd88)
  • Clarify swipe lock behavior in ordering help (25b4996)
  • 补充排序页锁定机制说明 (cd27d44)
  • Explain component discovery fallback in Root help (5b4808e)
  • 补充组件发现降级说明 (2c23053)
  • Expand component lock help (233b46d)
  • 补充组件页锁定说明 (5f4a95f)
  • Update LSPosed summary with swipe locks and safe discovery (56e5f3b)
  • Update LSPosed English summary with swipe locks and safe discovery (6a5bd1f)
  • Document unreleased discovery and swipe lock changes (c31b181)
  • Keep release notes scoped to published 1.6.11 (dc645a3)
  • Document discovery, fallback, and swipe locking changes (2daf285)

原始发布 / Original release:https://github.com/yagay/ListCleaner/releases/tag/v1.6.11

使用要求 / Requirements:modern libxposed API 102;Android 12 及以上 / Android 12 or newer.

Assets

3

1.6.10

Stable

9/19/2026, 12:32:36 PM

列表清理 / List Cleaner 1.6.10

版本码 / Version code: 35

中文

  • 新增批量操作锁:规则、排序和组件页统一支持整体/部分锁定,“已锁定”可单独筛选;锁定项跳过全选/反选等批量操作,但仍可手动修改,且锁定不参与排序、不改变已选/半选/未选状态。
  • 强化 Root 组件持久保护:保留真实 pm disable,持久保存期望禁用状态,并加入 LSPosed/system_server 发现过滤,防止磁贴、快捷方式和小部件在系统临时恢复组件时重新出现在发现列表。
  • 新增开机/解锁/应用更新自动校正:启动后进行延迟检查和稳定后复查,只对实际已恢复的受保护组件重新执行 Root 禁用,同时记录校正结果到诊断包。
  • 修复多入口 LSPosed/libxposed 模块不支持热重载时仍尝试热重载的问题,改为使用兼容的更新路径,降低模块运行时异常风险。
  • 完善 Release 发布链路:自动补全完整 changelog,并确保 LSPosed 同步在完整发布说明生成后执行。
  • 改进 Telegram 发布流程,包括单条消息发布、可展开 changelog、链接处理、旧发布消息替换以及中英文检查一致性。
  • 本版本包含 v1.6.9 之后的全部改动;正式 Release 继续使用固定签名证书、R8 优化、zipalign、SHA-256 与 APK 身份/版本校验。

建议从旧 Debug 版本升级前先导出规则备份;正式 Release 应继续使用固定 Release 签名安装升级。


English

  • Added bulk-operation locks across Rules, Ordering, and Components. Full/partial locks can be filtered with Locked; protected entries skip Select All/Invert-style operations but remain manually editable, and locks never participate in ordering or alter selected/partial/unselected state.
  • Strengthened persistent Root component protection: real pm disable remains in place, desired disabled state is persisted, and an LSPosed/system_server discovery filter keeps protected tiles, shortcut entries, and widgets out of discovery results even if Android temporarily restores their components.
  • Added automatic reconciliation after boot, unlock, and app updates. A delayed pass plus a settled-startup recheck only re-disables protected components whose real state was restored, and reconciliation results are included in diagnostics.
  • Fixed unsupported hot reload attempts for multi-entry LSPosed/libxposed modules by using a compatible update path, reducing runtime failure risk.
  • Improved the Release pipeline with automatic complete changelog generation and ensured LSPosed synchronization happens after the finalized release notes are available.
  • Improved Telegram publishing with single-message releases, expandable changelogs, corrected links, stale-post replacement, and aligned bilingual validation.
  • This release includes all changes after v1.6.9. Production releases continue to use the pinned signing certificate, R8 optimization, zipalign, SHA-256, and APK identity/version verification.

Export a rule backup before replacing older Debug builds. Production Release upgrades should continue using the fixed Release signing certificate.

版本码:35

签名证书 SHA-256:674ebcf768b46b0277ca190149df4496ea9e41a3a0d3693239f9a7f4ad1039db

源码提交:a764a8c595581eba25949efd1c3461aee893f1a0

完整变更 / Full changelog

范围 / Range: v1.6.9...v1.6.10

  • Fix Telegram release tag resolution (97a41ca)
  • Republish Telegram v1.6.9 (9b5fe55)
  • Add shared bulk action lock store (5e6680d)
  • Add page-scoped bulk selection locks (52e45c6)
  • Add locked filter label mapping (b428f50)
  • Show bulk lock controls in app rows (7e91cde)
  • Apply rule-page bulk selection locks (9c2d973)
  • Apply ordering-page bulk selection locks (7173f88)
  • Apply component-page bulk selection locks (a305988)
  • Add bulk lock English strings (0be3750)
  • Add bulk lock Chinese strings (3124b12)
  • Keep configured locked rules visible (cab6479)
  • Calculate rule lock state across full page scope (33d1ed2)
  • Calculate component lock state across full page scope (918cd0d)
  • Keep bulk lock state internal to UI (3160a74)
  • Refresh rule lock icons immediately (96e3bf6)
  • Refresh priority lock icons immediately (483fa7e)
  • Refresh component lock icons immediately (76392d7)
  • Make parent lock toggle follow tri-state semantics (357fb0c)
  • Expose inherited lock state to UI (9366241)
  • Show inherited app locks on child rows (c8b75f9)
  • Apply inherited locks in rule rows (fd83c7d)
  • Use shared parent lock toggle in ordering (052b66a)
  • Apply inherited locks in component rows (6944b35)
  • Add component discovery filtering alongside root disable (3a7e95f)
  • Register component discovery filter module (6dfd1aa)
  • Resync component policy after Xposed reconnect (7e24147)
  • Include component protection state in diagnostics (619a4ae)
  • Use AppWidget profile argument for discovery filtering (0fddca7)
  • Add root component boot reconciler (008d2d1)
  • Schedule component reconciliation after boot and updates (6a8033f)
  • Run component reconciliation in a scheduled job (e55810a)
  • Add reusable component state command line (c05e341)
  • Parse persisted component identities centrally (6f43826)
  • Register boot component reconciliation (81745b0)
  • Include boot reconciliation diagnostics (57dfb11)
  • Test reusable component state commands (8adeb7d)
  • Add settled boot reconciliation pass (d94f074)
  • Make reconcile job tracking thread-safe (2373f60)
  • Document locks and persistent component protection (0c7cb8f)
  • Document locks and persistent component protection in English (26a64ae)
  • Update LSPosed Chinese feature documentation (92e7713)
  • Update LSPosed English feature documentation (f29288e)
  • Update LSPosed Chinese summary (0ba008f)
  • Update LSPosed English summary (481930b)
  • Explain bulk locks in rule help (21df610)
  • Explain bulk locks in rule help (dfafe16)
  • Explain bulk locks in ordering help (17fb6ef)
  • Explain bulk locks in ordering help (20219bb)
  • Explain persistent Root component protection (744ec3c)
  • 说明持久 Root 组件保护 (5fb427b)
  • Document bulk locks and persistent component protection in release notes (3098fc2)
  • Bump version to 1.6.10 (56ec9cb)
  • Prepare List Cleaner 1.6.10 release (a764a8c)

原始发布 / Original release:https://github.com/yagay/ListCleaner/releases/tag/v1.6.10

使用要求 / Requirements:modern libxposed API 102;Android 12 及以上 / Android 12 or newer.

Assets

3

1.6.9

Stable

9/13/2026, 6:54:32 PM

列表清理 / List Cleaner 1.6.9

版本码 / Version code: 34

中文

  • 新增批量操作锁:规则、排序和组件页统一支持整体/部分锁定,“已锁定”可单独筛选;锁定项跳过全选/反选等批量操作,但仍可手动修改,且锁定不参与排序、不改变已选/半选/未选状态。
  • 强化 Root 组件持久保护:保留真实 pm disable,持久保存期望禁用状态,并加入 LSPosed/system_server 发现过滤,防止磁贴、快捷方式和小部件在系统临时恢复组件时重新出现在发现列表。
  • 新增开机/解锁/应用更新自动校正:启动后进行延迟检查和稳定后复查,只对实际已恢复的受保护组件重新执行 Root 禁用,同时记录校正结果到诊断包。
  • 修复多入口 LSPosed/libxposed 模块不支持热重载时仍尝试热重载的问题,改为使用兼容的更新路径,降低模块运行时异常风险。
  • 完善 Release 发布链路:自动补全完整 changelog,并确保 LSPosed 同步在完整发布说明生成后执行。
  • 改进 Telegram 发布流程,包括单条消息发布、可展开 changelog、链接处理、旧发布消息替换以及中英文检查一致性。
  • 本版本包含 v1.6.8 之后的全部改动;正式 Release 继续使用固定签名证书、R8 优化、zipalign、SHA-256 与 APK 身份/版本校验。

建议从旧 Debug 版本升级前先导出规则备份;正式 Release 应继续使用固定 Release 签名安装升级。


English

  • Added bulk-operation locks across Rules, Ordering, and Components. Full/partial locks can be filtered with Locked; protected entries skip Select All/Invert-style operations but remain manually editable, and locks never participate in ordering or alter selected/partial/unselected state.
  • Strengthened persistent Root component protection: real pm disable remains in place, desired disabled state is persisted, and an LSPosed/system_server discovery filter keeps protected tiles, shortcut entries, and widgets out of discovery results even if Android temporarily restores their components.
  • Added automatic reconciliation after boot, unlock, and app updates. A delayed pass plus a settled-startup recheck only re-disables protected components whose real state was restored, and reconciliation results are included in diagnostics.
  • Fixed unsupported hot reload attempts for multi-entry LSPosed/libxposed modules by using a compatible update path, reducing runtime failure risk.
  • Improved the Release pipeline with automatic complete changelog generation and ensured LSPosed synchronization happens after the finalized release notes are available.
  • Improved Telegram publishing with single-message releases, expandable changelogs, corrected links, stale-post replacement, and aligned bilingual validation.
  • This release includes all changes after v1.6.8. Production releases continue to use the pinned signing certificate, R8 optimization, zipalign, SHA-256, and APK identity/version verification.

Export a rule backup before replacing older Debug builds. Production Release upgrades should continue using the fixed Release signing certificate.

版本码:34

签名证书 SHA-256:674ebcf768b46b0277ca190149df4496ea9e41a3a0d3693239f9a7f4ad1039db

源码提交:3098fc2402ac5e00bbd28615f09bf4914e541b06

完整变更 / Full changelog

范围 / Range: v1.6.8...v1.6.9

  • Add automatic release changelog generator (bd11160)
  • Automatically complete release changelogs (ea8ba8c)
  • Make automatic changelog release lookup version-safe (2ad9485)
  • Refresh complete 1.6.8 release notes (b632cf8)
  • Replace stale Telegram release posts (22a7dec)
  • Publish Telegram after complete changelog (e2ff683)
  • Defer Telegram until changelog completion (512f6e2)
  • Republish Telegram v1.6.8 (5575024)
  • Sync LSPosed after complete changelog (41c8ef0)
  • Use expandable Telegram release captions (4a5b420)
  • Republish Telegram v1.6.8 with expandable changelog (116672f)
  • Fix Telegram release links and expandable changelog (d694f7f)
  • Republish Telegram v1.6.8 with fixed links (9e5b4a2)
  • Publish Telegram release as one expandable message (be9da14)
  • Republish Telegram v1.6.8 as single message (c796b22)
  • fix: persist desired disabled component state (93dcaba)
  • fix: keep disabled component intent persistent (2079392)
  • fix: block apps from re-enabling protected components (99e4344)
  • fix: register persistent component state guard (7de8e90)
  • ci: align Telegram bilingual check with current publisher (c2acfac)
  • fix: import component state validator (2d198a8)
  • fix: disable unsupported hot reload for multi-entry module (e87a93a)
  • Bump ListCleaner to 1.6.9 (54245ce)
  • Prepare ListCleaner 1.6.9 release (1b61d3a)
  • Fix Telegram release tag resolution (97a41ca)
  • Republish Telegram v1.6.9 (9b5fe55)
  • Add shared bulk action lock store (5e6680d)
  • Add page-scoped bulk selection locks (52e45c6)
  • Add locked filter label mapping (b428f50)
  • Show bulk lock controls in app rows (7e91cde)
  • Apply rule-page bulk selection locks (9c2d973)
  • Apply ordering-page bulk selection locks (7173f88)
  • Apply component-page bulk selection locks (a305988)
  • Add bulk lock English strings (0be3750)
  • Add bulk lock Chinese strings (3124b12)
  • Keep configured locked rules visible (cab6479)
  • Calculate rule lock state across full page scope (33d1ed2)
  • Calculate component lock state across full page scope (918cd0d)
  • Keep bulk lock state internal to UI (3160a74)
  • Refresh rule lock icons immediately (96e3bf6)
  • Refresh priority lock icons immediately (483fa7e)
  • Refresh component lock icons immediately (76392d7)
  • Make parent lock toggle follow tri-state semantics (357fb0c)
  • Expose inherited lock state to UI (9366241)
  • Show inherited app locks on child rows (c8b75f9)
  • Apply inherited locks in rule rows (fd83c7d)
  • Use shared parent lock toggle in ordering (052b66a)
  • Apply inherited locks in component rows (6944b35)
  • Add component discovery filtering alongside root disable (3a7e95f)
  • Register component discovery filter module (6dfd1aa)
  • Resync component policy after Xposed reconnect (7e24147)
  • Include component protection state in diagnostics (619a4ae)
  • Use AppWidget profile argument for discovery filtering (0fddca7)
  • Add root component boot reconciler (008d2d1)
  • Schedule component reconciliation after boot and updates (6a8033f)
  • Run component reconciliation in a scheduled job (e55810a)
  • Add reusable component state command line (c05e341)
  • Parse persisted component identities centrally (6f43826)
  • Register boot component reconciliation (81745b0)
  • Include boot reconciliation diagnostics (57dfb11)
  • Test reusable component state commands (8adeb7d)
  • Add settled boot reconciliation pass (d94f074)
  • Make reconcile job tracking thread-safe (2373f60)
  • Document locks and persistent component protection (0c7cb8f)
  • Document locks and persistent component protection in English (26a64ae)
  • Update LSPosed Chinese feature documentation (92e7713)
  • Update LSPosed English feature documentation (f29288e)
  • Update LSPosed Chinese summary (0ba008f)
  • Update LSPosed English summary (481930b)
  • Explain bulk locks in rule help (21df610)
  • Explain bulk locks in rule help (dfafe16)
  • Explain bulk locks in ordering help (17fb6ef)
  • Explain bulk locks in ordering help (20219bb)
  • Explain persistent Root component protection (744ec3c)
  • 说明持久 Root 组件保护 (5fb427b)
  • Document bulk locks and persistent component protection in release notes (3098fc2)

原始发布 / Original release:https://github.com/yagay/ListCleaner/releases/tag/v1.6.9

使用要求 / Requirements:modern libxposed API 102;Android 12 及以上 / Android 12 or newer.

Assets

3

1.6.8

Stable

9/8/2026, 9:37:37 PM

列表清理 / List Cleaner 1.6.8

版本码 / Version code: 33

中文

  • 本版本汇总自上一个正式版本 v1.6.7 之后的全部实际改动,而不只包含最后一轮性能优化。
  • 持续完善“打开方式”分类、继承和排序逻辑,包括通用 OPEN 与分类型配置、实际文件效果预览、selector / MIME / 文件后缀识别,以及相关回归覆盖。
  • 加强应用隐藏与来源应用兼容,继续修复 ES 等文件管理器场景,统一全选 / 半选 / 未选的筛选、排序和包级隐藏行为。
  • 改进 Root 组件管理,包括磁贴、快捷方式、小部件的状态读取、历史筛选、批量操作和修改后局部刷新,并保留串行 Root 操作和结果确认。
  • 重构并加强 LSPosed / libxposed 102 运行时状态管理,引入 ServiceSession、ModuleRuntimeController、RuntimeCapabilities、PackageIdentity 等结构,改善重连、热更新、目标版本校验、ACK 和能力判断。
  • 继续强化 system_server Hook 安全性与兼容性,保留 caller UID、package visibility、Resolver/Chooser、空结果恢复和 fail-open 等保护,同时增加实际 Hook 命中统计。
  • 改进远程配置与备份:配置写入和 revision 更一致,旧 DefaultOpenConfig / TileConfig 逐步退出新配置路径,备份继续保持旧版本导入兼容。
  • 完成诊断体系整理,减少敏感文件名/URI 暴露,补充运行时、Hook、Root 和能力信息,并缩减重复或低价值日志。
  • 完成本地化结构整理,拆分中英文资源,加入 README.en、发布/本地化文档,并在 CI 中加入源码本地化、翻译资源和双语一致性检查。
  • 完成一轮完整性能优化:缓存 system_server 反射访问器、减少 RemotePreferences 兜底轮询、加入 session + revision 同步 fast-path、复用候选和图标缓存、Scope 列表懒加载图标、Root 局部刷新,以及列表分组/搜索缓存与 120 ms debounce。
  • 改进 Debug / Release / LSPosed / Telegram 发布流程和校验,正式 Release 继续使用固定签名证书、R8 优化、签名校验、zipalign、SHA-256 与发布产物检查。
  • 本次 Release 后附“完整变更 / Full changelog”,范围固定为 v1.6.7 → v1.6.8,列出该区间内的全部非 merge commit,避免遗漏中间修改。

建议从旧 Debug 版本升级前先导出规则备份;正式 Release 应继续使用固定签名证书安装升级。


English

  • This release now summarizes the full set of real changes since the previous stable release v1.6.7, not only the final performance pass.
  • Continued improving Open-with classification, inheritance, ordering, real-file effect preview, selector/MIME/file-extension detection, and regression coverage for generic and type-specific OPEN behavior.
  • Strengthened app-hiding and source-app compatibility, including file-manager cases such as ES, with more consistent full/partial/unselected filtering, ordering, and package-level hiding behavior.
  • Improved Root component management for tiles, shortcuts, and widgets, including state reads, history filtering, batch operations, and local refresh after mutations while preserving sequential Root execution and state verification.
  • Refactored and hardened libxposed 102 runtime management with ServiceSession, ModuleRuntimeController, RuntimeCapabilities, PackageIdentity, stronger reconnect handling, hot reload, target-version checks, ACK handling, and capability detection.
  • Continued hardening system_server hooks while preserving caller-UID checks, package-visibility protections, Resolver/Chooser handling, empty-result recovery, and fail-open safety; actual hook-hit counters were also added.
  • Improved remote configuration and backups with more consistent revisions and writes, removal of legacy DefaultOpenConfig/TileConfig from new configuration paths, and continued backward-compatible backup imports.
  • Reworked diagnostics to reduce exposure of file names and URIs, add runtime/hook/root/capability information, and remove redundant or low-value logging.
  • Reorganized localization into split English/Chinese resources, added English README and release/localization documentation, and added CI checks for source localization, translation resources, and bilingual parity.
  • Completed a full performance pass: cached system_server reflection accessors, reduced RemotePreferences fallback polling, added a session + revision sync fast path, reused candidate/icon caches, lazy-loaded Scope icons, locally refreshed Root mutations, and cached list grouping/search work with a 120 ms debounce.
  • Improved Debug, Release, LSPosed, and Telegram publication workflows and validation. Production releases continue to use the pinned signing certificate, R8 optimization, signature verification, zipalign, SHA-256, and artifact checks.
  • The Release now appends a complete changelog for v1.6.7 → v1.6.8, listing every non-merge commit in that range so intermediate changes are not omitted.

Export a rule backup before replacing older Debug builds. Production Release upgrades should continue using the fixed release signing certificate.

版本码:33

签名证书 SHA-256:674ebcf768b46b0277ca190149df4496ea9e41a3a0d3693239f9a7f4ad1039db

源码提交:e87a93ad5425c5d042f08fe507db13c9280646fc

完整变更 / Full changelog

范围 / Range: v1.6.7...v1.6.8

  • Restore manual release trigger with automatic downstream sync (b3b1771)
  • Remove unreliable root component modification history (0d6267c)
  • Remove component modification history UI (46a17cf)
  • feat: add locale-aware English UI text layer (21dca15)
  • feat: route toolbar text through locale layer (a9696db)
  • feat: localize activity text and messages (8d0624b)
  • feat: expand English UI vocabulary (f80c973)
  • feat: localize component title dialog (3b1df13)
  • feat: localize open type filter labels (b67cf82)
  • feat: localize scope diagnostics screen (9513c5d)
  • feat: localize app and component rows (cc26f8b)
  • feat: localize display and filter states (aa3a5e6)
  • feat: localize open type names and descriptions (21cf6d8)
  • Expand English UI translations for remaining labels and dynamic messages (5578d70)
  • Route resolver scope screen text through localized UI wrapper (ca4c245)
  • fix(ui): localize accessibility labels in app component rows (7bec964)
  • fix(ui): localize root component accessibility labels (0fff9c4)
  • Complete English localization for resolver scope UI (78ec634)
  • Localize dynamic runtime panel messages (e557d22)
  • Fix scope screen build import (a77dbff)
  • Localize app scope picker accessibility label (c5a7aeb)
  • Add runtime locale helper for dynamic UI messages (410fa40)
  • Localize dynamic Root component runtime messages (abfcc10)
  • Localize Root component catalog status text (a217693)
  • Localize dynamic module runtime status messages (912375d)
  • Localize dynamic module runtime status at source (476469e)
  • Add resource-backed app localization layer (12ffec8)
  • Add locale override resource entrypoint (526a811)
  • Route runtime and Root messages through app localization (3d282da)
  • Resolve localization resources lazily across app startup (7747d0d)
  • Route all Compose UI text through resource localization (01321ad)
  • Initialize localization resources at process startup (7d2f48f)
  • Register localization startup provider (485b8cb)
  • Relocalize initial app status after resource init (94f2bc0)
  • Document scalable localization workflow (3b4cfb3)
  • Add localization resource template (7837ddb)
  • Declare supported app locales (2a1cfb4)
  • Expose supported app locales to Android (0ecdd5e)
  • Add resource catalog for domain and navigation labels (5f02bdd)
  • Add Chinese domain and navigation resources (5d99385)
  • Map domain enums to Android string resources (2c8b9b1)
  • Remove localized labels from IntentKind domain model (4fbfa13)
  • Remove localized labels from display mode model (59308df)
  • Remove localized labels from visibility scope model (4d6db5e)
  • Remove localized metadata from open preset domain model (1311513)
  • Remove localized validation text from open type domain model (ac4b8d1)
  • Add complete Root component localization resources (8dd8d35)
  • Add Chinese Root component localization resources (ec6a45e)
  • Make Root command failures language-neutral (f265f04)
  • Localize Root catalog directly from Android resources (c9a103e)
  • Use Android resources for all Root controller messages (728977b)
  • Add main UI localization resources (c98abae)
  • Add Chinese main UI localization resources (fb2d9b3)
  • Move main controls to standard string resources (370688e)
  • Complete dashboard diagnostic string resources (188ee97)
  • Complete Chinese dashboard diagnostic resources (cf92b88)
  • Move rules and dashboard UI to Android string resources (773c22b)
  • Add open type UI resources (505d361)
  • Add Chinese open type UI resources (a241c91)
  • Localize open preset filter tabs with resources (98858c8)
  • Add custom open editor resources (ec692ba)
  • Add Chinese custom open editor resources (6cb43b5)
  • Move custom open editor to standard localized resources (4c1d993)
  • Add complete ordering UI resources (4b27ae2)
  • Add Chinese ordering UI resources (44b77fd)
  • Move ordering UI to standard localized resources (e74aaaf)
  • Add component title dialog resources (afe4ede)
  • Add Chinese component title dialog resources (a282e26)
  • Localize component title dialog with standard resources (8bc70e8)
  • Add app and component row resources (9cc12cc)
  • Add Chinese app and component row resources (64c3b42)
  • Move app and component rows to localized resources (0bc97c6)
  • Add app visibility picker resources (fcfb8ef)
  • Add Chinese app visibility picker resources (a23c1b1)
  • Move app visibility picker to localized resources (d67e373)
  • Add resolver scope UI resources (e3bd849)
  • Add Chinese resolver scope UI resources (f7c7c7d)
  • Move resolver scope screen to localized resources (9a2bb9d)
  • Add runtime panel localization resources (3b416f0)
  • Add Chinese runtime panel localization resources (29d2688)
  • Move runtime panel to localized resources (69500ad)
  • Complete Root screen localization resources (88cbbfc)
  • Complete Chinese Root screen localization resources (5647762)
  • Move Root component screen to localized resources (8cb02c3)
  • Add backup and export resources (b6ec693)
  • Add Chinese backup and export resources (b08ca5f)
  • Move activity navigation and backup messages to resources (dd4017d)
  • Add runtime state localization resources (f78cfaf)
  • Add Chinese runtime state resources (2e5304c)
  • Use Android resources for runtime synchronization messages (22a7ee4)
  • Make open preview selection source language-neutral (d9b254c)
  • Update open preview tests for structured selection sources (717cac6)
  • Add ViewModel localization resources (6f827ee)
  • Add Chinese ViewModel resources (8ed2a92)
  • Move ViewModel dynamic text to Android resources (c2c6d3c)
  • Remove obsolete titleFor test dependency (3a1652f)
  • Add catalog localization resources (142ec96)
  • Add Chinese catalog resources (cc8036d)
  • Separate catalog diagnostics from localized UI text (d17c0c3)
  • Add repository localization resources (36d60a2)
  • Add Chinese repository resources (82feb8d)
  • Localize repository validation messages (791f264)
  • Add localized resolver detection scenarios (5926380)
  • Add Chinese resolver detection scenarios (6533d98)
  • Localize resolver scope detection evidence (fa06d3e)
  • Remove legacy AppLanguage bridge (beb4662)
  • Remove legacy runtime translation map (6c0ac3a)
  • Remove legacy Compose translation wrapper (0d342ba)
  • Remove obsolete localization startup provider (92d44c5)
  • Remove obsolete localization provider (4ae8c0d)
  • Remove legacy locale override array (038f700)
  • Make backup reader error locale-neutral (c3a7b9e)
  • Add localized backup size error (58587d4)
  • Add Chinese backup size error (2b41867)
  • Use localized backup size error (e2400cd)
  • Add production source localization guard (dc14349)
  • Enforce localization source guard in Debug CI (17370be)
  • Make priority validation errors language-neutral (d83f06b)
  • Make legacy tile validation error language-neutral (6bd6e6e)
  • Document standard Android localization architecture (103a75e)
  • Fix apostrophe escaping in ViewModel resources (88c4b5b)
  • Fix apostrophe escaping in UI resources (725d1a0)
  • Update catalog evidence tests for language-neutral markers (b3fa7c4)
  • Add Simplified Chinese README (2b16007)
  • Make English README the default (66fb165)
  • Add Simplified Chinese release notes (a87d2d9)
  • Make English release notes the default (6207122)
  • Add Simplified Chinese release documentation (dd5eb17)
  • Make English release documentation the default (ae6982e)
  • Add Simplified Chinese LSPosed README (4da7e86)
  • Make English LSPosed README the default (249c85c)
  • Add Simplified Chinese LSPosed summary (4e8dfbd)
  • Make English LSPosed summary the default (7f4cc07)
  • Synchronize bilingual LSPosed metadata (6bd5d7c)
  • Replace legacy localization override template (c20e6f7)
  • Sync localized LSPosed docs on main changes (0ecc850)
  • Add English README alongside Chinese default (e109632)
  • Make Chinese the default README (77f1976)
  • Make release notes bilingual with Chinese first (1889ace)
  • Add English LSPosed documentation (6c5a850)
  • Make Chinese the default LSPosed README (a070efb)
  • Add English LSPosed summary (a27dbfb)
  • Make Chinese the default LSPosed summary (e28d9c9)
  • Keep Chinese first in LSPosed synchronized metadata (654e573)
  • Keep bilingual Telegram release notes with Chinese first (7ae00f7)
  • Guard against hardcoded user-visible text (f5be342)
  • Add translation resource validation (9f94bd3)
  • Validate translation resources in Debug CI (79171fe)
  • Add English localization guide (fd26957)
  • Make localization guide Chinese first (c2384ae)
  • Add community translation guide (0f1c51d)
  • Document Weblate repository setup (b0762f6)
  • Add translation contribution entry (e9e1add)
  • Add translation links to English README (628496f)
  • Remove community translation guide (0bdd7a8)
  • Remove Weblate setup guide (8dffb53)
  • Remove community translation references (b84df30)
  • Remove translation contribution links (31960a1)
  • Fix LSPosed English documentation link (4964a00)
  • Fix LSPosed Chinese documentation link (f3a087c)
  • Keep LSPosed Chinese and English docs structurally paired (fbe2f91)
  • Expand LSPosed English docs to match Chinese (2122c95)
  • Validate LSPosed bilingual documentation parity (6b27ade)
  • Test LSPosed bilingual documentation parity (c5d6e7b)
  • Keep English README aligned with Chinese documentation (f20c407)
  • Define bilingual parity policy (2d3dc9a)
  • Align English bilingual parity policy (3037640)
  • Add paired Chinese and English diagnostic guides (f7a51c0)
  • Add bilingual parity validation (5704a20)
  • Enforce bilingual parity in Debug CI (dbb5980)
  • Add English release documentation counterpart (fd7d1cf)
  • Make Chinese release documentation default (3ab8ccb)
  • Remove redundant legacy Chinese release documentation (24dfd4a)
  • Validate release documentation parity (95fabd4)
  • Remove redundant Chinese README copy (8c5ce3d)
  • Remove redundant Chinese release notes copy (86b116b)
  • Remove redundant LSPosed Chinese README copy (a44c711)
  • Remove redundant LSPosed Chinese summary copy (44f9f3f)
  • Align LSPosed Chinese summary with English (b73f893)
  • Extend bilingual checks to release pipeline (87a7ecf)
  • Add English diagnostic guide resource (a753976)
  • Add Chinese diagnostic guide resource (14963e2)
  • Load diagnostic guides from localized resources (609f465)
  • Validate localized diagnostic resource pairing (41b3fdc)
  • Separate machine evidence from localized explanations (4857070)
  • Add localized diagnostic evidence explanation (7d817aa)
  • Add Chinese diagnostic evidence explanation (ccc8108)
  • Export bilingual diagnostic evidence explanations (0b53c1b)
  • Validate bilingual diagnostic evidence outputs (fb7918a)
  • Scope bilingual policy to user-facing content (50cac26)
  • Align English localization scope (d37b5e3)
  • Limit bilingual checks to user-facing content (d0e31a0)
  • Keep developer diagnostics English-only (efd98d5)
  • Keep developer diagnostics English-only (b68be42)
  • Keep developer evidence report single-language (18371eb)
  • Keep internal Root errors out of user messages (2e713d7)
  • Localize runtime errors shown to users (d57180f)
  • Keep internal exceptions out of app UI (1992031)
  • Hide exception class from recovery UI (cb4737f)
  • Hide exception class from Chinese recovery UI (6665e22)
  • Use localized recovery message without exception details (9a42c5c)
  • Keep Root exception details in developer logs (cab965b)
  • Remove developer exception details from Root UI (93af507)
  • Remove developer exception details from Chinese Root UI (2d2a170)
  • Keep scope detection exceptions out of user warnings (2b6946f)
  • Remove developer exception details from scope UI (8c8d3f0)
  • Remove developer exception details from Chinese scope UI (e630337)
  • Keep backup failures localized in UI (ea2e3c5)
  • Prevent developer exceptions from leaking into UI (f38ff5c)
  • Preserve coroutine cancellation during backup I/O (14019ca)
  • Limit non-cancellable Root work to individual mutations (2693406)
  • Make Xposed hook exception mode explicit (05bdb64)
  • Bypass privileged callers in resolver filtering (4b537f3)
  • Protect privileged package manager queries (caa2bea)
  • Cover privileged resolver caller protection (d4ed7e9)
  • Improve typed open extension fallback (bd3ffe5)
  • Cover encoded document path fallback (2835900)
  • Resolve missing content MIME in resolver queries (7c4847c)
  • Keep scope requests bound to their service (c30bb0d)
  • Ignore stale scope results after reconnect (528b221)
  • Block stale catalog publication after cancellation (730538d)
  • Prevent stale runtime status after service reconnect (3aa1785)
  • Bind hot reload batches to active service (a620a8e)
  • Refactor runtime sessions and module lifecycle (239da16)
  • Fix full-source audit findings (491226c)
  • Optimize ListCleaner performance (225f747)
  • Release List Cleaner 1.6.8 (5b0e4ee)
  • Run release workflow on release-note updates (ca9b956)
  • Trigger 1.6.8 signed release (7b5d830)
  • Add automatic release changelog generator (bd11160)
  • Automatically complete release changelogs (ea8ba8c)
  • Make automatic changelog release lookup version-safe (2ad9485)
  • Refresh complete 1.6.8 release notes (b632cf8)
  • Replace stale Telegram release posts (22a7dec)
  • Publish Telegram after complete changelog (e2ff683)
  • Defer Telegram until changelog completion (512f6e2)
  • Republish Telegram v1.6.8 (5575024)
  • Sync LSPosed after complete changelog (41c8ef0)
  • Use expandable Telegram release captions (4a5b420)
  • Republish Telegram v1.6.8 with expandable changelog (116672f)
  • Fix Telegram release links and expandable changelog (d694f7f)
  • Republish Telegram v1.6.8 with fixed links (9e5b4a2)
  • Publish Telegram release as one expandable message (be9da14)
  • Republish Telegram v1.6.8 as single message (c796b22)
  • fix: persist desired disabled component state (93dcaba)
  • fix: keep disabled component intent persistent (2079392)
  • fix: block apps from re-enabling protected components (99e4344)
  • fix: register persistent component state guard (7de8e90)
  • ci: align Telegram bilingual check with current publisher (c2acfac)
  • fix: import component state validator (2d198a8)
  • fix: disable unsupported hot reload for multi-entry module (e87a93a)

原始发布 / Original release:https://github.com/yagay/ListCleaner/releases/tag/v1.6.8

使用要求 / Requirements:modern libxposed API 102;Android 12 及以上 / Android 12 or newer.

Assets

3

1.6.7

Stable

9/7/2026, 12:29:58 PM

列表清理 / List Cleaner 1.6.7

  • “打开方式”规则与排序全面支持按类型管理:内置 PDF、Office、APK、图片、视频、音频、文本、压缩包、scheme 等分类,并支持最多 8 个自定义 MIME / 文件后缀类型。
  • “全部”与分类型配置加入继承语义:规则页显示“继承自全部 / 当前类型专用”,排序页支持继承通用 OPEN 排序并一键恢复继承。
  • 新增实际文件最终效果预览,可查看识别类型、原始候选、预计最终候选、规则来源、排序位置和空列表保护结果。
  • 加强 ES 等文件管理器的应用隐藏兼容:来源应用可单独配置,命中分类支持“全部 / 分享 / 多文件分享 / 打开方式 / 浏览器 / 文本处理”多选;仅完整勾选的应用整行参与包级隐藏,半勾选不加入。
  • 规则页和组件页默认按“完整勾选 → 半勾选 → 未勾选”排序;应用隐藏列表按“已勾选 → 未勾选”排序,同组继续按应用名称排序。
  • 修复 selector Intent 分类路径,并在 wildcard / opaque MIME 场景下增加受控文件后缀识别;具体未知 MIME 不会被后缀错误覆盖。
  • 状态页新增 system_server 实际 Hook 命中统计;诊断日志不再记录完整文件名或 URI,仅保留安全扩展名和识别类型。
  • Root 组件页新增“只看本应用修改”历史筛选;Root 操作和 OPEN 继承逻辑进一步拆分,降低 MainViewModel 职责。
  • 旧 DefaultOpenConfig / TileConfig 不再进入新远程配置和新备份;备份格式升级并保持旧版本导入兼容。
  • PR Debug 构建会上传 APK artifact;本版本同步补充自定义类型、继承、应用隐藏兼容和半勾选行为的回归测试。

旧 Debug 版签名可能不同;安装前请导出规则备份。

版本码:32

签名证书 SHA-256:674ebcf768b46b0277ca190149df4496ea9e41a3a0d3693239f9a7f4ad1039db

源码提交:50ae0039ee97aee335e863d66c7bf8eca123edce

原始发布 / Original release:https://github.com/yagay/ListCleaner/releases/tag/v1.6.7

使用要求 / Requirements:modern libxposed API 102;Android 12 及以上 / Android 12 or newer.

Assets

3

1.6.6

Stable

9/6/2026, 3:28:08 PM

列表清理 / List Cleaner 1.6.6

  • 加强 Android 12–17 的系统级应用可见性兼容,应用隐藏列表继续通过 system/system_server 生效。
  • 应用隐藏列表显示完整已安装应用,并加入应用图标,便于选择来源应用。
  • 规则页和排序页新增“自定义显示名称”,可按 Intent 分类修改分享、打开方式、浏览器、文本处理等候选项在系统菜单中的显示文字;不修改实际 Intent、包名、组件名或跳转目标。
  • 自定义显示名称与清理规则、优先排序相互独立;留空可恢复原名称,“全部显示”模式下暂停应用自定义名称。
  • 规则、排序和组件页补充全选/反选操作;组件页移除多余的手动刷新按钮。
  • 保留既有规则、排序、应用隐藏列表和备份兼容行为,并补充相关校验与回归测试。

旧 Debug 版签名可能不同;安装前请导出规则备份。

版本码:31

签名证书 SHA-256:674ebcf768b46b0277ca190149df4496ea9e41a3a0d3693239f9a7f4ad1039db

源码提交:8b457eda13626a6c5c4f020956543218199b5b4f

原始发布:https://github.com/yagay/ListCleaner/releases/tag/v1.6.6

需要 modern libxposed API 102;Android 12 及以上。

Assets

3

1.6.5

Stable

9/5/2026, 1:34:34 PM

列表清理 / List Cleaner 1.6.5

  • “全部显示”现在作为全局暂停模式:恢复 Android 原始候选显示,不执行规则过滤。
  • “全部显示”时同时暂停模块的 Resolver 排序与 PROCESS_TEXT 排序,真正恢复系统默认显示顺序。
  • 切换到“全部显示”不会清空规则页任何勾选,也不会删除已有排序配置。
  • 从“全部显示”切回“隐藏选中”或“只显示选中”后,原有规则和排序配置继续生效。

旧 Debug 版签名可能不同;安装前请导出规则备份。

版本码:30

签名证书 SHA-256:674ebcf768b46b0277ca190149df4496ea9e41a3a0d3693239f9a7f4ad1039db

源码提交:d62a3ac904c5346c9bd8d490c6a29371ba57dd47

原始发布:https://github.com/yagay/ListCleaner/releases/tag/v1.6.5

需要 modern libxposed API 102;Android 12 及以上。

Assets

3

1.6.4

Stable

9/4/2026, 5:41:15 AM

列表清理 / List Cleaner 1.6.4

  • 使用固定的 Release 签名,后续正式版本可使用同一签名覆盖升级。
  • 组件操作前检查 Root 权限,未授权或超时时明确提示授权方法。
  • 优先排序统一为勾选列表,支持全部/未优先/已优先筛选与单应用展开。
  • 勾选后按优先位置排列,取消后恢复默认顺序;长按已优先应用可拖动排序。
  • 补充规则页勾选作用说明,精简排序页标题和计数栏并整合操作介绍。
  • 搜索后仅交换匹配的优先应用,保留未显示的排序配置。
  • 宝石蓝列表与扫帚图标,支持圆形和系统主题图标。
  • 启用代码混淆及资源压缩,适用于 Android 12 及以上。

旧 Debug 版签名可能不同;安装前请导出规则备份。

版本码:29

签名证书 SHA-256:674ebcf768b46b0277ca190149df4496ea9e41a3a0d3693239f9a7f4ad1039db

源码提交:d33518b762f6d4d71904b9e11319e71df08fe570

原始发布:https://github.com/yagay/ListCleaner/releases/tag/v1.6.4

需要 modern libxposed API 102;Android 12 及以上。

Assets

3

1.6.3

Stable

9/3/2026, 5:54:37 PM

列表清理 / List Cleaner 1.6.3

  • 使用固定的 Release 签名,后续正式版本可使用同一签名覆盖升级。
  • 组件操作前检查 Root 权限,未授权或超时时明确提示授权方法。
  • 优先排序统一为勾选列表,支持全部/未优先/已优先筛选与单应用展开。
  • 搜索后仅交换匹配的优先应用,保留未显示的排序配置。
  • 宝石蓝列表与扫帚图标,支持圆形和系统主题图标。
  • 启用代码混淆及资源压缩,适用于 Android 12 及以上。

旧 Debug 版签名可能不同;安装前请导出规则备份。

版本码:28

签名证书 SHA-256:674ebcf768b46b0277ca190149df4496ea9e41a3a0d3693239f9a7f4ad1039db

源码提交:e1b7b249417f7985fce2f6967639653ab4d3ca17

原始发布:https://github.com/yagay/ListCleaner/releases/tag/v1.6.3

需要 modern libxposed API 102;Android 12 及以上。

Assets

3