zqlit
|
6046eb494c
|
邮件模板微信化 + 评论老友自动填充 + CF 后台国内线路一键跳
- 邮件模板重做成微信聊天式:灰底、自己评论绿色气泡靠右、对方白色气泡靠左、
40px 圆角方头像(weavatar,邮箱 md5 不外泄)、时间居中、#07C160 主按钮;
布局全嵌套表格(Outlook 稳),表情内联 max-height:28px(修掉「表情太大」)、
配图限宽 100%;管理员主题从「新的评论待审」改成「您有一个新的评论」
- 老友自动填充:新增 /comments/lookup(只回昵称+网址,绝不含邮箱;IP 限速
30 次/10 分钟)+ 主题 comment-autofill 模块(填昵称弹提示、填邮箱自动带出
上次的昵称/网址,事件委托不怕 Artalk 重建编辑器)
- CF 后台新增「国内线路」一键跳:/editor/handoff 用共享令牌对时间戳 HMAC
签名 → editor-api /admin/handoff 验签发会话 Cookie(2 分钟有效、防重放),
晚高峰丢包时直达国内机后台免重新登录
|
2026-10-05 07:36:26 +08:00 |
|
zqlit
|
87c9de41c6
|
fix(editor): 编辑器接口只认真实会话,封掉 name/email 匿名兜底越权(P0)
isAdminRequest 的 query 兜底会把「读文章源码/改文件/删文章/触发 git 发布」
裸露给任何拼参数的人。改为 requireAdminSession:只认 Bearer 会话,
已登录 + is_admin(或邮箱命中配置管理员)才放行。线上 Worker 已部署此版本。
|
2026-10-04 23:40:49 +08:00 |
|
zqlit
|
cac64f18c7
|
feat(editor): 在线编辑文章(Worker 前端 + 轻量 docker 后端)
后端(新增 editor-api/,零 npm 依赖,只用 node 内置模块):
- 只做文章相关:列表/读取/新建/保存/删除/图片上传/git 状态·发布·同步
- front matter 往返保真:未改动的块按字节照抄,CRLF/块标量/引号写法都不动
- 列表用目录名当 id,slug 撞名不再静默改错文件(返回 409 列候选)
- 鉴权只有一条路:X-Editor-Token(只存在 Worker 侧,浏览器拿不到)
- 端口只绑 127.0.0.1,由宿主机 nginx 反代出去
部署(新增 deploy/editor-api/bootstrap.sh):
- 一条命令在新机器上完成 克隆仓库→写 .env→起容器→健康检查
- 状态全在两个目录(/srv/blog 仓库工作区 + /srv/editor-api 配置),
迁移 = 复制目录或在新机重跑本脚本,容器本身无状态
Cloudflare Worker 侧(blog-admin):
- src/routes/editor.ts:鉴权 + 反代,浏览器只跟 Worker 说话
- 管理面板新增「文章编辑」:两栏布局 + 快捷插入面板(13 项短代码,
与 write-server 的 ShortcutPanel 一致)+ 底部 草稿/保存/发布
- 系统设置改为 schema 驱动的表单,且**以运行时实际生效的配置为准**
(frontend_conf/captcha/moderator/ip_region/site_default + KV human_check),
修复「表单显示一套、评论系统跑另一套」的脱节问题
验证:tsc 0 错;front matter 往返 130/130;保存往返 130/130;
API e2e 44/44;无头 Chrome UI e2e 14/14
|
2026-10-04 21:16:06 +08:00 |
|
zqlit
|
6fb5b0e039
|
feat(comments): 人机验证改点按式 + 分割线可配置 + 投票契约修复
- 人机验证抽成 human.js 模块,改成 Cloudflare Turnstile 风格的「点一下验证」,
控件移到「评论一下」发送按钮左侧(不再用图形验证码那一套)
- 留言页 / 文章页两段内联脚本(友链弹窗、人机验证)抽成模块随 page-only.js 加载。
原先内联 <script> 写在 #pjax-container 外,PJAX 只换容器内容不重新执行它,
从首页 PJAX 进留言页会出现「申请友链卡片点了没反应」「没有人机验证控件」
- 友链申请弹窗 #flApplyBox 隐藏滚动条(内容仍可滚,避开细滚动条 + 毛玻璃的割裂感)
- 内容分割线抽成 partial divider.html,hugo.toml [params.divider] 可切
icon(原生 uk-divider-icon)/ image(本地图片),当前用 icon
- 投票契约修复(后端 blog-admin):Artalk 客户端把方向编在 target_name 后缀
(comment_up / comment_down / page_up / page_down)、路径只有两段,
而原先只注册了三段 :choice 路由 → 点赞/踩一路 404、界面点了没反应。
补 POST /votes/:target_name/:target_id,新增 parseVoteTarget() 同时兼容两套契约
(名字里与路径里方向矛盾时判非法,不静默取其一),错误文案改用实体名
- 无身份点赞不再静默失败:artalk.js 加 __atkVoteGuard,
未填昵称/邮箱时拦截并提示「填写昵称和邮箱后才能点赞」,
同时把光标送到昵称框(多个同名输入框逐个试,以 focus 真生效为判据)
|
2026-10-04 16:26:28 +08:00 |
|
zqlit
|
299ab57e4d
|
归档 artalk-cf 评论后端 + rss-robot 到 blog-admin(含技术选型/模块分布 README)
|
2026-10-04 08:45:40 +08:00 |
|