Commit Graph
3 Commits
Author SHA1 Message Date
laoyang 9b92c1ece1 feat(footer): 页脚加开源/演示/反馈三个外链,新窗口打开 (#4)
- 三个链接:Gitea 仓库、本站演示地址、FeedLite 反馈页(带 ?sw=simple_password)
- 全部 target="_blank" + rel="noopener noreferrer"(防新窗口经 window.opener 反向控制)
- 视觉层级压在 --text-3,hover 才切 --accent,不跟主按钮抢焦点
- ::after 加 ↗ 提示"会跳出本页"
- .foot-links 用 flex + flex-wrap,320px 视口实测不溢出、不换行

回归(全部在 WSL 实跑):
  功能 78/78 · 几何 114/114 · 剪贴板 19/19 · file:// 15/15
  页脚外链 23/23 · 页脚渲染 7/7
  反证 22/22 抓到 · 6/6 抓到

判据不是空靶子(都验过能红):
  - 页脚外链判据对**原始文件**跑 → 9 项失败、退出码 1
  - 页脚渲染判据对**伪造现场**(浅色图冒充 dark)跑 → 2 项失败
2026-11-03 13:26:39 +08:00
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 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