zqlit
|
79c9f2371c
|
feat(评论): 最近表情改为分组 tab + 提交后面板收起 + 小编徽章配色 + 走心评论 20 条
- emoticon-recent.js: 「最近使用」从面板顶部独立栏重构为分组切换条最左侧的
同构 tab(data-index="recent"),无记录时整个 tab 隐藏;复用 Artalk 原生
.atk-grp[data-type=image] 网格样式,零自定义布局。
- artalk.js:
· 新建评论成功(res.ok)后,对当前激活的插件按钮派发 click(),收起仍展开的
表情面板(Artalk 上游只 reset 输入内容、不关面板),内部 openedPlug 状态同步复位。
· 徽章处理末尾把徽章文字镜像到 data-badge 属性,供 CSS 按名字配色。
- artalk.html: 新增 .atk-badge[data-badge="小编"] 玫红实底规则(含暗色模式),
特异性高于博主规则,两者互不覆盖。
- featured-comments.html: 走心评论 limit 8 → 20(后端上限)。
- main.css: 移除旧 .atk-recent-emoticons 相关样式。
|
2026-10-05 17:34:18 +08:00 |
|
zqlit
|
1b2e3d46f8
|
fix(友链): 修复申请「通过不了/删不掉」;feat(评论): 通知按文章作者分派
## 友链自助申请(通过不了 / 删除不掉)
根因:admin.js 全局事件委托把 data-id 一律 parseInt,
而友链申请 id 是字符串(lamus5uptzcdam)→ NaN → JSON 成 {"id":null}
→ 后端 String(null||'') 为空 → 400 id and action required,查看/通过/拒绝全失效。
引入于 a74b3c71(10-04 归档 rss-robot 时;后台只有友链申请用字符串 id)。
- admin.js:纯数字才转数字,其余原样(评论/用户/站点按钮请求完全不变)
- admin.js:待审卡片加「删除」按钮
- links.ts:新增 action:'delete'(不受「已处理过」限制,处理过的也能删)
- links.ts:approve 改为先写友链再改状态 + URL 去重(重试幂等)
- links.ts:已是目标状态时返回 {ok:true,already:true},不再 409
—— 否则网络抖动后重试会让用户以为「怎么点都通不过」
## 评论通知按文章作者分派
编辑角色(女朋友)写的文章,评论通知改发给她,不再打扰博主。
不需要「文章→作者」同步表:Hugo 模板把 author_id 注入 artalkConfig,
artalk.js 已有的 fetch 拦截器把它塞进评论提交体,Worker 直接读。
- artalk.html:artalkConfig 增 pageAuthorId(老文章 0)
- artalk.js:提交评论时带上 author_id(读 window.artalkConfig,防 PJAX 过期)
- comments.ts:createComment 解析 author_id 并传给通知
- mail.ts:收件人改为「这篇文章的主人」——作者非管理员且开了邮件则发给他,
否则回退博主;已被回复通知过 / 作者本人评论自己的文章都不重复发
- mail.ts:增一行收件人决策日志,便于线上排查
验证:Worker tsc 通过;Hugo 构建通过;artalk.js 语法通过;
友链本地跑通(通过 200 → 再通过 already:true → 友链仅 1 条 → 删除 200 → 再删 404)。
|
2026-10-05 16:44:15 +08:00 |
|
zqlit
|
4fa592c11c
|
feat(comments): 匿名评论升级为「悄悄话」——只藏内容不藏身份;fix: PJAX 瞬断自动重试
- 悄悄话:头像/昵称/头衔/等级/IP归属照常显示,仅内容对非管理员请求剥空
(F12/网络面板拿不到原文),博主后台/登录态/邮件看全文
- 开关挪进底栏 .atk-bottom-left、表情/预览按钮右边,移动端不挤;
回复悄悄话勾不勾随自己(去掉自动勾选)
- 前端识别:服务端剥空后 .atk-content 为空即悄悄话(空评论会被后端拒绝、
纯表情评论有 img 不误判),无需解析 API
- 邮件页面标题书名号《》保留(按用户要求)
- PJAX 偶发「连不上服务器」:GET /api/v2 网络错误或 5xx 静默重试 2 次
(700ms/1800ms 退避),POST 不重试,被 abort 的请求不续命
|
2026-10-05 10:05:21 +08:00 |
|
zqlit
|
437cd339ad
|
fix: 管理员编辑跳过邮箱校验 + 返回顶部 rAF 丝滑滚动 + admin.js 正则笔误 + 页面标题污染
- artalk.js: beforeSubmit 在编辑态跳过昵称/邮箱校验(管理员改评论不再被拦)
- floating-tools.js: 返回顶部/去评论改 rAF + easeInOutCubic 自绘,原生 smooth 不可靠
- admin.js: 修 5 处 //s //n 正则笔误(整脚本 SyntaxError 致后台全灰),需 wrangler deploy
- artalk.html: 显式传 pageTitle(不再读 document.title,PJAX 竞态致文章页标题被记成「留言」)
- artalk.js: conf 缓存合并前剔除 pageKey/pageTitle/pageThumb,杜绝跨页串值
|
2026-10-04 18:30:30 +08:00 |
|
zqlit
|
e8c991274a
|
fix(comments): 额度故障态提示去冗余 + 修「误恢复」bug + 本地复现开关
服务端 D1 额度用尽时同屏会出现三层重复提示,且故障态会被定期误解除。
- 提示从三层收敛为两层:横幅只留一句极简状态(⏸ 评论暂停中,预计明早 8:00 恢复),
卡片是唯一详细说明并紧贴编辑器;删掉「点击编辑器再弹一遍 toast」
- 修 bug:恢复判定原来过于宽松,任何 conf/comments/captcha/votes/pages 请求成功都算恢复;
但 /captcha/status 走 KV 不读 D1,60s 探针恒成功 → 故障态每 60s 被误撤,编辑器看似正常
实则列表还挂着。现在恢复只认评论列表本身成功,探针改用 GET /comments?limit=1(真读 D1)
- 故障态不再灰化编辑器(opacity+grayscale 观感很差),只禁交互,原因由横幅说明
- 服务端 errors.ts 文案去掉与卡片标题重复的「评论服务暂时不可用」前缀
- 新增本地调试开关:仅 localhost 下 ?atk_svc=<code> 强制进入故障态,便于排查,生产不生效
改动文件:themes/Ying/assets/js/modules/artalk.js、blog-admin/src/lib/errors.ts
(errors.ts 需下次部署 Worker 才在线上生效,前端已做旧文案兼容清洗)
|
2026-10-04 18:04:47 +08:00 |
|
zqlit
|
571d552c9d
|
fix(build): 消除构建期远程拉取隐患 + 评论提交反馈 + 友链卡片移动端
构建隐患(本次丢构建的根因)
- footer.html 用 resources.GetRemote 在每个页面渲染时拉 api/links 与 api/feeds,
构建节点连不上 Cloudflare 时重试撞穿 Hugo partial 30s 超时 → 整站构建失败
- 改为「流水线 curl 快照 + 模板读本地文件」:
· 新增 scripts/fetch_snapshots.sh,一次拉齐 conf / friend_links / friend_feeds
(--max-time 30 --retry 2,JSON 校验,失败一律删文件且恒 exit 0)
· .cnb.yml Hugo 构建 stage 改为调用该脚本
· footer.html 改读 site.Data.friend_links / site.Data.friend_feeds,缺失渲染空值
· .gitignore 忽略 /data/friend_links.json 与 /data/friend_feeds.json
- 降级实测:删掉快照后构建仍 EXIT=0,产物 friendLinks 为空数组
评论提交反馈(artalk.js 新增 __atkSubmit 模块)
- 校验:config.beforeSubmit 拦下 内容空 / 昵称空 / 邮箱空 / 邮箱格式错(网址不校验)
- 发送中:editor-submit 常驻 loading,超 7s 补「网络较慢」
- 成功:editor-submitted 按 normal/reply/edit 分文案,is_pending 提示等待审核
- 失败:拦 POST /api/v2/comments,403/429/4xx/5xx/网络异常全部翻译成人话
- 失败时输入内容保留,并清掉 Artalk 自带的重复小字通知
- 无头浏览器实测 19/19 通过(POST 走 mock,未向线上写数据)
友链申请卡片移动端
- max-width:640px 下隐藏 .atk-fl-nick(昵称 + 博主徽章),桌面端不变
改动:6 files, +282 / -61
|
2026-10-04 17:38:04 +08:00 |
|
zqlit
|
e0c5ac5739
|
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
|
50a906e07c
|
perf(comments): 评论加载提速 + 骨架屏 + 友链弹窗 pjax 修复 + toast 统一 Message.js
优化:
- initArtalk 加节点级幂等守卫(mount.__atkInited,失败回滚),
消除 artalk.html/mypjax 多入口导致的 4× comments + 4× pv 重复请求
- fetch 包装层对无 body 的 GET/HEAD 去掉多余 content-type,
消掉 Artalk 对 GET /comments 的 CORS 预检(按完整 URL 缓存,
每篇文章都重付一次 RTT)。实测评论列表 +1150~1565ms → +626ms
修复:
- 评论列表骨架屏改注入 .atk-list-body(原骨架在 #Comments 内,
被 Artalk.init 清空),list-loaded/故障/12s 兜底移除
- 友链申请弹窗抽成 modules/friendlink.js 进 page-only bundle
(原内联脚本在 #pjax-container 外,pjax 后 flApplyOpenModal 未定义)
- toast 统一走本地化 Message.js/Qmsg 适配层(保留 window.Toast/showToast 旧 API)
文档:
- README / 架构总览 更新;新增 评论加载优化方案.md
|
2026-10-04 15:00:52 +08:00 |
|
zqlit
|
855a001046
|
编辑器禁用态:置灰但内容完整(补发送字样/占位符/表情预览图标),svc-down 隐藏 Powered By 版权
Deploy to Production / pre-check (push) Successful in 35s
Deploy to Production / build (push) Successful in 3m40s
Deploy to Production / deploy-edgeone (push) Successful in 3m35s
Deploy to Production / finalize (push) Successful in 22s
Deploy to Production / notify-failure (push) Skipped
|
2026-10-04 00:28:12 +08:00 |
|
zqlit
|
298f10e6bc
|
评论错误卡片:额度文案双保险(中文特征词兜底+连接异常优先判)、底部边距加大与footer分隔线隔开(桌面30px/移动24px)
Deploy to Production / pre-check (push) Successful in 1m19s
Deploy to Production / build (push) Successful in 4m3s
Deploy to Production / deploy-edgeone (push) Successful in 3m55s
Deploy to Production / finalize (push) Successful in 28s
Deploy to Production / notify-failure (push) Skipped
|
2026-10-03 21:01:58 +08:00 |
|
zqlit
|
8535f759f4
|
错误卡片重设计:居中布局+去技术详情(读者无需看),图标放大、重试改胶囊按钮
Deploy to Production / pre-check (push) Successful in 54s
Deploy to Production / build (push) Canceled after 5s
Deploy to Production / deploy-edgeone (push) Canceled after 0s
Deploy to Production / finalize (push) Canceled after 0s
Deploy to Production / notify-failure (push) Canceled after 0s
|
2026-10-03 20:07:05 +08:00 |
|
zqlit
|
afa1346a0f
|
评论加载失败改为清晰提示:接管 Artalk 错误层,按服务端错误码给读者人话文案+可展开技术详情
Deploy to Production / pre-check (push) Successful in 1m0s
Deploy to Production / build (push) Successful in 4m18s
Deploy to Production / deploy-edgeone (push) Successful in 3m55s
Deploy to Production / finalize (push) Successful in 24s
Deploy to Production / notify-failure (push) Skipped
|
2026-10-03 19:49:10 +08:00 |
|
zqlit
|
5858188628
|
友链卡片移动端适配:≤640px隐藏头像、收紧间距内边距、微调字号字距
Deploy to Production / pre-check (push) Successful in 47s
Deploy to Production / build (push) Successful in 4m17s
Deploy to Production / deploy-edgeone (push) Canceled after 37s
Deploy to Production / finalize (push) Canceled after 0s
Deploy to Production / notify-failure (push) Canceled after 0s
|
2026-10-03 17:29:20 +08:00 |
|
zqlit
|
63fd5641d5
|
友链卡片只转换顶层评论(回复里的同串URL不再被隐藏)
Deploy to Production / pre-check (push) Successful in 53s
Deploy to Production / build (push) Canceled after 3m23s
Deploy to Production / deploy-edgeone (push) Canceled after 0s
Deploy to Production / finalize (push) Canceled after 0s
Deploy to Production / notify-failure (push) Canceled after 0s
|
2026-10-03 17:23:46 +08:00 |
|
zqlit
|
c952620fd6
|
友链卡片固定在评论列表上方(不再被新评论挤到中间):整条评论用class隐藏,卡片插入atk-list-body首位
Deploy to Production / pre-check (push) Successful in 53s
Deploy to Production / build (push) Canceled after 1m2s
Deploy to Production / deploy-edgeone (push) Canceled after 0s
Deploy to Production / finalize (push) Canceled after 0s
Deploy to Production / notify-failure (push) Canceled after 0s
|
2026-10-03 17:20:04 +08:00 |
|
zqlit
|
ab94c25273
|
修复发评论后卡片被挤下去:原评论内容改用class+!important隐藏(Artalk重渲染会抹掉内联display),转换逻辑改幂等自愈
Deploy to Production / pre-check (push) Successful in 50s
Deploy to Production / build (push) Successful in 4m30s
Deploy to Production / deploy-edgeone (push) Canceled after 2m21s
Deploy to Production / finalize (push) Canceled after 0s
Deploy to Production / notify-failure (push) Canceled after 0s
|
2026-10-03 17:13:06 +08:00 |
|
zqlit
|
98126cafe6
|
评论徽章DOM/尺寸统一(拆badge-wrap+单一类名)、修复main.css!important劫持徽章尺寸、友链卡片挂到comment级与输入框对齐、卡片动效+打字机、申请弹窗按钮错位与滚动条修复
Deploy to Production / pre-check (push) Successful in 58s
Deploy to Production / build (push) Successful in 3m56s
Deploy to Production / deploy-edgeone (push) Canceled after 1m23s
Deploy to Production / finalize (push) Canceled after 0s
Deploy to Production / notify-failure (push) Canceled after 0s
|
2026-10-03 16:59:34 +08:00 |
|
zqlit
|
36e74d46f4
|
友链申请入口改URL评论触发+卡片原生风格化; 博主/头衔徽章改浅底描边风格与友链友圈官职统一
Deploy to Production / pre-check (push) Successful in 39s
Deploy to Production / build (push) Successful in 4m55s
Deploy to Production / deploy-edgeone (push) Successful in 4m1s
Deploy to Production / finalize (push) Successful in 25s
Deploy to Production / notify-failure (push) Skipped
|
2026-10-03 15:16:00 +08:00 |
|
zqlit
|
e84de9033d
|
友链申请卡片重设计(头像+昵称+徽章+主题色) + 弹窗横向滚动条/显隐bug修复
Deploy to Production / pre-check (push) Successful in 1m9s
Deploy to Production / build (push) Successful in 4m9s
Deploy to Production / deploy-edgeone (push) Successful in 3m46s
Deploy to Production / finalize (push) Successful in 28s
Deploy to Production / notify-failure (push) Skipped
|
2026-10-03 14:28:50 +08:00 |
|
QunLIn
|
79c1e51d5c
|
评论徽章全展示按优先级排序 + 新增金色头衔徽章
Deploy to Production / pre-check (push) Successful in 1m12s
Deploy to Production / build (push) Successful in 2m52s
Deploy to Production / deploy-edgeone (push) Successful in 3m27s
Deploy to Production / finalize (push) Successful in 30s
Deploy to Production / notify-failure (push) Skipped
- 徽章不再互斥:满足条件全部展示,排序 = 系统徽章(博主等)
> 头衔(新增)> 友链 > 友圈 > 官职
- 头衔徽章:后端 users 表新增 title_name 字段,管理面板用户编辑
可设置,金色 UI 与官职一致,优先级仅次于系统徽章
- 官方 badge-wrap 挪进昵称元素内,保证与主题徽章的排序正确
|
2026-10-03 13:37:22 +08:00 |
|
QunLIn
|
da1a77a313
|
友链申请卡片改挂置顶评论 + 弹窗挂 body 加毛玻璃
Deploy to Production / pre-check (push) Successful in 28s
Deploy to Production / build (push) Successful in 2m41s
Deploy to Production / deploy-edgeone (push) Successful in 3m47s
Deploy to Production / finalize (push) Successful in 27s
Deploy to Production / notify-failure (push) Skipped
- 置顶评论卡片化:管理员置顶且内容含「友链自助申请」的评论,
整条解析成申请入口卡片(隐藏昵称/页脚,渐变虚线卡片,点击打开
申请弹窗),其余置顶评论不受影响
- 弹窗 DOM 动态挂 document.body:评论容器带 transform 动画会把
position:fixed 劫持成相对定位,导致遮罩/表单跟着容器变形——
挂 body 彻底规避
- 遮罩加 backdrop-filter 毛玻璃(GPU 合成,不影响页面性能)
|
2026-10-03 13:08:14 +08:00 |
|
QunLIn
|
5fcbd2a7b6
|
字体切全量、评论徽章优先级、友链自助申请卡片、友圈头像兜底
Deploy to Production / pre-check (push) Successful in 1m27s
Deploy to Production / build (push) Successful in 4m49s
Deploy to Production / deploy-edgeone (push) Successful in 3m50s
Deploy to Production / finalize (push) Successful in 21s
Deploy to Production / notify-failure (push) Skipped
- 字体:zql 从 subset(776K) 切换到全量(1.2MB woff2),subset 覆盖
不足导致大量字回退系统字体,视觉不一致;全量一次加载彻底解决
- 评论徽章统一 comment-rendered 注入,优先级互斥:友链 > 友圈 >
官职(后端 rank 字段),官方系统徽章(博主)独立显示
- 留言页新增友链自助申请入口卡片 + 弹窗表单(名称/链接/订阅/邮箱
必填),提交进 api.200181.xyz 待审队列,审核结果邮件通知申请人
- 友圈头像:favicon 抓取失败时兜底第三方 favicon 服务
|
2026-10-03 12:13:45 +08:00 |
|
QunLIn
|
cc85ace7c2
|
官职徽章改回主题渲染,数据由后端 rank 字段下发
Deploy to Production / pre-check (push) Successful in 1m16s
Deploy to Production / build (push) Successful in 10m24s
Deploy to Production / deploy-edgeone (push) Successful in 3m52s
Deploy to Production / finalize (push) Successful in 28s
Deploy to Production / notify-failure (push) Skipped
上一版把九品官阶塞进官方 badge_name/badge_color 槽——但博主
徽章是独一无二的,官职应该接在它后面而不是挤占同一个槽位。
后端现下发独立字段 rank_name/rank_title/rank_count/rank_color/
rank_bg(配色沿用主题原版彩字+半透明底),本文件在
comment-rendered 事件里渲染官职徽章。
|
2026-10-03 10:01:52 +08:00 |
|
QunLIn
|
be5abce16a
|
评论等级改为后端计算(artalk-cf 下发官方 badge)
主题原来的九品官阶用 localStorage 累计——只统计当前浏览器
渲染过的评论,换设备/清缓存就失真,别人看到的也不准。
现在后端按全站真实评论数算好,随评论 API 下发
badge_name/badge_color,官方前端原生渲染,跨设备一致。
本文件移除本地注入逻辑,友链/友圈徽章保留。
|
2026-10-03 01:11:43 +08:00 |
|
Vaica
|
adce55986d
|
1935
|
2026-06-25 19:35:38 +08:00 |
|
Vaica
|
3a8db8fb12
|
1907
|
2026-06-25 19:07:58 +08:00 |
|
Vaica
|
5800d26222
|
Update artalk.js
|
2026-06-25 18:49:06 +08:00 |
|
Vaica
|
2c6bd1c964
|
优化github action 逻辑
|
2026-06-02 10:56:59 +08:00 |
|
zqlit
|
9774eeac12
|
增加评论互动趣味性
|
2026-05-25 13:55:45 +08:00 |
|
zqlit
|
b83d6adb76
|
优化性能提交新功能
|
2026-05-25 12:23:00 +08:00 |
|
zqlit
|
9ab38b6e6a
|
修复流畅性
|
2026-05-25 00:03:50 +08:00 |
|
zqlit
|
331af9074a
|
修复bug
|
2026-05-24 19:58:07 +08:00 |
|
Vaica
|
f658dcc767
|
fixed 修复暗夜模式
|
2026-02-05 21:53:08 +08:00 |
|
Vaica
|
0714b8eb48
|
fixed 弹幕修复 bug
|
2026-01-31 22:52:19 +08:00 |
|
Vaica
|
a4c74cbb0d
|
fixed 弹窗逻辑
|
2026-01-31 22:06:19 +08:00 |
|
Vaica
|
8c3232fadf
|
fixed bug
|
2026-01-31 21:27:06 +08:00 |
|
Vaica
|
54b18039e3
|
fixed bug
|
2026-01-31 19:24:22 +08:00 |
|