XIUNOX 更新记录贴 202600722

管理

  • [Bug 修复] xnx_appcenter v1.9.6:修复发布/编辑时应用截图上传多张图片后只保留一张

    • 根因:appcenter_publish.js 用 for 循环并行 fetch 上传多张截图,多个请求读到相同初始 session tmp_files,写入时后者覆盖前者,最终只剩一个 tmp_file

    • 修复:改为递归串行上传(前一张完成再传下一张),避免 session 并发写入覆盖

    • 必测: appcenter-publish 页面,上传 3-5 张截图后保存,详情页查看截图数量是否齐全

  • [Bug 修复] xnx_appcenter v1.9.6:修复应用介绍上传图片保存后次日消失

    • 根因:AIEditor 上传图片走 attach-create 落到 upload/tmp/,编辑器拿到的是 tmp/ URL,保存时 description HTML 直接入库未做 promote,1 天后被 attach_gc 每日清理导致 URL 失效

    • 修复:新增 appcenter-promote_image API,AIEditor uploader 上传 tmp/ 后立即调 promote API 转为正式 attach,编辑器拿到的是 attach/ 最终 URL 不会被 GC 清理

    • 必测: appcenter-publish 页面,应用介绍中插入 2-3 张图片,保存后查看详情页图片正常显示;24 小时后再访问图片仍可正常加载

  • [版本号] conf.php static_version 1.4.18 → 1.4.19(强制浏览器刷新 JS)

  • [版本号] xnx_appcenter conf.json version 1.9.5 → 1.9.6(触发升级提示)

  • [编译缓存] 清理 tmp/plugin_xnx_appcenter_route_appcenter.php、tmp/plugin_xnx_appcenter_view_htm_appcenter_publish.htm

  • [功能完善] xnx_appcenter v1.9.7:应用上架审核补齐拒绝记录字段(reject_reason/audit_uid/audit_time)

    • 根因:应用审核拒绝仅 UPDATE status=2,不记录拒绝原因/审核人/审核时间,导致前台开发者看不到拒绝原因、通知不含原因(与开发者资料审核字段不对称)

    • 修复:xnx_appcenter_app 表新增三字段(upgrade.php 幂等 SHOW COLUMNS + install.php 同步);AppCenterService::updateAppStatus() 接收 reason/audit_uid,拒绝时入库、通过时清空;前后端审核入口接收 reason;前台 detail.htm 审核表单拒绝时弹窗输入原因(XN.prompt + htmx.trigger);appcenter_my.htm 已拒绝应用显示原因;后台 setting.htm 已拒绝行显示原因(截断+tooltip);三语言包通知文案含 {reason} + 新增无原因 fallback 文案

    • 必测: admin/?plugin-setting-xnx_appcenter.htm&tab=app_audit 拒绝应用填写原因 → 开发者 my-apps 页看到原因;前台应用详情页管理员审核拒绝填原因 → 通知含原因

  • [版本号] xnx_appcenter conf.json version 1.9.6 → 1.9.7(触发升级提示)

  • [编译缓存] 清理 tmp/plugin_xnx_appcenter_*、tmp/lang_zh-cn_bbs.php、tmp/lang_zh-tw_bbs.php、tmp/lang_en-us_bbs.php

  • [安全修复] 修复多插件 JS innerHTML 潜在 XSS 风险(扫描器报告)

    • xnx_appcenter: appcenter_detail.js 3处(上传/购买/下载按钮 spinner)+ appcenter_publish.js 3处(图标删除/上传/保存按钮 spinner),改用 DOM API createElement+createTextNode

    • xnx_avatar_ai: avatar_ai.js 1处(生成中加载遮罩,纯静态 HTML),改用 DOM API

    • xnx_poll: poll.js 1处(replaceCard 后端 HTML 片段)改用 DOMParser+importNode;poll_post.js 1处(投票选项行,纯静态 HTML)改用 DOM API

    • 必测: appcenter 详情页购买/下载按钮 loading、appcenter 发布页图标删除+上传+保存 loading、AI 头像生成加载遮罩、发帖页投票选项增删、帖子详情页投票后卡片刷新

  • [规范修复] 修复 3 个插件 data-target 与 Bootstrap 5 保留属性冲突(扫描器误报)

    • 根因:xnx_lottery/xnx_poll/xnx_reward 的 post_special_topic_tab_nav.htm 用 data-target 属性,被扫描器判定为 Bootstrap 4 遗留属性建议改 data-bs-target,但实际是 post.htm 自定义 tab 切换 JS 读取的属性(getAttribute(‘data-target’)),与 Bootstrap 无关

    • 修复:改用自定义属性 data-pane-target(参考 xnx_landing.js 已有约定),同步修改 post.htm JS getAttribute(‘data-pane-target’)

    • 必测: thread/create/0 发帖页,切换版块后特殊主题按钮(抽奖/投票/悬赏)显隐+点击展开折叠正常

  • [规范修复] 修复 4 个插件 conf.json version 三位制

    • xnx_fcomment/xnx_fusers/xnx_need_avatar/xnx_private_reply: “1.0” → “1.0.0”

    • 必测: 后台插件列表版本号显示为 1.0.0

  • [兼容修复] 修复 xnx_private_reply bbs_version 过高

    • “4.5” → “1.1”(匹配当前核心版本 XIUNOX_VERSION=1.1.2)

    • 必测: 后台插件列表不再显示核心版本不兼容警告

  • [版本号] conf.php static_version 1.4.19 → 1.4.20(强制浏览器刷新 JS)

  • [编译缓存] 清理 tmp/view_htm_post.htm、tmp/plugin_xnx_*_hook_post_special_topic_tab_nav.htm

  • [Bug 修复] lib/UpgradeService.php 修复在线升级报 Undefined array key “tablepre” + fetch() on false

    • 根因: 第 1199 行直接取 $this->conf[‘db’][‘tablepre’],但 conf[‘db’] 下无 tablepre 键(实际嵌在 db.{type}.master.tablepre),未兜底导致 null . ‘cache’ = ‘cache’(应为 bbs_cache),SHOW COLUMNS 查询失败返回 false,->fetch() 触发 fatal

    • 隐患: 文件内 28 处用 $this->conf[‘db’][‘tablepre’] ?? ‘bbs_’ 兜底,默认前缀下侥幸跑通,用户自定义非 bbs_ 前缀时整库升级都会用错前缀

    • 修复(方案 C): 构造函数预计算 $this->tablepre = $db->tablepre ?? ‘bbs_’(与 route/model 层惯例 $db->tablepre 一致),全量替换 28+ 处为 $this->tablepre,第 1199 行同步修复

    • 必测: admin/?online_upgrade-run_step.htm 重新跑 DB 升级,确认 upgradeCacheSystem 步骤通过;自定义 tablepre 前缀的环境验证升级不再用错前缀

  • [Bug 修复] admin/view/htm/upgrade.htm 修复一键升级页面 POST 被 CSRF 拦截

    • 根因: admin/index.inc.php 对所有 POST 请求中央化 CsrfService::check(),upgrade.htm 的 AJAX data 只传 { step: step.id } 漏带 csrf_token(对比 online_upgrade.htm 正确带了 csrf_token),且模板未声明 var csrfToken

    • 修复: 模板顶部 $csrfToken = CsrfService::getToken(),JS 声明 var csrfToken,AJAX data 改为 { step: step.id, csrf_token: csrfToken }

    • 必测: admin/?upgrade.htm 点击「开始升级」,第一步 maintenance_on 不再返回 CSRF token verification failed

  • [API缺陷] 修复 POST /api/v1/post 创建回复跳过核心 post_create() 导致 message_fmt 不生成、doctype 不转换、楼中楼 quotepid 引用不拼接、帖子/用户计数不更新、缓存不失效

    • 必测: API 发回复后帖子详情页内容正常显示 + 楼中楼回复显示被引用内容

  • [API缺陷] 修复 PUT /api/v1/post/{pid} 编辑回复跳过核心 post_update() 导致 message_fmt 不重新生成

    • 必测: API 编辑回复后帖子详情页内容更新

  • [文档优化] forum-api-interaction skill 补全 notify/attach/头像/nickname 端点文档

    • 根因: SKILL.md 端点概览表与 Procedure 章节漏了 notify 通知 API(5 个端点)、attach 附件 API(3 个端点)、user 头像 API(3 个端点)、PUT /user 的 nickname 字段;attach_keys 参数在发帖章节提到但未说明如何获取 key

    • 修复: SKILL.md 端点概览表新增 11 行;新增"附件上传"“通知管理”“用户资料修改”"头像管理"4 个章节;Pitfalls 新增 4 条(附件两段式/头像更新路径/nickname 完整校验/notify POST+PUT);Verification 新增 4 个验证小节;README.md 同步使用示例与常见问题

    • 必测: 对照真实 API 端点核对文档准确性(notify POST/PUT/DELETE、attach POST/DELETE、avatar POST/preset、PUT /user nickname)

  • [Bug 修复] xnx_appcenter / xnx_avatar_ai 后台设置页 JS 加载 404

    • 根因:setting.htm / avatar_ai.htm 引入 .js/.css 时漏写 ?v=,URL 变成 setting.js1 而非 setting.js?v=1,浏览器 404 → JS 永远没加载 → 所有按钮(添加分类/添加标签等)点击无响应

    • 修复:setting.htm:625 + avatar_ai.htm:7-8 补 ?v= 前缀

    • 必测: admin/?plugin-setting-xnx_appcenter.htm 基本设置 tab 点"添加标签"/"添加分类"应新增一行;前台 avatar-ai 页面也需回归

最新回复

请先登录后再回复 登录

uid:1 管理
关注
随遇而安,随缘而行
发帖 122
评论 438
粉丝 13
关注 1
目录
XIUNOX 更新记录贴 202600722
此广告位招租
此广告位招租
此广告位招租
广告招租
广告招租
广告招租
广告招租
广告招租
广告招租