feat(launcher,lock): 锁屏补充三定案—面板一次性解锁恢复口 / 设置页 PIN 管理 / 电源菜单主动锁强化

- 面板一次性解锁恢复口:/tmp/meow_pin_unlock_once 存在即被锁屏页消费删除并放行一次
  (不校验 PIN、不清 system.pin、不重置失败计数;重启标志自然消失;lck_unlock_once_consume,
  launcher 侧只做检查/消费,panel 端点由主会话另实现)。
- 系统设置「安全 → 锁屏 PIN」页(lock_settings.c,subpage.c 脚手架):状态(未设置/已设置/
  锁定中+剩余)/ 设置(4 位双输确认)/ 修改(需旧 PIN 一次)/ 清除(**免旧 PIN**,仅二次确认弹窗)
  / system.pin_lock_on_wake 开关;数字输入用 SDK 按钮键盘(lck_input_pin_modal)。
- 电源菜单「锁定」主动锁强化:立即熄屏 + 写 /tmp/meow_pin_locked(主动锁标志,重启消失,
  唤醒时无论 pin_lock_on_wake 是否开都必锁屏)+ rm /tmp/meow_pin_unlock_once 作废挂起绕过;
  lck_wake_should_lock() 作为唤醒门取代 lck_lock_required(1)(主菜单 2 处 + App 会话 2 处)。
- 测试:test_lock_screen 扩 51 ok——bypass 存在即消费/不存在不影响/消费后删除;清除免旧 PIN;
  主动锁标志唤醒必锁/清除后回退;全回归 settings_brightness/notif_panel/notif_tf/vol_ramp_jack 无碍;
  交叉 -Wall -Wextra 0 warning。meow_launcherd md5 bdf884756ef8a8353aa8e5dfb6e10a0a。
- SYSTEM_SETTINGS.md 同步锁屏行为段。
This commit is contained in:
AskaEth committed 2026-09-02 00:57:17 +08:00
1 parent e948a0a44e
commit c3abc3fee4
13 files changed
+409 -10

No files matched your search

+10
View File
@@ -67,6 +67,16 @@
| | `system.pin_lock_until` | int(epoch 秒) | 0 | 错 PIN 锁定截止戳。**持久化到 settings**(防 launcher 重启清零;面板进程内存方案重启失效,此处落盘);截止前锁屏页禁输入并倒计 |
| | `system.pin_fails` | int | 0 | 连续错 PIN 计数(0-4;达 5 触发锁定并清零)。持久化防「关机重启重试」 |
> **锁屏行为(2026-09-02 用户定案,实现权威见 `lock_screen.c`/`lock_screen_ui.c`/`lock_settings.c`)**:
> - **触发**:息屏唤醒后(默认开,`system.pin_lock_on_wake` 可关)+ 电源菜单「锁定」主动锁;**开机不锁**。
> - **主动锁**(电源菜单「锁定」):立即熄屏 + 写 `/tmp/meow_pin_locked`(主动锁标志,重启消失)→
> 无论 `system.pin_lock_on_wake` 是否开,唤醒必走锁屏;解锁(PIN 或绕过)时清除。同时 `rm /tmp/meow_pin_unlock_once` 作废挂起的绕过。
> - **面板一次性解锁恢复口**:`/tmp/meow_pin_unlock_once`(tmpfs 标志,panel 端点创建)存在即被锁屏页**消费删除并放行进入系统一次**
> (不校验 PIN、不清除 `system.pin` 本身、不重置失败计数;重启标志自然消失)。launcher 只做检查/消费侧。
> - **系统设置「安全 → 锁屏 PIN」页**:状态(未设置/已设置/锁定中+剩余)/ 设置(4 位双输确认)/
> 修改(需旧 PIN 一次)/ 清除(**免旧 PIN**,物理持机即授权,仅二次确认弹窗)/ `system.pin_lock_on_wake` 开关。
> - **清除兜底**:SSH root 删 `system.pin` 键即解锁;`lck_pin_clear()` 同义(settings API)。
> **字体尺寸标记(M2.5x,随「加载大字库」一起落地)**:字体/主题选择器**每个字体选项标注库大小标记**,如 `MiSans Regular(common≈4k)` / `gbk≈20k` / `full`,直观标注码位/体积量级,让用户知道所选字库大小(M2.6 含字重:`<name> <Weight>(<marker>)`)。对应 `MeowOS/fonts/<family>/<weight>/font.json` 的 `charset`(`common|gbk|full`)+ `glyph_count`;档位枚举 `MEOW_FONT_TIER_COMMON`(默认/≈4k)/`GBK`(大/≈20k)/`FULL`(全/可选);`gen_font.py --charset common|gbk|full [--weight <name>]` 按档生成。定案见 MEOWOS_SPEC_REF §5.2「字体档位/大字库」与 §5.7.8 [源:用户 2026-08-30]。
> 新增设置项时:在清单加一行 + 存储 schema + API 常量/枚举 + 实体 UI 控件 + web 面板控件(四端同步)。