Commit Graph
3 Commits
Author SHA1 Message Date
laoyang 6b4ee89d19 refactor: 设置左移、主操作按钮等大异色、移除最近生成 (#1)
三处按需求调整:

1. 设置区移到左边
   左 = 设置,右 = 输出。不调设置的人视线直接落到右侧密码与「复制密码」。
   DOM 顺序也改成设置在前,窄屏单列时天然是设置在上、输出在下。
   栅格比例同步反过来(设置 .92fr / 输出 1.08fr)。

2. 「复制密码」与「换一个」等大、不同色
   .out-actions 从 flex 改成 grid repeat(2, 1fr),两个按钮严格等宽;
   主按钮保留渐变,次按钮改为实心填充(新增 --surface-3,比 --surface-2 更实,
   避免深色下与卡片同色而看着像没填充)。

3. 移除「最近生成」模块
   删面板、清空按钮,以及 readHistory / pushHistory / renderHistory / ago
   与 sp.history.v1 的全部读写。候选面板改为整宽单栏。
   顺带清掉了共用工具 listItem 上的历史调用点。

验证(六套,全绿):
  功能 jsdom        78 / 0
  视觉几何对比度   114 / 0
  真实剪贴板端到端  19 / 0
  file:// 直开      15 / 0
  功能反向注入      22 / 22 命中
  视觉反向注入       6 / 6 命中

反向注入拆成两套:_sp_falsify.js 只喂 jsdom(不做布局),
把「按钮等大」「两栏左右」这类几何 bug 注进去影响不到被测判据,
会表现成"注入后仍全绿"、被误判成判据没牙齿(靶子选错)。
几何/视觉类归 _sp_visual_falsify.js。

删历史后专补两条"确实没了"的判据:DOM 节点不存在 +
localStorage 不再写入 sp.history.v1 —— 后者能抓到"面板删了但 JS 还在偷写"。
2026-10-28 13:57:29 +08:00
laoyang a48f414bbb chore: 触发 Gitea 仓库状态刷新 (#1) 2026-10-28 11:56:14 +08:00
laoyang 853531c07c feat: 密码生成器 simple_password 初版 (#1)
单文件 index.html,纯 HTML + CSS + JS,零外部依赖,双击即用。

功能:
- 长度 4~64 可调;选「每类至少一位」时下限自动收紧到所选类型数
- 小写 / 大写 / 数字 / 符号四类可选,全不选会兜回小写而非生成空密码
- 生成即复制;剪贴板 API 不可用时降级到 execCommand
- 排除易混淆字符(0 O o 1 l I)与自定义排除
- 真实熵值(长度 × log2(字符池))与五档强度评价
- 批量生成 5 个候选、最近 6 条历史(仅本机 localStorage)
- 深浅色跟随系统并可手动切换,首帧前定主题避免闪烁
- 快捷键:空格换一个、C 复制

实现要点:
- 随机数走 crypto.getRandomValues + 拒绝采样,消除取模偏差
- 「每类至少一位」= 各类先取一位 + 剩余全池随机 + 整体洗牌,
  避免固定位置带来的可预测性

验证:功能判据 80 条、浏览器几何/对比度/多视口 105 条、
真实剪贴板端到端 18 条全绿;24 条反向注入全部命中。
2026-10-28 11:52:37 +08:00