diff --git a/docs/superpowers/specs/2026-07-30-phone-privacy-release-polish-design.md b/docs/superpowers/specs/2026-07-30-phone-privacy-release-polish-design.md new file mode 100644 index 0000000..340fd45 --- /dev/null +++ b/docs/superpowers/specs/2026-07-30-phone-privacy-release-polish-design.md @@ -0,0 +1,105 @@ +# 手机号隐私与正式发布精简设计 + +日期:2026-07-30 + +## 目标 + +在不改变节点卡片核心信息架构的前提下,解决手机号区域对齐不规整的问题,为本机手机号和最新短信对方号码增加默认脱敏与单卡显隐控制,并统一浏览器标签页品牌。面向非商业公开发布,移除全站重复、内部化和解释性过强的可见文案,同时保留操作、状态、安全、错误、无障碍和许可信息。 + +## 手机号隐私 + +### 脱敏范围 + +- 节点卡片硬件信息区的本机手机号。 +- 同一卡片底部最新短信中的对方号码。 +- 原始号码不得在默认可见文本、标题属性或无障碍名称中泄露。 + +### 掩码格式 + +- 带国际前缀的号码保留加号开头的首个原始分组和末四位,例如 `+852 •••• 0100`;无分隔符时保留 `+` 与其后三位。 +- 不带国际前缀的号码保留前三位和末四位,例如 `138 •••• 5678`。 +- 中间部分统一显示四个圆点,避免不同号码长度造成布局跳动。 +- 多个本机号码分别脱敏后使用现有分隔方式展示。 +- 没有号码时继续显示“暂未获取”,且不显示显隐按钮。 + +### 显隐交互 + +- 每张卡片只有一个眼睛图标按钮,固定在本机手机号区域右侧。 +- 默认状态为隐藏;点击后同时显示该卡片的本机手机号和最新短信号码,再次点击恢复脱敏。 +- 状态按实例 ID 隔离,切换一张卡片不得影响其他卡片。 +- 筛选、排序和分页期间保留当前页面会话中的显隐状态;刷新页面后恢复默认隐藏。 +- 按钮使用眼睛与闭眼图标、悬浮提示、动态 `aria-label` 和 `aria-pressed`,不使用额外文字按钮。 + +## 手机号布局 + +- 硬件信息区继续保留“手机号”和“最高温度”两个字段。 +- 网格调整为手机号较宽、温度较窄的稳定比例,手机号值与 40 像素显隐按钮使用固定的 `minmax(0, 1fr) auto` 子网格。 +- 号码文本不得推动按钮、温度字段或卡片宽度;窄屏允许号码在自身区域内安全收缩,不产生横向滚动。 +- 最新短信区域不增加第二个按钮,显示状态完全跟随卡片的唯一显隐按钮。 + +## 标签页品牌 + +- 新增独立的 `favicon.svg`,使用顶部品牌一致的暖黄色圆角底、棕色三段信号柱和暖色描边。 +- `index.html` 删除现有蓝色内嵌 favicon,改为引用静态资源。 +- 浏览器主题色改为工作台暖米白色。 +- 标签页标题统一为 `SimAdmin Control · 多节点控制台`。 + +## 全站文案精简 + +### 全局 + +- 删除品牌名下方的副标题。 +- 底部署名缩短为 `UI: animal-island-ui · CC BY-NC 4.0`,保留项目链接与许可链接。 +- 保留非商业使用所需的署名,不删除许可信息。 + +### 节点页 + +- 删除页头说明句。 +- 删除 `NODE DIRECTORY` 和 `LIVE NODE MATRIX`。 +- 删除侧栏重复的“显示 x/x”,结果区保留唯一的数量与分页信息。 +- 删除实例总数、在线和需处理数字下方的三句重复解释。 +- 保留节点总览、筛选、状态、操作、批量风险提示、加载、错误和空状态。 + +### 自动化页 + +- 删除页头说明句。 +- 删除抽屉中与主标题重复的“任务设置”和“新建自动化”眉题。 +- 计划任务、执行记录和操作审计的空状态只保留简短状态标题。 +- 保留 Cron 附近的北京时间说明、短信保留规则、高频风险提示和最终确认。 + +### 设置页 + +- 删除实例设置页说明句。 +- 删除密码保护页的 `SYSTEM SETTINGS` 和重复介绍。 +- 保留 HTTP/HTTPS 安全警告、密码配置状态、保存结果、加载与错误提示。 + +### 登录页 + +- 删除 `MULTI SIMADMIN` 和重复的登录说明。 +- 保留登录标题、密码输入、提交按钮、加载与错误状态。 + +## 数据与状态边界 + +- 不修改 API、资源响应或短信数据结构。 +- 显隐状态仅存在于前端内存中,不写入本地存储、URL、服务端或审计日志。 +- 掩码函数只负责显示转换,不改变原始数据对象。 +- favicon 和文案调整不改变路由、权限或操作流程。 + +## 测试与验收 + +- 单元测试验证默认状态只显示掩码,不出现原始本机号码或最新短信号码。 +- 单元测试验证单卡按钮同时显示两处号码、再次点击恢复隐藏,并且不影响其他卡片。 +- 单元测试验证国际前缀、本地号码、多个号码和无号码状态。 +- 集成或浏览器测试验证眼睛按钮的无障碍名称、按下状态、40 像素稳定尺寸和响应式边界。 +- 浏览器测试验证 favicon、主题色和标签页标题。 +- 内容测试验证确认删除的冗余文案不再渲染,同时安全提示、错误状态和许可署名仍存在。 +- 在 390、768、1024、1440 和 1920 像素宽度检查卡片无横向溢出、按钮位置稳定、号码与温度不重叠。 + +## 非目标 + +- 不增加全局号码显隐开关。 +- 不在号码之间提供独立显隐按钮。 +- 不持久化号码显隐偏好。 +- 不修改实例详情页或短信会话页的号码展示。 +- 不移除功能标签、安全提示、无障碍文本或许可署名。 +- 不改变现有颜色系统、卡片列数、左侧总览位置或核心导航。