v0.14.0 设置页 Tabs 表单+登录安全(reCAPTCHA/锁定);TipTap 富文本编辑器(Markdown/媒体库);前台移动端自适应

- /admin/settings 弃用 JSON 编辑器改 antd Tabs 分组表单(site/woocommerce/mail/seo/security),未知键落「其他」JSON 兜底
- 登录安全:reCAPTCHA v2/v3 开关+密钥+阈值(siteverify fail closed),失败次数锁定;/admin 与 /my-account 登录接入
- 内容正文与产品详细描述换 TipTap v3:工具栏/Markdown 输入与导入/HTML 源码/图片上传/媒体库选图
- 根路由补 viewport meta(移动端根因);390px 实测 14 关键页 0 横向溢出
- 首页 Advance Tabs ≤767px 横滑、联系页内联 margin 块收缩、/shop 网格 4→3→2 列、移动菜单手风琴
This commit is contained in:
bigcode
2026-11-04 14:08:49 +08:00
parent 7fd9e75887
commit 62e6bcfcd2
18 changed files with 1530 additions and 81 deletions
+35
View File
@@ -1,9 +1,44 @@
# 后台(Admin / CRM)与 MCP 说明
> v0.14.0 起:设置页 Tabs 表单 + 登录安全(reCAPTCHA/失败锁定)、TipTap 富文本编辑器(Markdown/媒体库)、前台移动端自适应(viewport + 溢出收敛)。
> v0.13.0 起:前台导航修复(loader 服务函数化)、全站图片占位图 + 懒加载、favicon。
> v0.12.0 起:PG 16 → 18.6(增量备份能力)、备份系统(全量/增量/S3)、用户权限分层。
> v0.11.0 起:后台按「功能接近原版 WordPress + 现代化 CRM 界面」重做一轮,并新增站点管理 MCP 服务器。
## 系统设置与登录安全(v0.14.0)
- `/admin/settings` 弃用整键 JSON 编辑器,改为 **antd Tabs 分组表单**:站点信息 / 商城配置 /
邮件配置 / SEO / **登录安全**;保存时与现有 JSON 合并(表单未覆盖的字段保留)。
无表单定义的键(backup 等专属页管理的除外)落在「其他」Tab 仍以 JSON 编辑兜底。
- **登录安全**(settings 表 key=security,`src/server/security.ts`):
- reCAPTCHA 开关 + 版本(v2 复选框 / v3 隐形评分)+ Site/Secret Key + v3 阈值;
开启后 `/admin` 与 `/my-account` 登录均需通过 Google siteverify(6s 超时,fail closed),
前端组件 `src/components/admin/Recaptcha.tsx`(未开启不注入 Google 脚本)。
- 登录失败锁定:同邮箱连续失败 ≥ 上限(默认 10)锁定(默认 15 分钟);进程内存计数,重启清零。
- 公开配置经 `getLoginSecurityPublic` 下发(仅 enabled/version/siteKey,Secret 不回传)。
## 富文本编辑器(v0.14.0)
- 内容编辑页(正文)与产品编辑页(详细描述)换 **TipTap v3**(`src/components/admin/RichEditor.tsx`):
- 工具栏:撤销重做 / 标题 H2-H4 / 加粗斜体下划线删除线行内代码 / 列表 / 引用 / 分隔线 /
代码块 / 链接 / 图片 / 表格 / 清除格式 / HTML 源码切换;
- **Markdown**:输入即时转换(`## `→H2、`**`加粗、`-` 列表等 input rules)+「Markdown 导入」
弹窗(marked 解析,可插入光标处或替换正文);
- **媒体库**:图片按钮本地上传(`uploadMediaFile` → /uploads/YYYY/MM/)或「媒体库选图」弹窗
(`MediaPickerModal`,搜索/分页/缩略图);
- antd Form 受控(value/onChange),SSR 需 `immediatelyRender: false`(已内置)。
- 编辑器样式 `src/styles/admin-editor.css`(仅 `.rich-editor` 作用域,随组件 import)。
## 前台移动端自适应(v0.14.0)
- **根路由补 `<meta name="viewport">`**——此前缺失导致手机按 ~980px 布局再缩小,是「移动端没有」的根因。
- 溢出收敛(390px 实测 14 个关键页全部 0 横向溢出,`scripts` 外的诊断脚本见 /tmp):
- 首页 Elementor Advance Tabs 横向标签条 ≤767px 改横滑(`min-width: max-content` + overflow-x);
- 内容模板 `width:100%`+左 margin 的内联信息块(联系页地址等)≤767px 收缩为自适应;
- /shop/ 产品网格 4→3(≤1024)→2(≤767)列;
- `content-html iframe` max-width 100%。
- Header 移动端菜单改**手风琴**(顶级项可跳转 + 箭头展开子菜单,默认收起)。
## 前台约定(v0.13.0 起生效)
- **TanStack Start loader 是同构运行的**:客户端导航(点击 LOGO / `<Link>` / 分页)会在浏览器重跑一遍