Skip to content

List Cleaner 1.6.11

Choose a tag to compare

@github-actions github-actions released this 19 Sep 13:28

列表清理 / 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)