Skip to content

UI: 按 A 布局精修控制台、外观设置与 OAuth 页面 - #3

Merged
Conner512 merged 1 commit into
mainfrom
ui/layout-a-polish-20260921
Sep 21, 2026
Merged

Conner512 merged 1 commit into
mainfrom
ui/layout-a-polish-20260921

Conversation

@Conner512

Copy link
Copy Markdown
Owner

本次实现

将已确认的 Layout A 从设计参考落实到现有 web/console 展示层,不重做认证或数据接口。

  • 统一 232px 侧栏、72px 顶栏、16px 卡片圆角;修复 1280px 桌面过早变成两列指标卡的问题。
  • 重做概览连接卡、近期记忆与整理概况,使用已有 API 的真实计数;不引入演示趋势、假连接状态或假完成率。
  • 增加本地 SVG 图标、清晰的导航分组、顶栏搜索入口和原生账户菜单;退出仍使用原 CSRF POST 表单。
  • 外观设置落实为三张可操作主题预览卡,独立切换深浅和中英文,与顶栏保持同步。切换不重建表单、不替换正文、不调用业务接口。
  • 登录、注册、TOTP 和 OAuth 公共模板采用 A 的 40/60 双列:左侧品牌、右侧表单;修复认证页两个 H1 的问题。
  • 所有现有功能页共享更新后的卡片、表格、输入框、空态、详情抽屉及响应式样式。
  • 新增 10 项展示回归测试,保留已有 6 项 UI/对比度测试。

保持不变

账户隔离、OAuth/PKCE、CSRF、CSP、回调白名单、只读 MCP/BFF、源版本分页、延迟响应账户校验、现有权限禁用状态、handoff 和生产配置均未改动。无新增运行依赖、外部字体/CDN、数据库迁移、真实凭证或个人数据。未合并或部署。

验证

已在本次工作环境执行:

  • 修改后的模块 node --check。
  • node --test services/oauth/test/console-ui.test.mjs services/oauth/test/console-layout-a.test.mjs:16 passed,0 failed / skipped。
  • Chromium 合成展示检查:20 个路由/状态 × 3 桌面宽度(1280/1440/1920)× 3 主题 × 2 明暗 × 2 语言,720 组合通过;检查单 H1、水平溢出、指标卡单行、同主题几何一致和切换不触发业务请求。
  • 9 项合成交互通过:主题卡/键盘、表单与 CSRF 保留、密码显示、抽屉内容和焦点、搜索草稿/空态、账户菜单、离页清理。

**验证限制:**本地仅 Node 22.16.0,未在本地运行项目要求 Node 24+ 的完整后端/OAuth 套件。容器无法完整克隆仓库;所需原始前端文件与现有 UI 测试均按远端 Git blob SHA 核验一致。浏览器测试使用内存加载展示代码和合成 fetch,不是实际 ES module/CSP 加载、真实注册/TOTP/OAuth 或生产多账户验收。完整项目结果以此 PR 的 CI 为准;截图只使用合成记录。

建议复核

在支持的 Node 24+ 环境跑仓库现有隔离套件;随后通过已有 services/oauth/test/helpers/console-preview.mjs 合成账户夹具检查真实资源加载、登录与 OAuth 页面。未批准管理动作仍保持关闭。

Polish the shared desktop shell, four-column overview and 40/60 auth layout.
Add local SVG presentation helpers and functional theme preview cards while
preserving account-scoped preferences, read-only APIs, CSRF forms and CSP.
Keep metrics source-backed and add presentation regression tests.

Copy link
Copy Markdown
Owner Author

CI 复核结果

提交仍为 5511652b079148cc623705c998bee7fe752dd6fb,期间没有追加代码、修改断言或跳过测试。

  • Push 工作流 35568082448 第 2 次运行已成功。
  • PR 工作流 35568124570 最新运行的 13 个任务全部成功,包含 11 个隔离测试分组、publication 和 secret-scan。

保留首轮异常记录,不把重跑后成功解释为首轮没有问题:

  1. Push 首轮 core 为 162/163,通过以外的一项是原有 server/test/capacity-harness.test.mjs 的 quick local harness,返回 blocked 而非 pass。
  2. PR 首轮 oauth 为 124/125,通过以外的一项是原有 services/oauth/test/identity-boundaries.test.mjs 的 INV-08/14 并发注册,两个子进程返回 REGISTRATION_UNAVAILABLE。该用例使用 seconds()-30 的 TOTP;是否由时间窗口导致仍需要独立定位,不能仅凭重跑认定根因。
  3. 两个失败分别请求了一次重跑。相同提交的另一个触发工作流中,对应套件首轮原本已通过;新旧 UI 用例均通过。

这次没有为获得绿灯放宽后端安全逻辑或修改上述测试。建议后续单独改善这些时序/资源相关测试的确定性。本 PR 仍未合并、未部署;实际域名和浏览器的注册/TOTP/ChatGPT OAuth 体验需要部署前复核。

@Conner512
Conner512 merged commit 9051c32 into main Sep 21, 2026
50 of 52 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant